]> git.mxchange.org Git - friendica.git/blob - mod/notifications.php
Merge remote-tracking branch 'upstream/develop' into 1510-diaspora-privacy
[friendica.git] / mod / notifications.php
1 <?php
2 include_once("include/bbcode.php");
3 include_once("include/contact_selectors.php");
4 include_once("include/Scrape.php");
5
6 function notifications_post(&$a) {
7
8         if(! local_user()) {
9                 goaway(z_root());
10         }
11
12         $request_id = (($a->argc > 1) ? $a->argv[1] : 0);
13
14         if($request_id === "all")
15                 return;
16
17         if($request_id) {
18
19                 $r = q("SELECT * FROM `intro` WHERE `id` = %d  AND `uid` = %d LIMIT 1",
20                         intval($request_id),
21                         intval(local_user())
22                 );
23
24                 if(count($r)) {
25                         $intro_id = $r[0]['id'];
26                         $contact_id = $r[0]['contact-id'];
27                 }
28                 else {
29                         notice( t('Invalid request identifier.') . EOL);
30                         return;
31                 }
32
33                 // If it is a friend suggestion, the contact is not a new friend but an existing friend
34                 // that should not be deleted.
35
36                 $fid = $r[0]['fid'];
37
38                 if($_POST['submit'] == t('Discard')) {
39                         $r = q("DELETE FROM `intro` WHERE `id` = %d",
40                                 intval($intro_id)
41                         );
42                         if(! $fid) {
43
44                                 // The check for blocked and pending is in case the friendship was already approved
45                                 // and we just want to get rid of the now pointless notification
46
47                                 $r = q("DELETE FROM `contact` WHERE `id` = %d AND `uid` = %d AND `self` = 0 AND `blocked` = 1 AND `pending` = 1",
48                                         intval($contact_id),
49                                         intval(local_user())
50                                 );
51                         }
52                         goaway($a->get_baseurl(true) . '/notifications/intros');
53                 }
54                 if($_POST['submit'] == t('Ignore')) {
55                         $r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d",
56                                 intval($intro_id));
57                         goaway($a->get_baseurl(true) . '/notifications/intros');
58                 }
59         }
60 }
61
62
63
64
65
66 function notifications_content(&$a) {
67
68         if(! local_user()) {
69                 notice( t('Permission denied.') . EOL);
70                 return;
71         }
72
73         nav_set_selected('notifications');
74
75         $json = (($a->argc > 1 && $a->argv[$a->argc - 1] === 'json') ? true : false);
76
77
78         $o = '';
79         $tabs = array(
80                 array(
81                         'label' => t('System'),
82                         'url'=>$a->get_baseurl(true) . '/notifications/system',
83                         'sel'=> (($a->argv[1] == 'system') ? 'active' : ''),
84                         'accesskey' => 'y',
85                 ),
86                 array(
87                         'label' => t('Network'),
88                         'url'=>$a->get_baseurl(true) . '/notifications/network',
89                         'sel'=> (($a->argv[1] == 'network') ? 'active' : ''),
90                         'accesskey' => 'w',
91                 ),
92                 array(
93                         'label' => t('Personal'),
94                         'url'=>$a->get_baseurl(true) . '/notifications/personal',
95                         'sel'=> (($a->argv[1] == 'personal') ? 'active' : ''),
96                         'accesskey' => 'r',
97                 ),
98                 array(
99                         'label' => t('Home'),
100                         'url' => $a->get_baseurl(true) . '/notifications/home',
101                         'sel'=> (($a->argv[1] == 'home') ? 'active' : ''),
102                         'accesskey' => 'h',
103                 ),
104                 array(
105                         'label' => t('Introductions'),
106                         'url' => $a->get_baseurl(true) . '/notifications/intros',
107                         'sel'=> (($a->argv[1] == 'intros') ? 'active' : ''),
108                         'accesskey' => 'i',
109                 ),
110                 /*array(
111                         'label' => t('Messages'),
112                         'url' => $a->get_baseurl(true) . '/message',
113                         'sel'=> '',
114                 ),*/ /*while I can have notifications for messages, this tablist is not place for message page link */
115         );
116
117         $o = "";
118
119
120         if( (($a->argc > 1) && ($a->argv[1] == 'intros')) || (($a->argc == 1))) {
121                 nav_set_selected('introductions');
122                 if(($a->argc > 2) && ($a->argv[2] == 'all'))
123                         $sql_extra = '';
124                 else
125                         $sql_extra = " AND `ignore` = 0 ";
126
127                 $notif_tpl = get_markup_template('notifications.tpl');
128
129                 $notif_content .= '<a href="' . ((strlen($sql_extra)) ? 'notifications/intros/all' : 'notifications/intros' ) . '" id="notifications-show-hide-link" >'
130                         . ((strlen($sql_extra)) ? t('Show Ignored Requests') : t('Hide Ignored Requests')) . '</a></div>' . "\r\n";
131
132                 $r = q("SELECT COUNT(*) AS `total` FROM `intro`
133                         WHERE `intro`.`uid` = %d $sql_extra AND `intro`.`blocked` = 0 ",
134                                 intval($_SESSION['uid'])
135                 );
136                 if($r && count($r)) {
137                         $a->set_pager_total($r[0]['total']);
138                         $a->set_pager_itemspage(20);
139                 }
140
141                 $r = q("SELECT `intro`.`id` AS `intro_id`, `intro`.*, `contact`.*, `fcontact`.`name` AS `fname`,`fcontact`.`url` AS `furl`,`fcontact`.`photo` AS `fphoto`,`fcontact`.`request` AS `frequest`,
142                                 `gcontact`.`location` AS `glocation`, `gcontact`.`about` AS `gabout`,
143                                 `gcontact`.`keywords` AS `gkeywords`, `gcontact`.`gender` AS `ggender`,
144                                 `gcontact`.`network` AS `gnetwork`
145                         FROM `intro`
146                                 LEFT JOIN `contact` ON `contact`.`id` = `intro`.`contact-id`
147                                 LEFT JOIN `gcontact` ON `gcontact`.`nurl` = `contact`.`nurl`
148                                 LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id`
149                         WHERE `intro`.`uid` = %d $sql_extra AND `intro`.`blocked` = 0 ",
150                                 intval($_SESSION['uid']));
151
152                 if(($r !== false) && (count($r))) {
153
154                         $sugg = get_markup_template('suggestions.tpl');
155                         $tpl = get_markup_template("intros.tpl");
156
157                         foreach($r as $rr) {
158
159                                 if($rr['fid']) {
160
161                                         $return_addr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname() . (($a->path) ? '/' . $a->path : ''));
162
163                                         $notif_content .= replace_macros($sugg, array(
164                                                 '$str_notifytype' => t('Notification type: '),
165                                                 '$notify_type' => t('Friend Suggestion'),
166                                                 '$intro_id' => $rr['intro_id'],
167                                                 '$madeby' => sprintf( t('suggested by %s'),$rr['name']),
168                                                 '$contact_id' => $rr['contact-id'],
169                                                 '$photo' => ((x($rr,'fphoto')) ? proxy_url($rr['fphoto']) : "images/person-175.jpg"),
170                                                 '$fullname' => $rr['fname'],
171                                                 '$url' => zrl($rr['furl']),
172                                                 '$hidden' => array('hidden', t('Hide this contact from others'), ($rr['hidden'] == 1), ''),
173                                                 '$activity' => array('activity', t('Post a new friend activity'), (intval(get_pconfig(local_user(),'system','post_newfriend')) ? '1' : 0), t('if applicable')),
174
175                                                 '$knowyou' => $knowyou,
176                                                 '$approve' => t('Approve'),
177                                                 '$note' => $rr['note'],
178                                                 '$request' => $rr['frequest'] . '?addr=' . $return_addr,
179                                                 '$ignore' => t('Ignore'),
180                                                 '$discard' => t('Discard'),
181
182                                         ));
183
184                                         continue;
185
186                                 }
187                                 $friend_selected = (($rr['network'] !== NETWORK_OSTATUS) ? ' checked="checked" ' : ' disabled ');
188                                 $fan_selected = (($rr['network'] === NETWORK_OSTATUS) ? ' checked="checked" disabled ' : '');
189                                 $dfrn_tpl = get_markup_template('netfriend.tpl');
190
191                                 $knowyou   = '';
192                                 $dfrn_text = '';
193
194                                 if($rr['network'] === NETWORK_DFRN || $rr['network'] === NETWORK_DIASPORA) {
195                                         if($rr['network'] === NETWORK_DFRN) {
196                                                 $knowyou = t('Claims to be known to you: ') . (($rr['knowyou']) ? t('yes') : t('no'));
197                                                 $helptext = t('Shall your connection be bidirectional or not? "Friend" implies that you allow to read and you subscribe to their posts. "Fan/Admirer" means that you allow to read but you do not want to read theirs. Approve as: ');
198                                         } else {
199                                                 $knowyou = '';
200                                                 $helptext = t('Shall your connection be bidirectional or not? "Friend" implies that you allow to read and you subscribe to their posts. "Sharer" means that you allow to read but you do not want to read theirs. Approve as: ');
201                                         }
202
203                                         $dfrn_text = replace_macros($dfrn_tpl,array(
204                                                 '$intro_id' => $rr['intro_id'],
205                                                 '$friend_selected' => $friend_selected,
206                                                 '$fan_selected' => $fan_selected,
207                                                 '$approve_as' => $helptext,
208                                                 '$as_friend' => t('Friend'),
209                                                 '$as_fan' => (($rr['network'] == NETWORK_DIASPORA) ? t('Sharer') : t('Fan/Admirer'))
210                                         ));
211                                 }
212
213                                 $header = $rr["name"];
214
215                                 $ret = probe_url($rr["url"]);
216
217                                 if ($rr['gnetwork'] == "")
218                                         $rr['gnetwork'] = $ret["network"];
219
220                                 if ($ret["addr"] != "")
221                                         $header .= " <".$ret["addr"].">";
222
223                                 $header .= " (".network_to_name($rr['gnetwork'], $rr['url']).")";
224
225                                 // Don't show these data until you are connected. Diaspora is doing the same.
226                                 if($rr['gnetwork'] === NETWORK_DIASPORA) {
227                                         $rr['glocation'] = "";
228                                         $rr['gabout'] = "";
229                                         $rr['ggender'] = "";
230                                 }
231
232                                 $notif_content .= replace_macros($tpl, array(
233                                         '$header' => htmlentities($header),
234                                         '$str_notifytype' => t('Notification type: '),
235                                         '$notify_type' => (($rr['network'] !== NETWORK_OSTATUS) ? t('Friend/Connect Request') : t('New Follower')),
236                                         '$dfrn_text' => $dfrn_text,
237                                         '$dfrn_id' => $rr['issued-id'],
238                                         '$uid' => $_SESSION['uid'],
239                                         '$intro_id' => $rr['intro_id'],
240                                         '$contact_id' => $rr['contact-id'],
241                                         '$photo' => ((x($rr,'photo')) ? proxy_url($rr['photo']) : "images/person-175.jpg"),
242                                         '$fullname' => $rr['name'],
243                                         '$location' => bbcode($rr['glocation'], false, false),
244                                         '$location_label' => t('Location:'),
245                                         '$about' => bbcode($rr['gabout'], false, false),
246                                         '$about_label' => t('About:'),
247                                         '$keywords' => $rr['gkeywords'],
248                                         '$keywords_label' => t('Tags:'),
249                                         '$gender' => $rr['ggender'],
250                                         '$gender_label' => t('Gender:'),
251                                         '$hidden' => array('hidden', t('Hide this contact from others'), ($rr['hidden'] == 1), ''),
252                                         '$activity' => array('activity', t('Post a new friend activity'), (intval(get_pconfig(local_user(),'system','post_newfriend')) ? '1' : 0), t('if applicable')),
253                                         '$url' => zrl($rr['url']),
254                                         '$url_label' => t('Profile URL'),
255                                         '$knowyou' => $knowyou,
256                                         '$approve' => t('Approve'),
257                                         '$note' => $rr['note'],
258                                         '$ignore' => t('Ignore'),
259                                         '$discard' => t('Discard'),
260
261                                 ));
262                         }
263                 }
264                 else
265                         info( t('No introductions.') . EOL);
266
267                 $o .= replace_macros($notif_tpl, array(
268                         '$notif_header' => t('Notifications'),
269                         '$tabs' => $tabs,
270                         '$notif_content' => $notif_content,
271                 ));
272
273                 $o .= paginate($a);
274                 return $o;
275
276         } else if (($a->argc > 1) && ($a->argv[1] == 'network')) {
277
278                 $notif_tpl = get_markup_template('notifications.tpl');
279
280                 $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
281                                 `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` as `object`,
282                                 `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink`, `pitem`.`guid` as `pguid`
283                                 FROM `item` INNER JOIN `item` as `pitem` ON  `pitem`.`id`=`item`.`parent`
284                                 WHERE `item`.`unseen` = 1 AND `item`.`visible` = 1 AND `pitem`.`parent` != 0 AND
285                                  `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0 ORDER BY `item`.`created` DESC" ,
286                         intval(local_user())
287                 );
288
289                 $tpl_item_likes = get_markup_template('notifications_likes_item.tpl');
290                 $tpl_item_dislikes = get_markup_template('notifications_dislikes_item.tpl');
291                 $tpl_item_friends = get_markup_template('notifications_friends_item.tpl');
292                 $tpl_item_comments = get_markup_template('notifications_comments_item.tpl');
293                 $tpl_item_posts = get_markup_template('notifications_posts_item.tpl');
294
295                 $notif_content = '';
296
297                 if ($r) {
298
299                         foreach ($r as $it) {
300                                 switch($it['verb']){
301                                         case ACTIVITY_LIKE:
302                                                 $notif_content .= replace_macros($tpl_item_likes,array(
303                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
304                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
305                                                         '$item_image' => $it['author-avatar'],
306                                                         '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']),
307                                                         '$item_when' => relative_date($it['created'])
308                                                 ));
309                                                 break;
310
311                                         case ACTIVITY_DISLIKE:
312                                                 $notif_content .= replace_macros($tpl_item_dislikes,array(
313                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
314                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
315                                                         '$item_image' => $it['author-avatar'],
316                                                         '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']),
317                                                         '$item_when' => relative_date($it['created'])
318                                                 ));
319                                                 break;
320
321                                         case ACTIVITY_FRIEND:
322
323                                                 $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
324                                                 $obj = parse_xml_string($xmlhead.$it['object']);
325                                                 $it['fname'] = $obj->title;
326
327                                                 $notif_content .= replace_macros($tpl_item_friends,array(
328                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
329                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
330                                                         '$item_image' => $it['author-avatar'],
331                                                         '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']),
332                                                         '$item_when' => relative_date($it['created'])
333                                                 ));
334                                                 break;
335
336                                         default:
337                                                 $item_text = (($it['id'] == $it['parent'])
338                                                         ? sprintf( t("%s created a new post"), $it['author-name'])
339                                                         : sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']));
340                                                 $tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments);
341
342                                                 $notif_content .= replace_macros($tpl,array(
343                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
344                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
345                                                         '$item_image' => $it['author-avatar'],
346                                                         '$item_text' => $item_text,
347                                                         '$item_when' => relative_date($it['created'])
348                                                 ));
349                                 }
350                         }
351
352                 } else {
353
354                         $notif_content = t('No more network notifications.');
355                 }
356
357                 $o .= replace_macros($notif_tpl, array(
358                         '$notif_header' => t('Network Notifications'),
359                         '$tabs' => $tabs,
360                         '$notif_content' => $notif_content,
361                 ));
362
363         } else if (($a->argc > 1) && ($a->argv[1] == 'system')) {
364
365                 $notif_tpl = get_markup_template('notifications.tpl');
366
367                 $not_tpl = get_markup_template('notify.tpl');
368                 require_once('include/bbcode.php');
369
370                 $r = q("SELECT * from notify where uid = %d and seen = 0 order by date desc",
371                         intval(local_user())
372                 );
373
374                 if (count($r) > 0) {
375                         foreach ($r as $it) {
376                                 $notif_content .= replace_macros($not_tpl,array(
377                                         '$item_link' => $a->get_baseurl(true).'/notify/view/'. $it['id'],
378                                         '$item_image' => proxy_url($it['photo']),
379                                         '$item_text' => strip_tags(bbcode($it['msg'])),
380                                         '$item_when' => relative_date($it['date'])
381                                 ));
382                         }
383                 } else {
384                         $notif_content .= t('No more system notifications.');
385                 }
386
387                 $o .= replace_macros($notif_tpl, array(
388                         '$notif_header' => t('System Notifications'),
389                         '$tabs' => $tabs,
390                         '$notif_content' => $notif_content,
391                 ));
392
393         } else if (($a->argc > 1) && ($a->argv[1] == 'personal')) {
394
395                 $notif_tpl = get_markup_template('notifications.tpl');
396
397                 $myurl = $a->get_baseurl(true) . '/profile/'. $a->user['nickname'];
398                 $myurl = substr($myurl,strpos($myurl,'://')+3);
399                 $myurl = str_replace(array('www.','.'),array('','\\.'),$myurl);
400                 $diasp_url = str_replace('/profile/','/u/',$myurl);
401                 $sql_extra .= sprintf(" AND ( `item`.`author-link` regexp '%s' or `item`.`tag` regexp '%s' or `item`.`tag` regexp '%s' ) ",
402                         dbesc($myurl . '$'),
403                         dbesc($myurl . '\\]'),
404                         dbesc($diasp_url . '\\]')
405                 );
406
407
408                 $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
409                                 `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` as `object`,
410                                 `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink`, `pitem`.`guid` as `pguid`
411                                 FROM `item` INNER JOIN `item` as `pitem` ON  `pitem`.`id`=`item`.`parent`
412                                 WHERE `item`.`unseen` = 1 AND `item`.`visible` = 1
413                                 $sql_extra
414                                 AND `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0 ORDER BY `item`.`created` DESC" ,
415                         intval(local_user())
416                 );
417
418                 $tpl_item_likes = get_markup_template('notifications_likes_item.tpl');
419                 $tpl_item_dislikes = get_markup_template('notifications_dislikes_item.tpl');
420                 $tpl_item_friends = get_markup_template('notifications_friends_item.tpl');
421                 $tpl_item_comments = get_markup_template('notifications_comments_item.tpl');
422                 $tpl_item_posts = get_markup_template('notifications_posts_item.tpl');
423
424                 $notif_content = '';
425
426                 if (count($r) > 0) {
427
428                         foreach ($r as $it) {
429                                 switch($it['verb']){
430                                         case ACTIVITY_LIKE:
431                                                 $notif_content .= replace_macros($tpl_item_likes,array(
432                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
433                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
434                                                         '$item_image' => $it['author-avatar'],
435                                                         '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']),
436                                                         '$item_when' => relative_date($it['created'])
437                                                 ));
438                                                 break;
439
440                                         case ACTIVITY_DISLIKE:
441                                                 $notif_content .= replace_macros($tpl_item_dislikes,array(
442                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
443                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
444                                                         '$item_image' => $it['author-avatar'],
445                                                         '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']),
446                                                         '$item_when' => relative_date($it['created'])
447                                                 ));
448                                                 break;
449
450                                         case ACTIVITY_FRIEND:
451
452                                                 $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
453                                                 $obj = parse_xml_string($xmlhead.$it['object']);
454                                                 $it['fname'] = $obj->title;
455
456                                                 $notif_content .= replace_macros($tpl_item_friends,array(
457                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
458                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
459                                                         '$item_image' => $it['author-avatar'],
460                                                         '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']),
461                                                         '$item_when' => relative_date($it['created'])
462                                                 ));
463                                                 break;
464
465                                         default:
466                                                 $item_text = (($it['id'] == $it['parent'])
467                                                         ? sprintf( t("%s created a new post"), $it['author-name'])
468                                                         : sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']));
469                                                 $tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments);
470
471                                                 $notif_content .= replace_macros($tpl,array(
472                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
473                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
474                                                         '$item_image' => $it['author-avatar'],
475                                                         '$item_text' => $item_text,
476                                                         '$item_when' => relative_date($it['created'])
477                                                 ));
478                                 }
479                         }
480
481                 } else {
482
483                         $notif_content = t('No more personal notifications.');
484                 }
485
486                 $o .= replace_macros($notif_tpl, array(
487                         '$notif_header' => t('Personal Notifications'),
488                         '$tabs' => $tabs,
489                         '$notif_content' => $notif_content,
490                 ));
491
492
493
494
495
496
497         } else if (($a->argc > 1) && ($a->argv[1] == 'home')) {
498
499                 $notif_tpl = get_markup_template('notifications.tpl');
500
501                 $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
502                                 `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` as `object`,
503                                 `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink`, `pitem`.`guid` as `pguid`
504                                 FROM `item` INNER JOIN `item` as `pitem` ON  `pitem`.`id`=`item`.`parent`
505                                 WHERE `item`.`unseen` = 1 AND `item`.`visible` = 1 AND
506                                  `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 1 ORDER BY `item`.`created` DESC",
507                         intval(local_user())
508                 );
509
510                 $tpl_item_likes = get_markup_template('notifications_likes_item.tpl');
511                 $tpl_item_dislikes = get_markup_template('notifications_dislikes_item.tpl');
512                 $tpl_item_friends = get_markup_template('notifications_friends_item.tpl');
513                 $tpl_item_comments = get_markup_template('notifications_comments_item.tpl');
514
515                 $notif_content = '';
516
517                 if (count($r) > 0) {
518
519                         foreach ($r as $it) {
520                                 switch($it['verb']){
521                                         case ACTIVITY_LIKE:
522                                                 $notif_content .= replace_macros($tpl_item_likes,array(
523                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
524                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
525                                                         '$item_image' => $it['author-avatar'],
526                                                         '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']),
527                                                         '$item_when' => relative_date($it['created'])
528                                                 ));
529
530                                                 break;
531                                         case ACTIVITY_DISLIKE:
532                                                 $notif_content .= replace_macros($tpl_item_dislikes,array(
533                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
534                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
535                                                         '$item_image' => $it['author-avatar'],
536                                                         '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']),
537                                                         '$item_when' => relative_date($it['created'])
538                                                 ));
539
540                                                 break;
541                                         case ACTIVITY_FRIEND:
542
543                                                 $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
544                                                 $obj = parse_xml_string($xmlhead.$it['object']);
545                                                 $it['fname'] = $obj->title;
546
547                                                 $notif_content .= replace_macros($tpl_item_friends,array(
548                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
549                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
550                                                         '$item_image' => $it['author-avatar'],
551                                                         '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']),
552                                                         '$item_when' => relative_date($it['created'])
553                                                 ));
554
555                                                 break;
556                                         default:
557                                                 $notif_content .= replace_macros($tpl_item_comments,array(
558                                                         //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
559                                                         '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
560                                                         '$item_image' => $it['author-avatar'],
561                                                         '$item_text' => sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']),
562                                                         '$item_when' => relative_date($it['created'])
563                                                 ));
564                                 }
565                         }
566
567                 } else {
568                         $notif_content = t('No more home notifications.');
569                 }
570
571                 $o .= replace_macros($notif_tpl, array(
572                         '$notif_header' => t('Home Notifications'),
573                         '$tabs' => $tabs,
574                         '$notif_content' => $notif_content,
575                 ));
576         }
577
578         $o .= paginate($a);
579         return $o;
580 }