$themedir) { $ALL_THEME_DIRS[]=$themedir; } $ALL_EDIT_OPTIONS=array( 'none'=>i18n::translate('None'), 'access'=>i18n::translate('Access'), 'edit'=>i18n::translate('Edit'), 'accept'=>i18n::translate('Accept'), 'admin'=>i18n::translate('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' ); $sort =safe_POST('sort' ); $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); $sort =safe_GET('sort', WT_REGEX_NOSCRIPT, $sort); $ged =safe_GET('ged', WT_REGEX_NOSCRIPT, $ged); // Extract form variables $oldusername =safe_POST('oldusername', WT_REGEX_USERNAME); $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()), $GEDCOM_DEFAULT_TAB); $new_comment =safe_POST('new_comment', WT_REGEX_UNSAFE); $new_comment_exp =safe_POST('new_comment_exp' ); $new_max_relation_path =safe_POST_integer('new_max_relation_path', 1, $MAX_RELATION_PATH_LENGTH, 2); $new_relationship_privacy=safe_POST('new_relationship_privacy', 'Y', 'N'); $new_auto_accept =safe_POST('new_auto_accept', 'Y', 'N'); $canadmin =safe_POST('canadmin', 'Y', 'N'); $visibleonline =safe_POST('visibleonline', 'Y', 'N'); $editaccount =safe_POST('editaccount', 'Y', 'N'); $verified =safe_POST('verified', 'yes', 'no'); $verified_by_admin =safe_POST('verified_by_admin', 'yes', 'no'); 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: useradmin.php"); 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.'), "
"; } 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=='yes' && get_user_setting($user_id, 'verified_by_admin')!='yes'); // 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, 'max_relation_path', $new_max_relation_path); set_user_setting($user_id, 'relationship_privacy', $new_relationship_privacy); 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 we're verifying a new user, send them a message to let them know if ($newly_verified && $action=='edituser2') { i18n::init($user_language); $serverURL = rtrim($SERVER_URL, '/'); $message=array(); $message["to"]=$username; $headers="From: ".$WEBTREES_EMAIL; $message["from"]=WT_USER_NAME; $message["subject"]=i18n::translate('Approval of account at %s', $serverURL); $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', $serverURL, $serverURL); $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', $serverURL)); $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', $serverURL, $serverURL)); $message["created"]=""; $message["method"]="messaging2"; addMessage($message); */ } // Reload the form cleanly, to allow the user to verify their changes header("Location: ".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'; } // Print the form to edit a user if ($action=="edituser") { $user_id=get_user_id($username); init_calendar_popup(); ?>
", i18n::translate('Update User Account'), ""; ?>
';"/>

$ged_name) { $varname='gedcomid'.$ged_id; ?> "; } ?>
:   "; print_findindi_link($varname, "", false, false, $ged_name); $GEDCOM=$ged_name; // library functions use global variable instead of parameter. $person=Person::getInstance($pid); if ($person) { echo ' ', PrintReady($person->getFullName()), '', $person->format_first_major_fact(WT_EVENTS_BIRT, 1), $person->format_first_major_fact(WT_EVENTS_DEAT, 1), ''; } echo "
$ged_name) { $varname='rootid'.$ged_id; ?>
:   "; print_findindi_link($varname, "", false, false, $ged_name); $GEDCOM=$ged_name; // library functions use global variable instead of parameter. $person=Person::getInstance($pid); if ($person) { echo ' ', PrintReady($person->getFullName()), '', $person->format_first_major_fact(WT_EVENTS_BIRT, 1), $person->format_first_major_fact(WT_EVENTS_DEAT, 1), ''; } ?>
disabled="disabled" /> />
$ged_name) { $varname = 'canedit'.$ged_id; echo ""; } ?>
$ged_name:  "; $tab++; echo "
/>
/>
/>
/>
/>
/>
  
';"/>
$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')=="yes")) unset($users[$user_id]); } else if ($filter == "adminusers") { if (get_user_setting($user_id, 'canadmin')!='Y') unset($users[$user_id]); } else if ($filter == "usunver") { if (get_user_setting($user_id, 'verified') == "yes") unset($users[$user_id]); } else if ($filter == "admunver") { if ((get_user_setting($user_id, 'verified_by_admin') == "yes") || (get_user_setting($user_id, 'verified') != "yes")) { 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]); } } } // Then show the users ?> "; echo i18n::translate('Send Message'), ""; } ?> "; echo i18n::translate('Delete'), ""; } ?> $user_name) { echo "\n"; if ($view != "preview") { echo "\t'; } $userName = getUserFullName($user_id); echo "\t\n"; 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 "\t\n"; echo "\t\n"; echo "\t\n"; if (((date("U") - (int)get_user_setting($user_id, 'reg_timestamp')) > 604800) && (get_user_setting($user_id, 'verified')!="yes")) echo "\t\n"; echo "\t\n"; echo "\t\n"; echo "\t\n"; if ($view != "preview") { echo "\t\n"; } echo "\n"; } ?>
" class="facts_label">", i18n::translate('User List'), ""; ?>
" class="topbottombar rtl">
"> "> \"\""; echo "
"; else echo "block\">"; echo "
 "; echo i18n::translate('Privileges'); ?>
