Problem
If an Action extends Action then users who are partially blocked are also blocked from performing that action.
if ( $this->requiresUnblock() && $user->isBlocked() ) { $block = $user->getBlock(); throw new UserBlockedError( $block ); }
Solution
This should be changed to something like:
$block = $user->getBlock(); if ( $this->requiresUnblock() && $block && $block->isSitewide() ) { throw new UserBlockedError( $block ); }