* Nickname::normalize() to get the canonical form, or Nickname::isValid()
* if you just need to check if it's properly formatted.
*
- * This, DISPLAY_FMT, and CANONICAL_FMT replace the old NICKNAME_FMT,
- * but be aware that these should not be enclosed in []s.
+ * This, DISPLAY_FMT, and CANONICAL_FMT should not be enclosed in []s.
*
* @fixme would prefer to define in reference to the other constants
*/
/**
* Regex fragment for acceptable user-formatted variant of a nickname.
+ *
* This includes some chars such as underscore which will be removed
* from the normalized canonical form, but still must fit within
* field length limits.
* Nickname::normalize() to get the canonical form, or Nickname::isValid()
* if you just need to check if it's properly formatted.
*
- * This and CANONICAL_FMT replace the old NICKNAME_FMT, but be aware
- * that these should not be enclosed in []s.
+ * This, INPUT_FMT and CANONICAL_FMT should not be enclosed in []s.
*/
const DISPLAY_FMT = '[0-9a-zA-Z_]{1,64}';
* there are multiple possible denormalized forms for each valid
* canonical-form name.
*
- * This and DISPLAY_FMT replace the old NICKNAME_FMT, but be aware
- * that these should not be enclosed in []s.
+ * This, INPUT_FMT and DISPLAY_FMT should not be enclosed in []s.
*/
const CANONICAL_FMT = '[0-9a-z]{1,64}';
throw new NicknameBlacklistedException();
} elseif (self::isSystemPath($str)) {
throw new NicknamePathCollisionException();
- } elseif ($checkuse && $user = self::isTaken($str)) {
- if ($user instanceof User) {
- throw new NicknameTakenException($user);
+ } elseif ($checkuse) {
+ $profile = self::isTaken($str);
+ if ($profile instanceof Profile) {
+ throw new NicknameTakenException($profile);
}
}
* Is the nickname already in use locally? Checks the User table.
*
* @param string $str
- * @return User|null Returns null if no such user, otherwise a User object
+ * @return Profile|null Returns Profile if nickname found, otherwise null
*/
public static function isTaken($str)
{
- $user = User::getKV('nickname', $str);
- return $user; // null if no such User entry
+ $found = User::getKV('nickname', $str);
+ if ($found instanceof User) {
+ return $found->getProfile();
+ }
+
+ $found = Local_group::getKV('nickname', $str);
+ if ($found instanceof Local_group) {
+ return $found->getProfile();
+ }
+
+ $found = Group_alias::getKV('alias', $str);
+ if ($found instanceof Group_alias) {
+ return $found->getProfile();
+ }
+
+ return null;
}
}
class NicknameTakenException extends NicknameException
{
- public $user = null; // the User which occupies the nickname
+ public $profile = null; // the Profile which occupies the nickname
- public function __construct(User $user, $msg=null, $code=400)
+ public function __construct(Profile $profile, $msg=null, $code=400)
{
- $this->byuser = $user;
+ $this->profile = $profile;
if ($msg === null) {
$msg = $this->defaultMessage();