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/AddUserJob.php
2014-05-07 21:30:38 +02:00

53 lines
1 KiB
PHP

<?php
class AddUserJob extends AbstractJob
{
public function execute()
{
$firstUser = UserModel::getCount() == 0;
$user = UserModel::spawn();
$user->setJoinTime(time());
$user->setStaffConfirmed($firstUser);
UserModel::forgeId($user);
if ($firstUser)
{
$user->setAccessRank(new AccessRank(AccessRank::Admin));
}
else
{
$user->setAccessRank(new AccessRank(AccessRank::Registered));
}
$arguments = $this->getArguments();
$arguments[EditUserJob::USER_ENTITY] = $user;
Logger::bufferChanges();
try
{
$job = new EditUserJob();
$job->setContext(self::CONTEXT_BATCH_ADD);
Api::run($job, $arguments);
}
finally
{
Logger::discardBuffer();
}
//save the user to db if everything went okay
UserModel::save($user);
EditUserEmailJob::observeSave($user);
Logger::log('{subject} just signed up', [
'subject' => TextHelper::reprUser($user)]);
Logger::flush();
return $user;
}
public function requiresPrivilege()
{
return new Privilege(Privilege::RegisterAccount);
}
}