X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FConsole%2FUser.php;h=bff5db74323977038bf5dc230e670ab993a39032;hb=15caf4b3f7eacda399a56b1ad8eeb9d3257306d9;hp=ccd3caa3797b6f39353f1f0c5beba9928df1fa6a;hpb=bb47624bf2bd17277fd6d5e6fcff4e2b19b55674;p=friendica.git diff --git a/src/Console/User.php b/src/Console/User.php index ccd3caa379..bff5db7432 100644 --- a/src/Console/User.php +++ b/src/Console/User.php @@ -1,6 +1,6 @@ [] [-h|--help|-?] [-v] bin/console user add [ [ [ []]]] [-h|--help|-?] [-v] - bin/console user delete [] [-q] [-h|--help|-?] [-v] + bin/console user delete [] [-y] [-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] + bin/console user list pending [-s|--start=0] [-c|--count=50] [-h|--help|-?] [-v] + bin/console user list removed [-s|--start=0] [-c|--count=50] [-h|--help|-?] [-v] + bin/console user list active [-s|--start=0] [-c|--count=50] [-h|--help|-?] [-v] + bin/console user list all [-s|--start=0] [-c|--count=50] [-h|--help|-?] [-v] + bin/console user search id [-h|--help|-?] [-v] + bin/console user search nick [-h|--help|-?] [-v] + bin/console user search mail [-h|--help|-?] [-v] + bin/console user search guid [-h|--help|-?] [-v] Description Modify user settings per console commands. Options -h|--help|-? Show help information - -v Show more debug information. - -q Quiet mode (don't ask for a command). + -v Show more debug information + -y Non-interactive mode, assume "yes" as answer to the user deletion prompt HELP; return $help; } @@ -118,6 +127,10 @@ HELP; return $this->blockUser(false); case 'delete': return $this->deleteUser(); + case 'list': + return $this->listUser(); + case 'search': + return $this->searchUser(); default: throw new \Asika\SimpleConsole\CommandArgsException('Wrong command.'); } @@ -291,18 +304,125 @@ HELP; } } - $user = $this->dba->selectFirst('user', ['uid'], ['nickname' => $nick]); + $user = $this->dba->selectFirst('user', ['uid', 'account_removed'], ['nickname' => $nick]); if (empty($user)) { throw new RuntimeException($this->l10n->t('User not found')); } - if (!$this->getOption('q')) { + if (!empty($user['account_removed'])) { + $this->out($this->l10n->t('User has already been marked for deletion.')); + return true; + } + + if (!$this->getOption('y')) { $this->out($this->l10n->t('Type "yes" to delete %s', $nick)); if (CliPrompt::prompt() !== 'yes') { - throw new RuntimeException('Delete abort.'); + throw new RuntimeException($this->l10n->t('Deletion aborted.')); } } - return UserModel::remove($user['uid'] ?? -1); + return UserModel::remove($user['uid']); + } + + /** + * List users of the current node + * + * @return bool True, if the command was successful + */ + private function listUser() + { + $subCmd = $this->getArgument(1); + $start = $this->getOption(['s', 'start'], 0); + $count = $this->getOption(['c', 'count'], Pager::ITEMS_PER_PAGE); + + $table = new Console_Table(); + + switch ($subCmd) { + case 'pending': + $table->setHeaders(['Nick', 'Name', 'URL', 'E-Mail', 'Register Date', 'Comment']); + $pending = Register::getPending($start, $count); + foreach ($pending as $contact) { + $table->addRow([ + $contact['nick'], + $contact['name'], + $contact['url'], + $contact['email'], + Temporal::getRelativeDate($contact['created']), + $contact['note'], + ]); + } + $this->out($table->getTable()); + return true; + case 'all': + case 'active': + case 'removed': + $table->setHeaders(['Nick', 'Name', 'URL', 'E-Mail', 'Register', 'Login', 'Last Item']); + $contacts = UserModel::getList($start, $count, $subCmd); + foreach ($contacts as $contact) { + $table->addRow([ + $contact['nick'], + $contact['name'], + $contact['url'], + $contact['email'], + Temporal::getRelativeDate($contact['created']), + Temporal::getRelativeDate($contact['login_date']), + Temporal::getRelativeDate($contact['last-item']), + ]); + } + $this->out($table->getTable()); + return true; + default: + $this->out($this->getHelp()); + return false; + } + } + + /** + * Returns a user based on search parameter + * + * @return bool True, if the command was successful + */ + private function searchUser() + { + $fields = [ + 'uid', + 'guid', + 'username', + 'nickname', + 'email', + 'register_date', + 'login_date', + 'verified', + 'blocked', + ]; + + $subCmd = $this->getArgument(1); + $param = $this->getArgument(2); + + $table = new Console_Table(); + $table->setHeaders(['UID', 'GUID', 'Name', 'Nick', 'E-Mail', 'Register', 'Login', 'Verified', 'Blocked']); + + switch ($subCmd) { + case 'id': + $user = UserModel::getById($param, $fields); + break; + case 'guid': + $user = UserModel::getByGuid($param, $fields); + break; + case 'mail': + $user = UserModel::getByEmail($param, $fields); + break; + case 'nick': + $user = UserModel::getByNickname($param, $fields); + break; + default: + $this->out($this->getHelp()); + return false; + } + + $table->addRow($user); + $this->out($table->getTable()); + + return true; } }