<?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.
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()
{
if (!empty($this->bestalias)) {
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.");
}