X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fsocgraph.php;h=5960764f9e7ffa6bba874d35e09487fb0129652d;hb=1f93024ed63492497c74d287007f1faa5a13084e;hp=a41861d6eae0b33978797ad63fc5c201b3b0cc1c;hpb=173bb74522e4592c0633b73aee0c9c5bb52411c6;p=friendica.git diff --git a/include/socgraph.php b/include/socgraph.php index a41861d6ea..5960764f9e 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']; } @@ -93,19 +93,19 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { 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)) { + if (isset($entry->photos)) { foreach($entry->photos as $photo) { - if($photo->type == 'profile') { + if ($photo->type == 'profile') { $profile_photo = $photo->value; continue; } @@ -207,20 +207,21 @@ 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 +331,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 +392,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 +765,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 +977,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 +1023,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 +1062,7 @@ function count_all_friends($uid,$cid) { intval($uid) ); - if(count($r)) + if (dbm::is_result($r)) return $r[0]['total']; return 0; @@ -1075,8 +1092,16 @@ function all_friends($uid,$cid,$start = 0, $limit = 80) { function suggestion_query($uid, $start = 0, $limit = 80) { - if(! $uid) + if (!$uid) { return array(); + } + +// 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); @@ -1087,9 +1112,10 @@ function suggestion_query($uid, $start = 0, $limit = 80) { $network[] = NETWORK_OSTATUS; $sql_network = implode("', '", $network); - //$sql_network = "'".$sql_network."', ''"; $sql_network = "'".$sql_network."'"; + /// @todo This query is really slow + // By now we cache the data for five minutes $r = q("SELECT count(glink.gcid) as `total`, gcontact.* from gcontact INNER JOIN `glink` ON `glink`.`gcid` = `gcontact`.`id` where uid = %d and not gcontact.nurl in ( select nurl from contact where uid = %d ) @@ -1108,8 +1134,13 @@ function suggestion_query($uid, $start = 0, $limit = 80) { intval($limit) ); - if(count($r) && count($r) >= ($limit -1)) + 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; + } $r2 = q("SELECT gcontact.* FROM gcontact INNER JOIN `glink` ON `glink`.`gcid` = `gcontact`.`id` @@ -1138,6 +1169,9 @@ function suggestion_query($uid, $start = 0, $limit = 80) { while (sizeof($list) > ($limit)) array_pop($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. +// Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $list, CACHE_FIVE_MINUTES); return $list; } @@ -1148,22 +1182,23 @@ 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'); + 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'))) { $x = fetch_url(get_server()."/pubsites"); - if($x) { + if ($x) { $j = json_decode($x); - if($j->entries) { + 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'); + } } } } @@ -1174,7 +1209,7 @@ function update_suggestions() { dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA) ); - if(count($r)) { + if (dbm::is_result($r)) { foreach($r as $rr) { $base = substr($rr['poco'],0,strrpos($rr['poco'],'/')); if(! in_array($base,$done)) @@ -1300,7 +1335,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"])); @@ -1344,11 +1379,11 @@ function poco_discover_server($data, $default_generation = 0) { 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; } @@ -1738,8 +1773,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); @@ -1778,7 +1811,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); } }