"> "> "> ">
"; if ($user_id!=WT_USER_ID && get_user_setting($user_id, 'contactmethod')!='none') { echo "", i18n::translate('Send Message'), ""; } else { echo ' '; } echo '", $userName; if ($TEXT_DIRECTION=="ltr") echo getLRM(); else echo getRLM(); echo "", $user_name; else echo "\t", $user_name; } else echo "\t", $user_name; if (get_user_setting($user_id, "comment")) { $tempTitle = PrintReady(get_user_setting($user_id, "comment")); echo "
\"{$tempTitle}\""; } echo "
", Zend_Locale::getTranslation(get_user_setting($user_id, 'language'), 'language', WT_LOCALE), ""; echo "\"\""; echo ""; echo "
"; else echo "block\">"; echo "
    "; if (get_user_setting($user_id, 'canadmin')=='Y') { echo "
  • ", i18n::translate('User can administer'), "
  • \n"; } foreach ($all_gedcoms as $ged_id=>$ged_name) { switch (get_user_gedcom_setting($user_id, $ged_id, 'canedit')) { case 'admin': echo '
  • ', i18n::translate('Admin GEDCOM'); break; case 'accept': echo '
  • ', i18n::translate('Accept'); break; case 'edit': echo '
  • ', i18n::translate('Edit'); break; case 'access': echo '
  • ', i18n::translate('Access'); break; case 'none': default: echo '
  • ', i18n::translate('None'); break; } $uged = get_user_gedcom_setting($user_id, $ged_id, 'gedcomid'); if ($uged) { echo ' ', $ged_name, '
  • '; } else { echo ' ', $ged_name, ''; } } echo "
"; echo "
"; $k++; echo "
"; else echo "\t"; echo format_timestamp((int)get_user_setting($user_id, 'reg_timestamp')); echo ""; if ((int)get_user_setting($user_id, 'reg_timestamp') > (int)get_user_setting($user_id, 'sessiontime')) { echo i18n::translate('Never'), '
', i18n::time_ago(time() - (int)get_user_setting($user_id, 'reg_timestamp')); } else { echo format_timestamp((int)get_user_setting($user_id, 'sessiontime')), '
', i18n::time_ago(time() - (int)get_user_setting($user_id, 'sessiontime')); } echo "
"; if (get_user_setting($user_id, 'verified')=="yes") echo i18n::translate('Yes'); else echo i18n::translate('No'); echo ""; if (get_user_setting($user_id, 'verified_by_admin')=="yes") echo i18n::translate('Yes'); else echo i18n::translate('No'); echo ""; if (WT_USER_ID!=$user_id) echo "", i18n::translate('Delete'), ""; echo "
" class="topbottombar rtl">

$ged_name) { $varname='gedcomid'.$ged_id; ?> "; } ?>
:   "; print_findindi_link($varname, "", false, false, $ged_name); echo "
$ged_name) { $varname='rootid'.$ged_id; ?> \n"; } echo "
:   \n"; print_findindi_link($varname, "", false, false, $ged_name); echo "
"; ?>
$ged_name) { $varname='canedit'.$ged_id; $tab++; echo "\n"; } ?>
{$ged_name}:  "; echo "
/>
/>
  
"; echo ""; ?> $user_name) { $userName = getUserFullName($user_id); if ((int)get_user_setting($user_id, 'sessiontime') == "0") $datelogin = (int)get_user_setting($user_id, 'reg_timestamp'); else $datelogin = (int)get_user_setting($user_id, 'sessiontime'); if ((mktime(0, 0, 0, (int)date("m")-$month, (int)date("d"), (int)date("Y")) > $datelogin) && (get_user_setting($user_id, 'verified') == "yes") && (get_user_setting($user_id, 'verified_by_admin') == "yes")) { ?>$user_name) { if (((date("U") - (int)get_user_setting($user_id, 'reg_timestamp')) > 604800) && (get_user_setting($user_id, 'verified')!="yes")) { $userName = getUserFullName($user_id); ?>$user_name) { if ((get_user_setting($user_id, 'verified_by_admin')!="yes") && (get_user_setting($user_id, 'verified') == "yes")) { $userName = getUserFullName($user_id); ?>$user_name) { if (get_user_setting($user_id, 'verified_by_admin')=="yes") { $tempArray = unserialize(get_user_setting($user_id, 'canedit')); if (is_array($tempArray)) { foreach($tempArray as $gedid=>$data) { if (!get_id_from_gedcom($gedid) && !in_array($gedid, $gedrights)) $gedrights[] = $gedid; } } $tempArray = unserialize(get_user_setting($user_id, 'gedcomid')); if (is_array($tempArray)) { foreach($tempArray as $gedid=>$data) { if (!get_id_from_gedcom($gedid) && !in_array($gedid, $gedrights)) $gedrights[] = $gedid; } } $tempArray = unserialize(get_user_setting($user_id, 'rootid')); if (is_array($tempArray)) { foreach($tempArray as $gedid=>$data) { if (!get_id_from_gedcom($gedid) && !in_array($gedid, $gedrights)) $gedrights[] = $gedid; } } } } ksort($gedrights); foreach($gedrights as $key=>$ged) { ?>"; } ?>

