From a54278649f73f1562a89c8e57e9018d9dcf4d9db Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 20:13:40 -0700 Subject: [PATCH] poke notifications --- boot.php | 1 + include/enotify.php | 18 ++++++++++++++++ include/items.php | 52 ++++++++++++++++++++++++++++++++++++++++++++- mod/settings.php | 3 +++ view/settings.tpl | 1 + 5 files changed, 74 insertions(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 4f52db8638..beaaeb2475 100644 --- a/boot.php +++ b/boot.php @@ -191,6 +191,7 @@ define ( 'NOTIFY_SUGGEST', 0x0020 ); define ( 'NOTIFY_PROFILE', 0x0040 ); define ( 'NOTIFY_TAGSELF', 0x0080 ); define ( 'NOTIFY_TAGSHARE', 0x0100 ); +define ( 'NOTIFY_POKE', 0x0200 ); define ( 'NOTIFY_SYSTEM', 0x8000 ); diff --git a/include/enotify.php b/include/enotify.php index 814bd06a4c..5109914762 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -147,6 +147,24 @@ function notification($params) { $itemlink = $params['link']; } + if($params['type'] == NOTIFY_POKE) { + + $subject = sprintf( t('[Friendica:Notify] %1$s poked you') , $params['source_name']); + $preamble = sprintf( t('%1$s poked you at %2$s') , $params['source_name'], $sitename); + $epreamble = sprintf( t('%1$s [url=%2$s]poked you[/url].') , + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $params['link']); + + $subject = str_replace('poked', t($params['activity']), $subject); + $preamble = str_replace('poked', t($params['activity']), $preamble); + $epreamble = str_replace('poked', t($params['activity']), $epreamble); + + $sitelink = t('Please visit %s to view and/or reply to the conversation.'); + $tsitelink = sprintf( $sitelink, $siteurl ); + $hsitelink = sprintf( $sitelink, '' . $sitename . ''); + $itemlink = $params['link']; + } + if($params['type'] == NOTIFY_TAGSHARE) { $subject = sprintf( t('[Friendica:Notify] %s tagged your post') , $params['source_name']); $preamble = sprintf( t('%1$s tagged your post at %2$s') , $params['source_name'], $sitename); diff --git a/include/items.php b/include/items.php index b933804fd9..fe729000cc 100755 --- a/include/items.php +++ b/include/items.php @@ -2958,7 +2958,57 @@ function local_delivery($importer,$data) { $datarray['owner-avatar'] = $importer['thumb']; } - $r = item_store($datarray); + $posted_id = item_store($datarray); + + if(stristr($datarray['verb'],ACTIVITY_POKE)) { + $verb = urldecode(substr($datarray['verb'],strpos($datarray['verb'],'#')+1)); + if(! $verb) + continue; + $xo = parse_xml_string($datarray['object'],false); + + if(($xo->type == ACTIVITY_OBJ_PERSON) && ($xo->id)) { + + // somebody was poked/prodded. Was it me? + + $links = parse_xml_string("".unxmlify($xo->link)."",false); + + foreach($links->link as $l) { + $atts = $l->attributes(); + switch($atts['rel']) { + case "alternate": + $Blink = $atts['href']; + break; + default: + break; + } + } + if($Blink && link_compare($Blink,$a->get_baseurl() . '/profile/' . $importer['nickname'])) { + + // send a notification + require_once('include/enotify.php'); + + notification(array( + 'type' => NOTIFY_POKE, + 'notify_flags' => $importer['notify-flags'], + 'language' => $importer['language'], + 'to_name' => $importer['username'], + 'to_email' => $importer['email'], + 'uid' => $importer['importer_uid'], + 'item' => $datarray, + 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id, + 'source_name' => stripslashes($datarray['author-name']), + 'source_link' => $datarray['author-link'], + 'source_photo' => ((link_compare($datarray['author-link'],$importer['url'])) + ? $importer['thumb'] : $datarray['author-avatar']), + 'verb' => $datarray['verb'], + 'otype' => 'person', + 'activity' => $verb, + + )); + } + } + } + continue; } } diff --git a/mod/settings.php b/mod/settings.php index b1c3cf7d40..0d9d35f692 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -373,6 +373,8 @@ function settings_post(&$a) { $notify += intval($_POST['notify6']); if(x($_POST,'notify7')) $notify += intval($_POST['notify7']); + if(x($_POST,'notify8')) + $notify += intval($_POST['notify8']); $email_changed = false; @@ -1025,6 +1027,7 @@ function settings_content(&$a) { '$notify5' => array('notify5', t('You receive a private message'), ($notify & NOTIFY_MAIL), NOTIFY_MAIL, ''), '$notify6' => array('notify6', t('You receive a friend suggestion'), ($notify & NOTIFY_SUGGEST), NOTIFY_SUGGEST, ''), '$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''), + '$notify8' => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, ''), '$h_advn' => t('Advanced Account/Page Type Settings'), diff --git a/view/settings.tpl b/view/settings.tpl index 99ee9b51ef..bebd0c12a8 100644 --- a/view/settings.tpl +++ b/view/settings.tpl @@ -123,6 +123,7 @@ $group_select {{inc field_intcheckbox.tpl with $field=$notify5 }}{{endinc}} {{inc field_intcheckbox.tpl with $field=$notify6 }}{{endinc}} {{inc field_intcheckbox.tpl with $field=$notify7 }}{{endinc}} +{{inc field_intcheckbox.tpl with $field=$notify8 }}{{endinc}}