X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FConsole%2FUser.php;h=a9378a61e957e1ed043b2999c965cdd2981d76c4;hb=11de5be0ae6d28880b12cc4b1fd65c56924b4aad;hp=3fdeac1c5631a02ed3ccbed7c5e98a3d9924aa6d;hpb=2adc6a0974ad6f7e9609a0fce268d4a53e2ce479;p=friendica.git diff --git a/src/Console/User.php b/src/Console/User.php index 3fdeac1c56..a9378a61e9 100644 --- a/src/Console/User.php +++ b/src/Console/User.php @@ -28,6 +28,7 @@ use Friendica\Core\L10n; use Friendica\Database\Database; use Friendica\Model\Register; use Friendica\Model\User as UserModel; +use Friendica\Util\Temporal; use RuntimeException; use Seld\CliPrompt\CliPrompt; @@ -58,21 +59,27 @@ console user - Modify user settings per console commands. Usage bin/console user password [] [-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 [start=0 [count=50]] [-h|--help|-?] [-v] - bin/console user list all [start=0 [count=50]] [-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; } @@ -122,6 +129,8 @@ HELP; return $this->deleteUser(); case 'list': return $this->listUser(); + case 'search': + return $this->searchUser(); default: throw new \Asika\SimpleConsole\CommandArgsException('Wrong command.'); } @@ -295,31 +304,36 @@ 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 user of the current node + * List users of the current node * * @return bool True, if the command was successful */ private function listUser() { $subCmd = $this->getArgument(1); - $start = $this->getArgument(2, 0); - $count = $this->getArgument(3, Pager::ITEMS_PER_PAGE); + $start = $this->getOption(['s', 'start'], 0); + $count = $this->getOption(['c', 'count'], Pager::ITEMS_PER_PAGE); $table = new Console_Table(); @@ -333,28 +347,82 @@ HELP; $contact['name'], $contact['url'], $contact['email'], - $contact['created'], + Temporal::getRelativeDate($contact['created']), $contact['note'], ]); } $this->out($table->getTable()); return true; case 'all': - default: - $table->setHeaders(['Nick', 'Name', 'URL', 'E-Mail', 'Register Date', 'Comment']); - $contacts = UserModel::getUsers($start, $count); + 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'], - $contact['created'], - $contact['note'], + 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; } }