From ba8a24073fc3d545fdc86b613d32b4bfc33743c3 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Sun, 5 Sep 2010 01:07:11 -0400 Subject: Notify Twitter when StatusNet user faves/disfaves a Twitter notice --- plugins/TwitterBridge/TwitterBridgePlugin.php | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) (limited to 'plugins/TwitterBridge/TwitterBridgePlugin.php') diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php index ed1732943..f7d3b6659 100644 --- a/plugins/TwitterBridge/TwitterBridgePlugin.php +++ b/plugins/TwitterBridge/TwitterBridgePlugin.php @@ -428,4 +428,77 @@ class TwitterBridgePlugin extends Plugin } return true; } + + /** + * Notify remote users when their notices get favorited. + * + * @param Profile or User $profile of local user doing the faving + * @param Notice $notice being favored + * @return hook return value + */ + + function onEndFavorNotice(Profile $profile, Notice $notice) + { + $flink = Foreign_link::getByUserID($profile->id, + TWITTER_SERVICE); // twitter service + + if (empty($flink)) { + return true; + } + + if (!TwitterOAuthClient::isPackedToken($flink->credentials)) { + $this->log(LOG_INFO, "Skipping fave processing for {$profile->id} since link is not OAuth."); + return true; + } + + $status_id = twitter_status_id($notice); + + if (empty($status_id)) { + return true; + } + + $token = TwitterOAuthClient::unpackToken($flink->credentials); + $client = new TwitterOAuthClient($token->key, $token->secret); + + $client->favoritesCreate($status_id); + + return true; + } + + /** + * Notify remote users when their notices get de-favorited. + * + * @param Profile $profile Profile person doing the de-faving + * @param Notice $notice Notice being favored + * + * @return hook return value + */ + + function onEndDisfavorNotice(Profile $profile, Notice $notice) + { + $flink = Foreign_link::getByUserID($profile->id, + TWITTER_SERVICE); // twitter service + + if (empty($flink)) { + return true; + } + + if (!TwitterOAuthClient::isPackedToken($flink->credentials)) { + $this->log(LOG_INFO, "Skipping fave processing for {$profile->id} since link is not OAuth."); + return true; + } + + $status_id = twitter_status_id($notice); + + if (empty($status_id)) { + return true; + } + + $token = TwitterOAuthClient::unpackToken($flink->credentials); + $client = new TwitterOAuthClient($token->key, $token->secret); + + $client->favoritesDestroy($status_id); + + return true; + } } -- cgit v1.2.3-54-g00ecf