Merge branch 'master', remote-tracking branch 'remotes/upstream/master'
* remotes/upstream/master: yet more work on notifications notification enhancements better handling of multiple notifications for same item, and old notifications * master:
This commit is contained in:
commit
b7ab2a2fc9
4
boot.php
4
boot.php
|
@ -9,9 +9,9 @@ require_once('include/nav.php');
|
||||||
require_once('include/cache.php');
|
require_once('include/cache.php');
|
||||||
|
|
||||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define ( 'FRIENDICA_VERSION', '2.3.1266' );
|
define ( 'FRIENDICA_VERSION', '2.3.1267' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1129 );
|
define ( 'DB_UPDATE_VERSION', 1130 );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
|
|
@ -752,14 +752,18 @@ CREATE TABLE IF NOT EXISTS `notify` (
|
||||||
`msg` MEDIUMTEXT NOT NULL ,
|
`msg` MEDIUMTEXT NOT NULL ,
|
||||||
`uid` INT NOT NULL ,
|
`uid` INT NOT NULL ,
|
||||||
`link` CHAR( 255 ) NOT NULL ,
|
`link` CHAR( 255 ) NOT NULL ,
|
||||||
|
`parent` INT( 11 ) NOT NULL,
|
||||||
`seen` TINYINT( 1 ) NOT NULL DEFAULT '0',
|
`seen` TINYINT( 1 ) NOT NULL DEFAULT '0',
|
||||||
`verb` CHAR( 255 ) NOT NULL,
|
`verb` CHAR( 255 ) NOT NULL,
|
||||||
`otype` CHAR( 16 ) NOT NULL,
|
`otype` CHAR( 16 ) NOT NULL,
|
||||||
INDEX ( `hash` ),
|
INDEX ( `hash` ),
|
||||||
INDEX ( `type` ),
|
INDEX ( `type` ),
|
||||||
INDEX ( `uid` ),
|
INDEX ( `uid` ),
|
||||||
|
INDEX ( `link` ),
|
||||||
|
INDEX ( `parent` ),
|
||||||
INDEX ( `seen` ),
|
INDEX ( `seen` ),
|
||||||
INDEX ( `date` )
|
INDEX ( `date` ),
|
||||||
|
INDEX ( `otype` )
|
||||||
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `item_id` (
|
CREATE TABLE IF NOT EXISTS `item_id` (
|
||||||
|
|
|
@ -25,6 +25,9 @@ function notification($params) {
|
||||||
$title = $body = '';
|
$title = $body = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// e.g. "your post", "David's photo", etc.
|
||||||
|
$possess_desc = t('%s <!item_type!>');
|
||||||
|
|
||||||
if($params['type'] == NOTIFY_MAIL) {
|
if($params['type'] == NOTIFY_MAIL) {
|
||||||
|
|
||||||
$subject = sprintf( t('[Friendica:Notify] New mail received at %s'),$sitename);
|
$subject = sprintf( t('[Friendica:Notify] New mail received at %s'),$sitename);
|
||||||
|
@ -41,7 +44,32 @@ function notification($params) {
|
||||||
// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
|
// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
|
||||||
|
|
||||||
$parent_id = $params['parent'];
|
$parent_id = $params['parent'];
|
||||||
|
|
||||||
|
|
||||||
|
// if it's a post figure out who's post it is.
|
||||||
|
|
||||||
|
$p = null;
|
||||||
|
|
||||||
|
if($params['otype'] === 'item' && $parent_id) {
|
||||||
|
$p = q("select * from item where id = %d and uid = %d limit 1",
|
||||||
|
intval($parent_id),
|
||||||
|
intval($params['uid'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$possess_desc = str_replace('<!item_type!>',item_post_type($p[0]),$possess_desc);
|
||||||
|
|
||||||
|
// "a post"
|
||||||
|
$dest_str = sprintf($possess_desc,'a');
|
||||||
|
|
||||||
|
// "George Bull's post"
|
||||||
|
if($p)
|
||||||
|
$dest_str = sprintf($possess_desc,sprintf( t("%s's"),$p[0]['author-name']));
|
||||||
|
|
||||||
|
// "your post"
|
||||||
|
if($p[0]['owner-name'] == $p[0]['author-name'] && $p[0]['wall'])
|
||||||
|
$dest_str = sprintf($possess_desc, t('your') );
|
||||||
|
|
||||||
// Some mail softwares relies on subject field for threading.
|
// Some mail softwares relies on subject field for threading.
|
||||||
// So, we cannot have different subjects for notifications of the same thread.
|
// So, we cannot have different subjects for notifications of the same thread.
|
||||||
// Before this we have the name of the replier on the subject rendering
|
// Before this we have the name of the replier on the subject rendering
|
||||||
|
@ -49,7 +77,7 @@ function notification($params) {
|
||||||
|
|
||||||
$subject = sprintf( t('[Friendica:Notify] Comment to conversation #%d by %s'), $parent_id, $params['source_name']);
|
$subject = sprintf( t('[Friendica:Notify] Comment to conversation #%d by %s'), $parent_id, $params['source_name']);
|
||||||
$preamble = sprintf( t('%s commented on an item/conversation you have been following.'), $params['source_name']);
|
$preamble = sprintf( t('%s commented on an item/conversation you have been following.'), $params['source_name']);
|
||||||
$epreamble = sprintf( t('%s commented in %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a watched conversation') . '[/url]');
|
$epreamble = sprintf( t('%s commented on %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . $dest_str . '[/url]');
|
||||||
|
|
||||||
$sitelink = t('Please visit %s to view and/or reply to the conversation.');
|
$sitelink = t('Please visit %s to view and/or reply to the conversation.');
|
||||||
$tsitelink = sprintf( $sitelink, $siteurl );
|
$tsitelink = sprintf( $sitelink, $siteurl );
|
||||||
|
@ -149,6 +177,7 @@ function notification($params) {
|
||||||
$datarray['date'] = datetime_convert();
|
$datarray['date'] = datetime_convert();
|
||||||
$datarray['uid'] = $params['uid'];
|
$datarray['uid'] = $params['uid'];
|
||||||
$datarray['link'] = $itemlink;
|
$datarray['link'] = $itemlink;
|
||||||
|
$datarray['parent'] = $parent_id;
|
||||||
$datarray['type'] = $params['type'];
|
$datarray['type'] = $params['type'];
|
||||||
$datarray['verb'] = $params['verb'];
|
$datarray['verb'] = $params['verb'];
|
||||||
$datarray['otype'] = $params['otype'];
|
$datarray['otype'] = $params['otype'];
|
||||||
|
@ -157,8 +186,8 @@ function notification($params) {
|
||||||
|
|
||||||
// create notification entry in DB
|
// create notification entry in DB
|
||||||
|
|
||||||
$r = q("insert into notify (hash,name,url,photo,date,uid,link,type,verb,otype)
|
$r = q("insert into notify (hash,name,url,photo,date,uid,link,parent,type,verb,otype)
|
||||||
values('%s','%s','%s','%s','%s',%d,'%s',%d,'%s','%s')",
|
values('%s','%s','%s','%s','%s',%d,'%s',%d,%d,'%s','%s')",
|
||||||
dbesc($datarray['hash']),
|
dbesc($datarray['hash']),
|
||||||
dbesc($datarray['name']),
|
dbesc($datarray['name']),
|
||||||
dbesc($datarray['url']),
|
dbesc($datarray['url']),
|
||||||
|
@ -166,6 +195,7 @@ function notification($params) {
|
||||||
dbesc($datarray['date']),
|
dbesc($datarray['date']),
|
||||||
intval($datarray['uid']),
|
intval($datarray['uid']),
|
||||||
dbesc($datarray['link']),
|
dbesc($datarray['link']),
|
||||||
|
intval($datarray['parent']),
|
||||||
intval($datarray['type']),
|
intval($datarray['type']),
|
||||||
dbesc($datarray['verb']),
|
dbesc($datarray['verb']),
|
||||||
dbesc($datarray['otype'])
|
dbesc($datarray['otype'])
|
||||||
|
|
|
@ -2325,35 +2325,44 @@ function local_delivery($importer,$data) {
|
||||||
|
|
||||||
if(count($myconv)) {
|
if(count($myconv)) {
|
||||||
$importer_url = $a->get_baseurl() . '/profile/' . $importer['nickname'];
|
$importer_url = $a->get_baseurl() . '/profile/' . $importer['nickname'];
|
||||||
foreach($myconv as $conv) {
|
|
||||||
|
|
||||||
if(! link_compare($conv['author-link'],$importer_url))
|
// first make sure this isn't our own post coming back to us from a wall-to-wall event
|
||||||
continue;
|
if(! link_compare($datarray['author-link'],$importer_url)) {
|
||||||
|
|
||||||
require_once('include/enotify.php');
|
|
||||||
|
|
||||||
$conv_parent = $conv['parent'];
|
foreach($myconv as $conv) {
|
||||||
|
|
||||||
notification(array(
|
// now if we find a match, it means we're in this conversation
|
||||||
'type' => NOTIFY_COMMENT,
|
|
||||||
'notify_flags' => $importer['notify-flags'],
|
if(! link_compare($conv['author-link'],$importer_url))
|
||||||
'language' => $importer['language'],
|
continue;
|
||||||
'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' => ACTIVITY_POST,
|
|
||||||
'otype' => 'item',
|
|
||||||
'parent' => $conv_parent,
|
|
||||||
|
|
||||||
));
|
require_once('include/enotify.php');
|
||||||
|
|
||||||
|
$conv_parent = $conv['parent'];
|
||||||
|
|
||||||
break;
|
notification(array(
|
||||||
|
'type' => NOTIFY_COMMENT,
|
||||||
|
'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' => ACTIVITY_POST,
|
||||||
|
'otype' => 'item',
|
||||||
|
'parent' => $conv_parent,
|
||||||
|
|
||||||
|
));
|
||||||
|
|
||||||
|
// only send one notification
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1201,3 +1201,16 @@ function reltoabs($text, $base)
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function item_post_type($item) {
|
||||||
|
if(intval($item['event-id']))
|
||||||
|
return t('event');
|
||||||
|
if(strlen($item['resource-id']))
|
||||||
|
return t('photo');
|
||||||
|
if(strlen($item['verb']) && $item['verb'] !== ACTIVITY_POST)
|
||||||
|
return t('activity');
|
||||||
|
if($item['id'] != $item['parent'])
|
||||||
|
return t('comment');
|
||||||
|
return t('post');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,10 @@ function notify_init(&$a) {
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
if(count($r)) {
|
if(count($r)) {
|
||||||
q("update notify set seen = 1 where id = %d and uid = %d limit 1",
|
q("update notify set seen = 1 where ( link = '%s' or ( parent != 0 and parent = %d and otype = '%s' )) and uid = %d",
|
||||||
intval($a->argv[2]),
|
dbesc($r[0]['link']),
|
||||||
|
intval($r[0]['parent']),
|
||||||
|
dbesc($r[0]['otype']),
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
goaway($r[0]['link']);
|
goaway($r[0]['link']);
|
||||||
|
|
23
mod/ping.php
23
mod/ping.php
|
@ -14,10 +14,29 @@ function ping_init(&$a) {
|
||||||
|
|
||||||
$firehose = intval(get_pconfig(local_user(),'system','notify_full'));
|
$firehose = intval(get_pconfig(local_user(),'system','notify_full'));
|
||||||
|
|
||||||
$z = q("select * from notify where uid = %d
|
$t = q("select count(*) as total from notify where uid = %d and seen = 0",
|
||||||
order by seen asc, date desc limit 0, 50",
|
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
if($t && intval($t[0]['total']) > 49) {
|
||||||
|
$z = q("select * from notify where uid = %d
|
||||||
|
and seen = 0 order by date desc limit 0, 50",
|
||||||
|
intval(local_user())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$z1 = q("select * from notify where uid = %d
|
||||||
|
and seen = 0 order by date desc limit 0, 50",
|
||||||
|
intval(local_user())
|
||||||
|
);
|
||||||
|
|
||||||
|
$z2 = q("select * from notify where uid = %d
|
||||||
|
and seen = 1 order by date desc limit 0, %d",
|
||||||
|
intval(local_user()),
|
||||||
|
intval(50 - intval($t[0]['total']))
|
||||||
|
);
|
||||||
|
$z = array_merge($z1,$z2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$tags = array();
|
$tags = array();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1129 );
|
define( 'UPDATE_VERSION' , 1130 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -1114,3 +1114,6 @@ function update_1128() {
|
||||||
q("alter table spam add `date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `term` ");
|
q("alter table spam add `date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `term` ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1129() {
|
||||||
|
q("ALTER TABLE `notify` ADD `parent` INT NOT NULL AFTER `link` , ADD INDEX ( `parent` ), ADD INDEX ( `link` ), ADD INDEX ( `otype` ) ");
|
||||||
|
}
|
Loading…
Reference in a new issue