aboutsummaryrefslogtreecommitdiffstats
path: root/include/socgraph.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/socgraph.php')
-rw-r--r--include/socgraph.php152
1 files changed, 68 insertions, 84 deletions
diff --git a/include/socgraph.php b/include/socgraph.php
index ef1bab1d6..f46a7059a 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -5,6 +5,12 @@ require_once('include/zot.php');
/*
* poco_load
*
+ * xchan is your connection
+ * We will load their friend list, and store in xlink_xchan your connection hash and xlink_link the hash for each connection
+ * If xchan isn't provided we will load the list of people from url who have indicated they are willing to be friends with
+ * new folks and add them to xlink with no xlink_xchan.
+ *
+ * Old behaviour: (documentation only):
* Given a contact-id (minimum), load the PortableContacts friend list for that contact,
* and add the entries to the gcontact (Global Contact) table, or update existing entries
* if anything (name or photo) has changed.
@@ -19,7 +25,7 @@ require_once('include/zot.php');
-function poco_load($xchan = null,$url = null) {
+function poco_load($xchan = '',$url = null) {
$a = get_app();
if($xchan && ! $url) {
@@ -115,27 +121,25 @@ function poco_load($xchan = null,$url = null) {
}
}
+ $r = q("select * from xlink where xlink_xchan = '%s' and xlink_link = '%s' limit 1",
+ dbesc($xchan),
+ dbesc($hash)
+ );
- if($xchan) {
- $r = q("select * from xlink where xlink_xchan = '%s' and xlink_link = '%s' limit 1",
+ if(! $r) {
+ q("insert into xlink ( xlink_xchan, xlink_link, xlink_rating, xlink_updated ) values ( '%s', '%s', %d, '%s' ) ",
dbesc($xchan),
- dbesc($hash)
+ dbesc($hash),
+ intval($rating),
+ dbesc(datetime_convert())
+ );
+ }
+ else {
+ q("update xlink set xlink_updated = '%s', xlink_rating = %d where xlink_id = %d limit 1",
+ dbesc(datetime_convert()),
+ intval($rating),
+ intval($r[0]['xlink_id'])
);
- if(! $r) {
- q("insert into xlink ( xlink_xchan, xlink_link, xlink_rating, xlink_updated ) values ( '%s', '%s', %d, '%s' ) ",
- dbesc($xchan),
- dbesc($hash),
- intval($rating),
- dbesc(datetime_convert())
- );
- }
- else {
- q("update xlink set xlink_updated = '%s', xlink_rating = %d where xlink_id = %d limit 1",
- dbesc(datetime_convert()),
- intval($rating),
- intval($r[0]['xlink_id'])
- );
- }
}
}
logger("poco_load: loaded $total entries",LOGGER_DEBUG);
@@ -261,95 +265,75 @@ function suggestion_query($uid, $myxchan, $start = 0, $limit = 80) {
$r = q("SELECT count(xlink_xchan) as `total`, xchan.* from xchan
left join xlink on xlink_link = xchan_hash
- where not xchan_hash in ( select abook_xchan from abook where abook_channel = %d )
- and not xchan_hash in ( select xchan from xign where uid = %d )
- and xchan_hash != '%s'
+ where xlink_xchan in ( select abook_xchan from abook where abook_channel = %d )
+ and not xlink_link in ( select abook_xchan from abook where abook_channel = %d )
+ and not xlink_link in ( select xchan from xign where uid = %d )
+ and xlink_xchan != ''
and not ( xchan_flags & %d )
group by xchan_hash order by total desc limit %d, %d ",
intval($uid),
intval($uid),
- dbesc($myxchan),
- intval(XCHAN_FLAGS_HIDDEN),
- intval($start),
- intval($limit)
- );
-
-
-/*
- $r = q("SELECT count(xlink.xchan) as `total`, gcontact.* from gcontact
- left join glink on glink.gcid = gcontact.id
- where uid = %d 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 )
- group by glink.gcid order by total desc limit %d, %d ",
- intval($uid),
- intval($uid),
- intval($uid),
intval($uid),
+ intval(XCHAN_FLAGS_HIDDEN),
intval($start),
intval($limit)
);
-*/
- if($r)
+ if($r && count($r) >= ($limit -1))
return $r;
-/*
- if(count($r) && count($r) >= ($limit -1))
- return $r;
-
- $r2 = q("SELECT gcontact.* from gcontact
- left join glink on glink.gcid = gcontact.id
- 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 ",
- intval($uid),
+ $r2 = q("SELECT count(xlink_link) as `total`, xchan.* from xchan
+ left join xlink on xlink_link = xchan_hash
+ where xlink_xchan = ''
+ and not xlink_link in ( select abook_xchan from abook where abook_channel = %d )
+ and not xlink_link in ( select xchan from xign where uid = %d )
+ and not ( xchan_flags & %d )
+ group by xchan_hash order by total desc limit %d, %d ",
intval($uid),
intval($uid),
+ intval(XCHAN_FLAGS_HIDDEN),
intval($start),
intval($limit)
);
+ if(is_array($r) && is_array($r2))
+ return array_merge($r,$r2);
- return array_merge($r,$r2);
-*/
+ return array();
}
function update_suggestions() {
-// FIXME
-return;
$a = get_app();
- $done = array();
-
- // fix this to get a json list from an upstream directory
-// poco_load(0,0,0,$a->get_baseurl() . '/poco');
-
-// $done[] = $a->get_baseurl() . '/poco';
-
-// if(strlen(get_config('system','directory_submit_url'))) {
-// $x = fetch_url('http://dir.friendica.com/pubsites');
-// if($x) {
-// $j = json_decode($x);
-// if($j->entries) {
-// foreach($j->entries as $entry) {
-// $url = $entry->url . '/poco';
-// if(! in_array($url,$done))
-// poco_load(0,0,0,$entry->url . '/poco');
-// }
-// }
-// }
-// }
-
- $r = q("select distinct(xchan_connurl) as poco from xchan where xchan_network = 'zot'");
-
- if($r) {
- foreach($r as $rr) {
- $base = substr($rr['poco'],0,strrpos($rr['poco'],'/'));
- if(! in_array($base,$done))
- poco_load('',$base);
+ $dirmode = get_config('system','directory_mode');
+ if($dirmode === false)
+ $dirmode = DIRECTORY_MODE_NORMAL;
+
+ if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) {
+ $url = z_root() . '/sitelist';
+ }
+ else {
+ $directory = find_upstream_directory($dirmode);
+
+ if($directory) {
+ $url = $directory['url'] . '/sitelist';
+ }
+ else {
+ $url = DIRECTORY_FALLBACK_MASTER . '/sitelist';
+ }
+ }
+ if(! $url)
+ return;
+
+ $ret = z_fetch_url($url);
+
+ if($ret['success']) {
+ $j = json_decode($ret['body'],true);
+ if($j && $j['success']) {
+ foreach($j['entries'] as $host) {
+ poco_load('',$host . '/poco');
+ }
}
}
}