update friends in common tool now that poco is working

This commit is contained in:
friendica
2013-01-31 17:55:52 -08:00
parent 808de7b447
commit 982034b87d
7 changed files with 28 additions and 82 deletions

View File

@@ -104,58 +104,24 @@ function common_friends_visitor_widget($profile_uid) {
if(local_user() == $profile_uid)
return;
$cid = $zcid = 0;
$observer_hash = get_observer_hash();
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $profile_uid) {
$cid = $visitor['cid'];
break;
}
}
}
// FIXME
// 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'];
// }
// }
// }
if($cid == 0 && $zcid == 0)
return;
if((! $observer_hash) || (! perm_is_allowed($profile_uid,$observer_hash,'view_contacts')))
return;
require_once('include/socgraph.php');
if($cid)
$t = count_common_friends($profile_uid,$cid);
else
$t = count_common_friends_zcid($profile_uid,$zcid);
$t = count_common_friends($profile_uid,$observer_hash);
if(! $t)
return;
if($cid)
$r = common_friends($profile_uid,$cid,0,5,true);
else
$r = common_friends_zcid($profile_uid,$zcid,0,5,true);
$r = common_friends($profile_uid,$observer_hash,0,5,true);
return replace_macros(get_markup_template('remote_friends_common.tpl'), array(
'$desc' => sprintf( tt("%d contact in common", "%d contacts in common", $t), $t),
'$base' => $a->get_baseurl(),
'$uid' => $profile_uid,
'$cid' => (($cid) ? $cid : '0'),
'$cid' => $observer,
'$linkmore' => (($t > 5) ? 'true' : ''),
'$more' => t('show more'),
'$items' => $r

View File

@@ -137,48 +137,39 @@ function poco_load($xchan = null,$url = null) {
}
logger("poco_load: loaded $total entries",LOGGER_DEBUG);
q("delete from xlink where xlink_xchan = '%s' and xlink_updated` < UTC_TIMESTAMP - INTERVAL 2 DAY",
q("delete from xlink where xlink_xchan = '%s' and xlink_updated` < UTC_TIMESTAMP() - INTERVAL 2 DAY",
dbesc($xchan)
);
}
function count_common_friends($uid,$cid) {
function count_common_friends($uid,$xchan) {
$r = q("SELECT count(*) as `total`
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 ) ",
intval($cid),
intval($uid),
intval($uid),
intval($cid)
$r = q("SELECT count(xlink_id) as total from xlink where xlink_xchan = '%s' and xlink_link in
(select abook_chan from abook where abook_xchan != '%s' and abook_channel = %d and abook_flags = 0 )",
dbesc($xchan),
dbesc($xchan),
intval($uid)
);
// logger("count_common_friends: $uid $cid {$r[0]['total']}");
if(count($r))
if($r)
return $r[0]['total'];
return 0;
}
function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) {
function common_friends($uid,$xchan,$start = 0,$limit=100000000,$shuffle = false) {
if($shuffle)
$sql_extra = " order by rand() ";
else
$sql_extra = " order by `gcontact`.`name` asc ";
$sql_extra = " order by xchan_name asc ";
$r = q("SELECT `gcontact`.*
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 %d, %d",
intval($cid),
$r = q("SELECT * from xchan left join xlink on xlink_xchan = xchan_hash where xlink_xchan = '%s' and xlink_link in
(select abook_chan from abook where abook_xchan != '%s' and abook_channel = %d and abook_flags = 0 ) $sql_extra limit %d, %d",
dbesc($xchan),
dbesc($xchan),
intval($uid),
intval($uid),
intval($cid),
intval($start),
intval($limit)
);