implement firehose notify in ping, strip links so notify popup displays correctly in all themes

This commit is contained in:
friendica 2012-02-23 16:50:29 -08:00
parent 8cacff6985
commit b4d38f6eed
2 changed files with 116 additions and 141 deletions

View File

@ -9,7 +9,7 @@ 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.1260' ); define ( 'FRIENDICA_VERSION', '2.3.1261' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
define ( 'DB_UPDATE_VERSION', 1123 ); define ( 'DB_UPDATE_VERSION', 1123 );

View File

@ -12,13 +12,14 @@ function ping_init(&$a) {
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">"; $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
if(local_user()){ if(local_user()){
$firehose = intval(get_pconfig(local_user(),'system','notify_full'));
$z = q("select * from notify where seen = 0 and uid = %d $z = q("select * from notify where seen = 0 and uid = %d
order by date desc", order by date desc",
intval(local_user()) intval(local_user())
); );
$tags = array(); $tags = array();
$comments = array(); $comments = array();
$likes = array(); $likes = array();
@ -32,72 +33,48 @@ function ping_init(&$a) {
`pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink` `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink`
FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent` FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent`
WHERE `item`.`unseen` = 1 AND `item`.`visible` = 1 AND WHERE `item`.`unseen` = 1 AND `item`.`visible` = 1 AND
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0 `item`.`deleted` = 0 AND `item`.`uid` = %d
ORDER BY `item`.`created` DESC", ORDER BY `item`.`created` DESC",
intval(local_user()) intval(local_user())
); );
$network = count($r); if(count($r)) {
foreach ($r as $it) {
switch($it['verb']){ foreach ($r as $it) {
case ACTIVITY_TAG:
$obj = parse_xml_string($xmlhead.$it['object']); if($it['wall'])
$it['tname'] = $obj->content; $home ++;
$tags[] = $it; else
break; $network ++;
case ACTIVITY_LIKE:
$likes[] = $it; switch($it['verb']){
break; case ACTIVITY_TAG:
case ACTIVITY_DISLIKE: $obj = parse_xml_string($xmlhead.$it['object']);
$dislikes[] = $it; $it['tname'] = $obj->content;
break; $tags[] = $it;
case ACTIVITY_FRIEND: break;
$obj = parse_xml_string($xmlhead.$it['object']); case ACTIVITY_LIKE:
$it['fname'] = $obj->title; $likes[] = $it;
$friends[] = $it; break;
break; case ACTIVITY_DISLIKE:
default: $dislikes[] = $it;
if ($it['parent']!=$it['id']) { break;
$comments[] = $it; case ACTIVITY_FRIEND:
} else { $obj = parse_xml_string($xmlhead.$it['object']);
$posts[] = $it; $it['fname'] = $obj->title;
} $friends[] = $it;
break;
default:
if ($it['parent']!=$it['id']) {
$comments[] = $it;
} else {
if(! $it['wall'])
$posts[] = $it;
}
}
} }
} }
$r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object`,
`pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink`
FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent`
WHERE `item`.`unseen` = 1 AND `item`.`visible` = 1 AND
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 1",
intval(local_user())
);
$home = count($r);
foreach ($r as $it) {
switch($it['verb']){
case ACTIVITY_TAG:
$obj = parse_xml_string($xmlhead.$it['object']);
$it['tname'] = $obj->content;
$tags[] = $it;
break;
case ACTIVITY_LIKE:
$likes[] = $it;
break;
case ACTIVITY_DISLIKE:
$dislikes[] = $it;
break;
case ACTIVITY_FRIEND:
$obj = parse_xml_string($xmlhead.$it['object']);
$it['fname'] = $obj->title;
$friends[] = $it;
break;
default:
if ($it['parent']!=$it['id']) $comments[] = $it;
}
}
$intros1 = q("SELECT `intro`.`id`, `intro`.`datetime`, $intros1 = q("SELECT `intro`.`id`, `intro`.`datetime`,
`fcontact`.`name`, `fcontact`.`url`, `fcontact`.`photo` `fcontact`.`name`, `fcontact`.`url`, `fcontact`.`photo`
FROM `intro` LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id` FROM `intro` LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id`
@ -122,11 +99,13 @@ function ping_init(&$a) {
intval(local_user()), intval(local_user()),
dbesc($myurl) dbesc($myurl)
); );
$mail = $mails[0]['total']; if($mails)
$mail = $mails[0]['total'];
if ($a->config['register_policy'] == REGISTER_APPROVE && is_site_admin()){ if ($a->config['register_policy'] == REGISTER_APPROVE && is_site_admin()){
$regs = q("SELECT `contact`.`name`, `contact`.`url`, `contact`.`micro`, `register`.`created`, COUNT(*) as `total` FROM `contact` RIGHT JOIN `register` ON `register`.`uid`=`contact`.`uid` WHERE `contact`.`self`=1"); $regs = q("SELECT `contact`.`name`, `contact`.`url`, `contact`.`micro`, `register`.`created`, COUNT(*) as `total` FROM `contact` RIGHT JOIN `register` ON `register`.`uid`=`contact`.`uid` WHERE `contact`.`self`=1");
$register = $regs[0]['total']; if($regs)
$register = $regs[0]['total'];
} else { } else {
$register = "0"; $register = "0";
} }
@ -135,11 +114,10 @@ function ping_init(&$a) {
function xmlize($href, $name, $url, $photo, $date, $message){ function xmlize($href, $name, $url, $photo, $date, $message){
$notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s">%s</note>'; $notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s">%s</note>';
return sprintf ( $notsxml, return sprintf ( $notsxml,
xmlify($href), xmlify($name), xmlify($url), xmlify($photo), xmlify($date), xmlify($message) xmlify($href), xmlify($name), xmlify($url), xmlify($photo), xmlify($date), xmlify($message)
); );
} }
echo "<intro>$intro</intro> echo "<intro>$intro</intro>
<mail>$mail</mail> <mail>$mail</mail>
<net>$network</net> <net>$network</net>
@ -147,95 +125,92 @@ function ping_init(&$a) {
if ($register!=0) echo "<register>$register</register>"; if ($register!=0) echo "<register>$register</register>";
$tot = $mail+$intro+$register+count($comments)+count($likes)+count($dislikes)+count($friends)+count($posts)+count($tags); $tot = $mail+$intro+$register+count($comments)+count($likes)+count($dislikes)+count($friends)+count($posts)+count($tags);
echo ' <notif count="'.$tot.'">';
require_once('include/bbcode.php'); require_once('include/bbcode.php');
if(count($z)) { if($firehose) {
foreach($z as $zz) { echo ' <notif count="'.$tot.'">';
echo xmlize($a->get_baseurl() . '/notify/' . $zz['id'], $zz['name'],$zz['url'],$zz['photo'],relative_date($zz['date']), bbcode($zz['msg'])); }
else {
echo ' <notif count="'. count($z) .'">';
if(count($z)) {
foreach($z as $zz) {
echo xmlize($a->get_baseurl() . '/notify/view' . $zz['id'], $zz['name'],$zz['url'],$zz['photo'],relative_date($zz['date']), strip_tags(bbcode($zz['msg'])));
}
} }
} }
if($firehose) {
if ($intro>0){
foreach ($intros as $i) {
echo xmlize( $a->get_baseurl().'/notifications/intros/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), t("{0} wants to be your friend") );
};
}
if ($mail>0){
foreach ($mails as $i) {
echo xmlize( $a->get_baseurl().'/message/'.$i['id'], $i['from-name'], $i['from-url'], $i['from-photo'], relative_date($i['created']), t("{0} sent you a message") );
};
}
if ($register>0){
foreach ($regs as $i) {
echo xmlize( $a->get_baseurl().'/admin/users/', $i['name'], $i['url'], $i['micro'], relative_date($i['created']), t("{0} requested registration") );
};
}
if (count($comments)){
foreach ($comments as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} commented %s's post"), $i['pname'] ) );
};
}
if (count($likes)){
foreach ($likes as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} liked %s's post"), $i['pname'] ) );
};
}
if (count($dislikes)){
foreach ($dislikes as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} disliked %s's post"), $i['pname'] ) );
};
}
if (count($friends)){
foreach ($friends as $i) {
echo xmlize($a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'],$i['author-name'],$i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} is now friends with %s"), $i['fname'] ) );
};
}
if (count($posts)){
foreach ($posts as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} posted") ) );
};
}
if (count($tags)){
foreach ($tags as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} tagged %s's post with #%s"), $i['pname'], $i['tname'] ) );
};
}
if (count($cit)){
foreach ($cit as $i) {
/* echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), t("{0} mentioned you in a post") );
};
if ($intro>0){ }
foreach ($intros as $i) {
echo xmlize( $a->get_baseurl().'/notifications/intros/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), t("{0} wants to be your friend") );
};
} }
if ($mail>0){
foreach ($mails as $i) {
echo xmlize( $a->get_baseurl().'/message/'.$i['id'], $i['from-name'], $i['from-url'], $i['from-photo'], relative_date($i['created']), t("{0} sent you a message") );
};
}
if ($register>0){
foreach ($regs as $i) {
echo xmlize( $a->get_baseurl().'/admin/users/', $i['name'], $i['url'], $i['micro'], relative_date($i['created']), t("{0} requested registration") );
};
}
if (count($comments)){
foreach ($comments as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} commented %s's post"), $i['pname'] ) );
};
}
if (count($likes)){
foreach ($likes as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} liked %s's post"), $i['pname'] ) );
};
}
if (count($dislikes)){
foreach ($dislikes as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} disliked %s's post"), $i['pname'] ) );
};
}
if (count($friends)){
foreach ($friends as $i) {
echo xmlize($a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'],$i['author-name'],$i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} is now friends with %s"), $i['fname'] ) );
};
}
if (count($posts)){
foreach ($posts as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} posted") ) );
};
}
if (count($tags)){
foreach ($tags as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} tagged %s's post with #%s"), $i['pname'], $i['tname'] ) );
};
}
if (count($cit)){
foreach ($cit as $i) {
echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), t("{0} mentioned you in a post") );
};
}
*/
echo " </notif>"; echo " </notif>";
} }
echo " <sysmsgs>"; echo " <sysmsgs>";
if(x($_SESSION,'sysmsg')){ if(x($_SESSION,'sysmsg')){
foreach ($_SESSION['sysmsg'] as $m){ foreach ($_SESSION['sysmsg'] as $m){
echo "<notice>".xmlify($m)."</notice>"; echo "<notice>".xmlify($m)."</notice>";
}
unset($_SESSION['sysmsg']);
} }
if(x($_SESSION,'sysmsg_info')){ unset($_SESSION['sysmsg']);
foreach ($_SESSION['sysmsg_info'] as $m){ }
echo "<info>".xmlify($m)."</info>"; if(x($_SESSION,'sysmsg_info')){
} foreach ($_SESSION['sysmsg_info'] as $m){
unset($_SESSION['sysmsg_info']); echo "<info>".xmlify($m)."</info>";
} }
unset($_SESSION['sysmsg_info']);
}
echo " </sysmsgs>"; echo " </sysmsgs>";
echo"</result> echo"</result>