2012-08-17 04:41:07 +00:00
< ? php
require_once ( 'include/Contact.php' );
require_once ( 'include/socgraph.php' );
require_once ( 'include/contact_selectors.php' );
2012-10-31 04:37:58 +00:00
require_once ( 'include/group.php' );
require_once ( 'include/contact_widgets.php' );
2012-08-17 04:41:07 +00:00
function abook_init ( & $a ) {
2012-10-31 04:37:58 +00:00
2012-08-17 04:41:07 +00:00
if ( ! local_user ())
return ;
2012-10-31 04:37:58 +00:00
if (( argc () == 2 ) && intval ( argv ( 1 ))) {
$r = q ( " SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_channel = % d and abook_id = % d LIMIT 1 " ,
2012-08-17 04:41:07 +00:00
intval ( local_user ()),
2012-10-31 04:37:58 +00:00
intval ( argv ( 1 ))
2012-08-17 04:41:07 +00:00
);
2012-10-31 04:37:58 +00:00
if ( $r ) {
$a -> data [ 'abook' ] = $r [ 0 ];
$abook_id = $r [ 0 ][ 'abook_id' ];
2012-08-17 04:41:07 +00:00
}
2012-10-31 04:37:58 +00:00
else {
$abook_id = 0 ;
2012-10-31 23:55:19 +00:00
}
2012-08-17 04:41:07 +00:00
}
2012-10-31 04:37:58 +00:00
if ( $abook_id ) {
$a -> page [ 'aside' ] .= vcard_from_xchan ( $r [ 0 ]);
}
2012-08-17 04:41:07 +00:00
else
$a -> page [ 'aside' ] .= follow_widget ();
2012-10-31 04:37:58 +00:00
$a -> page [ 'aside' ] .= group_side ( 'contacts' , 'group' , false , 0 , $abook_id );
2012-08-17 04:41:07 +00:00
$a -> page [ 'aside' ] .= findpeople_widget ();
$base = $a -> get_baseurl ();
$a -> page [ 'htmlhead' ] .= <<< EOT
< script > $ ( document ) . ready ( function () {
var a ;
a = $ ( " #contacts-search " ) . autocomplete ({
serviceUrl : '$base/acl' ,
minChars : 2 ,
width : 350 ,
});
a . setOptions ({ params : { type : 'a' }});
});
</ script >
EOT ;
}
function abook_post ( & $a ) {
if ( ! local_user ())
return ;
$contact_id = intval ( $a -> argv [ 1 ]);
if ( ! $contact_id )
return ;
$orig_record = q ( " SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
intval ( $contact_id ),
intval ( local_user ())
);
if ( ! count ( $orig_record )) {
notice ( t ( 'Could not access contact record.' ) . EOL );
goaway ( $a -> get_baseurl ( true ) . '/contacts' );
return ; // NOTREACHED
}
call_hooks ( 'contact_edit_post' , $_POST );
$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 ),
intval ( local_user ())
);
if ( ! count ( $r )) {
notice ( t ( 'Could not locate selected profile.' ) . EOL );
return ;
}
}
$hidden = intval ( $_POST [ 'hidden' ]);
$priority = intval ( $_POST [ 'poll' ]);
if ( $priority > 5 || $priority < 0 )
$priority = 0 ;
$closeness = intval ( $_POST [ 'closeness' ]);
if ( $closeness < 0 )
$closeness = 99 ;
$info = fix_mce_lf ( escape_tags ( trim ( $_POST [ 'info' ])));
2012-08-31 01:47:07 +00:00
$r = q ( " UPDATE `contact` SET `profile_id` = %d, `priority` = %d , `info` = '%s',
2012-08-17 04:41:07 +00:00
`hidden` = % d , closeness = % d WHERE `id` = % d AND `uid` = % d LIMIT 1 " ,
intval ( $profile_id ),
intval ( $priority ),
dbesc ( $info ),
intval ( $hidden ),
intval ( $closeness ),
intval ( $contact_id ),
intval ( local_user ())
);
if ( $r )
info ( t ( 'Contact updated.' ) . EOL );
else
notice ( t ( 'Failed to update contact record.' ) . EOL );
$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 ];
return ;
}
function abook_content ( & $a ) {
$sort_type = 0 ;
$o = '' ;
nav_set_selected ( 'abook' );
if ( ! local_user ()) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
if ( argc () == 3 ) {
2012-10-11 04:13:37 +00:00
$cmd = argv ( 1 );
if ( $cmd === 'profile' ) {
$xchan_hash = argv ( 2 );
if ( $xchan_hash ) {
$r = q ( " select * from xchan where xchan_hash = '%s' limit 1 " ,
dbesc ( $xchan_hash )
);
if ( $r && count ( $r )) {
$o .= <<< EOT
< script language = " JavaScript " >
<!--
function resize_iframe ()
{
if ( typeof ( window . innerHeight ) != 'undefined' ) {
var height = window . innerHeight ; //Firefox
}
else {
if ( typeof ( document . body . clientHeight ) != 'undefined' )
{
var height = document . body . clientHeight ; //IE
}
}
//resize the iframe according to the size of the
//window (all these should be on the same line)
document . getElementById ( " glu " ) . style . height = parseInt ( height - document . getElementById ( " glu " ) . offsetTop - 8 ) + " px " ;
}
// this will resize the iframe every
// time you change the size of the window.
window . onresize = resize_iframe ;
//Instead of using this you can use:
// <BODY onresize="resize_iframe()">
//-->
</ script >
2012-10-30 02:31:38 +00:00
< iframe id = " glu " width = " 100% " src = " { $r [ 0 ][ 'xchan_url' ] } " onload = " resize_iframe() " >
2012-10-11 04:13:37 +00:00
</ iframe >
EOT ;
2012-10-30 02:31:38 +00:00
// $o .= '<div id="profile-frame-wrapper" style="width: 100%; height: 100%;"><iframe id="profile-frame" src="' . $r[0]['xchan_url'] . '" style="width: 100%; height: 100%;"></iframe></div>';
2012-10-11 04:13:37 +00:00
return $o ;
}
}
}
2012-08-17 04:41:07 +00:00
$contact_id = intval ( argv ( 1 ));
if ( ! $contact_id )
return ;
$cmd = argv ( 2 );
2012-10-31 04:37:58 +00:00
$orig_record = q ( " SELECT abook.*, xchan.* FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_id = % d AND abook_channel = % d AND NOT abook_flags & % d LIMIT 1 " ,
2012-08-17 04:41:07 +00:00
intval ( $contact_id ),
2012-10-31 04:37:58 +00:00
intval ( local_user ()),
intval ( ABOOK_FLAG_SELF )
2012-08-17 04:41:07 +00:00
);
if ( ! count ( $orig_record )) {
2012-10-31 04:37:58 +00:00
notice ( t ( 'Could not access address book record.' ) . EOL );
goaway ( $a -> get_baseurl ( true ) . '/abook' );
2012-08-17 04:41:07 +00:00
}
if ( $cmd === 'update' ) {
// pull feed and consume it, which should subscribe to the hub.
proc_run ( 'php' , " include/poller.php " , " $contact_id " );
2012-10-31 04:37:58 +00:00
goaway ( $a -> get_baseurl ( true ) . '/abook/' . $contact_id );
2012-08-17 04:41:07 +00:00
}
if ( $cmd === 'block' ) {
2012-10-31 04:37:58 +00:00
if ( abook_toggle_flag ( $orig_record [ 0 ], ABOOK_FLAG_BLOCKED ))
info ((( $orig_record [ 0 ][ 'abook_flags' ] & ABOOK_FLAG_BLOCKED )
? t ( 'Channel has been unblocked' )
: t ( 'Channel has been blocked' )) . EOL );
else
notice ( t ( 'Unable to set address book parameters.' ) . EOL );
goaway ( $a -> get_baseurl ( true ) . '/abook/' . $contact_id );
2012-08-17 04:41:07 +00:00
}
if ( $cmd === 'ignore' ) {
2012-10-31 04:37:58 +00:00
if ( abook_toggle_flag ( $orig_record [ 0 ], ABOOK_FLAG_IGNORED ))
info ((( $orig_record [ 0 ][ 'abook_flags' ] & ABOOK_FLAG_IGNORED )
? t ( 'Channel has been unignored' )
: t ( 'Channel has been ignored' )) . EOL );
else
notice ( t ( 'Unable to set address book parameters.' ) . EOL );
goaway ( $a -> get_baseurl ( true ) . '/abook/' . $contact_id );
2012-08-17 04:41:07 +00:00
}
if ( $cmd === 'archive' ) {
2012-10-31 04:37:58 +00:00
if ( abook_toggle_flag ( $orig_record [ 0 ], ABOOK_FLAG_ARCHIVED ))
info ((( $orig_record [ 0 ][ 'abook_flags' ] & ABOOK_FLAG_ARCHIVED )
? t ( 'Channel has been unarchived' )
: t ( 'Channel has been archived' )) . EOL );
else
notice ( t ( 'Unable to set address book parameters.' ) . EOL );
goaway ( $a -> get_baseurl ( true ) . '/abook/' . $contact_id );
2012-08-17 04:41:07 +00:00
}
2012-10-31 04:37:58 +00:00
if ( $cmd === 'hide' ) {
if ( abook_toggle_flag ( $orig_record [ 0 ], ABOOK_FLAG_HIDDEN ))
info ((( $orig_record [ 0 ][ 'abook_flags' ] & ABOOK_FLAG_HIDDEN )
? t ( 'Channel has been unhidden' )
: t ( 'Channel has been hidden' )) . EOL );
else
notice ( t ( 'Unable to set address book parameters.' ) . EOL );
goaway ( $a -> get_baseurl ( true ) . '/abook/' . $contact_id );
}
2012-08-17 04:41:07 +00:00
2012-10-31 04:37:58 +00:00
// FIXME
2012-08-17 04:41:07 +00:00
2012-10-31 04:37:58 +00:00
// if($cmd === 'drop') {
2012-08-17 04:41:07 +00:00
2012-10-31 04:37:58 +00:00
// require_once('include/Contact.php');
// terminate_friendship($a->user,$a->contact,$orig_record[0]);
// contact_remove($orig_record[0]['id']);
//info( t('Contact has been removed.') . EOL );
// if(x($_SESSION,'return_url'))
// goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
// else
// goaway($a->get_baseurl(true) . '/contacts');
// return; // NOTREACHED
// }
2012-08-17 04:41:07 +00:00
}
2012-10-31 04:37:58 +00:00
if (( x ( $a -> data , 'abook' )) && ( is_array ( $a -> data [ 'abook' ]))) {
2012-08-17 04:41:07 +00:00
2012-10-31 04:37:58 +00:00
$contact_id = $a -> data [ 'abook' ][ 'abook_id' ];
$contact = $a -> data [ 'abook' ];
2012-08-17 04:41:07 +00:00
$editselect = 'exact' ;
if ( intval ( get_pconfig ( local_user (), 'system' , 'plaintext' )))
$editselect = 'none' ;
$a -> page [ 'htmlhead' ] .= replace_macros ( get_markup_template ( 'contact_head.tpl' ), array (
'$baseurl' => $a -> get_baseurl ( true ),
'$editselect' => $editselect ,
));
require_once ( 'include/contact_selectors.php' );
$tpl = get_markup_template ( " abook_edit.tpl " );
$slider_tpl = get_markup_template ( 'contact_slider.tpl' );
$slide = replace_macros ( $slider_tpl , array (
'$me' => t ( 'Me' ),
'$val' => $contact [ 'closeness' ],
'$intimate' => t ( 'Best Friends' ),
'$friends' => t ( 'Friends' ),
'$coworkers' => t ( 'Co-workers' ),
'$oldfriends' => t ( 'Former Friends' ),
'$acquaintances' => t ( 'Acquaintances' ),
'$world' => t ( 'Unknown' )
));
$o .= replace_macros ( $tpl , array (
'$header' => t ( 'Contact Settings' ) . ' for ' . $contact [ 'name' ],
'$slide' => $slide ,
'$tab_str' => $tab_str ,
'$submit' => t ( 'Submit' ),
'$lbl_vis1' => t ( 'Profile Visibility' ),
'$lbl_vis2' => sprintf ( t ( 'Please choose the profile you would like to display to %s when viewing your profile securely.' ), $contact [ 'name' ]),
'$lbl_info1' => t ( 'Contact Information / Notes' ),
'$infedit' => t ( 'Edit contact notes' ),
'$close' => $contact [ 'closeness' ],
'$them' => t ( 'Their Settings' ),
'$me' => t ( 'My Settings' ),
'$perm01' => array ( 'perm01' , t ( 'Can be seen in my address book' )),
'$perm02' => array ( 'perm02' , t ( 'Can post to my stream' )),
'$perm03' => array ( 'perm03' , t ( 'Can see my posts' )),
'$perm04' => array ( 'perm04' , t ( 'Can comment on my posts' )),
'$perm05' => array ( 'perm05' , t ( 'Can post to my wall' ), false , t ( 'if I allow wall posts' )),
'$perm06' => array ( 'perm06' , t ( 'Can post to my wall via tags' ), false , t ( 'e.g. public groups' )),
'$perm07' => array ( 'perm07' , t ( 'Can send me email' )),
'$perm08' => array ( 'perm08' , t ( 'Can see my address book' ), false , t ( 'if it is not public' )),
'$perm09' => array ( 'perm09' , t ( 'Can IM me' ), false , t ( 'when available' )),
'$perm10' => array ( 'perm10' , t ( 'Can see these permissions' )),
'$common_link' => $a -> get_baseurl ( true ) . '/common/loc/' . local_user () . '/' . $contact [ 'id' ],
'$all_friends' => $all_friends ,
'$relation_text' => $relation_text ,
'$visit' => sprintf ( t ( 'Visit %s\'s profile [%s]' ), $contact [ 'name' ], $contact [ 'url' ]),
'$blockunblock' => t ( 'Block/Unblock contact' ),
'$ignorecont' => t ( 'Ignore contact' ),
'$lblcrepair' => t ( " Repair URL settings " ),
'$lblrecent' => t ( 'View conversations' ),
'$lblsuggest' => $lblsuggest ,
'$delete' => t ( 'Delete contact' ),
'$nettype' => $nettype ,
'$poll_interval' => contact_poll_interval ( $contact [ 'priority' ],( ! $poll_enabled )),
'$poll_enabled' => $poll_enabled ,
'$lastupdtext' => t ( 'Last update:' ),
'$lost_contact' => $lost_contact ,
'$updpub' => t ( 'Update public posts' ),
'$last_update' => $last_update ,
'$udnow' => t ( 'Update now' ),
2012-08-31 01:47:07 +00:00
'$profile_select' => contact_profile_assign ( $contact [ 'profile_id' ],(( $contact [ 'network' ] !== NETWORK_DFRN ) ? true : false )),
2012-08-17 04:41:07 +00:00
'$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' ) : '' ),
'$archived' => (( $contact [ 'archive' ]) ? t ( 'Currently archived' ) : '' ),
'$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' )),
'$photo' => $contact [ 'photo' ],
'$name' => $contact [ 'name' ],
'$dir_icon' => $dir_icon ,
'$alt_text' => $alt_text ,
'$sparkle' => $sparkle ,
'$url' => $url
));
$arr = array ( 'contact' => $contact , 'output' => $o );
call_hooks ( 'contact_edit' , $arr );
return $arr [ 'output' ];
}
$blocked = false ;
$hidden = false ;
$ignored = false ;
2012-10-31 04:37:58 +00:00
$archived = false ;
2012-08-17 04:41:07 +00:00
$all = false ;
$_SESSION [ 'return_url' ] = $a -> query_string ;
2012-10-31 04:37:58 +00:00
$search_flags = 0 ;
if ( argc () == 2 ) {
switch ( argv ( 1 )) {
case 'blocked' :
$search_flags = ABOOK_FLAG_BLOCKED ;
$blocked = true ;
break ;
case 'ignored' :
$search_flags = ABOOK_FLAG_IGNORED ;
$ignored = true ;
break ;
case 'hidden' :
$search_flags = ABOOK_FLAG_HIDDEN ;
$hidden = true ;
break ;
case 'archived' :
$search_flags = ABOOK_FLAG_ARCHIVED ;
$archived = true ;
break ;
case 'all' :
default :
$search_flags = 0 ;
$all = true ;
break ;
}
2012-08-17 04:41:07 +00:00
}
2012-10-31 04:37:58 +00:00
$sql_extra = " and ( abook_flags & " . $search_flags . " ) " ;
$search = (( x ( $_REQUEST , 'search' )) ? notags ( trim ( $_REQUEST [ 'search' ])) : '' );
2012-10-31 23:55:19 +00:00
$nets = (( x ( $_GET , 'nets' )) ? notags ( trim ( $_GET [ 'nets' ])) : '' );
2012-08-17 04:41:07 +00:00
$tabs = array (
array (
'label' => t ( 'Suggestions' ),
'url' => $a -> get_baseurl ( true ) . '/suggest' ,
'sel' => '' ,
2012-10-31 04:37:58 +00:00
'title' => t ( 'Suggest new channels' ),
2012-08-17 04:41:07 +00:00
),
array (
2012-10-31 04:37:58 +00:00
'label' => t ( 'All Channels' ),
'url' => $a -> get_baseurl ( true ) . '/channels/all' ,
2012-08-17 04:41:07 +00:00
'sel' => ( $all ) ? 'active' : '' ,
2012-10-31 04:37:58 +00:00
'title' => t ( 'Show all channels' ),
2012-08-17 04:41:07 +00:00
),
array (
'label' => t ( 'Unblocked' ),
2012-10-31 04:37:58 +00:00
'url' => $a -> get_baseurl ( true ) . '/channels' ,
2012-08-17 04:41:07 +00:00
'sel' => (( ! $all ) && ( ! $blocked ) && ( ! $hidden ) && ( ! $search ) && ( ! $nets ) && ( ! $ignored ) && ( ! $archived )) ? 'active' : '' ,
2012-10-31 04:37:58 +00:00
'title' => t ( 'Only show unblocked channels' ),
2012-08-17 04:41:07 +00:00
),
array (
'label' => t ( 'Blocked' ),
2012-10-31 04:37:58 +00:00
'url' => $a -> get_baseurl ( true ) . '/channels/blocked' ,
2012-08-17 04:41:07 +00:00
'sel' => ( $blocked ) ? 'active' : '' ,
2012-10-31 04:37:58 +00:00
'title' => t ( 'Only show blocked channels' ),
2012-08-17 04:41:07 +00:00
),
array (
'label' => t ( 'Ignored' ),
2012-10-31 04:37:58 +00:00
'url' => $a -> get_baseurl ( true ) . '/channels/ignored' ,
2012-08-17 04:41:07 +00:00
'sel' => ( $ignored ) ? 'active' : '' ,
2012-10-31 04:37:58 +00:00
'title' => t ( 'Only show ignored channels' ),
2012-08-17 04:41:07 +00:00
),
array (
'label' => t ( 'Archived' ),
2012-10-31 04:37:58 +00:00
'url' => $a -> get_baseurl ( true ) . '/channels/archived' ,
2012-08-17 04:41:07 +00:00
'sel' => ( $archived ) ? 'active' : '' ,
2012-10-31 04:37:58 +00:00
'title' => t ( 'Only show archived channels' ),
2012-08-17 04:41:07 +00:00
),
array (
'label' => t ( 'Hidden' ),
2012-10-31 04:37:58 +00:00
'url' => $a -> get_baseurl ( true ) . '/channels/hidden' ,
2012-08-17 04:41:07 +00:00
'sel' => ( $hidden ) ? 'active' : '' ,
2012-10-31 04:37:58 +00:00
'title' => t ( 'Only show hidden channel s' ),
2012-08-17 04:41:07 +00:00
),
);
$tab_tpl = get_markup_template ( 'common_tabs.tpl' );
$t = replace_macros ( $tab_tpl , array ( '$tabs' => $tabs ));
$searching = false ;
if ( $search ) {
$search_hdr = $search ;
$search_txt = dbesc ( protect_sprintf ( preg_quote ( $search )));
$searching = true ;
}
2012-10-31 04:37:58 +00:00
$sql_extra .= (( $searching ) ? " AND xchan_name ' $search_txt ' " : " " );
2012-08-17 04:41:07 +00:00
if ( $nets )
2012-10-31 04:37:58 +00:00
$sql_extra .= sprintf ( " AND xchan_network = '%s' " , dbesc ( $nets ));
2012-08-17 04:41:07 +00:00
2012-10-31 04:37:58 +00:00
// $sql_extra2 = ((($sort_type > 0) && ($sort_type <= CONTACT_IS_FRIEND)) ? sprintf(" AND `rel` = %d ",intval($sort_type)) : '');
2012-08-17 04:41:07 +00:00
2012-10-31 23:55:19 +00:00
$r = q ( " SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash
where abook_channel = % d and not ( abook_flags & % d ) $sql_extra $sql_extra2 " ,
intval ( local_user ()),
intval ( ABOOK_FLAG_SELF )
);
2012-08-17 04:41:07 +00:00
if ( count ( $r )) {
$a -> set_pager_total ( $r [ 0 ][ 'total' ]);
$total = $r [ 0 ][ 'total' ];
}
2012-10-31 23:55:19 +00:00
$r = q ( " SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_chan = xchan.xchan_hash
WHERE abook_channel = % d and not ( abook_flags & % d ) $sql_extra $sql_extra2 ORDER BY xchan_name LIMIT % d , % d " ,
intval ( local_user ()),
intval ( ABOOK_FLAG_SELF ),
2012-08-17 04:41:07 +00:00
intval ( $a -> pager [ 'start' ]),
intval ( $a -> pager [ 'itemspage' ])
);
$contacts = array ();
if ( count ( $r )) {
foreach ( $r as $rr ) {
switch ( $rr [ 'rel' ]) {
case CONTACT_IS_FRIEND :
$dir_icon = 'images/lrarrow.gif' ;
$alt_text = t ( 'Mutual Friendship' );
break ;
case CONTACT_IS_FOLLOWER ;
$dir_icon = 'images/larrow.gif' ;
$alt_text = t ( 'is a fan of yours' );
break ;
case CONTACT_IS_SHARING ;
$dir_icon = 'images/rarrow.gif' ;
$alt_text = t ( 'you are a fan of' );
break ;
default :
break ;
}
if (( $rr [ 'network' ] === 'dfrn' ) && ( $rr [ 'rel' ])) {
$url = " redir/ { $rr [ 'id' ] } " ;
$sparkle = ' class="sparkle" ' ;
}
else {
$url = $rr [ 'url' ];
$sparkle = '' ;
}
$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 ,
'itemurl' => $rr [ 'url' ],
'url' => $url ,
'network' => network_to_name ( $rr [ 'network' ]),
);
}
}
$tpl = get_markup_template ( " contacts-template.tpl " );
$o .= replace_macros ( $tpl , array (
'$header' => t ( 'Contacts' ) . (( $nets ) ? ' - ' . network_to_name ( $nets ) : '' ),
'$tabs' => $t ,
'$total' => $total ,
'$search' => $search_hdr ,
'$desc' => t ( 'Search your contacts' ),
'$finding' => (( $searching ) ? t ( 'Finding: ' ) . " ' " . $search . " ' " : " " ),
'$submit' => t ( 'Find' ),
'$cmd' => $a -> cmd ,
'$contacts' => $contacts ,
'$paginate' => paginate ( $a ),
));
return $o ;
}