subJobs = [ new EditUserAccessRankJob(), new EditUserNameJob(), new EditUserPasswordJob(), new EditUserEmailJob(), ]; } public function canEditAnything($user) { $this->privileges = []; foreach ($this->subJobs as $subJob) { try { $subJob->user = $user; Api::checkPrivileges($subJob); return true; } catch (AccessException $e) { } } return false; } public function execute() { $user = $this->user; Logger::bufferChanges(); foreach ($this->subJobs as $subJob) { $subJob->setContext($this->getContext() == self::CONTEXT_BATCH_ADD ? self::CONTEXT_BATCH_ADD : self::CONTEXT_BATCH_EDIT); $args = $this->getArguments(); $args[self::USER_ENTITY] = $user; try { Api::run($subJob, $args); } catch (ApiJobUnsatisfiedException $e) { } } if ($this->getContext() == self::CONTEXT_NORMAL) { UserModel::save($user); EditUserEmailJob::observeSave($user); Logger::flush(); } return $user; } public function requiresPrivilege() { return false; } }