]> git.mxchange.org Git - friendica.git/blobdiff - mod/ping.php
Merge remote-tracking branch 'friendica/master'
[friendica.git] / mod / ping.php
index 9965ea91882884ac337ae72d0afd4bc42971256e..e74ef8314cb6626098192439fab4cda4f9355ab5 100644 (file)
@@ -7,28 +7,40 @@ function ping_init(&$a) {
        header("Content-type: text/xml");
        echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
                <result>";
+       
 
+       $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
        if(local_user()){
 
-               
+               $tags = array();
                $comments = array();
                $likes = array();
                $dislikes = array();
                $friends = array();
                $posts = array();
+               $cit = array();
                
+
                $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, 
-                               `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object`, 
+                               `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object`, `item`.`body`, 
                                `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` = 0 ORDER BY `item`.`created` DESC",
+                                `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0 
+                               ORDER BY `item`.`created` DESC",
                        intval(local_user())
                );
                
+               
+               
                $network = 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;
@@ -36,14 +48,16 @@ function ping_init(&$a) {
                                        $dislikes[] = $it;
                                        break;
                                case ACTIVITY_FRIEND:
-                                       $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
                                        $obj = parse_xml_string($xmlhead.$it['object']);
                                        $it['fname'] = $obj->title;                     
                                        $friends[] = $it;
                                        break;
                                default:
+                                       $reg = "|@\[url=".$a->get_baseurl()."/profile/".$a->user['nickname']."|";
                                        if ($it['parent']!=$it['id']) { 
                                                $comments[] = $it;
+                                       } else if(preg_match( $reg, $it['body'])){
+                                               $cit[] = $it;
                                        } else {
                                                $posts[] = $it;
                                        }
@@ -61,6 +75,11 @@ function ping_init(&$a) {
                $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;
@@ -68,13 +87,15 @@ function ping_init(&$a) {
                                        $dislikes[] = $it;
                                        break;
                                case ACTIVITY_FRIEND:
-                                       $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
                                        $obj = parse_xml_string($xmlhead.$it['object']);
                                        $it['fname'] = $obj->title;
                                        $friends[] = $it;
                                        break;
                                default:
                                        if ($it['parent']!=$it['id']) $comments[] = $it;
+                                       if(preg_match("/@\[[^]]*\]".$a->user['username']."/", $it['body'])){
+                                               $cit[] = $it;
+                                       }                                       
                        }
                }
 
@@ -129,12 +150,12 @@ function ping_init(&$a) {
                                <home>$home</home>";
                if ($register!=0) echo "<register>$register</register>";
                
-               $tot = $mail+$intro+$register+count($comments)+count($likes)+count($dislikes)+count($friends)+count($posts);
+               $tot = $mail+$intro+$register+count($comments)+count($likes)+count($dislikes)+count($friends)+count($posts)+count($tags)+count($cit);
                
                echo '  <notif count="'.$tot.'">';
                if ($intro>0){
                        foreach ($intros as $i) { 
-                               echo xmlize( $a->get_baseurl().'/notifications/'.$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']), t("{0} wants to be your friend") );
                        };
                }
                if ($mail>0){
@@ -170,7 +191,17 @@ function ping_init(&$a) {
                }
                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']),  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") );
                        };
                }