X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=classes%2Fuser.php;h=92d8d6e4a584bdb1b9d795299e434e3ade5e1fb8;hb=7996ae8cd41fbb3ccd748eaed71a50f866269c6e;hp=1ce06bc28a6b53d94a684eeb753fecb75660773b;hpb=00ca0ad5370df5be4a0272364fb16a4385ffabfe;p=platal.git diff --git a/classes/user.php b/classes/user.php index 1ce06bc..92d8d6e 100644 --- a/classes/user.php +++ b/classes/user.php @@ -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));