mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-27 05:59:08 +01:00
68 lines
1.8 KiB
PHP
68 lines
1.8 KiB
PHP
|
<?php
|
||
|
|
||
|
final class PhabricatorAuthManagementUnlimitWorkflow
|
||
|
extends PhabricatorAuthManagementWorkflow {
|
||
|
|
||
|
protected function didConstruct() {
|
||
|
$this
|
||
|
->setName('unlimit')
|
||
|
->setExamples('**unlimit** --user __username__ --all')
|
||
|
->setSynopsis(
|
||
|
pht(
|
||
|
'Reset action counters so a user can continue taking '.
|
||
|
'rate-limited actions.'))
|
||
|
->setArguments(
|
||
|
array(
|
||
|
array(
|
||
|
'name' => 'user',
|
||
|
'param' => 'username',
|
||
|
'help' => pht('Reset action counters for this user.'),
|
||
|
),
|
||
|
array(
|
||
|
'name' => 'all',
|
||
|
'help' => pht('Reset all counters.'),
|
||
|
),
|
||
|
));
|
||
|
}
|
||
|
|
||
|
public function execute(PhutilArgumentParser $args) {
|
||
|
$username = $args->getArg('user');
|
||
|
if (!strlen($username)) {
|
||
|
throw new PhutilArgumentUsageException(
|
||
|
pht(
|
||
|
'Use %s to choose a user to reset actions for.', '--user'));
|
||
|
}
|
||
|
|
||
|
$user = id(new PhabricatorPeopleQuery())
|
||
|
->setViewer($this->getViewer())
|
||
|
->withUsernames(array($username))
|
||
|
->executeOne();
|
||
|
if (!$user) {
|
||
|
throw new PhutilArgumentUsageException(
|
||
|
pht(
|
||
|
'No user exists with username "%s".',
|
||
|
$username));
|
||
|
}
|
||
|
|
||
|
$all = $args->getArg('all');
|
||
|
if (!$all) {
|
||
|
// TODO: Eventually, let users reset specific actions. For now, we
|
||
|
// require `--all` so that usage won't change when you can reset in a
|
||
|
// more tailored way.
|
||
|
throw new PhutilArgumentUsageException(
|
||
|
pht(
|
||
|
'Specify %s to reset all action counters.', '--all'));
|
||
|
}
|
||
|
|
||
|
$count = PhabricatorSystemActionEngine::resetActions(
|
||
|
array(
|
||
|
$user->getPHID(),
|
||
|
));
|
||
|
|
||
|
echo pht('Reset %s action(s).', new PhutilNumber($count))."\n";
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
}
|