<?php
/***************************************************************************
- * Copyright (C) 2003-2009 Polytechnique.org *
+ * Copyright (C) 2003-2010 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* By convention, null means the information hasn't been fetched yet, and
* false means the information is not available.
*/
+
+ // user_id is internal user ID (potentially numeric), whereas hruid is a
+ // "human readable" unique ID
protected $user_id = null;
protected $hruid = null;
// <display name> !"), while full name is the official full name.
protected $display_name = null;
protected $full_name = null;
- protected $promo = null;
// Other important parameters used when sending emails.
protected $gender = null; // Acceptable values are GENDER_MALE and GENDER_FEMALE
return $this->full_name;
}
- public function promo()
- {
- return $this->promo;
- }
-
abstract public function password();
// Fallback value is GENDER_MALE.
public static function getSilentWithUID($uid)
{
- return User::getWithValues($uid, array('User', '_silent_user_callback'));
+ return User::getWithValues(null, array('user_id' => $uid), array('User', '_silent_user_callback'));
}
/**
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;
}
}
* 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: