aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2013-08-05 20:08:35 -0700
committerfriendica <info@friendica.com>2013-08-05 20:08:35 -0700
commitc2f97f7490cd96e92432ca6c397dce2f6ab80eaa (patch)
tree72cbdda90fc9979fd8955a47a28b2895b4af5abd
parent089e915be13707db129c1043d3b914333c296acc (diff)
downloadvolse-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).
-rw-r--r--include/cli_suggest.php22
-rw-r--r--include/directory.php2
-rw-r--r--include/poller.php4
-rw-r--r--include/socgraph.php152
-rw-r--r--mod/acl.php2
-rw-r--r--mod/directory.php2
6 files changed, 96 insertions, 88 deletions
diff --git a/include/cli_suggest.php b/include/cli_suggest.php
new file mode 100644
index 000000000..321ffd2e0
--- /dev/null
+++ b/include/cli_suggest.php
@@ -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();
+}
+
diff --git a/include/directory.php b/include/directory.php
index c286f5683..c0a8928c0 100644
--- a/include/directory.php
+++ b/include/directory.php
@@ -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';
diff --git a/include/poller.php b/include/poller.php
index f50bd4e3e..00914a712 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -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
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');
+ }
}
}
}
diff --git a/mod/acl.php b/mod/acl.php
index 48bc1f5fd..143b8098e 100644
--- a/mod/acl.php
+++ b/mod/acl.php
@@ -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';
diff --git a/mod/directory.php b/mod/directory.php
index 1b7bc3e4f..b7cdaffe7 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -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';