diff options
author | Evan Prodromou <evan@status.net> | 2010-09-10 09:10:53 -0400 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-09-10 09:32:39 -0400 |
commit | 262eb7120f08a4a7c021c7c1df6a67e1b3c1d27d (patch) | |
tree | b31ff69e716fbbe88e99b43a21acc33bb18b5ed1 /plugins | |
parent | 6832a34216437cbacdc1e21f2cf8fa8f4e58ff63 (diff) |
make our own twitter links if Twitter doesn't give us entities
Diffstat (limited to 'plugins')
-rwxr-xr-x | plugins/TwitterBridge/daemons/twitterstatusfetcher.php | 22 |
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('/(^|\"\;|\'|\(|\[|\{|\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) |