X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fpluser.php;h=03abb2a3bebf0af43183020ec1d8db31e2bdb160;hb=381a28e9a41563eb2c440fb3115aa58f4f1a6ed1;hp=4cd8edc6a8053ff8336b8e348e05a34fb99d121c;hpb=6c36b907ae72344efb81730e3b41a0ddc9473cec;p=platal.git diff --git a/classes/pluser.php b/classes/pluser.php index 4cd8edc..03abb2a 100644 --- a/classes/pluser.php +++ b/classes/pluser.php @@ -1,6 +1,6 @@ user_id) { - $this->user_id = $this->getLogin($login); + if (!$this->uid) { + $this->uid = $this->getLogin($login); } // Preloads main properties (assumes the loader will lazily get them @@ -125,7 +125,7 @@ abstract class PlUser */ public function id() { - return $this->user_id; + return $this->uid; } public function login() @@ -151,11 +151,6 @@ abstract class PlUser return $this->full_name; } - public function promo() - { - return $this->promo; - } - abstract public function password(); // Fallback value is GENDER_MALE. @@ -277,7 +272,7 @@ abstract class PlUser public static function getWithUID($uid, $callback = false) { - return User::getWithValues(null, array('user_id' => $uid), $callback); + return User::getWithValues(null, array('uid' => $uid), $callback); } // Same as above, but using the silent callback as default. @@ -293,7 +288,7 @@ abstract class PlUser public static function getSilentWithUID($uid) { - return User::getWithValues($uid, array('User', '_silent_user_callback')); + return User::getWithValues(null, array('uid' => $uid), array('User', '_silent_user_callback')); } /** @@ -329,7 +324,7 @@ abstract class PlUser if (($user = User::get($login, $callback))) { $list[$i] = $user->$property(); - } else if (!$strict || User::isForeignEmailAddress($login)) { + } else if (!$strict || (User::isForeignEmailAddress($login) && isvalid_email($login))) { $list[$i] = $login; } } @@ -374,6 +369,58 @@ abstract class PlUser * served locally by plat/al. */ abstract public static function isForeignEmailAddress($email); + + private static function stripBadChars($text) + { + return str_replace(array(' ', "'"), array('-', ''), + strtolower(stripslashes(replace_accent(trim($text))))); + } + + /** Creates a username from a first and last name + * @param $firstname User's firstname + * @param $lasttname User's lastname + * return STRING the corresponding username + */ + public static function makeUserName($firstname, $lastname) + { + return self::stripBadChars($firstname) . '.' . self::stripBadChars($lastname); + } + + /** + * Creates a user forlive identifier from: + * @param $firstname User's firstname + * @param $lasttname User's lastname + * @param $category User's promotion or type of account + */ + public static function makeHrid($firstname, $lastname, $category) + { + $cat = self::stripBadChars($category); + if (!cat) { + Platal::page()->kill("$category is not a suitable category."); + } + + return self::makeUserName($firstname, $lastname) . '.' . $cat; + } + + /** Reformats the firstname so that all letters are in lower case, + * except the first letter of each part of the name. + */ + public static function fixFirstnameCase($firstname) + { + $firstname = strtolower($firstname); + $pieces = explode('-', $firstname); + + foreach ($pieces as $piece) { + $subpieces = explode("'", $piece); + $usubpieces = ''; + + foreach ($subpieces as $subpiece) { + $usubpieces[] = ucwords($subpiece); + } + $upieces[] = implode("'", $usubpieces); + } + return implode('-', $upieces); + } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: