Merge pull request #344 from annando/1602-notifications

App.net/Pump.io/GNU Social/Twitter: Support for new notifications
pull/346/head
Tobias Diekershoff 2016-02-13 15:09:03 +01:00
commit f0310f6275
4 changed files with 107 additions and 42 deletions

View File

@ -15,6 +15,8 @@
- https://alpha.app.net/opendev/post/34396399 - location data - https://alpha.app.net/opendev/post/34396399 - location data
*/ */
require_once('include/enotify.php');
define('APPNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes define('APPNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes
function appnet_install() { function appnet_install() {
@ -25,6 +27,7 @@ function appnet_install() {
register_hook('connector_settings', 'addon/appnet/appnet.php', 'appnet_settings'); register_hook('connector_settings', 'addon/appnet/appnet.php', 'appnet_settings');
register_hook('connector_settings_post','addon/appnet/appnet.php', 'appnet_settings_post'); register_hook('connector_settings_post','addon/appnet/appnet.php', 'appnet_settings_post');
register_hook('prepare_body', 'addon/appnet/appnet.php', 'appnet_prepare_body'); register_hook('prepare_body', 'addon/appnet/appnet.php', 'appnet_prepare_body');
register_hook('check_item_notification','addon/appnet/appnet.php', 'appnet_check_item_notification');
} }
@ -36,6 +39,7 @@ function appnet_uninstall() {
unregister_hook('connector_settings', 'addon/appnet/appnet.php', 'appnet_settings'); unregister_hook('connector_settings', 'addon/appnet/appnet.php', 'appnet_settings');
unregister_hook('connector_settings_post', 'addon/appnet/appnet.php', 'appnet_settings_post'); unregister_hook('connector_settings_post', 'addon/appnet/appnet.php', 'appnet_settings_post');
unregister_hook('prepare_body', 'addon/appnet/appnet.php', 'appnet_prepare_body'); unregister_hook('prepare_body', 'addon/appnet/appnet.php', 'appnet_prepare_body');
unregister_hook('check_item_notification','addon/appnet/appnet.php', 'appnet_check_item_notification');
} }
function appnet_module() {} function appnet_module() {}
@ -64,6 +68,18 @@ function appnet_content(&$a) {
return $o; return $o;
} }
function appnet_check_item_notification($a, &$notification_data) {
$own_id = get_pconfig($notification_data["uid"], 'appnet', 'ownid');
$own_user = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($notification_data["uid"]),
dbesc("adn::".$own_id)
);
if ($own_user)
$notification_data["profiles"][] = $own_user[0]["url"];
}
function appnet_plugin_admin(&$a, &$o){ function appnet_plugin_admin(&$a, &$o){
$t = get_markup_template( "admin.tpl", "addon/appnet/" ); $t = get_markup_template( "admin.tpl", "addon/appnet/" );
@ -707,7 +723,7 @@ function appnet_fetchstream($a, $uid) {
$lastid = $post["id"]; $lastid = $post["id"];
if (($item != 0) AND ($postarray['contact-id'] != $me["id"])) { if (($item != 0) AND ($postarray['contact-id'] != $me["id"]) AND !function_exists("check_item_notification")) {
$r = q("SELECT `thread`.`iid` AS `parent` FROM `thread` $r = q("SELECT `thread`.`iid` AS `parent` FROM `thread`
INNER JOIN `item` ON `thread`.`iid` = `item`.`parent` AND `thread`.`uid` = `item`.`uid` INNER JOIN `item` ON `thread`.`iid` = `item`.`parent` AND `thread`.`uid` = `item`.`uid`
WHERE `item`.`id` = %d AND `thread`.`mention` LIMIT 1", dbesc($item)); WHERE `item`.`id` = %d AND `thread`.`mention` LIMIT 1", dbesc($item));
@ -769,6 +785,10 @@ function appnet_fetchstream($a, $uid) {
$parent_id = 0; $parent_id = 0;
logger('appnet_fetchstream: User '.$uid.' posted mention item '.$item); logger('appnet_fetchstream: User '.$uid.' posted mention item '.$item);
if ($item AND function_exists("check_item_notification"))
check_item_notification($item, $uid, NOTIFY_TAGSELF);
} else { } else {
$item = 0; $item = 0;
$parent_id = 0; $parent_id = 0;
@ -790,7 +810,7 @@ function appnet_fetchstream($a, $uid) {
$lastid = $post["id"]; $lastid = $post["id"];
//if (($item != 0) AND ($postarray['contact-id'] != $me["id"])) { //if (($item != 0) AND ($postarray['contact-id'] != $me["id"])) {
if ($item != 0) { if (($item != 0) AND !function_exists("check_item_notification")) {
require_once('include/enotify.php'); require_once('include/enotify.php');
notification(array( notification(array(
'type' => NOTIFY_TAGSELF, 'type' => NOTIFY_TAGSELF,

View File

@ -7,6 +7,7 @@
*/ */
require('addon/pumpio/oauth/http.php'); require('addon/pumpio/oauth/http.php');
require('addon/pumpio/oauth/oauth_client.php'); require('addon/pumpio/oauth/oauth_client.php');
require_once('include/enotify.php');
define('PUMPIO_DEFAULT_POLL_INTERVAL', 5); // given in minutes define('PUMPIO_DEFAULT_POLL_INTERVAL', 5); // given in minutes
@ -18,6 +19,7 @@ function pumpio_install() {
register_hook('connector_settings_post', 'addon/pumpio/pumpio.php', 'pumpio_settings_post'); register_hook('connector_settings_post', 'addon/pumpio/pumpio.php', 'pumpio_settings_post');
register_hook('cron', 'addon/pumpio/pumpio.php', 'pumpio_cron'); register_hook('cron', 'addon/pumpio/pumpio.php', 'pumpio_cron');
register_hook('queue_predeliver', 'addon/pumpio/pumpio.php', 'pumpio_queue_hook'); register_hook('queue_predeliver', 'addon/pumpio/pumpio.php', 'pumpio_queue_hook');
register_hook('check_item_notification','addon/pumpio/pumpio.php', 'pumpio_check_item_notification');
} }
function pumpio_uninstall() { function pumpio_uninstall() {
@ -28,6 +30,7 @@ function pumpio_uninstall() {
unregister_hook('connector_settings_post', 'addon/pumpio/pumpio.php', 'pumpio_settings_post'); unregister_hook('connector_settings_post', 'addon/pumpio/pumpio.php', 'pumpio_settings_post');
unregister_hook('cron', 'addon/pumpio/pumpio.php', 'pumpio_cron'); unregister_hook('cron', 'addon/pumpio/pumpio.php', 'pumpio_cron');
unregister_hook('queue_predeliver', 'addon/pumpio/pumpio.php', 'pumpio_queue_hook'); unregister_hook('queue_predeliver', 'addon/pumpio/pumpio.php', 'pumpio_queue_hook');
unregister_hook('check_item_notification','addon/pumpio/pumpio.php', 'pumpio_check_item_notification');
} }
function pumpio_module() {} function pumpio_module() {}
@ -57,6 +60,14 @@ function pumpio_content(&$a) {
return $o; return $o;
} }
function pumpio_check_item_notification($a, &$notification_data) {
$hostname = get_pconfig($notification_data["uid"], 'pumpio','host');
$username = get_pconfig($notification_data["uid"], "pumpio", "user");
$notification_data["profiles"][] = "https://".$hostname."/".$username;
}
function pumpio_registerclient(&$a, $host) { function pumpio_registerclient(&$a, $host) {
$url = "https://".$host."/api/client/register"; $url = "https://".$host."/api/client/register";
@ -857,17 +868,19 @@ function pumpio_dolike(&$a, $uid, $self, $post, $own_id, $threadcompletion = tru
// Searching for the liked post // Searching for the liked post
// Two queries for speed issues // Two queries for speed issues
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d AND `network` = '%s' LIMIT 1",
dbesc($post->object->id), dbesc($post->object->id),
intval($uid) intval($uid),
dbesc(NETWORK_PUMPIO)
); );
if (count($r)) if (count($r))
$orig_post = $r[0]; $orig_post = $r[0];
else { else {
$r = q("SELECT * FROM `item` WHERE `extid` = '%s' AND `uid` = %d LIMIT 1", $r = q("SELECT * FROM `item` WHERE `extid` = '%s' AND `uid` = %d AND `network` = '%s' LIMIT 1",
dbesc($post->object->id), dbesc($post->object->id),
intval($uid) intval($uid),
dbesc(NETWORK_PUMPIO)
); );
if (!count($r)) if (!count($r))
@ -1306,42 +1319,44 @@ function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcomplet
if (link_compare($own_id, $postarray['author-link'])) if (link_compare($own_id, $postarray['author-link']))
return $top_item; return $top_item;
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0", if (!function_exists("check_item_notification")) {
dbesc($postarray['parent-uri']), $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0",
intval($uid) dbesc($postarray['parent-uri']),
); intval($uid)
);
if(count($myconv)) { if(count($myconv)) {
foreach($myconv as $conv) { foreach($myconv as $conv) {
// now if we find a match, it means we're in this conversation // now if we find a match, it means we're in this conversation
if(!link_compare($conv['author-link'],$importer_url) AND !link_compare($conv['author-link'],$own_id)) if(!link_compare($conv['author-link'],$importer_url) AND !link_compare($conv['author-link'],$own_id))
continue; continue;
require_once('include/enotify.php'); require_once('include/enotify.php');
$conv_parent = $conv['parent']; $conv_parent = $conv['parent'];
notification(array( notification(array(
'type' => NOTIFY_COMMENT, 'type' => NOTIFY_COMMENT,
'notify_flags' => $user[0]['notify-flags'], 'notify_flags' => $user[0]['notify-flags'],
'language' => $user[0]['language'], 'language' => $user[0]['language'],
'to_name' => $user[0]['username'], 'to_name' => $user[0]['username'],
'to_email' => $user[0]['email'], 'to_email' => $user[0]['email'],
'uid' => $user[0]['uid'], 'uid' => $user[0]['uid'],
'item' => $postarray, 'item' => $postarray,
'link' => $a->get_baseurl().'/display/'.urlencode(get_item_guid($top_item)), 'link' => $a->get_baseurl().'/display/'.urlencode(get_item_guid($top_item)),
'source_name' => $postarray['author-name'], 'source_name' => $postarray['author-name'],
'source_link' => $postarray['author-link'], 'source_link' => $postarray['author-link'],
'source_photo' => $postarray['author-avatar'], 'source_photo' => $postarray['author-avatar'],
'verb' => ACTIVITY_POST, 'verb' => ACTIVITY_POST,
'otype' => 'item', 'otype' => 'item',
'parent' => $conv_parent, 'parent' => $conv_parent,
)); ));
// only send one notification // only send one notification
break; break;
}
} }
} }
} }

View File

@ -44,6 +44,7 @@
define('STATUSNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes define('STATUSNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes
require_once('library/twitteroauth.php'); require_once('library/twitteroauth.php');
require_once('include/enotify.php');
class StatusNetOAuth extends TwitterOAuth { class StatusNetOAuth extends TwitterOAuth {
function get_maxlength() { function get_maxlength() {
@ -119,6 +120,7 @@ function statusnet_install() {
register_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); register_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
register_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); register_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron');
register_hook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body'); register_hook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body');
register_hook('check_item_notification','addon/statusnet/statusnet.php', 'statusnet_check_item_notification');
logger("installed GNU Social"); logger("installed GNU Social");
} }
@ -131,6 +133,7 @@ function statusnet_uninstall() {
unregister_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); unregister_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
unregister_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); unregister_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron');
unregister_hook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body'); unregister_hook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body');
unregister_hook('check_item_notification','addon/statusnet/statusnet.php', 'statusnet_check_item_notification');
// old setting - remove only // old setting - remove only
unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
@ -139,6 +142,10 @@ function statusnet_uninstall() {
} }
function statusnet_check_item_notification($a, &$notification_data) {
$notification_data["profiles"][] = get_pconfig($notification_data["uid"], 'statusnet', 'own_url');
}
function statusnet_jot_nets(&$a,&$b) { function statusnet_jot_nets(&$a,&$b) {
if(! local_user()) if(! local_user())
return; return;
@ -1443,7 +1450,7 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
logger('statusnet_fetchhometimeline: User '.$self["nick"].' posted home timeline item '.$item); logger('statusnet_fetchhometimeline: User '.$self["nick"].' posted home timeline item '.$item);
if ($item != 0) if ($item AND !function_exists("check_item_notification"))
statusnet_checknotification($a, $uid, $nick, $item, $postarray); statusnet_checknotification($a, $uid, $nick, $item, $postarray);
} }
@ -1493,6 +1500,9 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
$postarray["id"] = $item; $postarray["id"] = $item;
logger('statusnet_fetchhometimeline: User '.$self["nick"].' posted mention timeline item '.$item); logger('statusnet_fetchhometimeline: User '.$self["nick"].' posted mention timeline item '.$item);
if ($item AND function_exists("check_item_notification"))
check_item_notification($item, $uid, NOTIFY_TAGSELF);
} }
} }
@ -1505,7 +1515,7 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
$parent_id = $r[0]['parent']; $parent_id = $r[0]['parent'];
} }
if ($item != 0) { if (($item != 0) AND !function_exists("check_item_notification")) {
require_once('include/enotify.php'); require_once('include/enotify.php');
notification(array( notification(array(
'type' => NOTIFY_TAGSELF, 'type' => NOTIFY_TAGSELF,
@ -1536,6 +1546,7 @@ function statusnet_complete_conversation($a, $uid, $self, $create_user, $nick, $
$api = get_pconfig($uid, 'statusnet', 'baseapi'); $api = get_pconfig($uid, 'statusnet', 'baseapi');
$otoken = get_pconfig($uid, 'statusnet', 'oauthtoken'); $otoken = get_pconfig($uid, 'statusnet', 'oauthtoken');
$osecret = get_pconfig($uid, 'statusnet', 'oauthsecret'); $osecret = get_pconfig($uid, 'statusnet', 'oauthsecret');
$own_url = get_pconfig($uid, 'statusnet', 'own_url');
require_once('library/twitteroauth.php'); require_once('library/twitteroauth.php');
@ -1559,7 +1570,7 @@ function statusnet_complete_conversation($a, $uid, $self, $create_user, $nick, $
logger('statusnet_complete_conversation: User '.$self["nick"].' posted home timeline item '.$item); logger('statusnet_complete_conversation: User '.$self["nick"].' posted home timeline item '.$item);
if ($item != 0) if ($item AND !function_exists("check_item_notification"))
statusnet_checknotification($a, $uid, $nick, $item, $postarray); statusnet_checknotification($a, $uid, $nick, $item, $postarray);
} }
} }

View File

@ -60,6 +60,8 @@
* Requirements: PHP5, curl [Slinky library] * Requirements: PHP5, curl [Slinky library]
*/ */
require_once('include/enotify.php');
define('TWITTER_DEFAULT_POLL_INTERVAL', 5); // given in minutes define('TWITTER_DEFAULT_POLL_INTERVAL', 5); // given in minutes
function twitter_install() { function twitter_install() {
@ -74,6 +76,7 @@ function twitter_install() {
register_hook('follow', 'addon/twitter/twitter.php', 'twitter_follow'); register_hook('follow', 'addon/twitter/twitter.php', 'twitter_follow');
register_hook('expire', 'addon/twitter/twitter.php', 'twitter_expire'); register_hook('expire', 'addon/twitter/twitter.php', 'twitter_expire');
register_hook('prepare_body', 'addon/twitter/twitter.php', 'twitter_prepare_body'); register_hook('prepare_body', 'addon/twitter/twitter.php', 'twitter_prepare_body');
register_hook('check_item_notification','addon/twitter/twitter.php', 'twitter_check_item_notification');
logger("installed twitter"); logger("installed twitter");
} }
@ -89,6 +92,7 @@ function twitter_uninstall() {
unregister_hook('follow', 'addon/twitter/twitter.php', 'twitter_follow'); unregister_hook('follow', 'addon/twitter/twitter.php', 'twitter_follow');
unregister_hook('expire', 'addon/twitter/twitter.php', 'twitter_expire'); unregister_hook('expire', 'addon/twitter/twitter.php', 'twitter_expire');
unregister_hook('prepare_body', 'addon/twitter/twitter.php', 'twitter_prepare_body'); unregister_hook('prepare_body', 'addon/twitter/twitter.php', 'twitter_prepare_body');
unregister_hook('check_item_notification','addon/twitter/twitter.php', 'twitter_check_item_notification');
// old setting - remove only // old setting - remove only
unregister_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook'); unregister_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook');
@ -97,6 +101,18 @@ function twitter_uninstall() {
} }
function twitter_check_item_notification($a, &$notification_data) {
$own_id = get_pconfig($notification_data["uid"], 'twitter', 'own_id');
$own_user = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($notification_data["uid"]),
dbesc("twitter::".$own_id)
);
if ($own_user)
$notification_data["profiles"][] = $own_user[0]["url"];
}
function twitter_follow($a, &$contact) { function twitter_follow($a, &$contact) {
logger("twitter_follow: Check if contact is twitter contact. ".$contact["url"], LOGGER_DEBUG); logger("twitter_follow: Check if contact is twitter contact. ".$contact["url"], LOGGER_DEBUG);
@ -1600,7 +1616,7 @@ function twitter_fetchparentposts($a, $uid, $post, $connection, $self, $own_id)
logger('twitter_fetchparentpost: User '.$self["nick"].' posted parent timeline item '.$item); logger('twitter_fetchparentpost: User '.$self["nick"].' posted parent timeline item '.$item);
if ($item != 0) if ($item AND !function_exists("check_item_notification"))
twitter_checknotification($a, $uid, $own_id, $item, $postarray); twitter_checknotification($a, $uid, $own_id, $item, $postarray);
} }
} }
@ -1710,7 +1726,7 @@ function twitter_fetchhometimeline($a, $uid) {
logger('twitter_fetchhometimeline: User '.$self["nick"].' posted home timeline item '.$item); logger('twitter_fetchhometimeline: User '.$self["nick"].' posted home timeline item '.$item);
if ($item != 0) if ($item AND !function_exists("check_item_notification"))
twitter_checknotification($a, $uid, $own_id, $item, $postarray); twitter_checknotification($a, $uid, $own_id, $item, $postarray);
} }
@ -1755,6 +1771,9 @@ function twitter_fetchhometimeline($a, $uid) {
$item = item_store($postarray); $item = item_store($postarray);
$postarray["id"] = $item; $postarray["id"] = $item;
if ($item AND function_exists("check_item_notification"))
check_item_notification($item, $uid, NOTIFY_TAGSELF);
if (!isset($postarray["parent"]) OR ($postarray["parent"] == 0)) if (!isset($postarray["parent"]) OR ($postarray["parent"] == 0))
$postarray["parent"] = $item; $postarray["parent"] = $item;
@ -1772,7 +1791,7 @@ function twitter_fetchhometimeline($a, $uid) {
} else } else
$parent_id = $postarray['parent']; $parent_id = $postarray['parent'];
if ($item != 0) { if (($item != 0) AND !function_exists("check_item_notification")) {
require_once('include/enotify.php'); require_once('include/enotify.php');
notification(array( notification(array(
'type' => NOTIFY_TAGSELF, 'type' => NOTIFY_TAGSELF,