From 0c3f8b124bd8fd3dd8f1acff73a3211935ac68a6 Mon Sep 17 00:00:00 2001 From: nupplaPhil Date: Fri, 21 Feb 2020 23:12:07 +0100 Subject: [PATCH] Add "User::block()" to console command --- src/Console/User.php | 36 +++++++++++++++++++++++++++++++++++- src/Model/User.php | 6 +++--- src/Module/Admin/Users.php | 6 ++---- 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/Console/User.php b/src/Console/User.php index 85aad7edd8..2c0e1ad289 100644 --- a/src/Console/User.php +++ b/src/Console/User.php @@ -60,6 +60,8 @@ Usage bin/console user add [ [ [ []]]] [-h|--help|-?] [-v] bin/console user allow [] [-h|--help|-?] [-v] bin/console user deny [] [-h|--help|-?] [-v] + bin/console user block [] [-h|--help|-?] [-v] + bin/console user unblock [] [-h|--help|-?] [-v] Description Modify user settings per console commands. @@ -108,6 +110,10 @@ HELP; return $this->pendingUser(true); case 'deny': return $this->pendingUser(false); + case 'block': + return $this->blockUser(true); + case 'unblock': + return $this->blockUser(false); default: throw new \Asika\SimpleConsole\CommandArgsException('Wrong command.'); } @@ -210,7 +216,7 @@ HELP; * @return bool True, if allow was successful * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public function pendingUser(bool $allow = true) + private function pendingUser(bool $allow = true) { $nick = $this->getArgument(1); @@ -234,4 +240,32 @@ HELP; return ($allow) ? UserModel::allow($pending['hash']) : UserModel::deny($pending['hash']); } + + /** + * Blocks/unblocks a user + * + * @param bool $block True, if the given user should get blocked + * + * @return bool True, if the command was successful + * @throws \Exception + */ + private function blockUser(bool $block = true) + { + $nick = $this->getArgument(1); + + if (!$nick) { + $this->out($this->l10n->t('Enter user nickname: ')); + $nick = CliPrompt::prompt(); + if (empty($nick)) { + throw new RuntimeException('A nick name must be set.'); + } + } + + $user = $this->dba->selectFirst('user', ['uid'], ['nickname' => $nick]); + if (empty($user)) { + throw new RuntimeException($this->l10n->t('User not found')); + } + + return $block ? UserModel::block($user['uid'] ?? 0) : UserModel::block($user['uid'] ?? 0, false); + } } diff --git a/src/Model/User.php b/src/Model/User.php index b1736a7bd9..4c4534b296 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -894,7 +894,7 @@ class User */ public static function block(int $uid, bool $block = true) { - return DBA::update('user', ['blocked' => 0], ['uid' => $uid]); + return DBA::update('user', ['blocked' => $block], ['uid' => $uid]); } /** @@ -1150,11 +1150,11 @@ class User } /** - * @param object $uid user to remove + * @param int $uid user to remove * @return bool * @throws InternalServerErrorException */ - public static function remove($uid) + public static function remove(int $uid) { if (!$uid) { return false; diff --git a/src/Module/Admin/Users.php b/src/Module/Admin/Users.php index bc99be2e39..d8594695de 100644 --- a/src/Module/Admin/Users.php +++ b/src/Module/Admin/Users.php @@ -130,14 +130,12 @@ class Users extends BaseAdmin break; case 'block': parent::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users', 't'); - // @TODO Move this to Model\User:block([$uid]); - DBA::update('user', ['blocked' => 1], ['uid' => $uid]); + User::block($uid); notice(DI::l10n()->t('User "%s" blocked', $user['username'])); break; case 'unblock': parent::checkFormSecurityTokenRedirectOnError('/admin/users', 'admin_users', 't'); - // @TODO Move this to Model\User:unblock([$uid]); - DBA::update('user', ['blocked' => 0], ['uid' => $uid]); + User::block($uid, false); notice(DI::l10n()->t('User "%s" unblocked', $user['username'])); break; }