<?php
/***************************************************************************
- * Copyright (C) 2003-2010 Polytechnique.org *
+ * Copyright (C) 2003-2011 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
}
}
+interface PlUserInterface
+{
+ public static function _default_user_callback($login, $results);
+
+ /**
+ * Determines if the @p login is an email address, and an email address not
+ * served locally by plat/al.
+ */
+ public static function isForeignEmailAddress($email);
+}
+
/**
* Represents an user of plat/al (without any further assumption), with a
* special focus on always-used properties (identification fields, display name,
* NOTE: each implementation of plat/al-code MUST subclass PlUser, and name it
* 'User'.
*/
-abstract class PlUser
+abstract class PlUser implements PlUserInterface
{
/**
* User data enumerations.
protected $hruid = null;
// User main email aliases (forlife is the for-life email address, bestalias
- // is user-chosen preferred email address).
+ // is user-chosen preferred email address, email might be any email available
+ // for the user).
protected $forlife = null;
protected $bestalias = null;
+ protected $email = null;
// Display name is user-chosen name to display (eg. in "Welcome
// <display name> !"), while full name is the official full name.
protected $display_name = null;
protected $full_name = null;
+ protected $sort_name = null;
// Other important parameters used when sending emails.
protected $gender = null; // Acceptable values are GENDER_MALE and GENDER_FEMALE
return $this->hruid;
}
+ public function isMe($other)
+ {
+ if (!$other) {
+ return false;
+ } else if ($other instanceof PlUser) {
+ return $other->id() == $this->id();
+ } else {
+ return false;
+ }
+ }
+
public function bestEmail()
{
- return $this->bestalias;
+ if (!empty($this->bestalias)) {
+ return $this->bestalias;
+ }
+ return $this->email;
}
public function forlifeEmail()
{
- return $this->forlife;
+ if (!empty($this->forlife)) {
+ return $this->forlife;
+ }
+ return $this->email;
}
public function displayName()
if (strlen(trim($logins)) == 0) {
return null;
}
- $logins = split("[; ,\r\n\|]+", $logins);
+ $logins = preg_split("/[; ,\r\n\|]+/", $logins);
}
if ($logins) {
$list[$i] = $login;
}
}
- return $list;
+ return array_unique($list);
}
return null;
}
return;
}
- abstract public static function _default_user_callback($login, $results);
-
- /**
- * Determines if the @p login is an email address, and an email address not
- * served locally by plat/al.
- */
- abstract public static function isForeignEmailAddress($email);
-
private static function stripBadChars($text)
{
- return str_replace(array(' ', "'"), array('-', ''),
+ return str_replace(array(' ', "'", '+'), array('-', '', '_'),
strtolower(stripslashes(replace_accent(trim($text)))));
}
public static function makeHrid($firstname, $lastname, $category)
{
$cat = self::stripBadChars($category);
- if (!cat) {
+ if (!$cat) {
Platal::page()->kill("$category is not a suitable category.");
}
}
}
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
?>