]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Contact.php
Renamed function
[friendica.git] / src / Model / Contact.php
index 49d4e4cc60a29dda8554292616877f35b559d729..eb99a9fe0f3a0a75ec4bfa85fc89c8941a50db54 100644 (file)
@@ -146,17 +146,17 @@ class Contact extends BaseObject
         * @return boolean was the insert successful?
         * @throws \Exception
         */
-       public static function insert($param, $on_duplicate_update = false)
+       public static function insert(array $param, bool $on_duplicate_update = false)
        {
                $ret = DBA::insert('contact', $param, $on_duplicate_update);
-               $contact = DBA::selectFirst('contact', ['nurl', 'uid', 'id'], ['id' => DBA::lastInsertId()]);
+               $contact = DBA::selectFirst('contact', ['nurl', 'uid'], ['id' => DBA::lastInsertId()]);
                if (!DBA::isResult($contact)) {
                        // Shouldn't happen
                        return $ret;
                }
 
                // Search for duplicated contacts and get rid of them
-               self::handleDuplicates($contact['nurl'], $contact['uid'], $contact['id']);
+               self::removeDuplicates($contact['nurl'], $contact['uid']);
 
                return $ret;
        }
@@ -903,6 +903,13 @@ class Contact extends BaseObject
         */
        public static function unmarkForArchival(array $contact)
        {
+               // Always unarchive the relay contact entry
+               if (!empty($contact['batch'])) {
+                       $fields = ['term-date' => DBA::NULL_DATETIME, 'archive' => false];
+                       $condition = ['batch' => $contact['batch'], 'contact-type' => self::TYPE_RELAY];
+                       DBA::update('contact', $fields, $condition);
+               }
+
                $condition = ['`id` = ? AND (`term-date` > ? OR `archive`)', $contact['id'], DBA::NULL_DATETIME];
                $exists = DBA::exists('contact', $condition);
 
@@ -926,11 +933,6 @@ class Contact extends BaseObject
                DBA::update('contact', $fields, ['id' => $contact['id']]);
                DBA::update('contact', $fields, ['nurl' => Strings::normaliseLink($contact['url']), 'self' => false]);
                GContact::updateFromPublicContactURL($contact['url']);
-
-               if (!empty($contact['batch'])) {
-                       $condition = ['batch' => $contact['batch'], 'contact-type' => self::TYPE_RELAY];
-                       DBA::update('contact', $fields, $condition);
-               }
        }
 
        /**
@@ -1878,7 +1880,7 @@ class Contact extends BaseObject
                }
 
                // Search for duplicated contacts and get rid of them
-               if (self::handleDuplicates(Strings::normaliseLink($url), $uid, $id) || ($uid != 0)) {
+               if (self::removeDuplicates(Strings::normaliseLink($url), $uid) || ($uid != 0)) {
                        return;
                }
 
@@ -1919,35 +1921,15 @@ class Contact extends BaseObject
                DBA::update('contact', $fields, $condition);
        }
 
-       /**
-        * Check and remove duplicate contact entries
-        *
-        * @param integer $contact_id Contact ID
-        * @throws \Exception
-        */
-       public static function handleDuplicateByID($contact_id)
-       {
-               $contact = DBA::selectFirst('contact', ['nurl', 'uid', 'id'], ['id' => $contact_id]);
-               if (!DBA::isResult($contact)) {
-                       return $ret;
-               }
-
-               // Search for duplicated contacts and get rid of them
-               self::handleDuplicates($contact['nurl'], $contact['uid'], $contact['id']);
-
-               return $ret;
-       }
-
         /**
-        * @brief Helper function for "updateFromProbe". Remove duplicated contacts
+        * @brief Remove duplicated contacts
         *
         * @param string  $nurl  Normalised contact url
         * @param integer $uid   User id
-        * @param integer $id    Contact id of a duplicate
         * @return boolean
         * @throws \Exception
         */
-       private static function handleDuplicates($nurl, $uid, $id)
+       public static function removeDuplicates(string $nurl, int $uid)
        {
                $condition = ['nurl' => $nurl, 'uid' => $uid, 'deleted' => false, 'network' => Protocol::FEDERATED];
                $count = DBA::count('contact', $condition);
@@ -1962,7 +1944,7 @@ class Contact extends BaseObject
                }
 
                $first = $first_contact['id'];
-               Logger::info('Found duplicates', ['count' => $count, 'id' => $id, 'first' => $first, 'uid' => $uid, 'nurl' => $nurl]);
+               Logger::info('Found duplicates', ['count' => $count, 'first' => $first, 'uid' => $uid, 'nurl' => $nurl]);
                if (($uid != 0 && ($first_contact['network'] == Protocol::DFRN))) {
                        // Don't handle non public DFRN duplicates by now (legacy DFRN is very special because of the key handling)
                        Logger::info('Not handling non public DFRN duplicate', ['uid' => $uid, 'nurl' => $nurl]);