", i18n::translate('Number of months since the last login for a user\'s account to be considered inactive: '), "
Display(false); $ucnt++; ?>" value="yes" />
" value="yes" />
" value="yes" />
" value="yes" />
"; echo i18n::translate('Nothing found to cleanup'), "
0) { ?> 
$user_name) { $var = "del_".str_replace(array(".", "-", " "), array("_", "_", "_"), $user_name); if (safe_POST($var)=='yes') { delete_user($user_id); AddToLog("deleted user ->{$user_name}<-", 'auth'); echo i18n::translate('Deleted user: '); echo $user_name, "
"; } else { $tempArray = unserialize(get_user_setting($user_id, 'canedit')); if (is_array($tempArray)) { foreach ($tempArray as $gedid=>$data) { $var = "delg_".str_replace(array(".", "-", " "), "_", $gedid); if (safe_POST($var)=='yes' && get_user_gedcom_setting($user_id, $gedid, 'canedit')) { set_user_gedcom_setting($user_id, $gedid, 'canedit', null); echo $gedid, ":  ", i18n::translate('Unset GEDCOM rights for '), $user_name, "
"; } } } $tempArray = unserialize(get_user_setting($user_id, 'rootid')); if (is_array($tempArray)) { foreach ($tempArray as $gedid=>$data) { $var = "delg_".str_replace(array(".", "-", " "), "_", $gedid); if (safe_POST($var)=='yes' && get_user_gedcom_setting($user_id, $gedid, 'rootid')) { set_user_gedcom_setting($user_id, $gedid, 'rootid', null); echo $gedid, ":  ", i18n::translate('Unset root ID for '), $user_name, "
"; } } } $tempArray = unserialize(get_user_setting($user_id, 'gedcomid')); if (is_array($tempArray)) { foreach ($tempArray as $gedid=>$data) { $var = "delg_".str_replace(array(".", "-", " "), "_", $gedid); if (safe_POST($var)=='yes' && get_user_gedcom_setting($user_id, $gedid, 'gedcomid')) { set_user_gedcom_setting($user_id, $gedid, 'gedcomid', null); echo $gedid, ":  ", i18n::translate('Unset GEDCOM ID for '), $user_name, "
"; } } } } } echo "
"; } // Print main menu // NOTE: WORKING ?>




$user_name) { $totusers = $totusers + 1; if (((date("U") - (int)get_user_setting($user_id, 'reg_timestamp')) > 604800) && (get_user_setting($user_id, 'verified')!="yes")) $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') != "yes") && (get_user_setting($user_id, 'verified') == "yes")) { $nverusers++; } if (get_user_setting($user_id, 'verified') != "yes") { $applusers++; } if (get_user_setting($user_id, 'canadmin')=='Y') { $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 ""; echo ""; echo ""; echo ""; asort($gedadmin); $ind = 0; foreach ($gedadmin as $key=>$geds) { if ($ind !=0) echo ""; $ind = 1; echo ""; } echo ""; echo ""; echo ""; echo ""; foreach ($userlang as $key=>$ulang) { echo ''; } echo "
", i18n::translate('Total number of users'), "", $totusers, "
     "; if ($adminusers == 0) echo i18n::translate('Site Administrators'); else echo "", i18n::translate('Site Administrators'), ""; echo "", $adminusers, "
", i18n::translate('GEDCOM Administrators'), "
     "; if ($geds["number"] == 0) echo $geds["name"]; else echo "", $geds["name"], ""; echo "", $geds["number"], "
"; if ($warnusers == 0) echo i18n::translate('Users with warnings'); else echo "", i18n::translate('Users with warnings'), ""; echo "", $warnusers, "
"; if ($applusers == 0) echo i18n::translate('Unverified by User'); else echo "", i18n::translate('Unverified by User'), ""; echo "", $applusers, "
"; if ($nverusers == 0) echo i18n::translate('Unverified by Administrator'); else echo "", i18n::translate('Unverified by Administrator'), ""; echo "", $nverusers, "
", i18n::translate('Users\' languages'), "', $ulang['langname'], '', $ulang['number'], '
"; echo "
"; ?>