$themedir) {
$ALL_THEME_DIRS[]=$themedir;
}
$ALL_EDIT_OPTIONS=array(
'none' => /* I18N: Listbox entry; name of a role */ i18n::translate('Visitor'),
'access'=> /* I18N: Listbox entry; name of a role */ i18n::translate('Member'),
'edit' => /* I18N: Listbox entry; name of a role */ i18n::translate('Editor'),
'accept'=> /* I18N: Listbox entry; name of a role */ i18n::translate('Moderator'),
'admin' => /* I18N: Listbox entry; name of a role */ i18n::translate('Manager')
);
// 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."useradmin.php?action=edituser&username=".rawurlencode($username)."&ged=".rawurlencode($ged));
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'), '';
?>
| "; if ($user_id!=WT_USER_ID && get_user_setting($user_id, 'contactmethod')!='none') { echo "", i18n::translate('Send Message'), ""; } else { echo ' '; } echo ' | '; $userName = getUserFullName($user_id); echo "", $userName, '';
if (get_user_setting($user_id, 'canadmin')) {
echo ' ', i18n::translate('Administrator'), ' ';
}
echo " | ";
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"))) echo "", $user_name; else echo " | ", $user_name; } else echo " | ", $user_name;
if (get_user_setting($user_id, "comment")) {
$tempTitle = PrintReady(get_user_setting($user_id, "comment"));
echo " | ";
echo "", Zend_Locale::getTranslation(get_user_setting($user_id, 'language'), 'language', WT_LOCALE), " | "; echo "";
echo " | ";
if (((date("U") - (int)get_user_setting($user_id, 'reg_timestamp')) > 604800) && !get_user_setting($user_id, 'verified')) echo ""; else echo " | "; echo ''; echo format_timestamp((int)get_user_setting($user_id, 'reg_timestamp')); echo " | "; echo "";
if ((int)get_user_setting($user_id, 'reg_timestamp') > (int)get_user_setting($user_id, 'sessiontime')) {
echo '';
echo i18n::translate('Never');
} else {
echo '';
echo format_timestamp((int)get_user_setting($user_id, 'sessiontime')), ' ', i18n::time_ago(time() - (int)get_user_setting($user_id, 'sessiontime')); } echo ' | '; echo get_user_setting($user_id, 'verified') ? i18n::translate('Yes') : i18n::translate('No'); echo ' | '; echo get_user_setting($user_id, 'verified_by_admin') ? i18n::translate('Yes') : i18n::translate('No'); echo ' | '; if (WT_USER_ID!=$user_id) { // You cannot delete yourself echo '', i18n::translate('Delete'), ''; } else { echo ' '; } echo ' |
$user_name) {
$totusers = $totusers + 1;
if (((date("U") - (int)get_user_setting($user_id, 'reg_timestamp')) > 604800) && !get_user_setting($user_id, 'verified')) $warnusers++;
else {
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"))) $warnusers++;
}
}
if (!get_user_setting($user_id, 'verified_by_admin') && get_user_setting($user_id, 'verified')) {
$nverusers++;
}
if (!get_user_setting($user_id, 'verified')) {
$applusers++;
}
if (get_user_setting($user_id, 'canadmin')) {
$adminusers++;
}
foreach ($all_gedcoms as $ged_id=>$ged_name) {
if (get_user_gedcom_setting($user_id, $ged_id, 'canedit')=='admin') {
$title=PrintReady(strip_tags(get_gedcom_setting($ged_id, 'title')));
if (isset($gedadmin[$title])) {
$gedadmin[$title]["number"]++;
} else {
$gedadmin[$title]["name"] = $title;
$gedadmin[$title]["number"] = 1;
$gedadmin[$title]["ged"] = $ged_name;
}
}
}
if ($user_lang=get_user_setting($user_id, 'language')) {
if (isset($userlang[$user_lang]))
$userlang[$user_lang]["number"]++;
else {
$userlang[$user_lang]["langname"] = Zend_Locale::getTranslation($user_lang, 'language', WT_LOCALE);
$userlang[$user_lang]["number"] = 1;
}
}
}
echo "
| |||||||||||||||||||||