45 lines
1 KiB
PHP
45 lines
1 KiB
PHP
<?php
|
|
class AddUserJob extends AbstractJob
|
|
{
|
|
public function execute()
|
|
{
|
|
$firstUser = UserModel::getCount() == 0;
|
|
|
|
$user = UserModel::spawn();
|
|
$user->joinDate = time();
|
|
$user->staffConfirmed = $firstUser;
|
|
$user->name = $this->getArgument(EditUserNameJob::NEW_USER_NAME);
|
|
UserModel::forgeId($user);
|
|
|
|
$arguments = $this->getArguments();
|
|
$arguments[EditUserJob::USER_ENTITY] = $user;
|
|
|
|
$arguments[EditUserAccessRankJob::NEW_ACCESS_RANK] = $firstUser
|
|
? AccessRank::Admin
|
|
: AccessRank::Registered;
|
|
|
|
LogHelper::bufferChanges();
|
|
Api::disablePrivilegeChecking();
|
|
Api::run((new EditUserJob)->skipSaving(), $arguments);
|
|
Api::enablePrivilegeChecking();
|
|
LogHelper::setBuffer([]);
|
|
|
|
if ($firstUser)
|
|
$user->confirmEmail();
|
|
|
|
//save the user to db if everything went okay
|
|
UserModel::save($user);
|
|
|
|
LogHelper::log('{subject} just signed up', [
|
|
'subject' => TextHelper::reprUser($user)]);
|
|
|
|
LogHelper::flush();
|
|
|
|
return $user;
|
|
}
|
|
|
|
public function requiresPrivilege()
|
|
{
|
|
return new Privilege(Privilege::RegisterAccount);
|
|
}
|
|
}
|