2010-07-02 01:48:07 +02:00
< ? php
function notifications_post ( & $a ) {
2010-08-16 06:49:29 +02:00
if ( ! local_user ()) {
2011-08-02 06:02:25 +02:00
goaway ( z_root ());
2010-07-02 01:48:07 +02:00
}
2010-08-16 06:49:29 +02:00
$request_id = (( $a -> argc > 1 ) ? $a -> argv [ 1 ] : 0 );
2010-07-02 01:48:07 +02:00
2010-09-27 04:44:03 +02:00
if ( $request_id === " all " )
2010-07-02 01:48:07 +02:00
return ;
if ( $request_id ) {
2011-06-27 06:55:24 +02:00
$r = q ( " SELECT * FROM `intro` WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
intval ( $request_id ),
intval ( local_user ())
2010-07-02 01:48:07 +02:00
);
if ( count ( $r )) {
$intro_id = $r [ 0 ][ 'id' ];
2010-11-07 01:01:57 +01:00
$contact_id = $r [ 0 ][ 'contact-id' ];
2010-07-02 01:48:07 +02:00
}
else {
2010-08-16 06:49:29 +02:00
notice ( t ( 'Invalid request identifier.' ) . EOL );
2010-07-02 01:48:07 +02:00
return ;
}
2011-06-27 06:55:24 +02: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 07:43:42 +02:00
if ( $_POST [ 'submit' ] == t ( 'Discard' )) {
2010-09-09 05:14:17 +02:00
$r = q ( " DELETE FROM `intro` WHERE `id` = %d LIMIT 1 " ,
intval ( $intro_id )
);
2011-06-27 06:55:24 +02:00
if ( ! $fid ) {
$r = q ( " DELETE FROM `contact` WHERE `id` = %d AND `uid` = %d AND `self` = 0 LIMIT 1 " ,
intval ( $contact_id ),
intval ( local_user ())
);
}
2010-07-02 01:48:07 +02:00
return ;
}
2010-08-16 06:49:29 +02:00
if ( $_POST [ 'submit' ] == t ( 'Ignore' )) {
2010-07-02 01:48:07 +02:00
$r = q ( " UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d LIMIT 1 " ,
intval ( $intro_id ));
return ;
}
}
}
function notifications_content ( & $a ) {
2010-08-16 06:49:29 +02:00
if ( ! local_user ()) {
notice ( t ( 'Permission denied.' ) . EOL );
2011-08-02 06:02:25 +02:00
return ;
2010-07-02 01:48:07 +02:00
}
2010-08-16 06:49:29 +02:00
$o = '' ;
2011-07-25 16:52:30 +02:00
$o .= set_nav_selected ( " nav-notifications-link " );
2010-08-16 06:49:29 +02:00
2010-07-02 01:48:07 +02:00
if (( $a -> argc > 1 ) && ( $a -> argv [ 1 ] == 'all' ))
$sql_extra = '' ;
else
$sql_extra = " AND `ignore` = 0 " ;
2011-03-30 02:19:12 +02:00
$o .= '<h1>' . t ( 'Pending Friend/Connect Notifications' ) . '</h1>' . " \r \n " ;
$o .= '<div id="notification-show-hide-wrapper" >' ;
$o .= '<a href="' . (( strlen ( $sql_extra )) ? 'notifications/all' : 'notifications' ) . '" id="notifications-show-hide-link" >'
. (( strlen ( $sql_extra )) ? t ( 'Show Ignored Requests' ) : t ( 'Hide Ignored Requests' )) . '</a></div>' . " \r \n " ;
2010-07-13 01:43:59 +02:00
2011-01-13 11:01:00 +01:00
$r = q ( " SELECT COUNT(*) AS `total` FROM `intro`
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 );
}
2011-06-27 06:55:24 +02: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`
FROM `intro` LEFT JOIN `contact` ON `contact` . `id` = `intro` . `contact-id` LEFT JOIN `fcontact` ON `intro` . `fid` = `fcontact` . `id`
2010-07-02 01:48:07 +02:00
WHERE `intro` . `uid` = % d $sql_extra AND `intro` . `blocked` = 0 " ,
intval ( $_SESSION [ 'uid' ]));
2010-07-13 01:43:59 +02:00
2010-07-02 01:48:07 +02:00
if (( $r !== false ) && ( count ( $r ))) {
2011-06-27 06:55:24 +02:00
$sugg = get_markup_template ( 'suggestions.tpl' );
2011-05-11 13:37:13 +02:00
$tpl = get_markup_template ( " intros.tpl " );
2010-07-02 01:48:07 +02:00
foreach ( $r as $rr ) {
2011-06-27 06:55:24 +02:00
if ( $rr [ 'fid' ]) {
2010-07-02 01:48:07 +02:00
2011-06-27 06:55:24 +02:00
$return_addr = bin2hex ( $a -> user [ 'nickname' ] . '@' . $a -> get_hostname () . (( $a -> path ) ? '/' . $a -> path : '' ));
$o .= replace_macros ( $sugg , array (
'$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' ],
'$photo' => (( x ( $rr , 'fphoto' )) ? $rr [ 'fphoto' ] : " images/default-profile.jpg " ),
'$fullname' => $rr [ 'fname' ],
'$url' => $rr [ 'furl' ],
'$knowyou' => $knowyou ,
'$approve' => t ( 'Approve' ),
'$note' => $rr [ 'note' ],
'$request' => $rr [ 'frequest' ] . '?addr=' . $return_addr ,
'$ignore' => t ( 'Ignore' ),
'$discard' => t ( 'Discard' )
));
continue ;
}
2011-08-16 03:17:19 +02:00
$friend_selected = (( $rr [ 'network' ] !== NETWORK_OSTATUS ) ? ' checked="checked" ' : ' disabled ' );
$fan_selected = (( $rr [ 'network' ] === NETWORK_OSTATUS ) ? ' checked="checked" disabled ' : '' );
2011-05-11 13:37:13 +02:00
$dfrn_tpl = get_markup_template ( 'netfriend.tpl' );
2010-10-25 05:39:24 +02:00
$knowyou = '' ;
$dfrn_text = '' ;
2011-08-16 04:31:45 +02:00
if ( $rr [ 'network' ] === NETWORK_DFRN || $rr [ 'network' ] === NETWORK_DIASPORA ) {
if ( $rr [ 'network' ] === NETWORK_DFRN )
$knowyou = t ( 'Claims to be known to you: ' ) . (( $rr [ 'knowyou' ]) ? t ( 'yes' ) : t ( 'no' ));
else
$knowyou = '' ;
2010-10-25 05:39:24 +02:00
$dfrn_text = replace_macros ( $dfrn_tpl , array (
'$intro_id' => $rr [ 'intro_id' ],
'$friend_selected' => $friend_selected ,
'$fan_selected' => $fan_selected ,
2011-02-23 00:35:33 +01:00
'$approve_as' => t ( 'Approve as: ' ),
'$as_friend' => t ( 'Friend' ),
2011-08-16 03:17:19 +02:00
'$as_fan' => (( $rr [ 'network' ] == NETWORK_DIASPORA ) ? t ( 'Sharer' ) : t ( 'Fan/Admirer' ))
2010-10-25 05:39:24 +02:00
));
}
2010-07-02 01:48:07 +02:00
$o .= replace_macros ( $tpl , array (
2010-11-16 08:27:12 +01:00
'$str_notifytype' => t ( 'Notification type: ' ),
2011-08-16 03:17:19 +02:00
'$notify_type' => (( $rr [ 'network' ] !== NETWORK_OSTATUS ) ? t ( 'Friend/Connect Request' ) : t ( 'New Follower' )),
2010-10-25 05:39:24 +02:00
'$dfrn_text' => $dfrn_text ,
'$dfrn_id' => $rr [ 'issued-id' ],
2010-07-02 01:48:07 +02:00
'$uid' => $_SESSION [ 'uid' ],
2010-10-25 05:39:24 +02:00
'$intro_id' => $rr [ 'intro_id' ],
'$contact_id' => $rr [ 'contact-id' ],
2010-07-02 01:48:07 +02:00
'$photo' => (( x ( $rr , 'photo' )) ? $rr [ 'photo' ] : " images/default-profile.jpg " ),
'$fullname' => $rr [ 'name' ],
'$url' => $rr [ 'url' ],
2010-10-25 05:39:24 +02:00
'$knowyou' => $knowyou ,
2010-11-16 08:27:12 +01:00
'$approve' => t ( 'Approve' ),
2010-12-02 05:37:42 +01:00
'$note' => $rr [ 'note' ],
'$ignore' => t ( 'Ignore' ),
'$discard' => t ( 'Discard' )
2010-07-02 01:48:07 +02:00
));
}
}
else
2011-05-23 11:39:57 +02:00
info ( t ( 'No notifications.' ) . EOL );
2010-07-02 01:48:07 +02:00
2011-01-13 11:01:00 +01:00
$o .= paginate ( $a );
2010-07-02 01:48:07 +02:00
return $o ;
2011-01-04 14:46:08 +01:00
}