Hook::register('jot_networks' , __FILE__, 'twitter_jot_nets');
Hook::register('cron' , __FILE__, 'twitter_cron');
Hook::register('follow' , __FILE__, 'twitter_follow');
+ Hook::register('unfollow' , __FILE__, 'twitter_unfollow');
Hook::register('expire' , __FILE__, 'twitter_expire');
Hook::register('prepare_body' , __FILE__, 'twitter_prepare_body');
Hook::register('check_item_notification', __FILE__, 'twitter_check_item_notification');
}
}
+function twitter_unfollow(App $a, array &$hook_data)
+{
+ $contact = $hook_data['contact'];
+ Logger::info('Check if contact is twitter contact', ['url' => $contact["url"]]);
+
+ if (!strstr($contact["url"], "://twitter.com") && !strstr($contact["url"], "@twitter.com")) {
+ return;
+ }
+
+ // contact seems to be a twitter contact, so continue
+ $nickname = preg_replace("=https?://twitter.com/(.*)=ism", "$1", $contact["url"]);
+ $nickname = str_replace("@twitter.com", "", $nickname);
+
+ $uid = $a->getLoggedInUserId();
+
+ $ckey = DI::config()->get('twitter', 'consumerkey');
+ $csecret = DI::config()->get('twitter', 'consumersecret');
+ $otoken = DI::pConfig()->get($uid, 'twitter', 'oauthtoken');
+ $osecret = DI::pConfig()->get($uid, 'twitter', 'oauthsecret');
+
+ // If the addon is not configured (general or for this user) quit here
+ if (empty($ckey) || empty($csecret) || empty($otoken) || empty($osecret)) {
+ return;
+ }
+
+ try {
+ $connection = new TwitterOAuth($ckey, $csecret, $otoken, $osecret);
+ $connection->post('friendships/destroy', ['screen_name' => $nickname]);
+ } catch(Exception $e) {
+ Logger::notice('[twitter] API call "friendships/destroy" failed', ['uid' => $uid, 'url' => $contact['url'], 'exception' => $e]);
+ }
+}
+
function twitter_jot_nets(App $a, array &$jotnets_fields)
{
if (!local_user()) {