Example #1
0
 /**
  * bug 15810: blocked admins should not be able to block/unblock
  * others, and probably shouldn't be able to unblock themselves
  * either.
  * @param $user User|Int|String
  * @param $performer User user doing the request
  * @return Bool|String true or error message key
  */
 public static function checkUnblockSelf($user, User $performer)
 {
     if (is_int($user)) {
         $user = User::newFromId($user);
     } elseif (is_string($user)) {
         $user = User::newFromName($user);
     }
     if ($performer->isBlocked()) {
         if ($user instanceof User && $user->getId() == $performer->getId()) {
             # User is trying to unblock themselves
             if ($performer->isAllowed('unblockself')) {
                 return true;
                 # User blocked themselves and is now trying to reverse it
             } elseif ($performer->blockedBy() === $performer->getName()) {
                 return true;
             } else {
                 return 'ipbnounblockself';
             }
         } else {
             # User is trying to block/unblock someone else
             return 'ipbblocked';
         }
     } else {
         return true;
     }
 }