Fixes nationalities deletion.
[platal.git] / classes / user.php
index 1ce06bc..92d8d6e 100644 (file)
@@ -462,6 +462,14 @@ class User extends PlUser
         return $this->watch_last;
     }
 
+    public function invalidWatchCache()
+    {
+        unset($this->watch_actions);
+        unset($this->watch_users);
+        unset($this->watch_last);
+        unset($this->watch_promos);
+    }
+
 
     // Contacts
     private $contacts = null;
@@ -493,6 +501,11 @@ class User extends PlUser
         return isset($this->contacts[$profile->id()]);
     }
 
+    public function isWatchedUser(Profile &$profile)
+    {
+        return in_array($profile->id(), $this->watchUsers());
+    }
+
     // Groupes X
     private $groups = null;
     public function groups()
@@ -653,6 +666,35 @@ class User extends PlUser
             || $dom == $globals->mail->alias_dom2;
     }
 
+    /* Tries to find pending accounts with an hruid close to $login. */
+    public static function getPendingAccounts($login, $iterator = false)
+    {
+        global $globals;
+
+        if (strpos($login, '@') === false) {
+            return null;
+        }
+
+        list($login, $domain) = explode('@', $login);
+
+        if ($domain && $domain != $globals->mail->domain && $domain != $globals->mail->domain2) {
+            return null;
+        }
+
+        $sql = "SELECT  uid, full_name
+                  FROM  accounts
+                 WHERE  state = 'pending' AND REPLACE(hruid, '-', '') LIKE
+                        CONCAT('%', REPLACE(REPLACE(REPLACE({?}, ' ', ''), '-', ''), '\'', ''), '%')
+              ORDER BY  full_name";
+        if ($iterator) {
+            return XDB::iterator($sql, $login);
+        } else {
+            $res = XDB::query($sql, $login);
+            return $res->fetchAllAssoc();
+        }
+    }
+
+
     public static function iterOverUIDs($uids, $respect_order = true)
     {
         return new UserIterator(self::loadMainFieldsFromUIDs($uids, $respect_order));