|
|
- <?php
- namespace SparkLib\SocialNoise;
-
- use \SparkLib\Fail;
-
- /**
- * This is based on:
- *
- * Plugin Name: PlanetTwitter
- * Description: Pulls in a feed based on a search term passed to it using
- * this format: [planettwitter:searchterm]
- * Version: 1.1
- * Author: Eric Sipple & Brennen Bearnes
- * Author URI: http://saalonmuyo.com
- *
- * Copyright 2009 Eric Sipple (email : saalon@gmail.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
- class Twitter extends \SparkLib\SocialNoise {
-
- public static $tableClass = '';
-
- /**
- * Return search results formatted as HTML.
- */
- public static function searchHTML ($text, $qty)
- {
- $url = 'https://search.twitter.com/search.json?q=' . rawurlencode($text);
- $searchResults = static::getSearchFromJson($url);
-
- if (! $searchResults)
- return '<p>Search failure.</p>';
-
- // Set up our string format templates
- $img = '<img src="%s" height=48 width=48/>';
- $bold = '<b>%s</b>';
- $fromUser = '<a href="http://www.twitter.com/%s"><b>%s</b></a> ';
- $feed = '';
-
- // Extrude some markup for each result
- $foundQty = 0;
- foreach ($searchResults->results as $result)
- {
- $foundQty++;
-
- // Replace any @replies or links with hrefs:
- $twitterText = $result->text;
- $twitterText = preg_replace("#(^|[\n ])@([^ \'\"\t\n\r<]*)#ise", "'\\1@<a href=\"http://www.twitter.com/\\2\" >\\2</a>'", $twitterText);
- $twitterText = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t<]*)#ise", "'\\1<a href=\"\\2\" >\\2</a>'", $twitterText);
- $twitterText = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#ise", "'\\1<a href=\"http://\\2\" >\\2</a>'", $twitterText);
-
- // Basically undocumented behavior, but for now you can get at profile images
- // securely using https://si[n] instead of http://a[n] addresses. See:
- // http://code.google.com/p/twitter-api/issues/detail?id=2175
- // http://code.google.com/p/twitter-api/issues/detail?id=2006
- $image_url = str_replace('http://a', 'https://si', $result->profile_image_url);
-
- // Take the profile image, the from user and the created date,
- // throw some HTML blobs around them:
- $feed .= '<tr>'
- . '<td>' . sprintf($img, $image_url) . '</td>'
- . '<td>' . sprintf($fromUser, $result->from_user, $result->from_user)
- . $twitterText
- . '<br><small><i><a href="http://twitter.com/#!/' . $result->from_user . '/status/' . $result->id_str . '">' . $result->created_at . '</a></i></small>'
- . '</td>'
- . '</tr>';
-
- if ($foundQty >= $qty) {
- break;
- }
- }
-
- $class = htmlspecialchars(static::$tableClass);
- return "<table class=\"{$class}\">$feed</table>";
- }
-
- }
|