This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
szurubooru/src/Api/Jobs/EditUserJob.php

73 lines
1.2 KiB
PHP
Raw Normal View History

2014-05-04 13:39:00 +02:00
<?php
class EditUserJob extends AbstractUserJob
2014-05-04 13:39:00 +02:00
{
2014-05-04 16:27:15 +02:00
protected $subJobs;
2014-05-04 13:39:00 +02:00
2014-05-04 16:27:15 +02:00
public function __construct()
{
$this->subJobs =
2014-05-04 13:39:00 +02:00
[
2014-05-04 14:57:44 +02:00
new EditUserAccessRankJob(),
2014-05-04 13:39:00 +02:00
new EditUserNameJob(),
new EditUserPasswordJob(),
new EditUserEmailJob(),
];
2014-05-04 16:27:15 +02:00
}
public function canEditAnything($user)
{
$this->privileges = [];
foreach ($this->subJobs as $subJob)
{
try
{
$subJob->user = $user;
Api::checkPrivileges($subJob);
return true;
}
catch (AccessException $e)
2014-05-04 16:27:15 +02:00
{
}
}
return false;
}
public function execute()
{
$user = $this->user;
2014-05-04 19:23:09 +02:00
Logger::bufferChanges();
2014-05-04 13:39:00 +02:00
foreach ($this->subJobs as $subJob)
2014-05-04 13:39:00 +02:00
{
$subJob->setContext($this->getContext() == self::CONTEXT_BATCH_ADD
? self::CONTEXT_BATCH_ADD
: self::CONTEXT_BATCH_EDIT);
2014-05-04 13:39:00 +02:00
$args = $this->getArguments();
$args[self::USER_ENTITY] = $user;
2014-05-04 13:39:00 +02:00
try
{
Api::run($subJob, $args);
}
catch (ApiJobUnsatisfiedException $e)
2014-05-04 13:39:00 +02:00
{
}
}
if ($this->getContext() == self::CONTEXT_NORMAL)
2014-05-07 09:26:04 +02:00
{
UserModel::save($user);
2014-05-07 09:26:04 +02:00
EditUserEmailJob::observeSave($user);
}
2014-05-04 19:23:09 +02:00
Logger::flush();
2014-05-04 13:39:00 +02:00
return $user;
}
2014-05-04 16:27:15 +02:00
public function requiresPrivilege()
{
return false;
}
2014-05-04 13:39:00 +02:00
}