]> git.mxchange.org Git - friendica.git/blobdiff - mod/notify.php
Merge pull request #2190 from annando/1512-getload
[friendica.git] / mod / notify.php
index d1e5022bcb59f386b06a9e6783444fec91837505..02260514af91493b287a06438fd799e016c224e5 100644 (file)
@@ -11,19 +11,74 @@ function notify_init(&$a) {
                        intval(local_user())
                );
                if(count($r)) {
-                       q("update notify set seen = 1 where id = %d and uid = %d limit 1",
-                               intval($a->argv[2]),
+                       q("update notify set seen = 1 where ( link = '%s' or ( parent != 0 and parent = %d and otype = '%s' )) and uid = %d",
+                               dbesc($r[0]['link']),
+                               intval($r[0]['parent']),
+                               dbesc($r[0]['otype']),
                                intval(local_user())
                        );
+
+                       // The friendica client has problems with the GUID. this is some workaround
+                       if ($a->is_friendica_app()) {
+                               require_once("include/items.php");
+                               $urldata = parse_url($r[0]['link']);
+                               $guid = basename($urldata["path"]);
+                               $itemdata = get_item_id($guid, local_user());
+                               if ($itemdata["id"] != 0)
+                                       $r[0]['link'] = $a->get_baseurl().'/display/'.$itemdata["nick"].'/'.$itemdata["id"];
+                       }
+
                        goaway($r[0]['link']);
                }
 
-               goaway($a->get_baseurl());
+               goaway($a->get_baseurl(true));
+       }
+
+       if($a->argc > 2 && $a->argv[1] === 'mark' && $a->argv[2] === 'all' ) {
+               $r = q("update notify set seen = 1 where uid = %d",
+                       intval(local_user())
+               );
+               $j = json_encode(array('result' => ($r) ? 'success' : 'fail'));
+               echo $j;
+               killme();
        }
+
 }
 
 
 function notify_content(&$a) {
        if(! local_user())
                return login();
-}
\ No newline at end of file
+
+               $notif_tpl = get_markup_template('notifications.tpl');
+
+               $not_tpl = get_markup_template('notify.tpl');
+               require_once('include/bbcode.php');
+
+               $r = q("SELECT * from notify where uid = %d and seen = 0 order by date desc",
+                       intval(local_user())
+               );
+
+               if (count($r) > 0) {
+                       foreach ($r as $it) {
+                               $notif_content .= replace_macros($not_tpl,array(
+                                       '$item_link' => $a->get_baseurl(true).'/notify/view/'. $it['id'],
+                                       '$item_image' => $it['photo'],
+                                       '$item_text' => strip_tags(bbcode($it['msg'])),
+                                       '$item_when' => relative_date($it['date'])
+                               ));
+                       }
+               } else {
+                       $notif_content .= t('No more system notifications.');
+               }
+
+               $o .= replace_macros($notif_tpl, array(
+                       '$notif_header' => t('System Notifications'),
+                       '$tabs' => '', // $tabs,
+                       '$notif_content' => $notif_content,
+               ));
+
+       return $o;
+
+
+}