2010-07-01 19:48:07 -04:00
< ? php
2015-09-25 11:47:37 -04:00
include_once ( " include/bbcode.php " );
2015-10-04 11:18:58 -04:00
include_once ( " include/contact_selectors.php " );
2015-10-04 11:20:47 -04:00
include_once ( " include/Scrape.php " );
2010-07-01 19:48:07 -04:00
function notifications_post ( & $a ) {
2010-08-16 00:49:29 -04:00
if ( ! local_user ()) {
2011-08-02 00:02:25 -04:00
goaway ( z_root ());
2010-07-01 19:48:07 -04:00
}
2013-12-02 14:30:24 -05:00
2010-08-16 00:49:29 -04:00
$request_id = (( $a -> argc > 1 ) ? $a -> argv [ 1 ] : 0 );
2013-12-02 14:30:24 -05:00
2010-09-26 22:44:03 -04:00
if ( $request_id === " all " )
2010-07-01 19:48:07 -04:00
return ;
if ( $request_id ) {
2011-06-27 00:55:24 -04:00
$r = q ( " SELECT * FROM `intro` WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
intval ( $request_id ),
intval ( local_user ())
2010-07-01 19:48:07 -04:00
);
2013-12-02 14:30:24 -05:00
2010-07-01 19:48:07 -04:00
if ( count ( $r )) {
$intro_id = $r [ 0 ][ 'id' ];
2010-11-06 20:01:57 -04:00
$contact_id = $r [ 0 ][ 'contact-id' ];
2010-07-01 19:48:07 -04:00
}
else {
2010-08-16 00:49:29 -04:00
notice ( t ( 'Invalid request identifier.' ) . EOL );
2010-07-01 19:48:07 -04:00
return ;
}
2011-06-27 00:55:24 -04: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 01:43:42 -04:00
if ( $_POST [ 'submit' ] == t ( 'Discard' )) {
2014-03-11 18:52:32 -04:00
$r = q ( " DELETE FROM `intro` WHERE `id` = %d " ,
2010-09-08 23:14:17 -04:00
intval ( $intro_id )
2013-12-02 14:30:24 -05:00
);
2011-06-27 00:55:24 -04:00
if ( ! $fid ) {
2012-03-30 18:10:50 -04: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 18:52:32 -04:00
$r = q ( " DELETE FROM `contact` WHERE `id` = %d AND `uid` = %d AND `self` = 0 AND `blocked` = 1 AND `pending` = 1 " ,
2011-06-27 00:55:24 -04:00
intval ( $contact_id ),
intval ( local_user ())
);
}
2016-02-17 17:47:32 -05:00
goaway ( 'notifications/intros' );
2010-07-01 19:48:07 -04:00
}
2010-08-16 00:49:29 -04:00
if ( $_POST [ 'submit' ] == t ( 'Ignore' )) {
2013-12-02 14:30:24 -05:00
$r = q ( " UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d " ,
2010-07-01 19:48:07 -04:00
intval ( $intro_id ));
2016-02-17 17:47:32 -05:00
goaway ( 'notifications/intros' );
2010-07-01 19:48:07 -04:00
}
}
}
function notifications_content ( & $a ) {
2010-08-16 00:49:29 -04:00
if ( ! local_user ()) {
notice ( t ( 'Permission denied.' ) . EOL );
2011-08-02 00:02:25 -04:00
return ;
2010-07-01 19:48:07 -04:00
}
2013-12-02 14:30:24 -05:00
nav_set_selected ( 'notifications' );
2011-10-12 00:30:23 -04:00
2012-10-14 20:16:25 -04:00
$json = (( $a -> argc > 1 && $a -> argv [ $a -> argc - 1 ] === 'json' ) ? true : false );
2010-08-16 00:49:29 -04:00
$o = '' ;
2016-07-27 13:53:22 -04:00
// get the nav tabs for the notification pages
$tabs = notifications_tabs ( $a );
$notif_content = array ();
2013-12-02 14:30:24 -05:00
2011-10-07 02:25:08 -04:00
if ( (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'intros' )) || (( $a -> argc == 1 ))) {
2011-10-12 00:30:23 -04:00
nav_set_selected ( 'introductions' );
2016-07-27 15:07:54 -04:00
2011-10-07 02:25:08 -04:00
if (( $a -> argc > 2 ) && ( $a -> argv [ 2 ] == 'all' ))
$sql_extra = '' ;
else
$sql_extra = " AND `ignore` = 0 " ;
2013-12-02 14:30:24 -05:00
2016-07-27 15:07:54 -04:00
$notif_header = t ( 'Notifications' );
2011-10-07 02:25:08 -04:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2013-12-02 14:30:24 -05:00
2016-07-27 13:53:22 -04:00
$notif_ignored_lnk .= '<a href="' . (( strlen ( $sql_extra )) ? 'notifications/intros/all' : 'notifications/intros' ) . '" id="notifications-show-hide-link" >'
2011-10-07 02:25:08 -04:00
. (( strlen ( $sql_extra )) ? t ( 'Show Ignored Requests' ) : t ( 'Hide Ignored Requests' )) . '</a></div>' . " \r \n " ;
2014-07-21 18:36:20 -04:00
$r = q ( " SELECT COUNT(*) AS `total` FROM `intro`
2011-10-07 02:25:08 -04: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 19:48:07 -04:00
2016-06-25 07:56:55 -04:00
/// @todo Fetch contact details by "get_contact_details_by_url" instead of queries to contact, fcontact and gcontact
2015-08-12 02:07:21 -04: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 11:18:58 -04:00
`gcontact` . `keywords` AS `gkeywords` , `gcontact` . `gender` AS `ggender` ,
`gcontact` . `network` AS `gnetwork`
2015-08-12 02:07:21 -04: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 02:25:08 -04: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 11:18:58 -04:00
2011-10-07 02:25:08 -04:00
if ( $rr [ 'fid' ]) {
$return_addr = bin2hex ( $a -> user [ 'nickname' ] . '@' . $a -> get_hostname () . (( $a -> path ) ? '/' . $a -> path : '' ));
2012-12-22 14:57:29 -05:00
2016-07-27 13:53:22 -04:00
$notif_content [] = replace_macros ( $sugg , array (
2011-10-07 02:25:08 -04: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 02:25:10 -04:00
'$photo' => (( x ( $rr , 'fphoto' )) ? proxy_url ( $rr [ 'fphoto' ], false , PROXY_SIZE_SMALL ) : " images/person-175.jpg " ),
2011-10-07 02:25:08 -04:00
'$fullname' => $rr [ 'fname' ],
2012-03-30 01:20:14 -04:00
'$url' => zrl ( $rr [ 'furl' ]),
2011-12-29 03:23:05 -05:00
'$hidden' => array ( 'hidden' , t ( 'Hide this contact from others' ), ( $rr [ 'hidden' ] == 1 ), '' ),
2012-04-13 19:12:06 -04: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-06 19:41:05 -05:00
2011-10-07 02:25:08 -04:00
'$knowyou' => $knowyou ,
'$approve' => t ( 'Approve' ),
'$note' => $rr [ 'note' ],
'$request' => $rr [ 'frequest' ] . '?addr=' . $return_addr ,
'$ignore' => t ( 'Ignore' ),
2012-12-22 14:57:29 -05:00
'$discard' => t ( 'Discard' ),
2011-10-07 02:25:08 -04: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 12:02:26 -04:00
if ( $rr [ 'network' ] === NETWORK_DFRN ) {
2016-07-27 13:53:22 -04:00
$lbl_knowyou = t ( 'Claims to be known to you: ' );
$knowyou = (( $rr [ 'knowyou' ]) ? t ( 'yes' ) : t ( 'no' ));
2015-04-04 12:02:26 -04: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 02:25:08 -04:00
$knowyou = '' ;
2015-04-04 12:02:26 -04: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 02:25:08 -04:00
$dfrn_text = replace_macros ( $dfrn_tpl , array (
'$intro_id' => $rr [ 'intro_id' ],
'$friend_selected' => $friend_selected ,
'$fan_selected' => $fan_selected ,
2015-04-04 12:02:26 -04:00
'$approve_as' => $helptext ,
2011-10-07 02:25:08 -04:00
'$as_friend' => t ( 'Friend' ),
'$as_fan' => (( $rr [ 'network' ] == NETWORK_DIASPORA ) ? t ( 'Sharer' ) : t ( 'Fan/Admirer' ))
));
2013-12-02 14:30:24 -05:00
}
2011-10-07 02:25:08 -04:00
2015-10-04 11:18:58 -04: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 16:24:58 -04:00
$header .= " ( " . network_to_name ( $rr [ 'gnetwork' ], $rr [ 'url' ]) . " ) " ;
2015-10-04 11:18:58 -04:00
2015-10-06 00:56:31 -04: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 13:53:22 -04:00
$notif_content [] = replace_macros ( $tpl , array (
2015-10-04 11:18:58 -04:00
'$header' => htmlentities ( $header ),
2011-06-27 00:55:24 -04:00
'$str_notifytype' => t ( 'Notification type: ' ),
2011-10-07 02:25:08 -04:00
'$notify_type' => (( $rr [ 'network' ] !== NETWORK_OSTATUS ) ? t ( 'Friend/Connect Request' ) : t ( 'New Follower' )),
2013-12-02 14:30:24 -05:00
'$dfrn_text' => $dfrn_text ,
2011-10-07 02:25:08 -04:00
'$dfrn_id' => $rr [ 'issued-id' ],
'$uid' => $_SESSION [ 'uid' ],
2011-06-27 00:55:24 -04:00
'$intro_id' => $rr [ 'intro_id' ],
'$contact_id' => $rr [ 'contact-id' ],
2015-10-07 02:25:10 -04:00
'$photo' => (( x ( $rr , 'photo' )) ? proxy_url ( $rr [ 'photo' ], false , PROXY_SIZE_SMALL ) : " images/person-175.jpg " ),
2011-10-07 02:25:08 -04:00
'$fullname' => $rr [ 'name' ],
2015-10-04 09:55:24 -04:00
'$location' => bbcode ( $rr [ 'glocation' ], false , false ),
2015-08-12 02:07:21 -04:00
'$location_label' => t ( 'Location:' ),
2015-10-05 16:25:14 -04:00
'$about' => bbcode ( $rr [ 'gabout' ], false , false ),
2015-08-12 02:07:21 -04:00
'$about_label' => t ( 'About:' ),
'$keywords' => $rr [ 'gkeywords' ],
'$keywords_label' => t ( 'Tags:' ),
'$gender' => $rr [ 'ggender' ],
'$gender_label' => t ( 'Gender:' ),
2011-12-29 03:23:05 -05:00
'$hidden' => array ( 'hidden' , t ( 'Hide this contact from others' ), ( $rr [ 'hidden' ] == 1 ), '' ),
2012-04-13 19:12:06 -04: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 12:31:08 -04:00
'$url' => $rr [ 'url' ],
'$zrl' => zrl ( $rr [ 'url' ]),
2015-10-04 09:55:24 -04:00
'$url_label' => t ( 'Profile URL' ),
2016-07-27 13:53:22 -04:00
'$addr' => $rr [ 'addr' ],
'$lbl_knowyou' => $lbl_knowyou ,
'$lbl_network' => t ( 'Network:' ),
'$network' => network_to_name ( $rr [ 'gnetwork' ], $rr [ 'url' ]),
2011-06-27 00:55:24 -04:00
'$knowyou' => $knowyou ,
'$approve' => t ( 'Approve' ),
'$note' => $rr [ 'note' ],
'$ignore' => t ( 'Ignore' ),
2012-12-22 14:57:29 -05:00
'$discard' => t ( 'Discard' ),
2011-06-27 00:55:24 -04:00
));
}
2010-07-01 19:48:07 -04:00
}
2011-10-07 02:25:08 -04:00
else
2011-12-01 01:26:02 -05:00
info ( t ( 'No introductions.' ) . EOL );
2012-10-14 20:16:25 -04:00
2011-10-07 02:25:08 -04:00
} else if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'network' )) {
2013-12-02 14:30:24 -05:00
2016-07-27 15:07:54 -04:00
$notif_header = t ( 'Network Notifications' );
2011-10-07 02:25:08 -04:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2013-12-02 14:30:24 -05:00
2014-07-21 18:36:20 -04: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 02:25:08 -04:00
FROM `item` INNER JOIN `item` as `pitem` ON `pitem` . `id` = `item` . `parent`
2013-03-03 14:44:52 -05:00
WHERE `item` . `unseen` = 1 AND `item` . `visible` = 1 AND `pitem` . `parent` != 0 AND
2011-10-07 02:25:08 -04:00
`item` . `deleted` = 0 AND `item` . `uid` = % d AND `item` . `wall` = 0 ORDER BY `item` . `created` DESC " ,
intval ( local_user ())
);
2014-07-21 18:36:20 -04:00
2016-07-28 05:39:09 -04: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 18:36:20 -04:00
2012-11-04 16:43:28 -05:00
if ( $r ) {
2014-07-21 18:36:20 -04:00
2016-07-28 05:39:09 -04:00
$notifs = array (
'notifications' => $r ,
'ident' => 'network' ,
);
// foreach ($r as $it) {
// switch($it['verb']){
// case ACTIVITY_LIKE:
// $notif_content[] = replace_macros($tpl_item_likes,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$item_image' => proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO),
// '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']),
// '$item_when' => relative_date($it['created'])
// ));
// break;
//
// case ACTIVITY_DISLIKE:
// $notif_content[] = replace_macros($tpl_item_dislikes,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$item_image' => proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO),
// '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']),
// '$item_when' => relative_date($it['created'])
// ));
// break;
//
// case ACTIVITY_FRIEND:
//
// $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
// $obj = parse_xml_string($xmlhead.$it['object']);
// $it['fname'] = $obj->title;
//
// $notif_content[] = replace_macros($tpl_item_friends,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$item_image' => proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO),
// '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']),
// '$item_when' => relative_date($it['created'])
// ));
// break;
//
// 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);
//
// $notif_content[] = replace_macros($tpl,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$item_image' => proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO),
// '$item_text' => $item_text,
// '$item_when' => relative_date($it['created'])
// ));
// }
// }
2014-07-21 18:36:20 -04:00
2011-10-07 02:25:08 -04:00
} else {
2014-07-21 18:36:20 -04:00
2016-07-27 13:53:22 -04:00
$notif_nocontent = t ( 'No more network notifications.' );
2011-10-07 02:25:08 -04:00
}
2014-07-21 18:36:20 -04:00
2012-02-23 02:34:30 -05:00
} else if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'system' )) {
2014-07-21 18:36:20 -04:00
2016-07-27 15:07:54 -04:00
$notif_header = t ( 'System Notifications' );
2012-02-23 02:34:30 -05:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2014-07-21 18:36:20 -04:00
2012-02-23 02:34:30 -05: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 18:36:20 -04:00
2012-02-23 02:34:30 -05:00
if ( count ( $r ) > 0 ) {
2016-07-28 05:39:09 -04:00
// foreach ($r as $it) {
// $notif_content[] = replace_macros($not_tpl,array(
// '$item_link' => $a->get_baseurl(true).'/notify/view/'. $it['id'],
// '$item_image' => proxy_url($it['photo'], false, PROXY_SIZE_MICRO),
// '$item_text' => strip_tags(bbcode($it['msg'])),
// '$item_when' => relative_date($it['date'])
// ));
// }
$notifs = array (
'notifications' => $r ,
'ident' => 'system' ,
);
2012-02-23 02:34:30 -05:00
} else {
2016-07-27 13:53:22 -04:00
$notif_nocontent = t ( 'No more system notifications.' );
2012-02-23 02:34:30 -05:00
}
2014-07-21 18:36:20 -04:00
2011-12-01 01:26:02 -05:00
} else if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'personal' )) {
2014-07-21 18:36:20 -04:00
2016-07-27 15:07:54 -04:00
$notif_header = t ( 'Personal Notifications' );
2011-12-01 01:26:02 -05:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2014-07-21 18:36:20 -04:00
2012-03-15 00:20:20 -04:00
$myurl = $a -> get_baseurl ( true ) . '/profile/' . $a -> user [ 'nickname' ];
2011-12-01 01:26:02 -05:00
$myurl = substr ( $myurl , strpos ( $myurl , '://' ) + 3 );
$myurl = str_replace ( array ( 'www.' , '.' ), array ( '' , '\\.' ), $myurl );
2011-12-06 18:24:01 -05: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 01:26:02 -05:00
dbesc ( $myurl . '$' ),
2011-12-06 18:24:01 -05:00
dbesc ( $myurl . '\\]' ),
dbesc ( $diasp_url . '\\]' )
2011-12-01 01:26:02 -05:00
);
2014-07-21 18:36:20 -04: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 01:26:02 -05:00
FROM `item` INNER JOIN `item` as `pitem` ON `pitem` . `id` = `item` . `parent`
2014-07-21 18:36:20 -04:00
WHERE `item` . `unseen` = 1 AND `item` . `visible` = 1
2011-12-01 01:26:02 -05: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 18:36:20 -04:00
2016-07-28 05:39:09 -04: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 18:36:20 -04:00
2011-12-01 01:26:02 -05:00
if ( count ( $r ) > 0 ) {
2016-07-28 05:39:09 -04:00
$notifs = array (
'notifications' => $r ,
'ident' => 'personal'
);
2014-07-21 18:36:20 -04:00
2016-07-28 05:39:09 -04:00
// foreach ($r as $it) {
// switch($it['verb']){
// case ACTIVITY_LIKE:
// $notif_content[] = replace_macros($tpl_item_likes,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$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:
// $notif_content[] = replace_macros($tpl_item_dislikes,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$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;
//
// case ACTIVITY_FRIEND:
//
// $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
// $obj = parse_xml_string($xmlhead.$it['object']);
// $it['fname'] = $obj->title;
//
// $notif_content[] = replace_macros($tpl_item_friends,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$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;
//
// 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);
//
// $notif_content[] = replace_macros($tpl,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$item_image' => $it['author-avatar'],
// '$item_text' => $item_text,
// '$item_when' => relative_date($it['created'])
// ));
// }
// }
2014-07-21 18:36:20 -04:00
2011-12-01 01:26:02 -05:00
} else {
2014-07-21 18:36:20 -04:00
2016-07-27 13:53:22 -04:00
$notif_nocontent = t ( 'No more personal notifications.' );
2011-12-01 01:26:02 -05:00
}
2014-07-21 18:36:20 -04:00
2011-10-07 02:25:08 -04:00
} else if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'home' )) {
2014-07-21 18:36:20 -04:00
2016-07-27 15:07:54 -04:00
$notif_header = t ( 'Home Notifications' );
2011-10-07 02:25:08 -04:00
$notif_tpl = get_markup_template ( 'notifications.tpl' );
2014-07-21 18:36:20 -04: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 02:25:08 -04: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 18:36:20 -04:00
2016-07-28 05:39:09 -04: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 18:36:20 -04:00
2011-10-07 02:25:08 -04:00
if ( count ( $r ) > 0 ) {
2014-07-21 18:36:20 -04:00
2016-07-28 05:39:09 -04:00
$notifs = array (
'notifications' => $r ,
'ident' => 'home' ,
);
// foreach ($r as $it) {
// switch($it['verb']){
// case ACTIVITY_LIKE:
// $notif_content[] = replace_macros($tpl_item_likes,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$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:
// $notif_content[] = replace_macros($tpl_item_dislikes,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$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;
// case ACTIVITY_FRIEND:
//
// $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
// $obj = parse_xml_string($xmlhead.$it['object']);
// $it['fname'] = $obj->title;
//
// $notif_content[] = replace_macros($tpl_item_friends,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$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;
// default:
// $notif_content[] = replace_macros($tpl_item_comments,array(
// //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
// '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'],
// '$item_image' => $it['author-avatar'],
// '$item_text' => sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']),
// '$item_when' => relative_date($it['created'])
// ));
// }
// }
2014-07-21 18:36:20 -04:00
2011-10-07 02:25:08 -04:00
} else {
2016-07-27 13:53:22 -04:00
$notif_nocontent = t ( 'No more home notifications.' );
2011-10-07 02:25:08 -04:00
}
2014-07-21 18:36:20 -04:00
2010-07-01 19:48:07 -04:00
}
2016-07-28 05:39:09 -04:00
if ( count ( $notifs [ 'notifications' ]) > 0 )
$notif_content = format_notifiations ( $a , $notifs );
2016-07-27 15:07:54 -04: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 ,
));
2016-07-28 05:39:09 -04:00
2011-01-13 05:01:00 -05:00
$o .= paginate ( $a );
2010-07-01 19:48:07 -04:00
return $o ;
2011-01-04 08:46:08 -05:00
}
2016-07-27 13:53:22 -04: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 ;
2016-07-28 05:39:09 -04:00
}
function format_notifiations ( & $a , $notifs ) {
$notif_content = array ();
// The template files we need in different cases for formatting the content
$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' );
$tpl_notify = get_markup_template ( 'notify.tpl' );
if ( count ( $notifs [ 'notifications' ]) > 0 ) {
// switch ($notifs['ident']) {
// case 'system':
// $default_item_link = app::get_baseurl(true).'/notify/view/'. $it['id'];
// $default_item_image = proxy_url($it['photo'], false, PROXY_SIZE_MICRO);
// $default_item_text = strip_tags(bbcode($it['msg']));
// $default_item_when = relative_date($it['date']);
// $default_tpl = $tpl_notify;
// break;
//
// case 'home':
// $default_item_link = app::get_baseurl(true).'/display/'.$it['pguid'];
// $default_item_image = proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO);
// $default_item_text = sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']);
// $default_item_when = relative_date($it['created']);
// $default_tpl = $tpl_item_comments;
// break;
//
// default:
// $default_item_link = app::get_baseurl(true).'/display/'.$it['pguid'];
// $default_item_image = proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO);
// $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']));
// $default_item_when = relative_date($it['created']);
// $default_tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments);
//
// }
foreach ( $notifs [ 'notifications' ] as $it ) {
switch ( $notifs [ 'ident' ]) {
case 'system' :
$default_item_link = app :: get_baseurl ( true ) . 'notify/view/' . $it [ 'id' ];
$default_item_image = proxy_url ( $it [ 'photo' ], false , PROXY_SIZE_MICRO );
$default_item_text = strip_tags ( bbcode ( $it [ 'msg' ]));
$default_item_when = relative_date ( $it [ 'date' ]);
$default_tpl = $tpl_notify ;
break ;
case 'home' :
$default_item_link = app :: get_baseurl ( true ) . '/display/' . $it [ 'pguid' ];
$default_item_image = proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO );
$default_item_text = sprintf ( t ( " %s commented on %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]);
$default_item_when = relative_date ( $it [ 'created' ]);
$default_tpl = $tpl_item_comments ;
break ;
default :
$default_item_link = app :: get_baseurl ( true ) . '/display/' . $it [ 'pguid' ];
$default_item_image = proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO );
$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' ]));
$default_item_when = relative_date ( $it [ 'created' ]);
$default_tpl = (( $it [ 'id' ] == $it [ 'parent' ]) ? $tpl_item_posts : $tpl_item_comments );
}
switch ( $it [ 'verb' ]){
case ACTIVITY_LIKE :
$notif_content [] = replace_macros ( $tpl_item_likes , array (
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => app :: get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
'$item_image' => proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO ),
'$item_text' => sprintf ( t ( " %s liked %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
case ACTIVITY_DISLIKE :
$notif_content [] = replace_macros ( $tpl_item_dislikes , array (
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => app :: get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
'$item_image' => proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO ),
'$item_text' => sprintf ( t ( " %s disliked %s's post " ), $it [ 'author-name' ], $it [ 'pname' ]),
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
case ACTIVITY_FRIEND :
$xmlhead = " < " . " ?xml version='1.0' encoding='UTF-8' ? " . " > " ;
$obj = parse_xml_string ( $xmlhead . $it [ 'object' ]);
$it [ 'fname' ] = $obj -> title ;
$notif_content [] = replace_macros ( $tpl_item_friends , array (
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => app :: get_baseurl ( true ) . '/display/' . $it [ 'pguid' ],
'$item_image' => proxy_url ( $it [ 'author-avatar' ], false , PROXY_SIZE_MICRO ),
'$item_text' => sprintf ( t ( " %s is now friends with %s " ), $it [ 'author-name' ], $it [ 'fname' ]),
'$item_when' => relative_date ( $it [ 'created' ])
));
break ;
default :
$notif_content [] = replace_macros ( $default_tpl , array (
//'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_link' => $default_item_link ,
'$item_image' => $default_item_image ,
'$item_text' => $default_item_text ,
'$item_when' => $default_item_when
));
}
}
}
return $notif_content ;
2016-07-27 13:53:22 -04:00
}