$themedir) {
$ALL_THEME_DIRS[]=$themedir;
}
$ALL_EDIT_OPTIONS=array(
'none'=>i18n::translate_c('User access level', 'None'),
'access'=>i18n::translate_c('User access level', 'Access'),
'edit'=>i18n::translate_c('User access level', 'Edit'),
'accept'=>i18n::translate_c('User access level', 'Accept'),
'admin'=>i18n::translate_c('User access level', 'Admin GEDCOM')
);
// Extract form actions (GET overrides POST if both set)
$action =safe_POST('action', $ALL_ACTIONS);
$usrlang =safe_POST('usrlang', array_keys(i18n::installed_languages()));
$username =safe_POST('username', WT_REGEX_USERNAME);
$filter =safe_POST('filter' );
$ged =safe_POST('ged' );
$action =safe_GET('action', $ALL_ACTIONS, $action);
$usrlang =safe_GET('usrlang', array_keys(i18n::installed_languages()), $usrlang);
$username =safe_GET('username', WT_REGEX_USERNAME, $username);
$filter =safe_GET('filter', WT_REGEX_NOSCRIPT, $filter);
$ged =safe_GET('ged', WT_REGEX_NOSCRIPT, $ged);
// Extract form variables
$oldusername =safe_POST('oldusername', WT_REGEX_USERNAME);
$oldemailaddress =safe_POST('oldemailaddress', WT_REGEX_EMAIL);
$realname =safe_POST('realname' );
$pass1 =safe_POST('pass1', WT_REGEX_PASSWORD);
$pass2 =safe_POST('pass2', WT_REGEX_PASSWORD);
$emailaddress =safe_POST('emailaddress', WT_REGEX_EMAIL);
$user_theme =safe_POST('user_theme', $ALL_THEME_DIRS);
$user_language =safe_POST('user_language', array_keys(i18n::installed_languages()), WT_LOCALE);
$new_contact_method =safe_POST('new_contact_method');
$new_default_tab =safe_POST('new_default_tab', array_keys(WT_Module::getActiveTabs()), get_gedcom_setting(WT_GED_ID, 'GEDCOM_DEFAULT_TAB'));
$new_comment =safe_POST('new_comment', WT_REGEX_UNSAFE);
$new_comment_exp =safe_POST('new_comment_exp' );
$new_auto_accept =safe_POST_bool('new_auto_accept');
$canadmin =safe_POST_bool('canadmin');
$visibleonline =safe_POST_bool('visibleonline');
$editaccount =safe_POST_bool('editaccount');
$verified =safe_POST_bool('verified');
$verified_by_admin =safe_POST_bool('verified_by_admin');
if (empty($ged)) {
$ged=$GEDCOM;
}
// Load all available gedcoms
$all_gedcoms = get_all_gedcoms();
//-- sorting by gedcom filename
asort($all_gedcoms);
// Delete a user
if ($action=='deleteuser') {
// don't delete ourselves
$user_id=get_user_id($username);
if ($user_id!=WT_USER_ID) {
delete_user($user_id);
AddToLog("deleted user ->{$username}<-", 'auth');
}
// User data is cached, so reload the page to ensure we're up to date
header('Location: '.WT_SERVER_NAME.WT_SCRIPT_PATH.WT_SCRIPT_NAME);
exit;
}
// Save new user info to the database
if ($action=='createuser' || $action=='edituser2') {
if (($action=='createuser' || $action=='edituser2' && $username!=$oldusername) && get_user_id($username)) {
print_header(i18n::translate('User administration'));
echo "", i18n::translate('Duplicate user name. A user with that user name already exists. Please choose another user name.'), " ";
} elseif (($action=='createuser' || $action=='edituser2' && $emailaddress!=$oldemailaddress) && get_user_by_email($emailaddress)) {
print_header(i18n::translate('User administration'));
echo "", i18n::translate('Duplicate email address. A user with that email already exists.'), " ";
} else {
if ($pass1!=$pass2) {
print_header(i18n::translate('User administration'));
echo "", i18n::translate('Passwords do not match.'), " ";
} else {
// New user
if ($action=='createuser') {
if ($user_id=create_user($username, $realname, $emailaddress, crypt($pass1))) {
set_user_setting($user_id, 'reg_timestamp', date('U'));
set_user_setting($user_id, 'sessiontime', '0');
AddToLog("User ->{$username}<- created", 'auth');
} else {
AddToLog("User ->{$username}<- was not created", 'auth');
$user_id=get_user_id($username);
}
} else {
$user_id=get_user_id($oldusername);
}
// Change password
if ($action=='edituser2' && !empty($pass1)) {
set_user_password($user_id, crypt($pass1));
AddToLog("User ->{$oldusername}<- had password changed", 'auth');
}
// Change username
if ($action=='edituser2' && $username!=$oldusername) {
rename_user($oldusername, $username);
AddToLog("User ->{$oldusername}<- renamed to ->{$username}<-", 'auth');
}
// Create/change settings that can be updated in the user's gedcom record?
$email_changed=($emailaddress!=getUserEmail($user_id));
$newly_verified=($verified_by_admin && !get_user_setting($user_id, 'verified_by_admin'));
// Create/change other settings
setUserFullName ($user_id, $realname);
setUserEmail ($user_id, $emailaddress);
set_user_setting($user_id, 'theme', $user_theme);
set_user_setting($user_id, 'language', $user_language);
set_user_setting($user_id, 'contactmethod', $new_contact_method);
set_user_setting($user_id, 'defaulttab', $new_default_tab);
set_user_setting($user_id, 'comment', $new_comment);
set_user_setting($user_id, 'comment_exp', $new_comment_exp);
set_user_setting($user_id, 'auto_accept', $new_auto_accept);
set_user_setting($user_id, 'canadmin', $canadmin);
set_user_setting($user_id, 'visibleonline', $visibleonline);
set_user_setting($user_id, 'editaccount', $editaccount);
set_user_setting($user_id, 'verified', $verified);
set_user_setting($user_id, 'verified_by_admin', $verified_by_admin);
foreach ($all_gedcoms as $ged_id=>$ged_name) {
set_user_gedcom_setting($user_id, $ged_id, 'gedcomid', safe_POST_xref('gedcomid'.$ged_id));
set_user_gedcom_setting($user_id, $ged_id, 'rootid', safe_POST_xref('rootid'.$ged_id));
set_user_gedcom_setting($user_id, $ged_id, 'canedit', safe_POST('canedit'.$ged_id, array_keys($ALL_EDIT_OPTIONS)));
if (safe_POST_xref('gedcomid'.$ged_id)) {
set_user_gedcom_setting($user_id, $ged_id, 'RELATIONSHIP_PATH_LENGTH', safe_POST_integer('RELATIONSHIP_PATH_LENGTH'.$ged_id, 0, 10, 0));
} else {
// Do not allow a path length to be set if the individual ID is not
set_user_gedcom_setting($user_id, $ged_id, 'RELATIONSHIP_PATH_LENGTH', null);
}
}
// If we're verifying a new user, send them a message to let them know
if ($newly_verified && $action=='edituser2') {
i18n::init($user_language);
$message=array();
$message["to"]=$username;
$headers="From: ".$WEBTREES_EMAIL;
$message["from"]=WT_USER_NAME;
$message["subject"]=i18n::translate('Approval of account at %s', WT_SERVER_NAME.WT_SCRIPT_PATH);
$message["body"]=i18n::translate('The administrator at the webtrees site %s has approved your application for an account. You may now login by accessing the following link: %s', WT_SERVER_NAME.WT_SCRIPT_PATH, WT_SERVER_NAME.WT_SCRIPT_PATH);
$message["created"]="";
$message["method"]="messaging2";
addMessage($message);
// and send a copy to the admin
/*
$message=array();
$message["to"]=WT_USER_NAME;
$headers="From: ".$WEBTREES_EMAIL;
$message["from"]=$username; // fake the from address - so the admin can "reply" to it.
$message["subject"]=i18n::translate('Approval of account at %s', WT_SERVER_NAME.WT_SCRIPT_PATH));
$message["body"]=i18n::translate('The administrator at the webtrees site %s has approved your application for an account. You may now login by accessing the following link: %s', WT_SERVER_NAME.WT_SCRIPT_PATH, WT_SERVER_NAME.WT_SCRIPT_PATH));
$message["created"]="";
$message["method"]="messaging2";
addMessage($message); */
}
// Reload the form cleanly, to allow the user to verify their changes
header('Location: '.WT_SERVER_NAME.WT_SCRIPT_PATH.encode_url("useradmin.php?action=edituser&username={$username}&ged={$ged}", false));
exit;
}
}
} else {
print_header(i18n::translate('User administration'));
// if ($ENABLE_AUTOCOMPLETE) require WT_ROOT.'js/autocomplete.js.htm'; Removed becasue it doesn't work here for multiple GEDCOMs. Can be reinstated when fixed (https://bugs.launchpad.net/webtrees/+bug/613235)
}
// Print the form to edit a user
if ($action=="edituser") {
$user_id=get_user_id($username);
init_calendar_popup();
?>
', i18n::translate('Update user account'), '';
?>
$user_name) {
if ($filter == "warnings") {
if (get_user_setting($user_id, 'comment_exp')) {
if ((strtotime(get_user_setting($user_id, 'comment_exp')) == "-1") || (strtotime(get_user_setting($user_id, 'comment_exp')) >= time("U"))) unset($users[$user_id]);
}
else if (((date("U") - (int)get_user_setting($user_id, 'reg_timestamp')) <= 604800) || get_user_setting($user_id, 'verified')) unset($users[$user_id]);
}
else if ($filter == "adminusers") {
if (!get_user_setting($user_id, 'canadmin')) unset($users[$user_id]);
}
else if ($filter == "usunver") {
if (get_user_setting($user_id, 'verified')) unset($users[$user_id]);
}
else if ($filter == "admunver") {
if ((get_user_setting($user_id, 'verified_by_admin')) || (!get_user_setting($user_id, 'verified'))) {
unset($users[$user_id]);
}
}
else if ($filter == "language") {
if (get_user_setting($user_id, 'language') != $usrlang) {
unset($users[$user_id]);
}
}
else if ($filter == "gedadmin") {
if (get_user_gedcom_setting($user_id, $ged, 'canedit') != "admin") {
unset($users[$user_id]);
}
}
}
?>
',
'