2010-07-02 01:48:07 +02:00
< ? php
2010-09-09 05:14:17 +02:00
require_once ( 'include/Contact.php' );
2011-11-02 03:16:33 +01:00
require_once ( 'include/socgraph.php' );
2010-09-09 05:14:17 +02:00
2010-07-11 11:52:47 +02:00
function contacts_init ( & $a ) {
2011-07-18 01:08:47 +02:00
if ( ! local_user ())
return ;
2011-08-03 07:39:35 +02:00
$contact_id = 0 ;
2011-11-09 12:46:36 +01:00
2011-08-03 07:39:35 +02:00
if (( $a -> argc == 2 ) && intval ( $a -> argv [ 1 ])) {
$contact_id = intval ( $a -> argv [ 1 ]);
$r = q ( " SELECT * FROM `contact` WHERE `uid` = %d and `id` = %d LIMIT 1 " ,
intval ( local_user ()),
intval ( $contact_id )
);
if ( ! count ( $r )) {
$contact_id = 0 ;
}
}
2010-07-11 11:52:47 +02:00
require_once ( 'include/group.php' );
2011-10-12 04:27:58 +02:00
require_once ( 'include/contact_widgets.php' );
2010-11-01 00:38:22 +01:00
if ( ! x ( $a -> page , 'aside' ))
$a -> page [ 'aside' ] = '' ;
2011-10-12 03:24:37 +02:00
2011-11-09 12:46:36 +01:00
if ( $contact_id ) {
$a -> data [ 'contact' ] = $r [ 0 ];
$o .= '<div class="vcard">' ;
$o .= '<div class="fn">' . $a -> data [ 'contact' ][ 'name' ] . '</div>' ;
$o .= '<div id="profile-photo-wrapper"><img class="photo" style="width: 175px; height: 175px;" src="' . $a -> data [ 'contact' ][ 'photo' ] . '" alt="' . $a -> data [ 'contact' ][ 'name' ] . '" /></div>' ;
$o .= '</div>' ;
$a -> page [ 'aside' ] .= $o ;
}
2011-11-11 11:56:54 +01:00
else
$a -> page [ 'aside' ] .= follow_widget ();
2011-10-12 03:24:37 +02:00
2011-08-03 07:39:35 +02:00
$a -> page [ 'aside' ] .= group_side ( 'contacts' , 'group' , false , 0 , $contact_id );
2010-07-28 04:27:14 +02:00
2011-10-12 04:27:58 +02:00
$a -> page [ 'aside' ] .= findpeople_widget ();
2011-03-22 05:43:22 +01:00
2012-02-12 06:39:51 +01:00
$a -> page [ 'aside' ] .= networks_widget ( 'contacts' , $_GET [ 'nets' ]);
2010-07-02 01:48:07 +02:00
}
function contacts_post ( & $a ) {
2010-07-11 08:03:54 +02:00
if ( ! local_user ())
2010-07-02 01:48:07 +02:00
return ;
$contact_id = intval ( $a -> argv [ 1 ]);
if ( ! $contact_id )
return ;
2010-07-11 11:52:47 +02:00
2010-07-11 08:03:54 +02:00
$orig_record = q ( " SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
2010-07-02 01:48:07 +02:00
intval ( $contact_id ),
2010-10-18 23:34:59 +02:00
intval ( local_user ())
2010-07-02 01:48:07 +02:00
);
2010-07-11 08:03:54 +02:00
if ( ! count ( $orig_record )) {
2010-09-09 05:14:17 +02:00
notice ( t ( 'Could not access contact record.' ) . EOL );
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/contacts' );
2010-07-11 08:03:54 +02:00
return ; // NOTREACHED
}
2010-07-02 01:48:07 +02:00
2011-01-07 12:15:52 +01:00
call_hooks ( 'contact_edit_post' , $_POST );
2010-07-11 08:03:54 +02:00
$profile_id = intval ( $_POST [ 'profile-assign' ]);
if ( $profile_id ) {
$r = q ( " SELECT `id` FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
intval ( $profile_id ),
2010-10-18 23:34:59 +02:00
intval ( local_user ())
2010-07-11 08:03:54 +02:00
);
if ( ! count ( $r )) {
2010-07-28 07:32:21 +02:00
notice ( t ( 'Could not locate selected profile.' ) . EOL );
2010-07-02 01:48:07 +02:00
return ;
2010-07-11 08:03:54 +02:00
}
2010-07-02 01:48:07 +02:00
}
2011-05-31 07:17:04 +02:00
2011-12-06 03:36:26 +01:00
$hidden = intval ( $_POST [ 'hidden' ]);
2010-10-01 11:28:06 +02:00
2011-01-27 05:29:32 +01:00
$priority = intval ( $_POST [ 'poll' ]);
2010-08-01 14:46:51 +02:00
if ( $priority > 5 || $priority < 0 )
$priority = 0 ;
2010-12-28 10:06:34 +01:00
$info = escape_tags ( trim ( $_POST [ 'info' ]));
2011-12-06 03:36:26 +01:00
$r = q ( " UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `info` = '%s',
`hidden` = % d WHERE `id` = % d AND `uid` = % d LIMIT 1 " ,
2010-07-11 08:03:54 +02:00
intval ( $profile_id ),
2010-08-01 14:46:51 +02:00
intval ( $priority ),
2010-12-28 10:06:34 +01:00
dbesc ( $info ),
2011-12-06 03:36:26 +01:00
intval ( $hidden ),
2010-07-11 08:03:54 +02:00
intval ( $contact_id ),
2010-10-18 23:34:59 +02:00
intval ( local_user ())
2010-07-11 08:03:54 +02:00
);
if ( $r )
2011-05-23 11:39:57 +02:00
info ( t ( 'Contact updated.' ) . EOL );
2010-07-11 08:03:54 +02:00
else
2010-07-28 07:32:21 +02:00
notice ( t ( 'Failed to update contact record.' ) . EOL );
2012-02-12 08:17:55 +01:00
$r = q ( " select * from contact where id = %d and uid = %d limit 1 " ,
intval ( $contact_id ),
intval ( local_user ())
);
if ( $r && count ( $r ))
$a -> data [ 'contact' ] = $r [ 0 ];
2010-07-11 08:03:54 +02:00
return ;
2010-07-02 01:48:07 +02:00
}
function contacts_content ( & $a ) {
2010-07-11 08:03:54 +02:00
2010-11-01 00:38:22 +01:00
$sort_type = 0 ;
$o = '' ;
2011-08-17 18:36:24 +02:00
nav_set_selected ( 'contacts' );
2010-11-01 00:38:22 +01:00
2010-07-02 01:48:07 +02:00
if ( ! local_user ()) {
2010-07-28 07:32:21 +02:00
notice ( t ( 'Permission denied.' ) . EOL );
2010-07-02 01:48:07 +02:00
return ;
}
2010-07-11 08:03:54 +02:00
if ( $a -> argc == 3 ) {
$contact_id = intval ( $a -> argv [ 1 ]);
if ( ! $contact_id )
return ;
$cmd = $a -> argv [ 2 ];
2011-08-19 14:20:30 +02:00
$orig_record = q ( " SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d AND `self` = 0 LIMIT 1 " ,
2010-07-11 08:03:54 +02:00
intval ( $contact_id ),
2010-10-18 23:34:59 +02:00
intval ( local_user ())
2010-07-11 08:03:54 +02:00
);
if ( ! count ( $orig_record )) {
2010-07-28 07:32:21 +02:00
notice ( t ( 'Could not access contact record.' ) . EOL );
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/contacts' );
2010-07-11 08:03:54 +02:00
return ; // NOTREACHED
}
2011-01-31 04:38:03 +01:00
if ( $cmd === 'update' ) {
// pull feed and consume it, which should subscribe to the hub.
2011-02-24 00:16:12 +01:00
proc_run ( 'php' , " include/poller.php " , " $contact_id " );
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/contacts/' . $contact_id );
2011-01-31 04:38:03 +01:00
// NOTREACHED
}
2010-07-11 08:03:54 +02:00
2010-09-27 02:24:20 +02:00
if ( $cmd === 'block' ) {
2010-07-11 08:03:54 +02:00
$blocked = (( $orig_record [ 0 ][ 'blocked' ]) ? 0 : 1 );
$r = q ( " UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
2011-08-23 05:35:34 +02:00
intval ( $blocked ),
intval ( $contact_id ),
intval ( local_user ())
2010-07-11 08:03:54 +02:00
);
if ( $r ) {
2011-03-11 00:22:21 +01:00
//notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL );
2011-05-23 11:39:57 +02:00
info ( (( $blocked ) ? t ( 'Contact has been blocked' ) : t ( 'Contact has been unblocked' )) . EOL );
2010-07-28 07:32:21 +02:00
}
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/contacts/' . $contact_id );
2010-07-28 07:32:21 +02:00
return ; // NOTREACHED
}
2010-09-27 02:24:20 +02:00
if ( $cmd === 'ignore' ) {
2010-07-28 07:32:21 +02:00
$readonly = (( $orig_record [ 0 ][ 'readonly' ]) ? 0 : 1 );
$r = q ( " UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
2011-08-23 05:35:34 +02:00
intval ( $readonly ),
intval ( $contact_id ),
intval ( local_user ())
2010-07-28 07:32:21 +02:00
);
if ( $r ) {
2011-05-23 11:39:57 +02:00
info ( (( $readonly ) ? t ( 'Contact has been ignored' ) : t ( 'Contact has been unignored' )) . EOL );
2010-07-11 08:03:54 +02:00
}
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/contacts/' . $contact_id );
2010-07-11 08:03:54 +02:00
return ; // NOTREACHED
}
2010-09-27 02:24:20 +02:00
if ( $cmd === 'drop' ) {
2010-11-24 04:29:38 +01:00
// create an unfollow slap
2011-08-23 05:35:34 +02:00
if ( $orig_record [ 0 ][ 'network' ] === NETWORK_OSTATUS ) {
2011-05-11 13:37:13 +02:00
$tpl = get_markup_template ( 'follow_slap.tpl' );
2010-11-24 04:29:38 +01:00
$slap = replace_macros ( $tpl , array (
'$name' => $a -> user [ 'username' ],
'$profile_page' => $a -> get_baseurl () . '/profile/' . $a -> user [ 'nickname' ],
'$photo' => $a -> contact [ 'photo' ],
'$thumb' => $a -> contact [ 'thumb' ],
'$published' => datetime_convert ( 'UTC' , 'UTC' , 'now' , ATOM_TIME ),
'$item_id' => 'urn:X-dfrn:' . $a -> get_hostname () . ':unfollow:' . random_string (),
'$title' => '' ,
'$type' => 'text' ,
'$content' => t ( 'stopped following' ),
'$nick' => $a -> user [ 'nickname' ],
2011-04-06 08:06:03 +02:00
'$verb' => 'http://ostatus.org/schema/1.0/unfollow' , // ACTIVITY_UNFOLLOW,
'$ostat_follow' => '' // '<as:verb>http://ostatus.org/schema/1.0/unfollow</as:verb>' . "\r\n"
2010-11-24 04:29:38 +01:00
));
if (( x ( $orig_record [ 0 ], 'notify' )) && ( strlen ( $orig_record [ 0 ][ 'notify' ]))) {
require_once ( 'include/salmon.php' );
slapper ( $a -> user , $orig_record [ 0 ][ 'notify' ], $slap );
}
}
2011-08-23 05:35:34 +02:00
elseif ( $orig_record [ 0 ][ 'network' ] === NETWORK_DIASPORA ) {
require_once ( 'include/diaspora.php' );
diaspora_unshare ( $a -> user , $orig_record [ 0 ]);
}
elseif ( $orig_record [ 0 ][ 'network' ] === NETWORK_DFRN ) {
2011-01-26 11:32:00 +01:00
require_once ( 'include/items.php' );
dfrn_deliver ( $a -> user , $orig_record [ 0 ], 'placeholder' , 1 );
}
2011-08-19 14:20:30 +02:00
contact_remove ( $orig_record [ 0 ][ 'id' ]);
2011-05-23 11:39:57 +02:00
info ( t ( 'Contact has been removed.' ) . EOL );
2012-02-09 06:15:26 +01:00
if ( x ( $_SESSION , 'return_url' ))
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/' . $_SESSION [ 'return_url' ]);
2012-02-09 06:15:26 +01:00
else
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/contacts' );
2010-07-11 08:03:54 +02:00
return ; // NOTREACHED
}
}
2010-07-06 14:07:28 +02:00
2011-11-10 04:30:14 +01:00
if (( x ( $a -> data , 'contact' )) && ( is_array ( $a -> data [ 'contact' ]))) {
2010-07-06 14:07:28 +02:00
2011-11-10 04:30:14 +01:00
$contact_id = $a -> data [ 'contact' ][ 'id' ];
$contact = $a -> data [ 'contact' ];
2010-07-06 14:07:28 +02:00
2011-05-11 13:37:13 +02:00
$tpl = get_markup_template ( 'contact_head.tpl' );
2012-03-15 05:20:20 +01:00
$a -> page [ 'htmlhead' ] .= replace_macros ( $tpl , array ( '$baseurl' => $a -> get_baseurl ( true )));
2010-10-26 06:52:30 +02:00
2010-11-16 06:06:44 +01:00
require_once ( 'include/contact_selectors.php' );
2010-07-06 14:07:28 +02:00
2011-05-11 13:37:13 +02:00
$tpl = get_markup_template ( " contact_edit.tpl " );
2010-07-06 14:07:28 +02:00
2011-11-10 04:30:14 +01:00
switch ( $contact [ 'rel' ]) {
2011-08-08 01:15:54 +02:00
case CONTACT_IS_FRIEND :
2010-07-11 08:03:54 +02:00
$dir_icon = 'images/lrarrow.gif' ;
2011-11-09 06:22:45 +01:00
$relation_text = t ( 'You are mutual friends with %s' );
2010-09-09 05:14:17 +02:00
break ;
2011-08-08 01:15:54 +02:00
case CONTACT_IS_FOLLOWER ;
2010-07-11 08:03:54 +02:00
$dir_icon = 'images/larrow.gif' ;
2011-11-09 06:22:45 +01:00
$relation_text = t ( 'You are sharing with %s' );
2010-09-09 05:14:17 +02:00
break ;
2011-08-08 01:15:54 +02:00
case CONTACT_IS_SHARING ;
2010-09-09 05:14:17 +02:00
$dir_icon = 'images/rarrow.gif' ;
2011-11-09 06:22:45 +01:00
$relation_text = t ( '%s is sharing with you' );
2010-09-09 05:14:17 +02:00
break ;
default :
break ;
2010-07-11 08:03:54 +02:00
}
2011-11-10 04:30:14 +01:00
$relation_text = sprintf ( $relation_text , $contact [ 'name' ]);
2011-11-09 06:22:45 +01:00
2011-11-10 04:30:14 +01:00
if (( $contact [ 'network' ] === NETWORK_DFRN ) && ( $contact [ 'rel' ])) {
$url = " redir/ { $contact [ 'id' ] } " ;
2010-09-28 04:48:45 +02:00
$sparkle = ' class="sparkle" ' ;
}
else {
2011-11-10 04:30:14 +01:00
$url = $contact [ 'url' ];
2010-09-28 04:48:45 +02:00
$sparkle = '' ;
}
2010-10-01 11:28:06 +02:00
2011-11-09 06:22:45 +01:00
$insecure = t ( 'Private communications are not available for this contact.' );
2011-03-21 03:29:01 +01:00
2011-11-10 04:30:14 +01:00
$last_update = (( $contact [ 'last-update' ] == '0000-00-00 00:00:00' )
2011-02-07 00:50:50 +01:00
? t ( 'Never' )
2011-11-10 04:30:14 +01:00
: datetime_convert ( 'UTC' , date_default_timezone_get (), $contact [ 'last-update' ], 'D, j M Y, g:i A' ));
2011-02-07 00:50:50 +01:00
2011-11-10 04:30:14 +01:00
if ( $contact [ 'last-update' ] !== '0000-00-00 00:00:00' )
$last_update .= ' ' . (( $contact [ 'last-update' ] == $contact [ 'success_update' ]) ? t ( " \x28 Update was successful \x29 " ) : t ( " \x28 Update was not successful \x29 " ));
2011-02-07 00:50:50 +01:00
2011-11-10 04:30:14 +01:00
$lblsuggest = (( $contact [ 'network' ] === NETWORK_DFRN ) ? t ( 'Suggest friends' ) : '' );
2011-06-27 07:57:08 +02:00
2011-11-10 04:30:14 +01:00
$poll_enabled = (( $contact [ 'network' ] !== NETWORK_DIASPORA ) ? true : false );
2011-08-26 03:12:42 +02:00
2011-11-10 04:30:14 +01:00
$nettype = sprintf ( t ( 'Network type: %s' ), network_to_name ( $contact [ 'network' ]));
2011-06-27 07:57:08 +02:00
2011-11-10 04:30:14 +01:00
$common = count_common_friends ( local_user (), $contact [ 'id' ]);
2011-11-09 06:22:45 +01:00
$common_text = (( $common ) ? sprintf ( tt ( '%d contact in common' , '%d contacts in common' , $common ), $common ) : '' );
2011-11-10 04:30:14 +01:00
$polling = (( $contact [ 'network' ] === NETWORK_MAIL | $contact [ 'network' ] === NETWORK_FEED ) ? 'polling' : '' );
2011-11-09 06:22:45 +01:00
2011-11-10 04:30:14 +01:00
$x = count_all_friends ( local_user (), $contact [ 'id' ]);
2011-11-09 06:22:45 +01:00
$all_friends = (( $x ) ? t ( 'View all contacts' ) : '' );
2011-11-10 04:30:14 +01:00
// tabs
$tabs = array (
array (
'label' => (( $contact [ 'blocked' ]) ? t ( 'Unblock' ) : t ( 'Block' ) ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/contacts/' . $contact_id . '/block' ,
2011-11-10 04:30:14 +01:00
'sel' => '' ,
),
array (
'label' => (( $contact [ 'readonly' ]) ? t ( 'Unignore' ) : t ( 'Ignore' ) ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/contacts/' . $contact_id . '/ignore' ,
2011-11-10 04:30:14 +01:00
'sel' => '' ,
),
array (
'label' => t ( 'Repair' ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/crepair/' . $contact_id ,
2011-11-10 04:30:14 +01:00
'sel' => '' ,
)
);
$tab_tpl = get_markup_template ( 'common_tabs.tpl' );
$tab_str = replace_macros ( $tab_tpl , array ( '$tabs' => $tabs ));
2010-07-06 14:07:28 +02:00
$o .= replace_macros ( $tpl , array (
2010-11-17 08:26:14 +01:00
'$header' => t ( 'Contact Editor' ),
2011-11-10 04:30:14 +01:00
'$tab_str' => $tab_str ,
2011-04-08 08:10:43 +02:00
'$submit' => t ( 'Submit' ),
'$lbl_vis1' => t ( 'Profile Visibility' ),
2011-11-10 04:30:14 +01:00
'$lbl_vis2' => sprintf ( t ( 'Please choose the profile you would like to display to %s when viewing your profile securely.' ), $contact [ 'name' ]),
2011-04-08 08:10:43 +02:00
'$lbl_info1' => t ( 'Contact Information / Notes' ),
2011-11-09 06:22:45 +01:00
'$infedit' => t ( 'Edit contact notes' ),
2011-11-02 03:16:33 +01:00
'$common_text' => $common_text ,
2012-03-15 05:20:20 +01:00
'$common_link' => $a -> get_baseurl ( true ) . '/common/' . $contact [ 'id' ],
2011-11-09 03:30:20 +01:00
'$all_friends' => $all_friends ,
2011-11-09 06:22:45 +01:00
'$relation_text' => $relation_text ,
2011-11-10 04:30:14 +01:00
'$visit' => sprintf ( t ( 'Visit %s\'s profile [%s]' ), $contact [ 'name' ], $contact [ 'url' ]),
2010-11-17 08:26:14 +01:00
'$blockunblock' => t ( 'Block/Unblock contact' ),
'$ignorecont' => t ( 'Ignore contact' ),
2011-11-09 12:46:36 +01:00
'$lblcrepair' => t ( " Repair URL settings " ),
2011-04-20 06:09:25 +02:00
'$lblrecent' => t ( 'View conversations' ),
2011-06-27 07:57:08 +02:00
'$lblsuggest' => $lblsuggest ,
2010-11-17 08:26:14 +01:00
'$delete' => t ( 'Delete contact' ),
2011-08-26 03:12:42 +02:00
'$nettype' => $nettype ,
2011-11-10 04:30:14 +01:00
'$poll_interval' => contact_poll_interval ( $contact [ 'priority' ],( ! $poll_enabled )),
2011-08-26 03:12:42 +02:00
'$poll_enabled' => $poll_enabled ,
2011-11-09 12:46:36 +01:00
'$lastupdtext' => t ( 'Last update:' ),
'$updpub' => t ( 'Update public posts' ),
2011-02-07 00:50:50 +01:00
'$last_update' => $last_update ,
2011-01-31 04:38:03 +01:00
'$udnow' => t ( 'Update now' ),
2011-11-10 04:30:14 +01:00
'$profile_select' => contact_profile_assign ( $contact [ 'profile-id' ],(( $contact [ 'network' ] !== NETWORK_DFRN ) ? true : false )),
'$contact_id' => $contact [ 'id' ],
'$block_text' => (( $contact [ 'blocked' ]) ? t ( 'Unblock' ) : t ( 'Block' ) ),
'$ignore_text' => (( $contact [ 'readonly' ]) ? t ( 'Unignore' ) : t ( 'Ignore' ) ),
'$insecure' => (( $contact [ 'network' ] !== NETWORK_DFRN && $contact [ 'network' ] !== NETWORK_MAIL && $contact [ 'network' ] !== NETWORK_FACEBOOK && $contact [ 'network' ] !== NETWORK_DIASPORA ) ? $insecure : '' ),
'$info' => $contact [ 'info' ],
'$blocked' => (( $contact [ 'blocked' ]) ? t ( 'Currently blocked' ) : '' ),
'$ignored' => (( $contact [ 'readonly' ]) ? t ( 'Currently ignored' ) : '' ),
2011-12-06 03:36:26 +01:00
'$hidden' => array ( 'hidden' , t ( 'Hide this contact from others' ), ( $contact [ 'hidden' ] == 1 ), t ( 'Replies/likes to your public posts <strong>may</strong> still be visible' )),
2011-11-10 04:30:14 +01:00
'$photo' => $contact [ 'photo' ],
'$name' => $contact [ 'name' ],
2010-07-06 14:07:28 +02:00
'$dir_icon' => $dir_icon ,
2010-07-11 12:35:33 +02:00
'$alt_text' => $alt_text ,
2010-09-28 04:48:45 +02:00
'$sparkle' => $sparkle ,
'$url' => $url
2010-07-06 14:07:28 +02:00
));
2011-11-10 04:30:14 +01:00
$arr = array ( 'contact' => $contact , 'output' => $o );
2011-01-07 12:15:52 +01:00
call_hooks ( 'contact_edit' , $arr );
return $arr [ 'output' ];
2010-07-06 14:07:28 +02:00
}
2010-07-19 15:58:03 +02:00
2012-02-11 12:07:15 +01:00
$blocked = false ;
2012-02-14 05:38:00 +01:00
$hidden = false ;
2012-02-14 07:48:35 +01:00
$ignored = false ;
2012-02-14 05:38:00 +01:00
$all = false ;
2012-02-11 12:07:15 +01:00
2012-02-09 06:15:26 +01:00
$_SESSION [ 'return_url' ] = $a -> query_string ;
2010-08-18 03:44:13 +02:00
2012-02-14 05:38:00 +01:00
if (( $a -> argc == 2 ) && ( $a -> argv [ 1 ] === 'all' )) {
2010-07-02 01:48:07 +02:00
$sql_extra = '' ;
2012-02-14 05:38:00 +01:00
$all = true ;
}
elseif (( $a -> argc == 2 ) && ( $a -> argv [ 1 ] === 'blocked' )) {
$sql_extra = " AND `blocked` = 1 " ;
$blocked = true ;
2012-02-11 12:07:15 +01:00
}
2012-02-14 05:38:00 +01:00
elseif (( $a -> argc == 2 ) && ( $a -> argv [ 1 ] === 'hidden' )) {
$sql_extra = " AND `hidden` = 1 " ;
$hidden = true ;
}
2012-02-14 07:48:35 +01:00
elseif (( $a -> argc == 2 ) && ( $a -> argv [ 1 ] === 'ignored' )) {
$sql_extra = " AND `readonly` = 1 " ;
$ignored = true ;
}
2012-02-14 05:38:00 +01:00
else
$sql_extra = " AND `blocked` = 0 " ;
2010-08-18 03:44:13 +02:00
$search = (( x ( $_GET , 'search' )) ? notags ( trim ( $_GET [ 'search' ])) : '' );
2012-02-12 06:39:51 +01:00
$nets = (( x ( $_GET , 'nets' )) ? notags ( trim ( $_GET [ 'nets' ])) : '' );
2010-08-18 03:44:13 +02:00
2012-02-14 05:38:00 +01:00
$tabs = array (
2012-03-21 00:05:32 +01:00
array (
'label' => t ( 'Suggestions' ),
'url' => $a -> get_baseurl ( true ) . '/suggest' ,
'sel' => '' ,
),
2012-02-14 05:38:00 +01:00
array (
'label' => t ( 'All Contacts' ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/contacts/all' ,
2012-02-14 05:38:00 +01:00
'sel' => ( $all ) ? 'active' : '' ,
),
array (
'label' => t ( 'Unblocked Contacts' ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/contacts' ,
2012-02-14 07:48:35 +01:00
'sel' => (( ! $all ) && ( ! $blocked ) && ( ! $hidden ) && ( ! $search ) && ( ! $nets ) && ( ! $ignored )) ? 'active' : '' ,
2012-02-14 05:38:00 +01:00
),
array (
'label' => t ( 'Blocked Contacts' ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/contacts/blocked' ,
2012-02-14 05:38:00 +01:00
'sel' => ( $blocked ) ? 'active' : '' ,
),
2012-02-14 07:48:35 +01:00
array (
'label' => t ( 'Ignored Contacts' ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/contacts/ignored' ,
2012-02-14 07:48:35 +01:00
'sel' => ( $ignored ) ? 'active' : '' ,
),
2012-02-14 05:38:00 +01:00
array (
'label' => t ( 'Hidden Contacts' ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/contacts/hidden' ,
2012-02-14 05:38:00 +01:00
'sel' => ( $hidden ) ? 'active' : '' ,
),
2012-02-14 07:48:35 +01:00
2012-02-14 05:38:00 +01:00
);
$tab_tpl = get_markup_template ( 'common_tabs.tpl' );
$t = replace_macros ( $tab_tpl , array ( '$tabs' => $tabs ));
2010-08-18 03:44:13 +02:00
2010-07-02 01:48:07 +02:00
2012-02-14 07:48:35 +01:00
if ( $search ) {
$search_hdr = $search ;
2010-08-18 03:44:13 +02:00
$search = dbesc ( $search . '*' );
2012-02-14 07:48:35 +01:00
}
2010-08-18 03:44:13 +02:00
$sql_extra .= (( strlen ( $search )) ? " AND MATCH `name` AGAINST (' $search ' IN BOOLEAN MODE) " : " " );
2012-02-12 06:39:51 +01:00
if ( $nets )
$sql_extra .= sprintf ( " AND network = '%s' " , dbesc ( $nets ));
2011-08-08 01:15:54 +02:00
$sql_extra2 = ((( $sort_type > 0 ) && ( $sort_type <= CONTACT_IS_FRIEND )) ? sprintf ( " AND `rel` = %d " , intval ( $sort_type )) : '' );
2010-08-18 03:44:13 +02:00
2010-09-22 05:52:13 +02:00
2010-07-30 15:09:20 +02:00
$r = q ( " SELECT COUNT(*) AS `total` FROM `contact`
2012-03-14 00:02:20 +01:00
WHERE `uid` = % d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 " ,
2010-07-30 15:09:20 +02:00
intval ( $_SESSION [ 'uid' ]));
2012-03-09 11:50:57 +01:00
if ( count ( $r )) {
2010-07-30 15:09:20 +02:00
$a -> set_pager_total ( $r [ 0 ][ 'total' ]);
2012-03-09 11:50:57 +01:00
$total = $r [ 0 ][ 'total' ];
}
2012-02-14 05:38:00 +01:00
2012-03-14 00:02:20 +01:00
$r = q ( " SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d " ,
2010-08-18 03:44:13 +02:00
intval ( $_SESSION [ 'uid' ]),
intval ( $a -> pager [ 'start' ]),
intval ( $a -> pager [ 'itemspage' ])
);
2010-07-02 01:48:07 +02:00
2012-02-23 11:22:32 +01:00
$contacts = array ();
2010-07-02 01:48:07 +02:00
2012-02-23 11:22:32 +01:00
if ( count ( $r )) {
2010-07-02 01:48:07 +02:00
foreach ( $r as $rr ) {
2010-09-09 05:14:17 +02:00
switch ( $rr [ 'rel' ]) {
2011-08-08 01:15:54 +02:00
case CONTACT_IS_FRIEND :
2010-07-03 03:37:43 +02:00
$dir_icon = 'images/lrarrow.gif' ;
2010-07-28 07:32:21 +02:00
$alt_text = t ( 'Mutual Friendship' );
2010-09-09 05:14:17 +02:00
break ;
2011-08-08 01:15:54 +02:00
case CONTACT_IS_FOLLOWER ;
2010-07-06 06:39:55 +02:00
$dir_icon = 'images/larrow.gif' ;
2010-07-28 07:32:21 +02:00
$alt_text = t ( 'is a fan of yours' );
2010-09-09 05:14:17 +02:00
break ;
2011-08-08 01:15:54 +02:00
case CONTACT_IS_SHARING ;
2010-09-09 05:14:17 +02:00
$dir_icon = 'images/rarrow.gif' ;
$alt_text = t ( 'you are a fan of' );
break ;
default :
break ;
2010-07-03 03:37:43 +02:00
}
2010-10-18 09:43:49 +02:00
if (( $rr [ 'network' ] === 'dfrn' ) && ( $rr [ 'rel' ])) {
2010-09-28 04:48:45 +02:00
$url = " redir/ { $rr [ 'id' ] } " ;
$sparkle = ' class="sparkle" ' ;
}
else {
$url = $rr [ 'url' ];
$sparkle = '' ;
}
2012-02-23 11:22:32 +01:00
$contacts [] = array (
'img_hover' => sprintf ( t ( 'Visit %s\'s profile [%s]' ), $rr [ 'name' ], $rr [ 'url' ]),
'edit_hover' => t ( 'Edit contact' ),
'photo_menu' => contact_photo_menu ( $rr ),
'id' => $rr [ 'id' ],
'alt_text' => $alt_text ,
'dir_icon' => $dir_icon ,
'thumb' => $rr [ 'thumb' ],
'name' => $rr [ 'name' ],
'username' => $rr [ 'name' ],
'sparkle' => $sparkle ,
2012-02-27 18:48:59 +01:00
'itemurl' => $rr [ 'url' ],
2012-02-28 03:46:11 +01:00
'url' => $url ,
2012-02-27 18:48:59 +01:00
'network' => network_to_name ( $rr [ 'network' ]),
2012-02-23 11:22:32 +01:00
);
2010-07-02 01:48:07 +02:00
}
2011-01-07 12:15:52 +01:00
2012-02-23 11:22:32 +01:00
2010-07-30 15:09:20 +02:00
2010-07-02 01:48:07 +02:00
}
2012-02-23 11:22:32 +01:00
$tpl = get_markup_template ( " contacts-template.tpl " );
$o .= replace_macros ( $tpl , array (
'$header' => t ( 'Contacts' ) . (( $nets ) ? ' - ' . network_to_name ( $nets ) : '' ),
'$tabs' => $t ,
2012-03-09 11:50:57 +01:00
'$total' => $total ,
2012-02-23 11:22:32 +01:00
'$search' => $search_hdr ,
'$desc' => t ( 'Search your contacts' ),
'$finding' => ( strlen ( $search ) ? t ( 'Finding: ' ) . " ' " . $search . " ' " : " " ),
'$submit' => t ( 'Find' ),
'$cmd' => $a -> cmd ,
'$contacts' => $contacts ,
'$paginate' => paginate ( $a ),
));
2010-07-02 01:48:07 +02:00
return $o ;
2011-05-23 11:39:57 +02:00
}