X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fsocgraph.php;h=6249f189e9a0a0d30c0b44cfa4fa78fd95ba86ec;hb=df8b522f6b96bc3a631e608ee430555590e91f0c;hp=e1b5cdbf9acfaf1d02554566b9e95ea5f4c946a6;hpb=ee5ada6991e4bf8516026c409587e1ad675547d7;p=friendica.git diff --git a/include/socgraph.php b/include/socgraph.php index e1b5cdbf9a..6249f189e9 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -40,7 +40,7 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { $r = q("select `poco`, `uid` from `contact` where `id` = %d limit 1", intval($cid) ); - if(count($r)) { + if (dbm::is_result($r)) { $url = $r[0]['poco']; $uid = $r[0]['uid']; } @@ -91,50 +91,58 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { $name = $entry->displayName; - if(isset($entry->urls)) { - foreach($entry->urls as $url) { - if($url->type == 'profile') { + if (isset($entry->urls)) { + foreach ($entry->urls as $url) { + if ($url->type == 'profile') { $profile_url = $url->value; continue; } - if($url->type == 'webfinger') { + if ($url->type == 'webfinger') { $connect_url = str_replace('acct:' , '', $url->value); continue; } } } - if(isset($entry->photos)) { - foreach($entry->photos as $photo) { - if($photo->type == 'profile') { + if (isset($entry->photos)) { + foreach ($entry->photos as $photo) { + if ($photo->type == 'profile') { $profile_photo = $photo->value; continue; } } } - if(isset($entry->updated)) + if (isset($entry->updated)) { $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->tags)) - foreach($entry->tags as $tag) + if (isset($entry->tags)) { + foreach($entry->tags as $tag) { $keywords = implode(", ", $tag); + } + } - if(isset($entry->contactType) AND ($entry->contactType >= 0)) + if (isset($entry->contactType) AND ($entry->contactType >= 0)) $contact_type = $entry->contactType; // If you query a Friendica server for its profiles, the network has to be Friendica @@ -171,8 +179,6 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { function poco_check($profile_url, $name, $network, $profile_photo, $about, $location, $gender, $keywords, $connect_url, $updated, $generation, $cid = 0, $uid = 0, $zcid = 0) { - $a = get_app(); - // Generation: // 0: No definition // 1: Profiles on this server @@ -207,20 +213,22 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca $orig_updated = $updated; // The global contacts should contain the original picture, not the cached one - if (($generation != 1) AND stristr(normalise_link($profile_photo), normalise_link($a->get_baseurl()."/photo/"))) + if (($generation != 1) AND stristr(normalise_link($profile_photo), normalise_link(App::get_baseurl()."/photo/"))) { $profile_photo = ""; + } $r = q("SELECT `network` FROM `contact` WHERE `nurl` = '%s' AND `network` != '' AND `network` != '%s' LIMIT 1", dbesc(normalise_link($profile_url)), dbesc(NETWORK_STATUSNET) ); - if(count($r)) + if (dbm::is_result($r)) { $network = $r[0]["network"]; + } if (($network == "") OR ($network == NETWORK_OSTATUS)) { $r = q("SELECT `network`, `url` FROM `contact` WHERE `alias` IN ('%s', '%s') AND `network` != '' AND `network` != '%s' LIMIT 1", dbesc($profile_url), dbesc(normalise_link($profile_url)), dbesc(NETWORK_STATUSNET) ); - if(count($r)) { + if (dbm::is_result($r)) { $network = $r[0]["network"]; //$profile_url = $r[0]["url"]; } @@ -330,7 +338,7 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca intval($gcid), intval($zcid) ); - if(! count($r)) { + if (! dbm::is_result($r)) { q("INSERT INTO `glink` (`cid`,`uid`,`gcid`,`zcid`, `updated`) VALUES (%d,%d,%d,%d, '%s') ", intval($cid), intval($uid), @@ -391,6 +399,15 @@ function poco_detect_server($profile) { } } + // Mastodon + if ($server_url == "") { + $red = preg_replace("=(https?://)(.*)/users/(.*)=ism", "$1$2", $profile); + if ($red != $profile) { + $server_url = $red; + $network = NETWORK_OSTATUS; + } + } + return $server_url; } @@ -755,6 +772,13 @@ function poco_check_server($server_url, $network = "", $force = false) { $versionparts = explode("-", $version); $version = $versionparts[0]; } + + if(stristr($line,'Server: Mastodon')) { + $platform = "Mastodon"; + $network = NETWORK_OSTATUS; + // Mastodon doesn't reveal version numbers + $version = ""; + } } } } @@ -960,7 +984,7 @@ function count_common_friends($uid,$cid) { ); // logger("count_common_friends: $uid $cid {$r[0]['total']}"); - if(count($r)) + if (dbm::is_result($r)) return $r[0]['total']; return 0; @@ -1006,7 +1030,7 @@ function count_common_friends_zcid($uid,$zcid) { intval($uid) ); - if(count($r)) + if (dbm::is_result($r)) return $r[0]['total']; return 0; @@ -1045,7 +1069,7 @@ function count_all_friends($uid,$cid) { intval($uid) ); - if(count($r)) + if (dbm::is_result($r)) return $r[0]['total']; return 0; @@ -1079,10 +1103,12 @@ function suggestion_query($uid, $start = 0, $limit = 80) { return array(); } - $list = Cache::get("suggestion_query:".$uid.":".$start.":".$limit); - if (!is_null($list)) { - return $list; - } +// Uncommented because the result of the queries are to big to store it in the cache. +// We need to decide if we want to change the db column type or if we want to delete it. +// $list = Cache::get("suggestion_query:".$uid.":".$start.":".$limit); +// if (!is_null($list)) { +// return $list; +// } $network = array(NETWORK_DFRN); @@ -1115,8 +1141,11 @@ function suggestion_query($uid, $start = 0, $limit = 80) { intval($limit) ); - if(count($r) && count($r) >= ($limit -1)) { - Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $r, CACHE_FIVE_MINUTES); + if (dbm::is_result($r) && count($r) >= ($limit -1)) { +// Uncommented because the result of the queries are to big to store it in the cache. +// We need to decide if we want to change the db column type or if we want to delete it. +// Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $r, CACHE_FIVE_MINUTES); + return $r; } @@ -1147,7 +1176,9 @@ function suggestion_query($uid, $start = 0, $limit = 80) { while (sizeof($list) > ($limit)) array_pop($list); - Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $list, CACHE_FIVE_MINUTES); +// Uncommented because the result of the queries are to big to store it in the cache. +// We need to decide if we want to change the db column type or if we want to delete it. +// Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $list, CACHE_FIVE_MINUTES); return $list; } @@ -1157,23 +1188,24 @@ function update_suggestions() { $done = array(); - /// TODO Check if it is really neccessary to poll the own server - poco_load(0,0,0,$a->get_baseurl() . '/poco'); + /// @TODO Check if it is really neccessary to poll the own server + poco_load(0,0,0,App::get_baseurl() . '/poco'); - $done[] = $a->get_baseurl() . '/poco'; + $done[] = App::get_baseurl() . '/poco'; - if(strlen(get_config('system','directory'))) { + if (strlen(get_config('system','directory'))) { $x = fetch_url(get_server()."/pubsites"); - if($x) { + if ($x) { $j = json_decode($x); - if($j->entries) { - foreach($j->entries as $entry) { + if ($j->entries) { + foreach ($j->entries as $entry) { poco_check_server($entry->url); $url = $entry->url . '/poco'; - if(! in_array($url,$done)) + if (! in_array($url,$done)) { poco_load(0,0,0,$entry->url . '/poco'); + } } } } @@ -1184,8 +1216,8 @@ function update_suggestions() { dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA) ); - if(count($r)) { - foreach($r as $rr) { + if (dbm::is_result($r)) { + foreach ($r as $rr) { $base = substr($rr['poco'],0,strrpos($rr['poco'],'/')); if(! in_array($base,$done)) poco_load(0,0,0,$base); @@ -1196,7 +1228,7 @@ function update_suggestions() { function poco_discover_federation() { $last = get_config('poco','last_federation_discovery'); - if($last) { + if ($last) { $next = $last + (24 * 60 * 60); if($next > time()) return; @@ -1310,7 +1342,7 @@ function poco_discover_server_users($data, $server) { $username = ""; if (isset($entry->urls)) { foreach($entry->urls as $url) - if($url->type == 'profile') { + if ($url->type == 'profile') { $profile_url = $url->value; $urlparts = parse_url($profile_url); $username = end(explode("/", $urlparts["path"])); @@ -1352,52 +1384,61 @@ function poco_discover_server($data, $default_generation = 0) { $name = $entry->displayName; - if(isset($entry->urls)) { + if (isset($entry->urls)) { foreach($entry->urls as $url) { - if($url->type == 'profile') { + if ($url->type == 'profile') { $profile_url = $url->value; continue; } - if($url->type == 'webfinger') { + if ($url->type == 'webfinger') { $connect_url = str_replace('acct:' , '', $url->value); continue; } } } - if(isset($entry->photos)) { - foreach($entry->photos as $photo) { - if($photo->type == 'profile') { + if (isset($entry->photos)) { + foreach ($entry->photos as $photo) { + if ($photo->type == 'profile') { $profile_photo = $photo->value; continue; } } } - if(isset($entry->updated)) + if (isset($entry->updated)) { $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)) - foreach($entry->tags as $tag) + if(isset($entry->tags)) { + foreach ($entry->tags as $tag) { $keywords = implode(", ", $tag); + } + } if ($generation > 0) { $success = true; @@ -1535,7 +1576,7 @@ function get_gcontact_id($contact) { proc_run(PRIORITY_LOW, 'include/gprobe.php', bin2hex($contact["url"])); } - if ((count($r) > 1) AND ($gcontact_id > 0) AND ($contact["url"] != "")) + if ((dbm::is_result($r)) AND (count($r) > 1) AND ($gcontact_id > 0) AND ($contact["url"] != "")) q("DELETE FROM `gcontact` WHERE `nurl` = '%s' AND `id` != %d", dbesc(normalise_link($contact["url"])), intval($gcontact_id)); @@ -1748,8 +1789,6 @@ function gs_fetch_users($server) { logger("Fetching users from GNU Social server ".$server, LOGGER_DEBUG); - $a = get_app(); - $url = $server."/main/statistics"; $result = z_fetch_url($url); @@ -1788,7 +1827,7 @@ function gs_fetch_users($server) { "nick" => $user->nickname, "about" => $user->bio, "network" => NETWORK_OSTATUS, - "photo" => $a->get_baseurl()."/images/person-175.jpg"); + "photo" => App::get_baseurl()."/images/person-175.jpg"); get_gcontact_id($contact); } }