]> git.mxchange.org Git - friendica.git/commitdiff
Improved loop detection
authorMichael <heluecht@pirati.ca>
Thu, 18 Oct 2018 03:33:08 +0000 (03:33 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 18 Oct 2018 03:33:08 +0000 (03:33 +0000)
src/Model/Contact.php

index 24e9be0424fa1971ea21b5a3c1ce0718aa32c297..472875a80bc1a05088b1db840d1ac6518f9d654e 100644 (file)
@@ -1021,10 +1021,11 @@ class Contact extends BaseObject
         * @param integer $uid       The user id for the contact (0 = public contact)
         * @param boolean $no_update Don't update the contact
         * @param array   $default   Default value for creating the contact when every else fails
+        * @param boolean $in_loop   Internally used variable to prevent an endless loop
         *
         * @return integer Contact ID
         */
-       public static function getIdForURL($url, $uid = 0, $no_update = false, $default = [])
+       public static function getIdForURL($url, $uid = 0, $no_update = false, $default = [], $in_loop = false)
        {
                logger("Get contact data for url " . $url . " and user " . $uid . " - " . System::callstack(), LOGGER_DEBUG);
 
@@ -1138,8 +1139,8 @@ class Contact extends BaseObject
                        }
                }
 
-               if (!$contact_id && ($data["alias"] != '') && ($data["alias"] != $url) && !$no_update) {
-                       $contact_id = self::getIdForURL($data["alias"], $uid, true);
+               if (!$contact_id && ($data["alias"] != '') && ($data["alias"] != $url) && !$in_loop) {
+                       $contact_id = self::getIdForURL($data["alias"], $uid, true, $default, true);
                }
 
                $url = $data["url"];