From 584ac68ae4a230c7a61b2720be8bac3de34d68da Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 01:16:47 -0700 Subject: adding zrl support to social graphs --- include/onepoll.php | 2 +- include/socgraph.php | 38 ++++++++++++++++++++++++-------------- 2 files changed, 25 insertions(+), 15 deletions(-) (limited to 'include') diff --git a/include/onepoll.php b/include/onepoll.php index 51516d059..42bce0f68 100644 --- a/include/onepoll.php +++ b/include/onepoll.php @@ -506,7 +506,7 @@ function onepoll_run($argv, $argc){ } if(count($r)) { if(! $r[0]['total']) { - poco_load($contact['id'],$importer_uid,$contact['poco']); + poco_load($contact['id'],$importer_uid,0,$contact['poco']); } } diff --git a/include/socgraph.php b/include/socgraph.php index 3f5194049..4ab378098 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -20,7 +20,7 @@ require_once('include/datetime.php'); -function poco_load($cid,$uid = 0,$url = null) { +function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { $a = get_app(); if($cid) { @@ -128,35 +128,45 @@ function poco_load($cid,$uid = 0,$url = null) { if(! $gcid) return; - $r = q("select * from glink where `cid` = %d and `uid` = %d and `gcid` = %d limit 1", + $r = q("select * from glink where `cid` = %d and `uid` = %d and `gcid` = %d and `zcid` = %d limit 1", intval($cid), intval($uid), - intval($gcid) + intval($gcid), + intval($zcid) ); if(! count($r)) { - q("insert into glink ( `cid`,`uid`,`gcid`,`updated`) values (%d,%d,%d,'%s') ", + q("insert into glink ( `cid`,`uid`,`gcid`,`zcid`, `updated`) values (%d,%d,%d,%d, '%s') ", intval($cid), intval($uid), intval($gcid), + intval($zcid), dbesc(datetime_convert()) ); } else { - q("update glink set updated = '%s' where `cid` = %d and `uid` = %d and `gcid` = %d limit 1", + q("update glink set updated = '%s' where `cid` = %d and `uid` = %d and `gcid` = %d and zcid = %d limit 1", dbesc(datetime_convert()), intval($cid), intval($uid), - intval($gcid) + intval($gcid), + intval($zcid) ); } } logger("poco_load: loaded $total entries",LOGGER_DEBUG); - q("delete from glink where `cid` = %d and `uid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY", - intval($cid), - intval($uid) - ); + if($zcid) { + q("delete from glink where `zcid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 14 DAY", + intval($zcid) + ); + } + else { + q("delete from glink where `cid` = %d and `uid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY", + intval($cid), + intval($uid) + ); + } } @@ -254,7 +264,7 @@ function suggestion_query($uid, $start = 0, $limit = 80) { $r2 = q("SELECT gcontact.* from gcontact left join glink on glink.gcid = gcontact.id - where glink.uid = 0 and glink.cid = 0 and not gcontact.nurl in ( select nurl from contact where uid = %d ) + where glink.uid = 0 and glink.cid = 0 and glink.zcid = 0 and not gcontact.nurl in ( select nurl from contact where uid = %d ) and not gcontact.name in ( select name from contact where uid = %d ) and not gcontact.id in ( select gcid from gcign where uid = %d ) order by rand() limit %d, %d ", @@ -276,7 +286,7 @@ function update_suggestions() { $done = array(); - poco_load(0,0,$a->get_baseurl() . '/poco'); + poco_load(0,0,0,$a->get_baseurl() . '/poco'); $done[] = $a->get_baseurl() . '/poco'; @@ -288,7 +298,7 @@ function update_suggestions() { foreach($j->entries as $entry) { $url = $entry->url . '/poco'; if(! in_array($url,$done)) - poco_load(0,0,$entry->url . '/poco'); + poco_load(0,0,0,$entry->url . '/poco'); } } } @@ -302,7 +312,7 @@ function update_suggestions() { foreach($r as $rr) { $base = substr($rr['poco'],0,strrpos($rr['poco'],'/')); if(! in_array($base,$done)) - poco_load(0,0,$base); + poco_load(0,0,0,$base); } } } -- cgit v1.2.3 From 0ca4fa78c84fb474bf5b86008c4c1ba7b1aa103f Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 01:34:47 -0700 Subject: link socgraph to zrls --- include/gprobe.php | 28 ++++++++++++++++------------ include/socgraph.php | 18 +++++------------- 2 files changed, 21 insertions(+), 25 deletions(-) (limited to 'include') diff --git a/include/gprobe.php b/include/gprobe.php index 26254ad28..fdf786ca8 100644 --- a/include/gprobe.php +++ b/include/gprobe.php @@ -36,21 +36,25 @@ function gprobe_run($argv, $argc){ dbesc(normalise_link($url)) ); - if(count($r)) - return; - - $arr = probe_url($url); + if(! count($r)) { - if(count($arr) && x($arr,'network') && $arr['network'] === NETWORK_DFRN) { - q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`) - values ( '%s', '%s', '%s', '%s') ", - dbesc($arr['name']), - dbesc($arr['url']), - dbesc(normalise_link($arr['url'])), - dbesc($arr['photo']) + $arr = probe_url($url); + if(count($arr) && x($arr,'network') && $arr['network'] === NETWORK_DFRN) { + q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`) + values ( '%s', '%s', '%s', '%s') ", + dbesc($arr['name']), + dbesc($arr['url']), + dbesc(normalise_link($arr['url'])), + dbesc($arr['photo']) + ); + } + $r = q("select * from gcontact where nurl = '%s' limit 1", + dbesc(normalise_link($url)) ); } - + if(count($r)) + poco_load(0,0,$r[0]['id'], str_replace('/profile/','/poco/',$r[0]['url'])); + return; } diff --git a/include/socgraph.php b/include/socgraph.php index 4ab378098..4a1c8a1ca 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -53,7 +53,6 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { if(($a->get_curl_code() > 299) || (! $s)) return; - $j = json_decode($s); logger('poco_load: json: ' . print_r($j,true),LOGGER_DATA); @@ -81,7 +80,6 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { $connect_url = str_replace('acct:' , '', $url->value); continue; } - } foreach($entry->photos as $photo) { if($photo->type == 'profile') { @@ -156,17 +154,11 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { } logger("poco_load: loaded $total entries",LOGGER_DEBUG); - if($zcid) { - q("delete from glink where `zcid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 14 DAY", - intval($zcid) - ); - } - else { - q("delete from glink where `cid` = %d and `uid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY", - intval($cid), - intval($uid) - ); - } + q("delete from glink where `cid` = %d and `uid` = %d and `zcid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY", + intval($cid), + intval($uid), + intval($zcid) + ); } -- cgit v1.2.3 From 38ccd2e6554bac4f0f1bb927eec7f228f21e74bf Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 15:49:22 -0700 Subject: convert html entities to utf-8 before email header encoding --- include/enotify.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/enotify.php b/include/enotify.php index 8385bdec5..ca134ac86 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -402,8 +402,8 @@ class enotify { */ static public function send($params) { - $fromName = email_header_encode($params['fromName'],'UTF-8'); - $messageSubject = email_header_encode($params['messageSubject'],'UTF-8'); + $fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8'); + $messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8'); // generate a mime boundary $mimeBoundary =rand(0,9)."-" -- cgit v1.2.3 From f24ffa8ef0bbda13c12f130a413a8660fff45493 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 17:10:26 -0700 Subject: improve handling of relative feed url's --- include/Scrape.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/Scrape.php b/include/Scrape.php index b20d7d604..227252600 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -282,7 +282,7 @@ function scrape_feed($url) { } } if(! $basename) - $basename = substr($url,0,strrpos($url,'/')) . '/'; + $basename = implode('/', array_slice(explode('/',$url),0,3)) . '/'; $items = $dom->getElementsByTagName('link'); -- cgit v1.2.3 From 8bd6e1aef9bcace19e4517b4f53c976d4c0a2760 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 19:16:18 -0700 Subject: first try common friends for visitors --- include/contact_widgets.php | 39 +++++++++++++++++++++++++++++++++++++++ include/socgraph.php | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) (limited to 'include') diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 96b02f293..1aaef115c 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -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 + )); + +}; \ No newline at end of file diff --git a/include/socgraph.php b/include/socgraph.php index 4a1c8a1ca..bd1fbded5 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -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` -- cgit v1.2.3 From 1fc796b2766abfee2d55c9b434d584a61fdb4b07 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 19:19:24 -0700 Subject: typo --- include/contact_widgets.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 1aaef115c..fedb94611 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -168,7 +168,7 @@ function common_friends_visitor_widget($profile_uid) { 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 + '$items' = $r )); }; \ No newline at end of file -- cgit v1.2.3 From 15c185015690664f9b6aef849cc6f79b68fd9c63 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 19:20:41 -0700 Subject: another one --- include/contact_widgets.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/contact_widgets.php b/include/contact_widgets.php index fedb94611..0bf0b29d4 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -168,7 +168,7 @@ function common_friends_visitor_widget($profile_uid) { 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 + '$items' => $r )); }; \ No newline at end of file -- cgit v1.2.3 From 72dbc2faeef26c6cdc749ce8403ebbd77b9b896f Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 20:11:35 -0700 Subject: fn not found --- include/gprobe.php | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/gprobe.php b/include/gprobe.php index fdf786ca8..5ca42729a 100644 --- a/include/gprobe.php +++ b/include/gprobe.php @@ -2,6 +2,7 @@ require_once("boot.php"); require_once('include/Scrape.php'); +require_once('include/socgraph.php'); function gprobe_run($argv, $argc){ global $a, $db; -- cgit v1.2.3 From 594803afca25bf173cc42bb523a6931cc386777a Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 20:33:19 -0700 Subject: reduce the scope a bit --- include/contact_widgets.php | 6 +++--- include/socgraph.php | 24 ++++++++---------------- 2 files changed, 11 insertions(+), 19 deletions(-) (limited to 'include') diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 0bf0b29d4..3fd311e4a 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -154,17 +154,17 @@ function common_friends_visitor_widget($profile_uid) { } } - if($cid == 0 && $zcid == 0) + if($zcid == 0) return; require_once('include/socgraph.php'); - $t = count_common_friends_remote($profile_uid,$cid,$zcid); + $t = count_common_friends_zcid($profile_uid,$zcid); if(! $t) return; - $r = common_friends_remote($profile_uid,$cid,$zcid); + $r = common_friends_zcid($profile_uid,$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), diff --git a/include/socgraph.php b/include/socgraph.php index bd1fbded5..a3e20a641 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -200,18 +200,14 @@ function common_friends($uid,$cid) { } -function count_common_friends_remote($uid,$cid,$zid) { +function count_common_friends_zcid($uid,$zcid) { $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), + where `glink`.`zcid` = %d + and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 ) ", + intval($zcid), intval($uid), - intval($uid), - intval($cid) ); if(count($r)) @@ -220,19 +216,15 @@ function count_common_friends_remote($uid,$cid,$zid) { } -function common_friends_remote($uid,$cid,$zid,$limit = 6) { +function common_friends_zcid($uid,$zcid,$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 ) + where `glink`.`zcid` = %d + and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 ) order by `gcontact`.`name` asc limit 0, %d", - intval($cid), - intval($zid), + intval($zcid), intval($uid), - intval($uid), - intval($cid), intval($limit) ); -- cgit v1.2.3 From e247ed3de25e740c8a0993b35a78e7bb5134c3f3 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 20:36:35 -0700 Subject: cross fingers --- include/socgraph.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/socgraph.php b/include/socgraph.php index a3e20a641..cf0042256 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -207,7 +207,7 @@ function count_common_friends_zcid($uid,$zcid) { where `glink`.`zcid` = %d and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 ) ", intval($zcid), - intval($uid), + intval($uid) ); if(count($r)) -- cgit v1.2.3 From becdb1f5085f2561b8b0acebbdbf43e4a81d50da Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 May 2012 21:22:27 -0700 Subject: final touches - show friends in common with total strangers from different sites --- include/contact_widgets.php | 13 +++++++++---- include/socgraph.php | 7 ++++--- 2 files changed, 13 insertions(+), 7 deletions(-) (limited to 'include') diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 3fd311e4a..cfe27c5c9 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -154,17 +154,22 @@ function common_friends_visitor_widget($profile_uid) { } } - if($zcid == 0) + if($cid == 0 && $zcid == 0) return; require_once('include/socgraph.php'); - - $t = count_common_friends_zcid($profile_uid,$zcid); + if($cid) + $t = count_common_friends($profile_uid,$cid); + else + $t = count_common_friends($profile_uid,$cid); if(! $t) return; - $r = common_friends_zcid($profile_uid,$zcid); + if($cid) + $r = common_friends($profile_uid,$cid,5); + else + $r = common_friends_zcid($profile_uid,$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), diff --git a/include/socgraph.php b/include/socgraph.php index cf0042256..a08d58074 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -182,17 +182,18 @@ function count_common_friends($uid,$cid) { } -function common_friends($uid,$cid) { +function common_friends($uid,$cid,$limit=9999) { $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 id != %d ) - order by `gcontact`.`name` asc ", + order by `gcontact`.`name` asc limit 0, %d", intval($cid), intval($uid), intval($uid), - intval($cid) + intval($cid), + intval($limit) ); return $r; -- cgit v1.2.3