]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/GServer.php
Merge pull request #12589 from MrPetovan/bug/warnings
[friendica.git] / src / Model / GServer.php
index 477b1f3232f69a312b7b047aca808768664b02f2..1878befa9f2282440c44a3b0ad19351555cb047c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -360,13 +360,18 @@ class GServer
        /**
         * Reset failed server status by gserver id
         *
-        * @param int $gsid
+        * @param int    $gsid
+        * @param string $network
         */
-       public static function setReachableById(int $gsid)
+       public static function setReachableById(int $gsid, string $network)
        {
-               $gserver = DBA::selectFirst('gserver', ['url', 'failed', 'next_contact'], ['id' => $gsid]);
+               $gserver = DBA::selectFirst('gserver', ['url', 'failed', 'next_contact', 'network'], ['id' => $gsid]);
                if (DBA::isResult($gserver) && $gserver['failed']) {
-                       self::update(['failed' => false, 'last_contact' => DateTimeFormat::utcNow()], ['id' => $gsid]);
+                       $fields = ['failed' => false, 'last_contact' => DateTimeFormat::utcNow()];
+                       if (!empty($network) && !in_array($gserver['network'], Protocol::FEDERATED)) {
+                               $fields['network'] = $network;
+                       }
+                       self::update($fields, ['id' => $gsid]);
                        Logger::info('Reset failed status for server', ['url' => $gserver['url']]);
 
                        if (strtotime($gserver['next_contact']) < time()) {
@@ -408,7 +413,7 @@ class GServer
                        ['nurl' => Strings::normaliseLink($url)]);
                        Logger::info('Set failed status for existing server', ['url' => $url]);
                        if (self::isDefunct($gserver)) {
-                               Contact::update(['archive' => true], ['gsid' => $gserver['id']]);
+                               self::archiveContacts($gserver['id']);
                        }
                        return;
                }
@@ -418,6 +423,18 @@ class GServer
                Logger::info('Set failed status for new server', ['url' => $url]);
        }
 
+       /**
+        * Archive server related contacts and inboxes
+        *
+        * @param integer $gsid
+        * @return void
+        */
+       private static function archiveContacts(int $gsid)
+       {
+               Contact::update(['archive' => true], ['gsid' => $gsid]);
+               DBA::update('inbox-status', ['archive' => true], ['gsid' => $gsid]);
+       }
+
        /**
         * Remove unwanted content from the given URL
         *