X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fnickname.php;h=80be6239c500decb6064920e21f342c924acd36d;hb=eaaef2aec9339dc7eb338024f1b62d67fb9531e4;hp=2792d32fd50494900a01e4cbf09a55617d1fab5c;hpb=db7ef52d1352fa3fa49ddf85dcd2bb124c00d303;p=quix0rs-gnu-social.git diff --git a/lib/nickname.php b/lib/nickname.php index 2792d32fd5..80be6239c5 100644 --- a/lib/nickname.php +++ b/lib/nickname.php @@ -27,8 +27,7 @@ class Nickname * 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 */ @@ -36,6 +35,7 @@ class Nickname /** * 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. @@ -44,8 +44,7 @@ class Nickname * 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}'; @@ -60,8 +59,7 @@ class Nickname * 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}'; @@ -126,9 +124,10 @@ class Nickname 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); } } @@ -191,12 +190,26 @@ class Nickname * 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; } } @@ -281,11 +294,11 @@ class NicknamePathCollisionException extends NicknameException 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();