/**
* Create a user account for the admin
*
* @param array $submissionVars Submitted vars
* @param bool $login Login in the admin user?
*
* @return bool
*/
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_echo('install:admin:cannot_create'));
return false;
}
$user = get_entity($guid);
if (!$user instanceof ElggUser) {
register_error(elgg_echo('install:error:loadadmin'));
return false;
}
elgg_set_ignore_access(TRUE);
if ($user->makeAdmin() == FALSE) {
register_error(elgg_echo('install:error:adminaccess'));
} else {
datalist_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);
$storage = new Elgg_Http_NativeSessionStorage(array(), $handler);
$session = new ElggSession($storage);
$session->setName('Elgg');
_elgg_services()->setValue('session', $session);
if (login($user) == FALSE) {
register_error(elgg_echo('install:error:adminlogin'));
}
}
return TRUE;
}