X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fsocgraph.php;h=ec7446cdc58e580d5f24c473dd1bdf308bf2ed30;hb=015561fec60f716197106c6d40a7932decc23d08;hp=e3e5773b7f954bf208787f47e3dc6c6db73cfccc;hpb=97d3176754ce7b9dce50d83290a6d3746deff0e8;p=friendica.git diff --git a/include/socgraph.php b/include/socgraph.php index e3e5773b7f..ec7446cdc5 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -35,8 +35,8 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { $a = get_app(); - if($cid) { - if((! $url) || (! $uid)) { + if ($cid) { + if ((! $url) || (! $uid)) { $r = q("select `poco`, `uid` from `contact` where `id` = %d limit 1", intval($cid) ); @@ -45,11 +45,11 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { $uid = $r[0]['uid']; } } - if(! $uid) + if (! $uid) return; } - if(! $url) + if (! $url) return; $url = $url . (($uid) ? '/@me/@all?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation' : '?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation') ; @@ -62,18 +62,18 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { logger('poco_load: return code: ' . $a->get_curl_code(), LOGGER_DEBUG); - if(($a->get_curl_code() > 299) || (! $s)) + if (($a->get_curl_code() > 299) || (! $s)) return; $j = json_decode($s); logger('poco_load: json: ' . print_r($j,true),LOGGER_DATA); - if(! isset($j->entry)) + if (! isset($j->entry)) return; $total = 0; - foreach($j->entry as $entry) { + foreach ($j->entry as $entry) { $total ++; $profile_url = ''; @@ -137,7 +137,7 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { } if (isset($entry->tags)) { - foreach($entry->tags as $tag) { + foreach ($entry->tags as $tag) { $keywords = implode(", ", $tag); } } @@ -340,7 +340,7 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca $gcid = update_gcontact($gcontact); - if(!$gcid) + if (!$gcid) return $gcid; $r = q("SELECT * FROM `glink` WHERE `cid` = %d AND `uid` = %d AND `gcid` = %d AND `zcid` = %d LIMIT 1", @@ -431,7 +431,7 @@ function poco_detect_server($profile) { // Wild guess if ($server_url == "") { $base = preg_replace("=(https?://)(.*?)/(.*)=ism", "$1$2", $profile); - if (base != $profile) { + if ($base != $profile) { $server_url = $base; $network = NETWORK_PHANTOM; } @@ -823,6 +823,9 @@ function poco_fetch_nodeinfo($server_url) { if (isset($nodeinfo->software->version)) { $server['version'] = $nodeinfo->software->version; + // Version numbers on Nodeinfo are presented with additional info, e.g.: + // 0.6.3.0-p1702cc1c, 0.6.99.0-p1b9ab160 or 3.4.3-2-1191. + $server['version'] = preg_replace("=(.+)-(.{4,})=ism", "$1", $server['version']); } } @@ -1073,10 +1076,10 @@ function poco_check_server($server_url, $network = "", $force = false) { } $lines = explode("\n",$serverret["header"]); - if(count($lines)) { - foreach($lines as $line) { + if (count($lines)) { + foreach ($lines as $line) { $line = trim($line); - if(stristr($line,'X-Diaspora-Version:')) { + if (stristr($line,'X-Diaspora-Version:')) { $platform = "Diaspora"; $version = trim(str_replace("X-Diaspora-Version:", "", $line)); $version = trim(str_replace("x-diaspora-version:", "", $version)); @@ -1086,7 +1089,7 @@ function poco_check_server($server_url, $network = "", $force = false) { $last_contact = datetime_convert(); } - if(stristr($line,'Server: Mastodon')) { + if (stristr($line,'Server: Mastodon')) { $platform = "Mastodon"; $network = NETWORK_OSTATUS; // Mastodon doesn't reveal version numbers @@ -1186,21 +1189,28 @@ function poco_check_server($server_url, $network = "", $force = false) { $serverret = z_fetch_url($server_url."/statistics.json"); if ($serverret["success"]) { $data = json_decode($serverret["body"]); - if ($version == "") + if (isset($data->version)) { $version = $data->version; + // Version numbers on statistics.json are presented with additional info, e.g.: + // 0.6.3.0-p1702cc1c, 0.6.99.0-p1b9ab160 or 3.4.3-2-1191. + $version = preg_replace("=(.+)-(.{4,})=ism", "$1", $version); + } $site_name = $data->name; - if (isset($data->network) AND ($platform == "")) + if (isset($data->network)) { $platform = $data->network; + } - if ($platform == "Diaspora") + if ($platform == "Diaspora") { $network = NETWORK_DIASPORA; + } - if ($data->registrations_open) + if ($data->registrations_open) { $register_policy = REGISTER_OPEN; - else + } else { $register_policy = REGISTER_CLOSED; + } if (isset($data->version)) $last_contact = datetime_convert(); @@ -1212,14 +1222,22 @@ function poco_check_server($server_url, $network = "", $force = false) { $server = poco_fetch_nodeinfo($server_url); if ($server) { $register_policy = $server['register_policy']; - $platform = $server['platform']; - $network = $server['network']; - if ($version == "") { + if (isset($server['platform'])) { + $platform = $server['platform']; + } + + if (isset($server['network'])) { + $network = $server['network']; + } + + if (isset($server['version'])) { $version = $server['version']; } - $site_name = $server['site_name']; + if (isset($server['site_name'])) { + $site_name = $server['site_name']; + } $last_contact = datetime_convert(); } @@ -1303,7 +1321,7 @@ function poco_check_server($server_url, $network = "", $force = false) { dbesc($last_failure), dbesc(normalise_link($server_url)) ); - } elseif (!$failure) + } elseif (!$failure) { q("INSERT INTO `gserver` (`url`, `nurl`, `version`, `site_name`, `info`, `register_policy`, `poco`, `noscrape`, `network`, `platform`, `created`, `last_contact`, `last_failure`) VALUES ('%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s')", dbesc($server_url), @@ -1321,7 +1339,7 @@ function poco_check_server($server_url, $network = "", $force = false) { dbesc($last_failure), dbesc(datetime_convert()) ); - + } logger("End discovery for server ".$server_url, LOGGER_DEBUG); return !$failure; @@ -1350,7 +1368,7 @@ function count_common_friends($uid,$cid) { function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) { - if($shuffle) + if ($shuffle) $sql_extra = " order by rand() "; else $sql_extra = " order by `gcontact`.`name` asc "; @@ -1395,7 +1413,7 @@ function count_common_friends_zcid($uid,$zcid) { function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = false) { - if($shuffle) + if ($shuffle) $sql_extra = " order by rand() "; else $sql_extra = " order by `gcontact`.`name` asc "; @@ -1576,7 +1594,7 @@ function update_suggestions() { if (dbm::is_result($r)) { foreach ($r as $rr) { $base = substr($rr['poco'],0,strrpos($rr['poco'],'/')); - if(! in_array($base,$done)) + if (! in_array($base,$done)) poco_load(0,0,0,$base); } } @@ -1614,7 +1632,7 @@ function poco_discover_federation() { if ($last) { $next = $last + (24 * 60 * 60); - if($next > time()) + if ($next > time()) return; } @@ -1629,20 +1647,22 @@ function poco_discover_federation() { } } - // Currently disabled, since the service isn't available anymore. - // It is not removed since I hope that there will be a successor. - // Discover GNU Social Servers. - //if (!get_config('system','ostatus_disabled')) { - // $serverdata = "http://gstools.org/api/get_open_instances/"; + /* + * Currently disabled, since the service isn't available anymore. + * It is not removed since I hope that there will be a successor. + * Discover GNU Social Servers. + if (!get_config('system','ostatus_disabled')) { + $serverdata = "http://gstools.org/api/get_open_instances/"; - // $result = z_fetch_url($serverdata); - // if ($result["success"]) { - // $servers = json_decode($result["body"]); + $result = z_fetch_url($serverdata); + if ($result["success"]) { + $servers = json_decode($result["body"]); - // foreach($servers->data AS $server) - // poco_check_server($server->instance_address); - // } - //} + foreach($servers->data AS $server) + poco_check_server($server->instance_address); + } + } + */ set_config('poco','last_federation_discovery', time()); } @@ -1731,7 +1751,7 @@ function poco_discover_server_users($data, $server) { foreach ($data->entry AS $entry) { $username = ""; if (isset($entry->urls)) { - foreach($entry->urls as $url) + foreach ($entry->urls as $url) if ($url->type == 'profile') { $profile_url = $url->value; $urlparts = parse_url($profile_url); @@ -1775,7 +1795,7 @@ function poco_discover_server($data, $default_generation = 0) { $name = $entry->displayName; if (isset($entry->urls)) { - foreach($entry->urls as $url) { + foreach ($entry->urls as $url) { if ($url->type == 'profile') { $profile_url = $url->value; continue; @@ -1800,31 +1820,31 @@ function poco_discover_server($data, $default_generation = 0) { $updated = date("Y-m-d H:i:s", strtotime($entry->updated)); } - if(isset($entry->network)) { + if (isset($entry->network)) { $network = $entry->network; } - if(isset($entry->currentLocation)) { + if (isset($entry->currentLocation)) { $location = $entry->currentLocation; } - if(isset($entry->aboutMe)) { + if (isset($entry->aboutMe)) { $about = html2bbcode($entry->aboutMe); } - if(isset($entry->gender)) { + if (isset($entry->gender)) { $gender = $entry->gender; } - if(isset($entry->generation) AND ($entry->generation > 0)) { + if (isset($entry->generation) AND ($entry->generation > 0)) { $generation = ++$entry->generation; } - if(isset($entry->contactType) AND ($entry->contactType >= 0)) { + if (isset($entry->contactType) AND ($entry->contactType >= 0)) { $contact_type = $entry->contactType; } - if(isset($entry->tags)) { + if (isset($entry->tags)) { foreach ($entry->tags as $tag) { $keywords = implode(", ", $tag); }