GetDb();
$assign_group_perm = check_permission($userid, 'Manage Groups');
$groupops = $gCms->GetGroupOperations();
$error = '';
$adminaccess = 1;
$active = 1;
$sel_groups = array();
// Post data
$user = isset($_POST["user"]) ? cleanValue($_POST["user"]) : '';
$password = isset($_POST["password"]) ? trim($_POST["password"]) : '';
$passwordagain = isset($_POST["passwordagain"]) ? trim($_POST["passwordagain"]) : '';
$firstname = isset($_POST["firstname"]) ? cleanValue($_POST["firstname"]) : '';
$lastname = isset($_POST["lastname"]) ? cleanValue($_POST["lastname"]) : '';
$email = isset($_POST["email"]) ? trim(strip_tags($_POST["email"])) : '';
$copyusersettings = isset($_POST['copyusersettings']) ? (int)$_POST['copyusersettings'] : null;
$sel_groups = (isset($_POST['sel_groups']) && is_array($_POST['sel_groups'])) ? $_POST['sel_groups'] : $sel_groups;
/*--------------------
* Variables
---------------------*/
if (isset($_POST["cancel"])) {
redirect('listusers.php' . $urlext);
return;
}
if (isset($_POST["submit"])) {
$active = !isset($_POST["active"]) ? 0 : 1;
$adminaccess = !isset($_POST["adminaccess"]) ? 0 : 1;
$validinfo = true;
if ($user == "") {
$validinfo = false;
$error .= "
" . lang('nofieldgiven', array(lang('username'))) . "";
} else if (!preg_match("/^[a-zA-Z0-9\._ ]+$/", $user)) {
$validinfo = false;
$error .= "" . lang('illegalcharacters', array(lang('username'))) . "";
}
if ($password == "") {
$validinfo = false;
$error .= "" . lang('nofieldgiven', array(lang('password'))) . "";
} else if ($password != $passwordagain) {
// We don't want to see this if no password was given
$validinfo = false;
$error .= "" . lang('nopasswordmatch') . "";
}
if (!empty($email) && !is_email($email)) {
$validinfo = false;
$error .= '' . lang('invalidemail') . '';
}
if ($validinfo) {
$newuser = new User();
$newuser->username = $user;
$newuser->active = $active;
$newuser->firstname = $firstname;
$newuser->lastname = $lastname;
$newuser->email = $email;
$newuser->adminaccess = $adminaccess;
$newuser->SetPassword($password);
\CMSMS\HookManager::do_hook('Core::AddUserPre', [ 'user'=>&$newuser ] );
$result = $newuser->save();
if ($result) {
\CMSMS\HookManager::do_hook('Core::AddUserPost', [ 'user'=>&$newuser ] );
// set some default preferences, based on the user creating this user
$adminid = get_userid();
$userid = $newuser->id;
if ($copyusersettings > 0) {
$prefs = cms_userprefs::get_all_for_user($copyusersettings);
if (is_array($prefs) && count($prefs)) {
foreach ($prefs as $k => $v) {
cms_userprefs::set_for_user($userid, $k, $v);
}
}
} else {
cms_userprefs::set_for_user($userid, 'default_cms_language', cms_userprefs::get_for_user($adminid, 'default_cms_language'));
cms_userprefs::set_for_user($userid, 'wysiwyg', cms_userprefs::get_for_user($adminid, 'wysiwyg'));
cms_userprefs::set_for_user($userid, 'admintheme', get_site_preference('logintheme', CmsAdminThemeBase::GetDefaultTheme()));
cms_userprefs::set_for_user($userid, 'bookmarks', cms_userprefs::get_for_user($adminid, 'bookmarks'));
cms_userprefs::set_for_user($userid, 'recent', cms_userprefs::get_for_user($adminid, 'recent'));
}
if ($assign_group_perm && is_array($sel_groups) && count($sel_groups)) {
$iquery = "INSERT INTO " . cms_db_prefix() . "user_groups (user_id,group_id) VALUES (?,?)";
foreach ($sel_groups as $gid) {
$gid = (int)$gid;
if ($gid < 1)
continue;
$db->Execute($iquery, array(
$userid,
$gid
));
}
}
// put mention into the admin log
audit($newuser->id, 'Admin Username: ' . $newuser->username, 'Added');
redirect("listusers.php" . $urlext);
} else {
$error .= "" . lang('errorinsertinguser') . "";
}
}
}
/*--------------------
* Display view
---------------------*/
include_once ('header.php');
if ($error != '') {
echo $themeObject->ShowErrors('');
}
$out = array(-1 => lang('none'));
$userlist = UserOperations::get_instance()->LoadUsers();
foreach ($userlist as $one) {
$out[$one->id] = $one->username;
}
if ($assign_group_perm) {
$groups = GroupOperations::get_instance()->LoadGroups();
$smarty->assign('groups', $groups);
}
$smarty->assign('adminaccess', $adminaccess);
$smarty->assign('active', $active);
$smarty->assign('user', $user);
$smarty->assign('password', $password);
$smarty->assign('passwordagain', $passwordagain);
$smarty->assign('firstname', $firstname);
$smarty->assign('lastname', $lastname);
$smarty->assign('email', $email);
$smarty->assign('copyusersettings', $copyusersettings);
$smarty->assign('sel_groups', $sel_groups);
$smarty->assign('my_userid', get_userid());
$smarty->assign('users', $out);
$smarty->display('adduser.tpl');
include_once ('footer.php');
?>