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).

This commit is contained in:
friendica 2013-08-05 20:08:35 -07:00
parent 089e915be1
commit c2f97f7490
6 changed files with 92 additions and 84 deletions

22
include/cli_suggest.php Normal file
View file

@ -0,0 +1,22 @@
<?php /** @file */
require_once('boot.php');
require_once('include/cli_startup.php');
require_once('include/socgraph.php');
function cli_suggest_run($argv, $argc){
cli_startup();
$a = get_app();
update_suggestions();
}
if (array_search(__file__,get_included_files())===0){
cli_suggest_run($argv,$argc);
killme();
}

View file

@ -39,7 +39,7 @@ function directory_run($argv, $argc){
$directory = find_upstream_directory($dirmode);
if($directory) {
$url = $directory['url'];
$url = $directory['url'] . '/post';
}
else {
$url = DIRECTORY_FALLBACK_MASTER . '/post';

View file

@ -82,10 +82,12 @@ function poller_run($argv, $argc){
sync_directories($dirmode);
}
// update_suggestions();
set_config('system','last_expire_day',$d2);
proc_run('php','include/expire.php');
proc_run('php','include/cli_suggest.php');
}
// update any photos which didn't get imported properly

View file

@ -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($uid),
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($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();
$dirmode = get_config('system','directory_mode');
if($dirmode === false)
$dirmode = DIRECTORY_MODE_NORMAL;
// fix this to get a json list from an upstream directory
// poco_load(0,0,0,$a->get_baseurl() . '/poco');
if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) {
$url = z_root() . '/sitelist';
}
else {
$directory = find_upstream_directory($dirmode);
// $done[] = $a->get_baseurl() . '/poco';
if($directory) {
$url = $directory['url'] . '/sitelist';
}
else {
$url = DIRECTORY_FALLBACK_MASTER . '/sitelist';
}
}
if(! $url)
return;
// 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');
// }
// }
// }
// }
$ret = z_fetch_url($url);
$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);
if($ret['success']) {
$j = json_decode($ret['body'],true);
if($j && $j['success']) {
foreach($j['entries'] as $host) {
poco_load('',$host . '/poco');
}
}
}
}

View file

@ -258,7 +258,7 @@ function navbar_complete(&$a) {
$directory = find_upstream_directory($dirmode);
if($directory) {
$url = $directory['url'];
$url = $directory['url'] . '/dirsearch';
}
else {
$url = DIRECTORY_FALLBACK_MASTER . '/dirsearch';

View file

@ -45,7 +45,7 @@ function directory_content(&$a) {
$directory = find_upstream_directory($dirmode);
if($directory) {
$url = $directory['url'];
$url = $directory['url'] . '/dirsearch';
}
else {
$url = DIRECTORY_FALLBACK_MASTER . '/dirsearch';