]> git.mxchange.org Git - friendica.git/blobdiff - mod/ping.php
implement contact archival
[friendica.git] / mod / ping.php
index 4260bbfb96419cf6b9ce7e870914215e9b69c4fb..63aaa0f45f3c5263f6bf0f98fe1cb7b2d5270972 100644 (file)
@@ -14,10 +14,31 @@ function ping_init(&$a) {
 
                $firehose = intval(get_pconfig(local_user(),'system','notify_full'));
 
-               $z = q("select * from notify where uid = %d
-                       order by seen asc, date desc limit 0, 50",
+               $t = q("select count(*) as total from notify where uid = %d and seen = 0",
                        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())
+                       );
+                       $sysnotify = $t[0]['total'];
+               }
+               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);
+                       $sysnotify = 0; // we will update this in a moment
+               }
+
 
 
                $tags = array();
@@ -26,9 +47,10 @@ function ping_init(&$a) {
                $dislikes = array();
                $friends = array();
                $posts = array();
-               
+               $home = 0;
+               $network = 0;
 
-               $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, 
+               $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`wall`, `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`
@@ -111,10 +133,12 @@ function ping_init(&$a) {
                }
 
 
-               function xmlize($href, $name, $url, $photo, $date, $message){
-                       $notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s">%s</note>';
+               function xmlize($href, $name, $url, $photo, $date, $seen, $message){
+                       $data = array('href' => &$href, 'name' => &$name, 'url'=>&$url, 'photo'=>&$photo, 'date'=>&$date, 'seen'=>&$seen, 'messsage'=>&$message);
+                       call_hooks('ping_xmlize', $data);
+                       $notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s" seen="%s" >%s</note>';
                        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($seen), xmlify($message)
                        );
                }
                
@@ -127,15 +151,22 @@ function ping_init(&$a) {
                $tot = $mail+$intro+$register+count($comments)+count($likes)+count($dislikes)+count($friends)+count($posts)+count($tags);
 
                require_once('include/bbcode.php');
-               
+
                if($firehose) {
                        echo '  <notif count="'.$tot.'">';
                }
                else {
-                       echo '  <notif count="'. count($z) .'">';
+                       if(count($z) && (! $sysnotify)) {
+                               foreach($z as $zz) {
+                                       if($zz['seen'] == 0)
+                                               $sysnotify ++;
+                               }
+                       }                                               
+
+                       echo '  <notif count="'. $sysnotify .'">';
                        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']), ($zz['seen'] ? '' : '! ') .strip_tags(bbcode($zz['msg'])));
+                                       echo xmlize($a->get_baseurl() . '/notify/view/' . $zz['id'], $zz['name'],$zz['url'],$zz['photo'],relative_date($zz['date']), ($zz['seen'] ? 'notify-seen' : 'notify-unseen'), ($zz['seen'] ? '' : '&rarr; ') .strip_tags(bbcode($zz['msg'])));
                                }
                        }
                }
@@ -143,54 +174,54 @@ function ping_init(&$a) {
                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") );
+                                       echo xmlize( $a->get_baseurl().'/notifications/intros/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), 'notify-unseen',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") );
+                                       echo xmlize( $a->get_baseurl().'/message/'.$i['id'], $i['from-name'], $i['from-url'], $i['from-photo'], relative_date($i['created']), 'notify-unseen',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") );
+                                       echo xmlize( $a->get_baseurl().'/admin/users/', $i['name'], $i['url'], $i['micro'], relative_date($i['created']), 'notify-unseen',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'] ) );
+                                       echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), 'notify-unseen',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'] ) );
+                                       echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), 'notify-unseen',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'] ) );
+                                       echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), 'notify-unseen',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'] ) );
+                                       echo xmlize($a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'],$i['author-name'],$i['author-link'], $i['author-avatar'], relative_date($i['created']), 'notify-unseen',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") ) );
+                                       echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), 'notify-unseen',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'] ) );
+                                       echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), 'notify-unseen',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 xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), 'notify-unseen',t("{0} mentioned you in a post") );
                                };
                        }
                }