summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-09-10 09:10:53 -0400
committerEvan Prodromou <evan@status.net>2010-09-10 09:32:39 -0400
commit262eb7120f08a4a7c021c7c1df6a67e1b3c1d27d (patch)
treeb31ff69e716fbbe88e99b43a21acc33bb18b5ed1
parent6832a34216437cbacdc1e21f2cf8fa8f4e58ff63 (diff)
make our own twitter links if Twitter doesn't give us entities
-rwxr-xr-xplugins/TwitterBridge/daemons/twitterstatusfetcher.php22
1 files changed, 20 insertions, 2 deletions
diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
index f1305696b..b2bcc22bc 100755
--- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
+++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
@@ -713,6 +713,10 @@ class TwitterStatusFetcher extends ParallelizingDaemon
$text = $status->text;
if (empty($status->entities)) {
+ common_log(LOG_WARNING, "No entities data for {$status->id}; trying to fake up links ourselves.");
+ $text = common_replace_urls_callback($text, 'common_linkify');
+ $text = preg_replace('/(^|\&quot\;|\'|\(|\[|\{|\s+)#([\pL\pN_\-\.]{1,64})/e', "'\\1#'.TwitterStatusFetcher::tagLink('\\2')", $text);
+ $text = preg_replace('/(?:^|\s+)@([a-z0-9A-Z_]{1,64})/e', "'\\1@'.TwitterStatusFetcher::atLink('\\2')", $text);
return $text;
}
@@ -771,12 +775,26 @@ class TwitterStatusFetcher extends ParallelizingDaemon
function makeHashtagLink($object)
{
- return "#<a href='https://twitter.com/search?q=%23{$object->text}' class='hashtag'>{$object->text}</a>";
+ return "#" . self::tagLink($object->text);
}
function makeMentionLink($object)
{
- return "@<a href='http://twitter.com/{$object->screen_name}' title='{$object->name}'>{$object->screen_name}</a>";
+ return "@".self::atLink($object->screen_name, $object->name);
+ }
+
+ static function tagLink($tag)
+ {
+ return "<a href='https://twitter.com/search?q=%23{$tag}' class='hashtag'>{$tag}</a>";
+ }
+
+ static function atLink($screenName, $fullName=null)
+ {
+ if (!empty($fullName)) {
+ return "<a href='http://twitter.com/{$screenName}' title='{$fullName}'>{$screenName}</a>";
+ } else {
+ return "<a href='http://twitter.com/{$screenName}'>{$screenName}</a>";
+ }
}
function saveStatusMentions($notice, $status)