diff options
author | friendica <info@friendica.com> | 2013-08-05 20:08:35 -0700 |
---|---|---|
committer | friendica <info@friendica.com> | 2013-08-05 20:08:35 -0700 |
commit | c2f97f7490cd96e92432ca6c397dce2f6ab80eaa (patch) | |
tree | 72cbdda90fc9979fd8955a47a28b2895b4af5abd /include/socgraph.php | |
parent | 089e915be13707db129c1043d3b914333c296acc (diff) | |
download | volse-hubzilla-c2f97f7490cd96e92432ca6c397dce2f6ab80eaa.tar.gz volse-hubzilla-c2f97f7490cd96e92432ca6c397dce2f6ab80eaa.tar.bz2 volse-hubzilla-c2f97f7490cd96e92432ca6c397dce2f6ab80eaa.zip |
populate initial suggestions (ultimately we want to do this at install time as well as from the poller so that new sites have friend suggestions when they create their first channel).
Diffstat (limited to 'include/socgraph.php')
-rw-r--r-- | include/socgraph.php | 152 |
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'); + } } } } |