From 1d502116a8c32e3a4b3e159937f6bc841b80b72a Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 21 Jan 2016 19:00:08 +0100 Subject: [PATCH] Search for GNU Social users in the background --- include/discover_poco.php | 35 +++++++++++++++++++++++++++++++++-- include/socgraph.php | 23 ++++++++++++----------- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/include/discover_poco.php b/include/discover_poco.php index 5411e757ad..a8f670334b 100644 --- a/include/discover_poco.php +++ b/include/discover_poco.php @@ -76,9 +76,10 @@ function discover_poco_run(&$argv, &$argc){ update_suggestions(); elseif (($mode == 2) AND get_config('system','poco_completion')) discover_users(); - elseif (($mode == 1) AND ($search != "") and get_config('system','poco_local_search')) + elseif (($mode == 1) AND ($search != "") and get_config('system','poco_local_search')) { discover_directory($search); - elseif (($mode == 0) AND ($search == "") and (get_config('system','poco_discovery') > 0)) { + gs_search_user($search); + } elseif (($mode == 0) AND ($search == "") and (get_config('system','poco_discovery') > 0)) { // Query Friendica and Hubzilla servers for their users poco_discover(); @@ -197,6 +198,36 @@ function discover_directory($search) { Cache::set("dirsearch:".$search, time(), CACHE_DAY); } +/** + * @brief Search for GNU Social user with gstools.org + * + * @param str $search User name + */ +function gs_search_user($search) { + + $a = get_app(); + + $url = "http://gstools.org/api/users_search/".urlencode($search); + + $result = z_fetch_url($url); + if (!$result["success"]) + return false; + + $contacts = json_decode($result["body"]); + + if ($contacts->status == 'ERROR') + return false; + + foreach($contacts->data AS $user) { + $contact = probe_url($user->site_address."/".$user->name); + if ($contact["network"] != NETWORK_PHANTOM) { + $contact["about"] = $user->description; + update_gcontact($contact); + } + } +} + + if (array_search(__file__,get_included_files())===0){ discover_poco_run($_SERVER["argv"],$_SERVER["argc"]); killme(); diff --git a/include/socgraph.php b/include/socgraph.php index 5eaad235b1..4532abb39b 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -1718,18 +1718,19 @@ function gs_fetch_users($server) { $hostname = $statistics->instance_address; } - foreach ($statistics->users AS $nick => $user) { - $profile_url = $server."/".$user->nickname; + if (is_object($statistics->users)) + foreach ($statistics->users AS $nick => $user) { + $profile_url = $server."/".$user->nickname; - $contact = array("url" => $profile_url, - "name" => $user->fullname, - "addr" => $user->nickname."@".$hostname, - "nick" => $user->nickname, - "about" => $user->bio, - "network" => NETWORK_OSTATUS, - "photo" => $a->get_baseurl()."/images/person-175.jpg"); - get_gcontact_id($contact); - } + $contact = array("url" => $profile_url, + "name" => $user->fullname, + "addr" => $user->nickname."@".$hostname, + "nick" => $user->nickname, + "about" => $user->bio, + "network" => NETWORK_OSTATUS, + "photo" => $a->get_baseurl()."/images/person-175.jpg"); + get_gcontact_id($contact); + } } /**