diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 4dab6a53e8..42d3afdee7 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -175,12 +175,16 @@ function common_friends_visitor_widget($profile_uid) { return; if($cid) - $r = common_friends($profile_uid,$cid,5,true); + $r = common_friends($profile_uid,$cid,0,5,true); else - $r = common_friends_zcid($profile_uid,$zcid,5,true); + $r = common_friends_zcid($profile_uid,$zcid,0,5,true); return replace_macros(get_markup_template('remote_friends_common.tpl'), array( - '$desc' => sprintf( tt("%d friend in common", "%d friends in common", $t), $t), + '$desc' => sprintf( tt("%d contact in common", "%d contacts in common", $t), $t), + '$base' => $a->get_baseurl(), + '$uid' => $profile_uid, + '$cid' => $cid, + '$more' => t('show more'), '$items' => $r )); diff --git a/include/socgraph.php b/include/socgraph.php index b7c4ccc71e..5927790897 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -184,7 +184,7 @@ function count_common_friends($uid,$cid) { } -function common_friends($uid,$cid,$limit=9999,$shuffle = false) { +function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) { if($shuffle) $sql_extra = " order by rand() "; @@ -195,11 +195,12 @@ function common_friends($uid,$cid,$limit=9999,$shuffle = false) { FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id` where `glink`.`cid` = %d and `glink`.`uid` = %d and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 and id != %d ) - $sql_extra limit 0, %d", + $sql_extra limit %d, %d", intval($cid), intval($uid), intval($uid), intval($cid), + intval($start), intval($limit) ); @@ -224,7 +225,7 @@ function count_common_friends_zcid($uid,$zcid) { } -function common_friends_zcid($uid,$zcid,$limit = 9999,$shuffle) { +function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle) { if($shuffle) $sql_extra = " order by rand() "; @@ -235,9 +236,10 @@ function common_friends_zcid($uid,$zcid,$limit = 9999,$shuffle) { FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id` where `glink`.`zcid` = %d and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 ) - $sql_extra limit 0, %d", + $sql_extra limit %d, %d", intval($zcid), intval($uid), + intval($start), intval($limit) ); diff --git a/mod/common.php b/mod/common.php index 852388c149..617b5b670a 100644 --- a/mod/common.php +++ b/mod/common.php @@ -5,25 +5,33 @@ require_once('include/socgraph.php'); function common_content(&$a) { $o = ''; - if(! local_user()) { - notice( t('Permission denied.') . EOL); + + $cmd = $a->argv[1]; + $uid = intval($a->argv[2]); + $cid = intval($a->argv[3]); + $zcid = 0; + + if($cmd !== 'loc' && $cmd != 'rem') return; + if(! $uid) + return; + + if($cmd === 'loc' && $cid) { + $c = q("select name, url, photo from contact where id = %d and uid = %d limit 1", + intval($cid), + intval($uid) + ); } - - if($a->argc > 1) - $cid = intval($a->argv[1]); - if(! $cid) - return; - - $c = q("select name, url, photo from contact where id = %d and uid = %d limit 1", - intval($cid), - intval(local_user()) - ); + else { + $c = q("select name, url, photo from contact where self = 1 and uid = %d limit 1", + intval($uid) + ); + } $a->page['aside'] .= '
' . '
' . $c[0]['name'] . '
' . '
' - . '' . $c[0]['name'] . '
' . '
'; @@ -33,13 +41,52 @@ function common_content(&$a) { $o .= '

' . t('Common Friends') . '

'; -// $o .= '

' . sprintf( t('You and %s'),$c[0]['name']) . '

'; + + if(! $cid) { + if(get_my_url()) { + $r = q("select id from contact where nurl = '%s' and uid = %d limit 1", + dbesc(normalise_link(get_my_url())), + intval($profile_uid) + ); + if(count($r)) + $cid = $r[0]['id']; + else { + $r = q("select id from gcontact where nurl = '%s' limit 1", + dbesc(normalise_link(get_my_url())) + ); + if(count($r)) + $zcid = $r[0]['id']; + } + } + } - $r = common_friends(local_user(),$cid); + + if($cid == 0 && $zcid == 0) + return; + + + if($cid) + $t = count_common_friends($uid,$cid); + else + $t = count_common_friends_zcid($uid,$zcid); + + + $a->set_pager_total($t); + + if(! $t) { + notice( t('No contacts in common.') . EOL); + return $o; + } + + + if($cid) + $r = common_friends($uid,$cid); + else + $r = common_friends_zcid($uid,$zcid); + if(! count($r)) { - $o .= t('No friends in common.'); return $o; } diff --git a/mod/contacts.php b/mod/contacts.php index 3b428914c1..769239fe0c 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -325,7 +325,7 @@ function contacts_content(&$a) { '$lbl_info1' => t('Contact Information / Notes'), '$infedit' => t('Edit contact notes'), '$common_text' => $common_text, - '$common_link' => $a->get_baseurl(true) . '/common/' . $contact['id'], + '$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']), diff --git a/view/contact_edit.tpl b/view/contact_edit.tpl index 6c66536dd3..eeedda3a4a 100644 --- a/view/contact_edit.tpl +++ b/view/contact_edit.tpl @@ -33,7 +33,7 @@
  •  
  • {{ if $common_text }} -
  • $common_text
  • +
  • $common_text
  • {{ endif }} {{ if $all_friends }}
  • $all_friends
  • diff --git a/view/remote_friends_common.tpl b/view/remote_friends_common.tpl index a5a36b1376..fa66c4731a 100644 --- a/view/remote_friends_common.tpl +++ b/view/remote_friends_common.tpl @@ -1,5 +1,5 @@
    -
    $desc
    +
    $desc      $more
    {{ if $items }} {{ for $items as $item }}