ElggInstaller::createAdminAccount PHP Method

createAdminAccount() protected method

Create a user account for the admin
protected createAdminAccount ( array $submissionVars, boolean $login = FALSE ) : boolean
$submissionVars array Submitted vars
$login boolean Login in the admin user?
return boolean
    protected function createAdminAccount($submissionVars, $login = FALSE)
    {
        try {
            $guid = register_user($submissionVars['username'], $submissionVars['password1'], $submissionVars['displayname'], $submissionVars['email']);
        } catch (Exception $e) {
            register_error($e->getMessage());
            return false;
        }
        if (!$guid) {
            register_error(_elgg_services()->translator->translate('install:admin:cannot_create'));
            return false;
        }
        $user = get_entity($guid);
        if (!$user instanceof ElggUser) {
            register_error(_elgg_services()->translator->translate('install:error:loadadmin'));
            return false;
        }
        elgg_set_ignore_access(TRUE);
        if ($user->makeAdmin() == FALSE) {
            register_error(_elgg_services()->translator->translate('install:error:adminaccess'));
        } else {
            _elgg_services()->configTable->set('admin_registered', 1);
        }
        elgg_set_ignore_access(false);
        // add validation data to satisfy user validation plugins
        create_metadata($guid, 'validated', TRUE, '', 0, ACCESS_PUBLIC);
        create_metadata($guid, 'validated_method', 'admin_user', '', 0, ACCESS_PUBLIC);
        if ($login) {
            $handler = new Elgg\Http\DatabaseSessionHandler(_elgg_services()->db);
            // session.cache_limiter is unfortunately set to "" by the NativeSessionStorage constructor,
            // so we must capture and inject it directly.
            $options = ['cache_limiter' => session_cache_limiter()];
            $storage = new Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage($options, $handler);
            $session = new ElggSession(new Symfony\Component\HttpFoundation\Session\Session($storage));
            $session->setName('Elgg');
            _elgg_services()->setValue('session', $session);
            if (login($user) == FALSE) {
                register_error(_elgg_services()->translator->translate('install:error:adminlogin'));
            }
        }
        return TRUE;
    }