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' );
2012-11-23 06:04:03 +01:00
require_once ( 'include/contact_selectors.php' );
2015-01-28 23:34:46 +01:00
require_once ( 'mod/proxy.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 ];
2012-09-07 20:17:03 +02:00
$vcard_widget = replace_macros ( get_markup_template ( " vcard-widget.tpl " ), array (
'$name' => $a -> data [ 'contact' ][ 'name' ],
'$photo' => $a -> data [ 'contact' ][ 'photo' ]
));
$follow_widget = '' ;
2013-06-08 12:28:19 +02:00
}
2012-09-07 20:17:03 +02:00
else {
$vcard_widget = '' ;
2014-08-25 14:09:56 +02:00
if ( isset ( $_GET [ 'add' ]))
$follow_widget = follow_widget ( $_GET [ 'add' ]);
else
$follow_widget = follow_widget ();
2012-09-07 20:17:03 +02:00
}
2010-07-28 04:27:14 +02:00
2012-09-07 20:17:03 +02:00
$groups_widget .= group_side ( 'contacts' , 'group' , false , 0 , $contact_id );
$findpeople_widget .= findpeople_widget ();
$networks_widget .= networks_widget ( 'contacts' , $_GET [ 'nets' ]);
$a -> page [ 'aside' ] .= replace_macros ( get_markup_template ( " contacts-widget-sidebar.tpl " ), array (
'$vcard_widget' => $vcard_widget ,
'$follow_widget' => $follow_widget ,
'$groups_widget' => $groups_widget ,
'$findpeople_widget' => $findpeople_widget ,
'$networks_widget' => $networks_widget
));
2011-03-22 05:43:22 +01:00
2012-06-06 05:33:11 +02:00
$base = $a -> get_baseurl ();
2012-07-28 17:57:16 +02:00
$tpl = get_markup_template ( " contacts-head.tpl " );
$a -> page [ 'htmlhead' ] .= replace_macros ( $tpl , array (
'$baseurl' => $a -> get_baseurl ( true ),
'$base' => $base
));
2012-09-07 20:17:03 +02:00
2012-07-28 17:57:16 +02:00
$tpl = get_markup_template ( " contacts-end.tpl " );
$a -> page [ 'end' ] .= replace_macros ( $tpl , array (
'$baseurl' => $a -> get_baseurl ( true ),
'$base' => $base
));
2012-06-06 05:33:11 +02:00
2010-07-02 01:48:07 +02:00
}
2013-12-17 11:19:06 +01:00
function contacts_batch_actions ( & $a ){
$contacts_id = $_POST [ 'contact_batch' ];
if ( ! is_array ( $contacts_id )) return ;
2015-01-28 23:34:46 +01:00
2013-12-17 11:19:06 +01:00
$orig_records = q ( " SELECT * FROM `contact` WHERE `id` IN (%s) AND `uid` = %d AND `self` = 0 " ,
implode ( " , " , $contacts_id ),
intval ( local_user ())
);
2015-01-28 23:34:46 +01:00
2013-12-17 11:19:06 +01:00
$count_actions = 0 ;
foreach ( $orig_records as $orig_record ) {
$contact_id = $orig_record [ 'id' ];
if ( x ( $_POST , 'contacts_batch_update' )) {
_contact_update ( $contact_id );
$count_actions ++ ;
}
if ( x ( $_POST , 'contacts_batch_block' )) {
$r = _contact_block ( $contact_id , $orig_record );
if ( $r ) $count_actions ++ ;
}
if ( x ( $_POST , 'contacts_batch_ignore' )) {
$r = _contact_ignore ( $contact_id , $orig_record );
if ( $r ) $count_actions ++ ;
}
if ( x ( $_POST , 'contacts_batch_archive' )) {
$r = _contact_archive ( $contact_id , $orig_record );
if ( $r ) $count_actions ++ ;
}
if ( x ( $_POST , 'contacts_batch_drop' )) {
_contact_drop ( $contact_id , $orig_record );
$count_actions ++ ;
}
}
if ( $count_actions > 0 ) {
info ( sprintf ( tt ( " %d contact edited. " , " %d contacts edited " , $count_actions ), $count_actions ) );
}
2015-01-28 23:34:46 +01:00
2013-12-17 11:19:06 +01:00
if ( x ( $_SESSION , 'return_url' ))
goaway ( $a -> get_baseurl ( true ) . '/' . $_SESSION [ 'return_url' ]);
else
goaway ( $a -> get_baseurl ( true ) . '/contacts' );
}
2010-07-02 01:48:07 +02:00
function contacts_post ( & $a ) {
2014-01-05 16:10:02 +01:00
2010-07-11 08:03:54 +02:00
if ( ! local_user ())
2010-07-02 01:48:07 +02:00
return ;
2013-12-17 11:19:06 +01:00
if ( $a -> argv [ 1 ] === " batch " ) {
contacts_batch_actions ( $a );
return ;
}
2010-07-02 01:48:07 +02:00
$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
2014-01-05 16:10:02 +01:00
$notify = intval ( $_POST [ 'notify' ]);
$fetch_further_information = intval ( $_POST [ 'fetch_further_information' ]);
2014-10-30 00:24:23 +01:00
$ffi_keyword_blacklist = fix_mce_lf ( escape_tags ( trim ( $_POST [ 'ffi_keyword_blacklist' ])));
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 ;
2012-04-11 01:32:38 +02:00
$info = fix_mce_lf ( escape_tags ( trim ( $_POST [ 'info' ])));
2010-12-28 10:06:34 +01:00
2011-12-06 03:36:26 +01:00
$r = q ( " UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `info` = '%s',
2014-10-30 00:24:23 +01:00
`hidden` = % d , `notify_new_posts` = % d , `fetch_further_information` = % d ,
`ffi_keyword_blacklist` = '%s' WHERE `id` = % d AND `uid` = % d " ,
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 ),
2014-01-05 16:10:02 +01:00
intval ( $notify ),
intval ( $fetch_further_information ),
2014-10-30 00:24:23 +01:00
dbesc ( $ffi_keyword_blacklist ),
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
}
2013-12-17 11:19:06 +01:00
/*contact actions*/
function _contact_update ( $contact_id ) {
// pull feed and consume it, which should subscribe to the hub.
proc_run ( 'php' , " include/poller.php " , " $contact_id " );
}
function _contact_block ( $contact_id , $orig_record ) {
$blocked = (( $orig_record [ 'blocked' ]) ? 0 : 1 );
2014-03-09 09:19:14 +01:00
$r = q ( " UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d " ,
2013-12-17 11:19:06 +01:00
intval ( $blocked ),
intval ( $contact_id ),
intval ( local_user ())
);
return $r ;
}
function _contact_ignore ( $contact_id , $orig_record ) {
$readonly = (( $orig_record [ 'readonly' ]) ? 0 : 1 );
2014-03-09 09:19:14 +01:00
$r = q ( " UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d " ,
2013-12-17 11:19:06 +01:00
intval ( $readonly ),
intval ( $contact_id ),
intval ( local_user ())
);
return $r ;
}
function _contact_archive ( $contact_id , $orig_record ) {
$archived = (( $orig_record [ 'archive' ]) ? 0 : 1 );
2014-03-09 09:19:14 +01:00
$r = q ( " UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d " ,
2013-12-17 11:19:06 +01:00
intval ( $archived ),
intval ( $contact_id ),
intval ( local_user ())
);
if ( $archived ) {
q ( " UPDATE `item` SET `private` = 2 WHERE `contact-id` = %d AND `uid` = %d " , intval ( $contact_id ), intval ( local_user ()));
}
return $r ;
}
function _contact_drop ( $contact_id , $orig_record ) {
require_once ( 'include/Contact.php' );
$a = get_app ();
terminate_friendship ( $a -> user , $a -> contact , $orig_record );
contact_remove ( $orig_record [ 'id' ]);
}
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
}
2014-09-03 01:03:23 +02:00
2011-01-31 04:38:03 +01:00
if ( $cmd === 'update' ) {
2013-12-17 11:19:06 +01:00
_contact_update ( $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' ) {
2013-12-17 11:19:06 +01:00
$r = _contact_block ( $contact_id , $orig_record [ 0 ]);
2010-07-11 08:03:54 +02:00
if ( $r ) {
2014-09-03 01:03:23 +02:00
$blocked = (( $orig_record [ 0 ][ 'blocked' ]) ? 0 : 1 );
info ((( $blocked ) ? t ( 'Contact has been blocked' ) : t ( 'Contact has been unblocked' )) . EOL );
2010-07-28 07:32:21 +02:00
}
2014-09-03 01:03:23 +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' ) {
2013-12-17 11:19:06 +01:00
$r = _contact_ignore ( $contact_id , $orig_record [ 0 ]);
2010-07-28 07:32:21 +02:00
if ( $r ) {
2014-09-03 01:03:23 +02:00
$readonly = (( $orig_record [ 0 ][ 'readonly' ]) ? 0 : 1 );
info ((( $readonly ) ? t ( 'Contact has been ignored' ) : t ( 'Contact has been unignored' )) . EOL );
2010-07-11 08:03:54 +02:00
}
2014-09-03 01:03:23 +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
}
2012-04-28 02:17:58 +02:00
if ( $cmd === 'archive' ) {
2013-12-17 11:19:06 +01:00
$r = _contact_archive ( $contact_id , $orig_record [ 0 ]);
2012-04-28 02:17:58 +02:00
if ( $r ) {
2014-09-03 01:03:23 +02:00
$archived = (( $orig_record [ 0 ][ 'archive' ]) ? 0 : 1 );
info ((( $archived ) ? t ( 'Contact has been archived' ) : t ( 'Contact has been unarchived' )) . EOL );
}
2012-04-28 02:17:58 +02:00
goaway ( $a -> get_baseurl ( true ) . '/contacts/' . $contact_id );
return ; // NOTREACHED
}
2010-09-27 02:24:20 +02:00
if ( $cmd === 'drop' ) {
2010-11-24 04:29:38 +01:00
2013-01-26 20:52:21 +01:00
// Check if we should do HTML-based delete confirmation
if ( $_REQUEST [ 'confirm' ]) {
// <form> can't take arguments in its "action" parameter
// so add any arguments as hidden inputs
$query = explode_querystring ( $a -> query_string );
$inputs = array ();
foreach ( $query [ 'args' ] as $arg ) {
if ( strpos ( $arg , 'confirm=' ) === false ) {
$arg_parts = explode ( '=' , $arg );
$inputs [] = array ( 'name' => $arg_parts [ 0 ], 'value' => $arg_parts [ 1 ]);
}
}
$a -> page [ 'aside' ] = '' ;
return replace_macros ( get_markup_template ( 'confirm.tpl' ), array (
'$method' => 'get' ,
'$message' => t ( 'Do you really want to delete this contact?' ),
'$extra_inputs' => $inputs ,
'$confirm' => t ( 'Yes' ),
'$confirm_url' => $query [ 'base' ],
'$confirm_name' => 'confirmed' ,
'$cancel' => t ( 'Cancel' ),
));
}
// Now check how the user responded to the confirmation query
if ( $_REQUEST [ 'canceled' ]) {
2013-12-17 11:19:06 +01:00
if ( x ( $_SESSION , 'return_url' ))
goaway ( $a -> get_baseurl ( true ) . '/' . $_SESSION [ 'return_url' ]);
else
goaway ( $a -> get_baseurl ( true ) . '/contacts' );
2013-01-26 20:52:21 +01:00
}
2013-12-17 11:19:06 +01:00
_contact_drop ( $contact_id , $orig_record [ 0 ]);
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
2013-01-26 20:52:21 +01:00
$_SESSION [ 'return_url' ] = $a -> query_string ;
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
2013-01-26 20:53:35 +01:00
$editselect = 'none' ;
if ( feature_enabled ( local_user (), 'richtext' ) )
$editselect = 'exact' ;
2012-04-11 03:08:06 +02:00
$a -> page [ 'htmlhead' ] .= replace_macros ( get_markup_template ( 'contact_head.tpl' ), array (
'$baseurl' => $a -> get_baseurl ( true ),
'$editselect' => $editselect ,
));
2012-07-28 17:57:16 +02:00
$a -> page [ 'end' ] .= replace_macros ( get_markup_template ( 'contact_end.tpl' ), array (
'$baseurl' => $a -> get_baseurl ( true ),
'$editselect' => $editselect ,
));
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 ;
2014-10-30 00:24:23 +01:00
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" ' ;
}
2015-01-20 22:54:25 +01:00
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
2015-01-20 22:54:25 +01:00
$last_update = (( $contact [ 'last-update' ] == '0000-00-00 00:00: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' )
2015-01-20 22:54:25 +01: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 ) : '' );
2015-01-20 22:54:25 +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' => '' ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Toggle Blocked status' ),
2011-11-10 04:30:14 +01:00
),
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' => '' ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Toggle Ignored status' ),
2011-11-10 04:30:14 +01:00
),
2012-04-28 02:17:58 +02:00
array (
'label' => (( $contact [ 'archive' ]) ? t ( 'Unarchive' ) : t ( 'Archive' ) ),
'url' => $a -> get_baseurl ( true ) . '/contacts/' . $contact_id . '/archive' ,
'sel' => '' ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Toggle Archive status' ),
2012-04-28 02:17:58 +02:00
),
2011-11-10 04:30:14 +01:00
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' => '' ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Advanced Contact Settings' ),
2011-11-10 04:30:14 +01:00
)
);
$tab_tpl = get_markup_template ( 'common_tabs.tpl' );
$tab_str = replace_macros ( $tab_tpl , array ( '$tabs' => $tabs ));
2012-06-15 01:56:46 +02:00
$lost_contact = (( $contact [ 'archive' ] && $contact [ 'term-date' ] != '0000-00-00 00:00:00' && $contact [ 'term-date' ] < datetime_convert ( '' , '' , 'now' )) ? t ( 'Communications lost with this contact!' ) : '' );
2011-11-10 04:30:14 +01:00
2012-12-25 19:48:02 +01: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-05-04 10:46:36 +02:00
'$common_link' => $a -> get_baseurl ( true ) . '/common/loc/' . local_user () . '/' . $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:' ),
2012-06-15 01:56:46 +02:00
'$lost_contact' => $lost_contact ,
2011-11-09 12:46:36 +01:00
'$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' ) : '' ),
2012-04-28 02:17:58 +02:00
'$archived' => (( $contact [ 'archive' ]) ? t ( 'Currently archived' ) : '' ),
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' )),
2014-01-05 16:10:02 +01:00
'$notify' => array ( 'notify' , t ( 'Notification for new posts' ), ( $contact [ 'notify_new_posts' ] == 1 ), t ( 'Send a notification of every new post of this contact' )),
2014-10-24 01:37:33 +02:00
'$fetch_further_information' => array ( 'fetch_further_information' , t ( 'Fetch further information for feeds' ), $contact [ 'fetch_further_information' ], t ( 'Fetch further information for feeds' ),
array ( '0' => t ( 'Disabled' ), '1' => t ( 'Fetch information' ), '2' => t ( 'Fetch information and keywords' ))),
2014-10-30 00:24:23 +01:00
'$ffi_keyword_blacklist' => $contact [ 'ffi_keyword_blacklist' ],
'$ffi_keyword_blacklist' => array ( 'ffi_keyword_blacklist' , t ( 'Blacklisted keywords' ), $contact [ 'ffi_keyword_blacklist' ], t ( 'Comma separated list of keywords that should not be converted to hashtags, when "Fetch information and keywords" is selected' )),
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 ,
2012-12-22 20:57:29 +01:00
'$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-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-04-28 02:17:58 +02:00
elseif (( $a -> argc == 2 ) && ( $a -> argv [ 1 ] === 'archived' )) {
$sql_extra = " AND `archive` = 1 " ;
$archived = 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-04-30 14:15:29 +02:00
'title' => t ( 'Suggest potential friends' ),
2012-03-21 00:05:32 +01:00
),
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' : '' ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Show all contacts' ),
2012-02-14 05:38:00 +01:00
),
array (
2012-04-28 02:17:58 +02:00
'label' => t ( 'Unblocked' ),
2012-03-15 05:20:20 +01:00
'url' => $a -> get_baseurl ( true ) . '/contacts' ,
2012-04-28 02:17:58 +02:00
'sel' => (( ! $all ) && ( ! $blocked ) && ( ! $hidden ) && ( ! $search ) && ( ! $nets ) && ( ! $ignored ) && ( ! $archived )) ? 'active' : '' ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Only show unblocked contacts' ),
2012-02-14 05:38:00 +01:00
),
array (
2012-04-28 02:17:58 +02:00
'label' => t ( 'Blocked' ),
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-04-30 14:15:29 +02:00
'title' => t ( 'Only show blocked contacts' ),
2012-02-14 05:38:00 +01:00
),
2012-02-14 07:48:35 +01:00
array (
2012-04-28 02:17:58 +02:00
'label' => t ( 'Ignored' ),
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-04-30 14:15:29 +02:00
'title' => t ( 'Only show ignored contacts' ),
2012-02-14 07:48:35 +01:00
),
2012-02-14 05:38:00 +01:00
array (
2012-04-28 02:17:58 +02:00
'label' => t ( 'Archived' ),
'url' => $a -> get_baseurl ( true ) . '/contacts/archived' ,
'sel' => ( $archived ) ? 'active' : '' ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Only show archived contacts' ),
2012-04-28 02:17:58 +02:00
),
array (
'label' => t ( 'Hidden' ),
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-04-30 14:15:29 +02:00
'title' => t ( 'Only show hidden contacts' ),
2012-02-14 05:38:00 +01:00
),
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
2012-06-21 01:05:46 +02:00
$searching = false ;
2012-02-14 07:48:35 +01:00
if ( $search ) {
$search_hdr = $search ;
2012-06-21 01:20:55 +02:00
$search_txt = dbesc ( protect_sprintf ( preg_quote ( $search )));
2012-06-21 01:05:46 +02:00
$searching = true ;
2012-02-14 07:48:35 +01:00
}
2013-12-17 11:19:06 +01:00
$sql_extra .= (( $searching ) ? " AND (name REGEXP ' $search_txt ' OR url REGEXP ' $search_txt ' OR nick REGEXP ' $search_txt ') " : " " );
2010-08-18 03:44:13 +02:00
2012-02-12 06:39:51 +01:00
if ( $nets )
$sql_extra .= sprintf ( " AND network = '%s' " , dbesc ( $nets ));
2010-08-18 03:44:13 +02:00
2015-01-28 23:34:46 +01:00
$sql_extra2 = ((( $sort_type > 0 ) && ( $sort_type <= CONTACT_IS_FRIEND )) ? sprintf ( " AND `rel` = %d " , intval ( $sort_type )) : '' );
$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" ' ;
}
2015-01-20 22:54:25 +01:00
else {
2010-09-28 04:48:45 +02:00
$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 ,
2015-01-28 23:34:46 +01:00
'thumb' => proxy_url ( $rr [ 'thumb' ]),
2012-02-23 11:22:32 +01:00
'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
2014-10-24 01:37:33 +02:00
2010-07-30 15:09:20 +02:00
2010-07-02 01:48:07 +02:00
}
2014-10-24 01:37:33 +02:00
2012-02-23 11:22:32 +01:00
$tpl = get_markup_template ( " contacts-template.tpl " );
2012-12-25 19:48:02 +01:00
$o .= replace_macros ( $tpl , array (
2013-12-17 11:19:06 +01:00
'$baseurl' => $a -> get_baseurl (),
2012-02-23 11:22:32 +01:00
'$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' ),
2012-06-21 01:20:55 +02:00
'$finding' => (( $searching ) ? t ( 'Finding: ' ) . " ' " . $search . " ' " : " " ),
2012-02-23 11:22:32 +01:00
'$submit' => t ( 'Find' ),
'$cmd' => $a -> cmd ,
'$contacts' => $contacts ,
2013-12-17 11:19:06 +01:00
'$contact_drop_confirm' => t ( 'Do you really want to delete this contact?' ),
'$batch_actions' => array (
'contacts_batch_update' => t ( 'Update' ),
'contacts_batch_block' => t ( 'Block' ) . " / " . t ( " Unblock " ),
" contacts_batch_ignore " => t ( 'Ignore' ) . " / " . t ( " Unignore " ),
" contacts_batch_archive " => t ( 'Archive' ) . " / " . t ( " Unarchive " ),
" contacts_batch_drop " => t ( 'Delete' ),
),
2012-02-23 11:22:32 +01:00
'$paginate' => paginate ( $a ),
));
2010-07-02 01:48:07 +02:00
return $o ;
2011-05-23 11:39:57 +02:00
}