]> git.mxchange.org Git - friendica.git/blobdiff - include/socgraph.php
Revert DB update
[friendica.git] / include / socgraph.php
index a39eca5e86fe9ec39628a60b04cccb255ccec7b4..1d9f2adebabe9f5b2c9688ba5474597157815de7 100644 (file)
@@ -1008,6 +1008,7 @@ function poco_check_server($server_url, $network = "", $force = false) {
        if (dbm::is_result($servers) AND ($orig_server_url == $server_url) AND
                ($serverret['errno'] == CURLE_OPERATION_TIMEDOUT)) {
                logger("Connection to server ".$server_url." timed out.", LOGGER_DEBUG);
+               dba::p("UPDATE `gserver` SET `last_failure` = ? WHERE `nurl` = ?", datetime_convert(), normalise_link($server_url));
                return false;
        }
 
@@ -1022,6 +1023,7 @@ function poco_check_server($server_url, $network = "", $force = false) {
                // Quit if there is a timeout
                if ($serverret['errno'] == CURLE_OPERATION_TIMEDOUT) {
                        logger("Connection to server ".$server_url." timed out.", LOGGER_DEBUG);
+                       dba::p("UPDATE `gserver` SET `last_failure` = ? WHERE `nurl` = ?", datetime_convert(), normalise_link($server_url));
                        return false;
                }
 
@@ -1031,12 +1033,10 @@ function poco_check_server($server_url, $network = "", $force = false) {
        if (!$serverret["success"] OR ($serverret["body"] == "") OR (sizeof($xmlobj) == 0) OR !is_object($xmlobj)) {
                // Workaround for bad configured servers (known nginx problem)
                if (!in_array($serverret["debug"]["http_code"], array("403", "404"))) {
-                       $last_failure = datetime_convert();
                        $failure = true;
                }
                $possible_failure = true;
-       } elseif ($network == NETWORK_DIASPORA)
-               $last_contact = datetime_convert();
+       }
 
        // If the server has no possible failure we reset the cached data
        if (!$possible_failure) {
@@ -1054,8 +1054,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                        $data = json_decode($serverret["body"]);
                        if (isset($data->totalResults)) {
                                $poco = $server_url."/poco";
-                               $last_contact = datetime_convert();
-
                                $server = poco_detect_poco_data($data);
                                if ($server) {
                                        $platform = $server['platform'];
@@ -1072,7 +1070,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                $serverret = z_fetch_url($server_url);
 
                if (!$serverret["success"] OR ($serverret["body"] == "")) {
-                       $last_failure = datetime_convert();
                        $failure = true;
                } else {
                        $server = poco_detect_server_type($serverret["body"]);
@@ -1081,7 +1078,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                                $network = $server['network'];
                                $version = $server['version'];
                                $site_name = $server['site_name'];
-                               $last_contact = datetime_convert();
                        }
 
                        $lines = explode("\n",$serverret["header"]);
@@ -1095,15 +1091,11 @@ function poco_check_server($server_url, $network = "", $force = false) {
                                                $network = NETWORK_DIASPORA;
                                                $versionparts = explode("-", $version);
                                                $version = $versionparts[0];
-                                               $last_contact = datetime_convert();
                                        }
 
                                        if(stristr($line,'Server: Mastodon')) {
                                                $platform = "Mastodon";
                                                $network = NETWORK_OSTATUS;
-                                               // Mastodon doesn't reveal version numbers
-                                               $version = "";
-                                               $last_contact = datetime_convert();
                                        }
                                }
                        }
@@ -1122,7 +1114,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                        $version = str_replace(chr(239).chr(187).chr(191), "", $serverret["body"]);
                        $version = trim($version, '"');
                        $network = NETWORK_OSTATUS;
-                       $last_contact = datetime_convert();
                }
 
                // Test for GNU Social
@@ -1134,7 +1125,19 @@ function poco_check_server($server_url, $network = "", $force = false) {
                        $version = str_replace(chr(239).chr(187).chr(191), "", $serverret["body"]);
                        $version = trim($version, '"');
                        $network = NETWORK_OSTATUS;
-                       $last_contact = datetime_convert();
+               }
+
+               // Test for Mastodon
+               $serverret = z_fetch_url($server_url."/api/v1/instance");
+               if ($serverret["success"] AND ($serverret["body"] != '')) {
+                       $data = json_decode($serverret["body"]);
+                       if (isset($data->version)) {
+                               $platform = "Mastodon";
+                               $version = $data->version;
+                               $site_name = $data->title;
+                               $info = $data->description;
+                               $network = NETWORK_OSTATUS;
+                       }
                }
        }
 
@@ -1144,8 +1147,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                if ($serverret["success"]) {
                        $data = json_decode($serverret["body"]);
                        if (isset($data->site->server)) {
-                               $last_contact = datetime_convert();
-
                                if (isset($data->site->platform)) {
                                        $platform = $data->site->platform->PLATFORM_NAME;
                                        $version = $data->site->platform->STD_VERSION;
@@ -1192,7 +1193,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                }
        }
 
-
        // Query statistics.json. Optional package for Diaspora, Friendica and Redmatrix
        if (!$failure) {
                $serverret = z_fetch_url($server_url."/statistics.json");
@@ -1220,9 +1220,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                        } else {
                                $register_policy = REGISTER_CLOSED;
                        }
-
-                       if (isset($data->version))
-                               $last_contact = datetime_convert();
                }
        }
 
@@ -1247,8 +1244,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                        if (isset($server['site_name'])) {
                                $site_name = $server['site_name'];
                        }
-
-                       $last_contact = datetime_convert();
                }
        }
 
@@ -1264,7 +1259,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
                        $data = json_decode($serverret["body"]);
 
                        if (isset($data->version)) {
-                               $last_contact = datetime_convert();
                                $network = NETWORK_DFRN;
 
                                $noscrape = $data->no_scrape_url;
@@ -1290,13 +1284,14 @@ function poco_check_server($server_url, $network = "", $force = false) {
        }
 
        if ($possible_failure AND !$failure) {
-               $last_failure = datetime_convert();
                $failure = true;
        }
 
        if ($failure) {
                $last_contact = $orig_last_contact;
+               $last_failure = datetime_convert();
        } else {
+               $last_contact = datetime_convert();
                $last_failure = $orig_last_failure;
        }