szurubooru/src/Api/Jobs/UserJobs/ToggleUserBanJob.php
Marcin Kurczewski 098f11bd09 Increased API readability
- Removed Abstract*Job hierarchy
- Introduced EntityRetrievers
- Introduced JobPager
- Moved files around
2014-05-12 18:00:24 +02:00

45 lines
925 B
PHP

<?php
class ToggleUserBanJob extends AbstractJob
{
protected $userRetriever;
public function __construct()
{
$this->userRetriever = new UserRetriever($this);
}
public function execute()
{
$user = $this->userRetriever->retrieve();
$banned = boolval($this->getArgument(JobArgs::ARG_NEW_STATE));
if ($banned)
$user->ban();
else
$user->unban();
UserModel::save($user);
Logger::log(
$banned
? '{user} banned {subject}'
: '{user} unbanned {subject}', [
'user' => TextHelper::reprUser(Auth::getCurrentUser()),
'subject' => TextHelper::reprUser($user)]);
return $user;
}
public function getRequiredArguments()
{
return JobArgs::Conjunction(
$this->userRetriever->getRequiredArguments(),
JobArgs::ARG_NEW_STATE);
}
public function getRequiredPrivileges()
{
return new Privilege(
Privilege::BanUser,
Access::getIdentity($this->userRetriever->retrieve()));
}
}