abstract class PlUser
{
/**
+ * User data enumerations.
+ */
+ const GENDER_FEMALE = true;
+ const GENDER_MALE = false;
+ const FORMAT_HTML = "html";
+ const FORMAT_TEXT = "text";
+
+ /**
* User data storage.
* By convention, null means the information hasn't been fetched yet, and
* false means the information is not available.
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
+ protected $email_format = null; // Acceptable values are FORMAT_HTML and FORMAT_TEXT
+
// Permissions
protected $perms = null;
protected $perm_flags = null;
return $this->full_name;
}
+ public function promo()
+ {
+ return $this->promo;
+ }
+
+ // Fallback value is GENDER_MALE.
+ public function isFemale()
+ {
+ return $this->gender == self::GENDER_FEMALE;
+ }
+
+ // Fallback value is FORMAT_TEXT.
+ public function isEmailFormatHtml()
+ {
+ return $this->email_format == self::FORMAT_HTML;
+ }
+
/**
* Other properties are available directly through the $data array, or as
* standard object variables, using a getter.
}
/**
- * Returns forlife emails corresponding to the @p logins. If @p strict mode
- * is disabled, it also includes login for which no forlife was found (but
- * still call the callback for them).
+ * Retrieves User objects corresponding to the @p logins, and eventually
+ * extracts and returns the @p property. If @p strict mode is disabled, it
+ * also includes logins for which no forlife was found (but it still calls
+ * the callback for them).
* In all cases, email addresses which are not from the local domains are
* kept.
*
* @param $logins Array of user logins.
+ * @param $property Property to retrieve from the User objects.
* @param $strict Should unvalidated logins be returned as-is or discarded ?
* @param $callback Callback to call when a login is unknown to the system.
* @return Array of validated user forlife emails.
*/
- public static function getBulkForlifeEmails($logins, $strict = true, $callback = false)
+ private static function getBulkUserProperties($logins, $property, $strict, $callback)
{
if (!is_array($logins)) {
if (strlen(trim($logins)) == 0) {
}
if (($user = User::get($login, $callback))) {
- $list[$i] = $user->forlifeEmail();
+ $list[$i] = $user->$property();
} else if (!$strict || User::isForeignEmailAddress($login)) {
$list[$i] = $login;
}
}
/**
+ * Returns hruid corresponding to the @p logins. See getBulkUserProperties()
+ * for details.
+ */
+ public static function getBulkHruid($logins, $callback = false)
+ {
+ return self::getBulkUserProperties($logins, 'login', true, $callback);
+ }
+
+ /**
+ * Returns forlife emails corresponding to the @p logins. See
+ * getBulkUserProperties() for details.
+ */
+ public static function getBulkForlifeEmails($logins, $strict = true, $callback = false)
+ {
+ return self::getBulkUserProperties($logins, 'forlifeEmail', $strict, $callback);
+ }
+
+ /**
* Predefined callbacks for the user lookup; they are called when a given
* login is found not to be associated with any valid user. Silent callback
* does nothing; default callback is supposed to display an error message,