Browse Source

first try common friends for visitors

pull/282/head
friendica 8 years ago
parent
commit
8bd6e1aef9
4 changed files with 86 additions and 1 deletions
  1. +39
    -0
      include/contact_widgets.php
  2. +42
    -0
      include/socgraph.php
  3. +4
    -0
      mod/profile.php
  4. +1
    -1
      view/match.tpl

+ 39
- 0
include/contact_widgets.php View File

@ -133,3 +133,42 @@ function categories_widget($baseurl,$selected = '') {
));
}
function common_friends_visitor_widget($profile_uid) {
$a = get_app();
if(local_user() == $profile_uid)
return;
$cid = $zcid = 0;
if(can_write_wall($a,$profile_uid))
$cid = local_user();
else {
if(get_my_url()) {
$r = q("select id from gcontact where nurl = '%s' limit 1",
dbesc(normalise_link(get_my_url()))
);
if(count($r))
$zcid = $r[0]['id'];
}
}
if($cid == 0 && $zcid == 0)
return;
require_once('include/socgraph.php');
$t = count_common_friends_remote($profile_uid,$cid,$zcid);
if(! $t)
return;
$r = common_friends_remote($profile_uid,$cid,$zcid);
return replace_macros(get_markup_template('remote_friends_common.tpl'), array(
'$desc' => sprintf( tt("%d friend in common", "%d friends in common", $t), $t),
'$items = $r
));
};

+ 42
- 0
include/socgraph.php View File

@ -199,6 +199,48 @@ function common_friends($uid,$cid) {
}
function count_common_friends_remote($uid,$cid,$zid) {
$r = q("SELECT count(*) as `total`
FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
where ((`glink`.cid != 0 and `glink`.`cid` = %d) or ( `glink`.`zcid` != 0 and `glink`.`zcid` = %d ))
and `glink`.`uid` = %d
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and id != %d ) ",
intval($cid),
intval($zid),
intval($uid),
intval($uid),
intval($cid)
);
if(count($r))
return $r[0]['total'];
return 0;
}
function common_friends_remote($uid,$cid,$zid,$limit = 6) {
$r = q("SELECT `gcontact`.*
FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
where ((`glink`.cid != 0 and `glink`.`cid` = %d) or ( `glink`.`zcid` != 0 and `glink`.`zcid` = %d ))
and `glink`.`uid` = %d
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and id != %d )
order by `gcontact`.`name` asc limit 0, %d",
intval($cid),
intval($zid),
intval($uid),
intval($uid),
intval($cid),
intval($limit)
);
return $r;
}
function count_all_friends($uid,$cid) {
$r = q("SELECT count(*) as `total`


+ 4
- 0
mod/profile.php View File

@ -143,6 +143,10 @@ function profile_content(&$a, $update = 0) {
return $o;
}
$o .= common_friends_vistor_widget($a->profile['profile_uid']);
if(x($_SESSION,'new_member') && $_SESSION['new_member'] && $is_owner)
$o .= '<a href="newmember" id="newmember-tips" style="font-size: 1.2em;"><b>' . t('Tips for New Members') . '</b></a>' . EOL;


+ 1
- 1
view/match.tpl View File

@ -13,4 +13,4 @@
<div class="profile-match-connect"><a href="$connlnk" title="$conntxt">$conntxt</a></div>
{{ endif }}
</div>
</div>

Loading…
Cancel
Save