2010-07-01 23:48:07 +00:00
< ? php
2015-09-25 15:47:37 +00:00
include_once ( " include/bbcode.php " );
2015-10-04 15:18:58 +00:00
include_once ( " include/contact_selectors.php " );
2015-10-04 15:20:47 +00:00
include_once ( " include/Scrape.php " );
2010-07-01 23:48:07 +00:00
function notifications_post ( & $a ) {
2010-08-16 04:49:29 +00:00
if ( ! local_user ()) {
2011-08-02 04:02:25 +00:00
goaway ( z_root ());
2010-07-01 23:48:07 +00:00
}
2013-12-02 19:30:24 +00:00
2010-08-16 04:49:29 +00:00
$request_id = (( $a -> argc > 1 ) ? $a -> argv [ 1 ] : 0 );
2013-12-02 19:30:24 +00:00
2010-09-27 02:44:03 +00:00
if ( $request_id === " all " )
2010-07-01 23:48:07 +00:00
return ;
if ( $request_id ) {
2011-06-27 04:55:24 +00:00
$r = q ( " SELECT * FROM `intro` WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
intval ( $request_id ),
intval ( local_user ())
2010-07-01 23:48:07 +00:00
);
2013-12-02 19:30:24 +00:00
2010-07-01 23:48:07 +00:00
if ( count ( $r )) {
$intro_id = $r [ 0 ][ 'id' ];
2010-11-07 00:01:57 +00:00
$contact_id = $r [ 0 ][ 'contact-id' ];
2010-07-01 23:48:07 +00:00
}
else {
2010-08-16 04:49:29 +00:00
notice ( t ( 'Invalid request identifier.' ) . EOL );
2010-07-01 23:48:07 +00:00
return ;
}
2011-06-27 04:55:24 +00:00
// If it is a friend suggestion, the contact is not a new friend but an existing friend
// that should not be deleted.
$fid = $r [ 0 ][ 'fid' ];
2010-08-16 05:43:42 +00:00
if ( $_POST [ 'submit' ] == t ( 'Discard' )) {
2014-03-11 22:52:32 +00:00
$r = q ( " DELETE FROM `intro` WHERE `id` = %d " ,
2010-09-09 03:14:17 +00:00
intval ( $intro_id )
2013-12-02 19:30:24 +00:00
);
2011-06-27 04:55:24 +00:00
if ( ! $fid ) {
2012-03-30 22:10:50 +00:00
// The check for blocked and pending is in case the friendship was already approved
// and we just want to get rid of the now pointless notification
2014-03-11 22:52:32 +00:00
$r = q ( " DELETE FROM `contact` WHERE `id` = %d AND `uid` = %d AND `self` = 0 AND `blocked` = 1 AND `pending` = 1 " ,
2011-06-27 04:55:24 +00:00
intval ( $contact_id ),
intval ( local_user ())
);
}
2016-02-17 22:47:32 +00:00
goaway ( 'notifications/intros' );
2010-07-01 23:48:07 +00:00
}
2010-08-16 04:49:29 +00:00
if ( $_POST [ 'submit' ] == t ( 'Ignore' )) {
2013-12-02 19:30:24 +00:00
$r = q ( " UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d " ,
2010-07-01 23:48:07 +00:00
intval ( $intro_id ));
2016-02-17 22:47:32 +00:00
goaway ( 'notifications/intros' );
2010-07-01 23:48:07 +00:00
}
}
}
function notifications_content ( & $a ) {
2010-08-16 04:49:29 +00:00
if ( ! local_user ()) {
notice ( t ( 'Permission denied.' ) . EOL );
2011-08-02 04:02:25 +00:00
return ;
2010-07-01 23:48:07 +00:00
}
2013-12-02 19:30:24 +00:00
nav_set_selected ( 'notifications' );
2011-10-12 04:30:23 +00:00
2012-10-15 00:16:25 +00:00
$json = (( $a -> argc > 1 && $a -> argv [ $a -> argc - 1 ] === 'json' ) ? true : false );
2010-08-16 04:49:29 +00:00
$o = '' ;
2016-07-27 17:53:22 +00:00
// get the nav tabs for the notification pages
$tabs = notifications_tabs ( $a );
$notif_content = array ();
2013-12-02 19:30:24 +00:00
2011-10-07 06:25:08 +00:00
if ( (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'intros' )) || (( $a -> argc == 1 ))) {
2011-10-12 04:30:23 +00:00
nav_set_selected ( 'introductions' );
2016-07-27 19:07:54 +00:00
2011-10-07 06:25:08 +00:00
if (( $a -> argc > 2 ) && ( $a -> argv [ 2 ] == 'all' ))
$sql_extra = '' ;
else
$sql_extra = " AND `ignore` = 0 " ;
2013-12-02 19:30:24 +00:00
2016-07-27 19:07:54 +00:00
$notif_header = t ( 'Notifications' );
2011-10-07 06:25:08 +00:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2013-12-02 19:30:24 +00:00
2016-07-27 17:53:22 +00:00
$notif_ignored_lnk .= '<a href="' . (( strlen ( $sql_extra )) ? 'notifications/intros/all' : 'notifications/intros' ) . '" id="notifications-show-hide-link" >'
2011-10-07 06:25:08 +00:00
. (( strlen ( $sql_extra )) ? t ( 'Show Ignored Requests' ) : t ( 'Hide Ignored Requests' )) . '</a></div>' . " \r \n " ;
2014-07-21 22:36:20 +00:00
$r = q ( " SELECT COUNT(*) AS `total` FROM `intro`
2011-10-07 06:25:08 +00:00
WHERE `intro` . `uid` = % d $sql_extra AND `intro` . `blocked` = 0 " ,
intval ( $_SESSION [ 'uid' ])
);
if ( $r && count ( $r )) {
$a -> set_pager_total ( $r [ 0 ][ 'total' ]);
$a -> set_pager_itemspage ( 20 );
}
2010-07-01 23:48:07 +00:00
2016-06-25 11:56:55 +00:00
/// @todo Fetch contact details by "get_contact_details_by_url" instead of queries to contact, fcontact and gcontact
2015-08-12 06:07:21 +00:00
$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`,
`gcontact` . `location` AS `glocation` , `gcontact` . `about` AS `gabout` ,
2015-10-04 15:18:58 +00:00
`gcontact` . `keywords` AS `gkeywords` , `gcontact` . `gender` AS `ggender` ,
`gcontact` . `network` AS `gnetwork`
2015-08-12 06:07:21 +00:00
FROM `intro`
LEFT JOIN `contact` ON `contact` . `id` = `intro` . `contact-id`
LEFT JOIN `gcontact` ON `gcontact` . `nurl` = `contact` . `nurl`
LEFT JOIN `fcontact` ON `intro` . `fid` = `fcontact` . `id`
2011-10-07 06:25:08 +00:00
WHERE `intro` . `uid` = % d $sql_extra AND `intro` . `blocked` = 0 " ,
intval ( $_SESSION [ 'uid' ]));
if (( $r !== false ) && ( count ( $r ))) {
$sugg = get_markup_template ( 'suggestions.tpl' );
$tpl = get_markup_template ( " intros.tpl " );
foreach ( $r as $rr ) {
2015-10-04 15:18:58 +00:00
2011-10-07 06:25:08 +00:00
if ( $rr [ 'fid' ]) {
$return_addr = bin2hex ( $a -> user [ 'nickname' ] . '@' . $a -> get_hostname () . (( $a -> path ) ? '/' . $a -> path : '' ));
2012-12-22 19:57:29 +00:00
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $sugg , array (
2011-10-07 06:25:08 +00:00
'$str_notifytype' => t ( 'Notification type: ' ),
'$notify_type' => t ( 'Friend Suggestion' ),
'$intro_id' => $rr [ 'intro_id' ],
'$madeby' => sprintf ( t ( 'suggested by %s' ), $rr [ 'name' ]),
'$contact_id' => $rr [ 'contact-id' ],
2015-10-07 06:25:10 +00:00
'$photo' => (( x ( $rr , 'fphoto' )) ? proxy_url ( $rr [ 'fphoto' ], false , PROXY_SIZE_SMALL ) : " images/person-175.jpg " ),
2011-10-07 06:25:08 +00:00
'$fullname' => $rr [ 'fname' ],
2012-03-30 05:20:14 +00:00
'$url' => zrl ( $rr [ 'furl' ]),
2011-12-29 08:23:05 +00:00
'$hidden' => array ( 'hidden' , t ( 'Hide this contact from others' ), ( $rr [ 'hidden' ] == 1 ), '' ),
2012-04-13 23:12:06 +00:00
'$activity' => array ( 'activity' , t ( 'Post a new friend activity' ), ( intval ( get_pconfig ( local_user (), 'system' , 'post_newfriend' )) ? '1' : 0 ), t ( 'if applicable' )),
2012-02-07 00:41:05 +00:00
2011-10-07 06:25:08 +00:00
'$knowyou' => $knowyou ,
'$approve' => t ( 'Approve' ),
'$note' => $rr [ 'note' ],
'$request' => $rr [ 'frequest' ] . '?addr=' . $return_addr ,
'$ignore' => t ( 'Ignore' ),
2012-12-22 19:57:29 +00:00
'$discard' => t ( 'Discard' ),
2011-10-07 06:25:08 +00:00
));
continue ;
}
$friend_selected = (( $rr [ 'network' ] !== NETWORK_OSTATUS ) ? ' checked="checked" ' : ' disabled ' );
$fan_selected = (( $rr [ 'network' ] === NETWORK_OSTATUS ) ? ' checked="checked" disabled ' : '' );
$dfrn_tpl = get_markup_template ( 'netfriend.tpl' );
$knowyou = '' ;
$dfrn_text = '' ;
if ( $rr [ 'network' ] === NETWORK_DFRN || $rr [ 'network' ] === NETWORK_DIASPORA ) {
2015-04-04 16:02:26 +00:00
if ( $rr [ 'network' ] === NETWORK_DFRN ) {
2016-07-27 17:53:22 +00:00
$lbl_knowyou = t ( 'Claims to be known to you: ' );
$knowyou = (( $rr [ 'knowyou' ]) ? t ( 'yes' ) : t ( 'no' ));
2015-04-04 16:02:26 +00:00
$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: ' );
} else {
2011-10-07 06:25:08 +00:00
$knowyou = '' ;
2015-04-04 16:02:26 +00:00
$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: ' );
}
2011-10-07 06:25:08 +00:00
$dfrn_text = replace_macros ( $dfrn_tpl , array (
'$intro_id' => $rr [ 'intro_id' ],
'$friend_selected' => $friend_selected ,
'$fan_selected' => $fan_selected ,
2015-04-04 16:02:26 +00:00
'$approve_as' => $helptext ,
2011-10-07 06:25:08 +00:00
'$as_friend' => t ( 'Friend' ),
'$as_fan' => (( $rr [ 'network' ] == NETWORK_DIASPORA ) ? t ( 'Sharer' ) : t ( 'Fan/Admirer' ))
));
2013-12-02 19:30:24 +00:00
}
2011-10-07 06:25:08 +00:00
2015-10-04 15:18:58 +00:00
$header = $rr [ " name " ];
$ret = probe_url ( $rr [ " url " ]);
if ( $rr [ 'gnetwork' ] == " " )
$rr [ 'gnetwork' ] = $ret [ " network " ];
if ( $ret [ " addr " ] != " " )
$header .= " < " . $ret [ " addr " ] . " > " ;
2015-10-04 20:24:58 +00:00
$header .= " ( " . network_to_name ( $rr [ 'gnetwork' ], $rr [ 'url' ]) . " ) " ;
2015-10-04 15:18:58 +00:00
2015-10-06 04:56:31 +00:00
// Don't show these data until you are connected. Diaspora is doing the same.
if ( $rr [ 'gnetwork' ] === NETWORK_DIASPORA ) {
$rr [ 'glocation' ] = " " ;
$rr [ 'gabout' ] = " " ;
$rr [ 'ggender' ] = " " ;
}
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl , array (
2015-10-04 15:18:58 +00:00
'$header' => htmlentities ( $header ),
2011-06-27 04:55:24 +00:00
'$str_notifytype' => t ( 'Notification type: ' ),
2011-10-07 06:25:08 +00:00
'$notify_type' => (( $rr [ 'network' ] !== NETWORK_OSTATUS ) ? t ( 'Friend/Connect Request' ) : t ( 'New Follower' )),
2013-12-02 19:30:24 +00:00
'$dfrn_text' => $dfrn_text ,
2011-10-07 06:25:08 +00:00
'$dfrn_id' => $rr [ 'issued-id' ],
'$uid' => $_SESSION [ 'uid' ],
2011-06-27 04:55:24 +00:00
'$intro_id' => $rr [ 'intro_id' ],
'$contact_id' => $rr [ 'contact-id' ],
2015-10-07 06:25:10 +00:00
'$photo' => (( x ( $rr , 'photo' )) ? proxy_url ( $rr [ 'photo' ], false , PROXY_SIZE_SMALL ) : " images/person-175.jpg " ),
2011-10-07 06:25:08 +00:00
'$fullname' => $rr [ 'name' ],
2015-10-04 13:55:24 +00:00
'$location' => bbcode ( $rr [ 'glocation' ], false , false ),
2016-07-30 09:03:21 +00:00
'$lbl_location' => t ( 'Location:' ),
2015-10-05 20:25:14 +00:00
'$about' => bbcode ( $rr [ 'gabout' ], false , false ),
2016-07-30 09:03:21 +00:00
'$lbl_about' => t ( 'About:' ),
2015-08-12 06:07:21 +00:00
'$keywords' => $rr [ 'gkeywords' ],
2016-07-30 09:03:21 +00:00
'$lbl_keywords' => t ( 'Tags:' ),
2015-08-12 06:07:21 +00:00
'$gender' => $rr [ 'ggender' ],
2016-07-30 09:03:21 +00:00
'$lbl_gender' => t ( 'Gender:' ),
2011-12-29 08:23:05 +00:00
'$hidden' => array ( 'hidden' , t ( 'Hide this contact from others' ), ( $rr [ 'hidden' ] == 1 ), '' ),
2012-04-13 23:12:06 +00:00
'$activity' => array ( 'activity' , t ( 'Post a new friend activity' ), ( intval ( get_pconfig ( local_user (), 'system' , 'post_newfriend' )) ? '1' : 0 ), t ( 'if applicable' )),
2015-10-06 16:31:08 +00:00
'$url' => $rr [ 'url' ],
'$zrl' => zrl ( $rr [ 'url' ]),
2016-07-30 09:03:21 +00:00
'$lbl_url' => t ( 'Profile URL' ),
2016-07-27 17:53:22 +00:00
'$addr' => $rr [ 'addr' ],
'$lbl_knowyou' => $lbl_knowyou ,
'$lbl_network' => t ( 'Network:' ),
'$network' => network_to_name ( $rr [ 'gnetwork' ], $rr [ 'url' ]),
2011-06-27 04:55:24 +00:00
'$knowyou' => $knowyou ,
'$approve' => t ( 'Approve' ),
'$note' => $rr [ 'note' ],
'$ignore' => t ( 'Ignore' ),
2012-12-22 19:57:29 +00:00
'$discard' => t ( 'Discard' ),
2011-06-27 04:55:24 +00:00
));
}
2010-07-01 23:48:07 +00:00
}
2011-10-07 06:25:08 +00:00
else
2011-12-01 06:26:02 +00:00
info ( t ( 'No introductions.' ) . EOL );
2012-10-15 00:16:25 +00:00
2011-10-07 06:25:08 +00:00
} else if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'network' )) {
2013-12-02 19:30:24 +00:00
2016-07-27 19:07:54 +00:00
$notif_header = t ( 'Network Notifications' );
2011-10-07 06:25:08 +00:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2013-12-02 19:30:24 +00:00
2014-07-21 22:36:20 +00:00
$r = q ( " SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
`item` . `author-link` , `item` . `author-avatar` , `item` . `created` , `item` . `object` as `object` ,
`pitem` . `author-name` as `pname` , `pitem` . `author-link` as `plink` , `pitem` . `guid` as `pguid`
2011-10-07 06:25:08 +00:00
FROM `item` INNER JOIN `item` as `pitem` ON `pitem` . `id` = `item` . `parent`
2013-03-03 19:44:52 +00:00
WHERE `item` . `unseen` = 1 AND `item` . `visible` = 1 AND `pitem` . `parent` != 0 AND
2011-10-07 06:25:08 +00:00
`item` . `deleted` = 0 AND `item` . `uid` = % d AND `item` . `wall` = 0 ORDER BY `item` . `created` DESC " ,
intval ( local_user ())
);
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
$tpl_item_likes = get_markup_template ( 'notifications_likes_item.tpl' );
$tpl_item_dislikes = get_markup_template ( 'notifications_dislikes_item.tpl' );
$tpl_item_friends = get_markup_template ( 'notifications_friends_item.tpl' );
$tpl_item_comments = get_markup_template ( 'notifications_comments_item.tpl' );
2011-10-09 03:45:48 +00:00
$tpl_item_posts = get_markup_template ( 'notifications_posts_item.tpl' );
2014-07-21 22:36:20 +00:00
2012-11-04 21:43:28 +00:00
if ( $r ) {
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
foreach ( $r as $it ) {
switch ( $it [ 'verb' ]){
case ACTIVITY_LIKE :
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_likes , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2015-10-07 06:25:10 +00:00
'$item_image' => proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO ),
2011-10-07 06:25:08 +00:00
'$item_text' => sprintf ( t ( " %s liked %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
case ACTIVITY_DISLIKE :
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_dislikes , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2015-10-07 06:25:10 +00:00
'$item_image' => proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO ),
2011-10-10 03:26:17 +00:00
'$item_text' => sprintf ( t ( " %s disliked %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
2011-10-07 06:25:08 +00:00
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
case ACTIVITY_FRIEND :
2014-07-21 22:36:20 +00:00
2011-10-08 21:57:00 +00:00
$xmlhead = " < " . " ?xml version='1.0' encoding='UTF-8' ? " . " > " ;
$obj = parse_xml_string ( $xmlhead . $it [ 'object' ]);
$it [ 'fname' ] = $obj -> title ;
2014-07-21 22:36:20 +00:00
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_friends , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2015-10-07 06:25:10 +00:00
'$item_image' => proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO ),
2011-10-10 03:26:17 +00:00
'$item_text' => sprintf ( t ( " %s is now friends with %s " ), $it [ 'author-name' ], $it [ 'fname' ]),
2011-10-09 03:45:48 +00:00
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
default :
2011-10-10 03:26:17 +00:00
$item_text = (( $it [ 'id' ] == $it [ 'parent' ])
? sprintf ( t ( " %s created a new post " ), $it [ 'author-name' ])
: sprintf ( t ( " %s commented on %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]));
$tpl = (( $it [ 'id' ] == $it [ 'parent' ]) ? $tpl_item_posts : $tpl_item_comments );
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2015-10-07 06:25:10 +00:00
'$item_image' => proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO ),
2011-10-10 03:26:17 +00:00
'$item_text' => $item_text ,
2011-10-07 06:25:08 +00:00
'$item_when' => relative_date ( $it [ 'created' ])
));
}
}
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
} else {
2014-07-21 22:36:20 +00:00
2016-07-27 17:53:22 +00:00
$notif_nocontent = t ( 'No more network notifications.' );
2011-10-07 06:25:08 +00:00
}
2014-07-21 22:36:20 +00:00
2012-02-23 07:34:30 +00:00
} else if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'system' )) {
2014-07-21 22:36:20 +00:00
2016-07-27 19:07:54 +00:00
$notif_header = t ( 'System Notifications' );
2012-02-23 07:34:30 +00:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2014-07-21 22:36:20 +00:00
2012-02-23 07:34:30 +00:00
$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 ())
);
2014-07-21 22:36:20 +00:00
2012-02-23 07:34:30 +00:00
if ( count ( $r ) > 0 ) {
foreach ( $r as $it ) {
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $not_tpl , array (
2012-03-15 04:20:20 +00:00
'$item_link' => $a -> get_baseurl ( true ) . '/notify/view/' . $it [ 'id' ],
2015-10-07 06:25:10 +00:00
'$item_image' => proxy_url ( $it [ 'photo' ], false , PROXY_SIZE_MICRO ),
2012-02-23 07:34:30 +00:00
'$item_text' => strip_tags ( bbcode ( $it [ 'msg' ])),
'$item_when' => relative_date ( $it [ 'date' ])
));
}
} else {
2016-07-27 17:53:22 +00:00
$notif_nocontent = t ( 'No more system notifications.' );
2012-02-23 07:34:30 +00:00
}
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
} else if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'personal' )) {
2014-07-21 22:36:20 +00:00
2016-07-27 19:07:54 +00:00
$notif_header = t ( 'Personal Notifications' );
2011-12-01 06:26:02 +00:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2014-07-21 22:36:20 +00:00
2012-03-15 04:20:20 +00:00
$myurl = $a -> get_baseurl ( true ) . '/profile/' . $a -> user [ 'nickname' ];
2011-12-01 06:26:02 +00:00
$myurl = substr ( $myurl , strpos ( $myurl , '://' ) + 3 );
$myurl = str_replace ( array ( 'www.' , '.' ), array ( '' , '\\.' ), $myurl );
2011-12-06 23:24:01 +00:00
$diasp_url = str_replace ( '/profile/' , '/u/' , $myurl );
$sql_extra .= sprintf ( " AND ( `item`.`author-link` regexp '%s' or `item`.`tag` regexp '%s' or `item`.`tag` regexp '%s' ) " ,
2011-12-01 06:26:02 +00:00
dbesc ( $myurl . '$' ),
2011-12-06 23:24:01 +00:00
dbesc ( $myurl . '\\]' ),
dbesc ( $diasp_url . '\\]' )
2011-12-01 06:26:02 +00:00
);
2014-07-21 22:36:20 +00:00
$r = q ( " SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
`item` . `author-link` , `item` . `author-avatar` , `item` . `created` , `item` . `object` as `object` ,
`pitem` . `author-name` as `pname` , `pitem` . `author-link` as `plink` , `pitem` . `guid` as `pguid`
2011-12-01 06:26:02 +00:00
FROM `item` INNER JOIN `item` as `pitem` ON `pitem` . `id` = `item` . `parent`
2014-07-21 22:36:20 +00:00
WHERE `item` . `unseen` = 1 AND `item` . `visible` = 1
2011-12-01 06:26:02 +00:00
$sql_extra
AND `item` . `deleted` = 0 AND `item` . `uid` = % d AND `item` . `wall` = 0 ORDER BY `item` . `created` DESC " ,
intval ( local_user ())
);
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
$tpl_item_likes = get_markup_template ( 'notifications_likes_item.tpl' );
$tpl_item_dislikes = get_markup_template ( 'notifications_dislikes_item.tpl' );
$tpl_item_friends = get_markup_template ( 'notifications_friends_item.tpl' );
$tpl_item_comments = get_markup_template ( 'notifications_comments_item.tpl' );
$tpl_item_posts = get_markup_template ( 'notifications_posts_item.tpl' );
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
if ( count ( $r ) > 0 ) {
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
foreach ( $r as $it ) {
switch ( $it [ 'verb' ]){
case ACTIVITY_LIKE :
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_likes , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2011-12-01 06:26:02 +00:00
'$item_image' => $it [ 'author-avatar' ],
'$item_text' => sprintf ( t ( " %s liked %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
case ACTIVITY_DISLIKE :
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_dislikes , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2011-12-01 06:26:02 +00:00
'$item_image' => $it [ 'author-avatar' ],
'$item_text' => sprintf ( t ( " %s disliked %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
case ACTIVITY_FRIEND :
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
$xmlhead = " < " . " ?xml version='1.0' encoding='UTF-8' ? " . " > " ;
$obj = parse_xml_string ( $xmlhead . $it [ 'object' ]);
$it [ 'fname' ] = $obj -> title ;
2014-07-21 22:36:20 +00:00
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_friends , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2011-12-01 06:26:02 +00:00
'$item_image' => $it [ 'author-avatar' ],
'$item_text' => sprintf ( t ( " %s is now friends with %s " ), $it [ 'author-name' ], $it [ 'fname' ]),
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
default :
$item_text = (( $it [ 'id' ] == $it [ 'parent' ])
? sprintf ( t ( " %s created a new post " ), $it [ 'author-name' ])
: sprintf ( t ( " %s commented on %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]));
$tpl = (( $it [ 'id' ] == $it [ 'parent' ]) ? $tpl_item_posts : $tpl_item_comments );
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2011-12-01 06:26:02 +00:00
'$item_image' => $it [ 'author-avatar' ],
'$item_text' => $item_text ,
'$item_when' => relative_date ( $it [ 'created' ])
));
}
}
2014-07-21 22:36:20 +00:00
2011-12-01 06:26:02 +00:00
} else {
2014-07-21 22:36:20 +00:00
2016-07-27 17:53:22 +00:00
$notif_nocontent = t ( 'No more personal notifications.' );
2011-12-01 06:26:02 +00:00
}
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
} else if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'home' )) {
2014-07-21 22:36:20 +00:00
2016-07-27 19:07:54 +00:00
$notif_header = t ( 'Home Notifications' );
2011-10-07 06:25:08 +00:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2014-07-21 22:36:20 +00:00
$r = q ( " SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
`item` . `author-link` , `item` . `author-avatar` , `item` . `created` , `item` . `object` as `object` ,
`pitem` . `author-name` as `pname` , `pitem` . `author-link` as `plink` , `pitem` . `guid` as `pguid`
2011-10-07 06:25:08 +00:00
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 ORDER BY `item` . `created` DESC " ,
intval ( local_user ())
);
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
$tpl_item_likes = get_markup_template ( 'notifications_likes_item.tpl' );
$tpl_item_dislikes = get_markup_template ( 'notifications_dislikes_item.tpl' );
$tpl_item_friends = get_markup_template ( 'notifications_friends_item.tpl' );
$tpl_item_comments = get_markup_template ( 'notifications_comments_item.tpl' );
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
if ( count ( $r ) > 0 ) {
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
foreach ( $r as $it ) {
switch ( $it [ 'verb' ]){
case ACTIVITY_LIKE :
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_likes , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2011-10-07 06:25:08 +00:00
'$item_image' => $it [ 'author-avatar' ],
'$item_text' => sprintf ( t ( " %s liked %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
case ACTIVITY_DISLIKE :
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_dislikes , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2011-10-07 06:25:08 +00:00
'$item_image' => $it [ 'author-avatar' ],
2011-10-10 03:26:17 +00:00
'$item_text' => sprintf ( t ( " %s disliked %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
2011-10-07 06:25:08 +00:00
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
case ACTIVITY_FRIEND :
2014-07-21 22:36:20 +00:00
2011-10-08 21:57:00 +00:00
$xmlhead = " < " . " ?xml version='1.0' encoding='UTF-8' ? " . " > " ;
$obj = parse_xml_string ( $xmlhead . $it [ 'object' ]);
$it [ 'fname' ] = $obj -> title ;
2014-07-21 22:36:20 +00:00
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_friends , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2011-10-07 06:25:08 +00:00
'$item_image' => $it [ 'author-avatar' ],
2011-10-10 03:26:17 +00:00
'$item_text' => sprintf ( t ( " %s is now friends with %s " ), $it [ 'author-name' ], $it [ 'fname' ]),
2011-10-07 06:25:08 +00:00
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
default :
2016-07-27 17:53:22 +00:00
$notif_content [] = replace_macros ( $tpl_item_comments , array (
2014-07-21 22:36:20 +00:00
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $a -> get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
2011-10-07 06:25:08 +00:00
'$item_image' => $it [ 'author-avatar' ],
2011-10-10 03:26:17 +00:00
'$item_text' => sprintf ( t ( " %s commented on %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
2011-10-07 06:25:08 +00:00
'$item_when' => relative_date ( $it [ 'created' ])
));
}
}
2014-07-21 22:36:20 +00:00
2011-10-07 06:25:08 +00:00
} else {
2016-07-27 17:53:22 +00:00
$notif_nocontent = t ( 'No more home notifications.' );
2011-10-07 06:25:08 +00:00
}
2014-07-21 22:36:20 +00:00
2010-07-01 23:48:07 +00:00
}
2016-07-27 19:07:54 +00:00
$o .= replace_macros ( $notif_tpl , array (
'$notif_header' => $notif_header ,
'$tabs' => $tabs ,
'$notif_content' => $notif_content ,
'$notif_nocontent' => $notif_nocontent ,
'$notif_ignored_lnk' => $notif_ignored_lnk ,
));
2011-01-13 10:01:00 +00:00
$o .= paginate ( $a );
2010-07-01 23:48:07 +00:00
return $o ;
2011-01-04 13:46:08 +00:00
}
2016-07-27 17:53:22 +00:00
/**
* @ brief List of pages for the Notifications TabBar
*
* @ param app $a The
* @ return array with with notifications TabBar data
*/
function notifications_tabs ( $a ) {
$tabs = array (
array (
'label' => t ( 'System' ),
'url' => 'notifications/system' ,
'sel' => (( $a -> argv [ 1 ] == 'system' ) ? 'active' : '' ),
'accesskey' => 'y' ,
),
array (
'label' => t ( 'Network' ),
'url' => 'notifications/network' ,
'sel' => (( $a -> argv [ 1 ] == 'network' ) ? 'active' : '' ),
'accesskey' => 'w' ,
),
array (
'label' => t ( 'Personal' ),
'url' => 'notifications/personal' ,
'sel' => (( $a -> argv [ 1 ] == 'personal' ) ? 'active' : '' ),
'accesskey' => 'r' ,
),
array (
'label' => t ( 'Home' ),
'url' => 'notifications/home' ,
'sel' => (( $a -> argv [ 1 ] == 'home' ) ? 'active' : '' ),
'accesskey' => 'h' ,
),
array (
'label' => t ( 'Introductions' ),
'url' => 'notifications/intros' ,
'sel' => (( $a -> argv [ 1 ] == 'intros' ) ? 'active' : '' ),
'accesskey' => 'i' ,
),
/* array (
'label' => t ( 'Messages' ),
'url' => 'message' ,
'sel' => '' ,
), */ /*while I can have notifications for messages, this tablist is not place for message page link */
);
return $tabs ;
}