Switched PlImage's fields from private to protected
[platal.git] / classes / pluser.php
index 862ea9d..3e4418a 100644 (file)
@@ -55,15 +55,17 @@ abstract class PlUser
      * false means the information is not available.
      */
 
-    // user_id is internal user ID (potentially numeric), whereas hruid is a
+    // uid is internal user ID (potentially numeric), whereas hruid is a
     // "human readable" unique ID
-    protected $user_id = null;
+    protected $uid = null;
     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.
@@ -94,8 +96,8 @@ abstract class PlUser
 
         // If the user id was not part of the known values, determines it from
         // the login.
-        if (!$this->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 +127,7 @@ abstract class PlUser
      */
     public function id()
     {
-        return $this->user_id;
+        return $this->uid;
     }
 
     public function login()
@@ -135,11 +137,17 @@ abstract class PlUser
 
     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()
@@ -192,6 +200,15 @@ abstract class PlUser
         return property_exists($this, $name) || isset($this->data[$name]);
     }
 
+    public function __unset($name)
+    {
+        if (property_exists($this, $name)) {
+            $this->$name = null;
+        } else {
+            unset($this->data[$name]);
+        }
+    }
+
     /**
      * Fills the object properties using the @p associative array; the intended
      * user case is to fill the object using SQL obtained arrays.
@@ -272,7 +289,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.
@@ -288,7 +305,7 @@ abstract class PlUser
 
     public static function getSilentWithUID($uid)
     {
-        return User::getWithValues(null, array('user_id' => $uid), array('User', '_silent_user_callback'));
+        return User::getWithValues(null, array('uid' => $uid), array('User', '_silent_user_callback'));
     }
 
     /**
@@ -373,7 +390,7 @@ abstract class PlUser
     private static function stripBadChars($text)
     {
         return str_replace(array(' ', "'"), array('-', ''),
-                           strtolower(stripslashed(replace_accent(trim($text)))));
+                           strtolower(stripslashes(replace_accent(trim($text)))));
     }
 
     /** Creates a username from a first and last name
@@ -381,7 +398,7 @@ abstract class PlUser
      * @param $lasttname User's lastname
      * return STRING the corresponding username
      */
-    public static function makeUsername($firstname, $lastname)
+    public static function makeUserName($firstname, $lastname)
     {
         return self::stripBadChars($firstname) . '.' . self::stripBadChars($lastname);
     }
@@ -402,7 +419,25 @@ abstract class PlUser
         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: