', WT_I18N::translate('Restrict to immediate family'), help_link('RELATIONSHIP_PATH_LENGTH'), '
',
'
';
foreach (WT_Tree::getAll() as $tree) {
echo
'
',
$tree->tree_title_html,
//Pedigree root person
'
',
// TODO: autocomplete/find/etc. for this field
edit_field_inline('user_gedcom_setting-'.$user_id.'-'.$tree->tree_id.'-rootid', $tree->getUserPreference($user, 'rootid')),
'
',
// TODO: autocomplete/find/etc. for this field
edit_field_inline('user_gedcom_setting-'.$user_id.'-'.$tree->tree_id.'-gedcomid', $tree->getUserPreference($user, 'gedcomid')),
'
';
exit;
case 'createuser':
if (!WT_Filter::checkCsrf()) {
$action='createform';
} elseif (User::findByIdentifier($username)) {
WT_FlashMessages::addMessage(WT_I18N::translate('Duplicate user name. A user with that user name already exists. Please choose another user name.'));
$action='createform';
} elseif (User::findByIdentifier($emailaddress)) {
WT_FlashMessages::addMessage(WT_I18N::translate('Duplicate email address. A user with that email already exists.'));
$action='createform';
} elseif ($pass1!=$pass2) {
WT_FlashMessages::addMessage(WT_I18N::translate('Passwords do not match.'));
$action='createform';
} else {
$user = User::create($username, $realname, $emailaddress, $pass1);
$user
->setPreference('reg_timestamp', date('U'))
->setPreference('sessiontime', '0')
->setPreference('theme', $user_theme)
->setPreference('language', $user_language)
->setPreference('contactmethod', $new_contact_method)
->setPreference('comment', $new_comment)
->setPreference('auto_accept', $new_auto_accept)
->setPreference('canadmin', $canadmin)
->setPreference('visibleonline', $visibleonline)
->setPreference('editaccount', $editaccount)
->setPreference('verified', $verified)
->setPreference('verified_by_admin', $verified_by_admin);
foreach (WT_Tree::getAll() as $tree) {
$tree->setUserPreference($user, 'gedcomid', WT_Filter::post('gedcomid'.$tree->tree_id, WT_REGEX_XREF));
$tree->setUserPreference($user, 'rootid', WT_Filter::post('rootid'.$tree->tree_id, WT_REGEX_XREF));
$tree->setUserPreference($user, 'canedit', WT_Filter::post('canedit'.$tree->tree_id, implode('|', array_keys($ALL_EDIT_OPTIONS))));
if (WT_Filter::post('gedcomid'.$tree->tree_id, WT_REGEX_XREF)) {
$tree->setUserPreference($user, 'RELATIONSHIP_PATH_LENGTH', WT_Filter::postInteger('RELATIONSHIP_PATH_LENGTH'.$tree->tree_id, 0, 10, 0));
} else {
// Do not allow a path length to be set if the individual ID is not
$tree->setUserPreference($user, 'RELATIONSHIP_PATH_LENGTH', null);
}
}
Log::addAuthenticationLog("User ->{$username}<- created");
header('Location: ' . WT_SERVER_NAME . WT_SCRIPT_PATH . WT_SCRIPT_NAME);
WT_Session::writeClose();
exit;
}
}
$controller->pageHeader();
switch ($action) {
case 'createform':
$controller
->addExternalJavascript(WT_STATIC_URL . 'js/autocomplete.js')
->addInlineJavascript('autocomplete();');
init_calendar_popup();
$controller->addInlineJavascript('
function checkform(frm) {
if (frm.username.value=="") {
alert("'.WT_I18N::translate('You must enter a user name.').'");
frm.username.focus();
return false;
}
if (frm.realname.value=="") {
alert("'.WT_I18N::translate('You must enter a real name.').'");
frm.realname.focus();
return false;
}
if (frm.pass1.value=="") {
alert("'.WT_I18N::translate('You must enter a password.').'");
frm.pass1.focus();
return false;
}
if (frm.emailaddress.value=="") {
alert("'.WT_I18N::translate('You must enter an email address.').'");
frm.emailaddress.focus();
return false;
}
if (frm.pass2.value=="") {
alert("'.WT_I18N::translate('You must confirm the password.').'");
frm.pass2.focus();
return false;
}
if (frm.pass1.value.length < 6) {
alert("'.WT_I18N::translate('Passwords must contain at least 6 characters.').'");
frm.pass1.value = "";
frm.pass2.value = "";
frm.pass1.focus();
return false;
}
return true;
}
jQuery(".relpath").change(function() {
var fieldIDx = jQuery(this).attr("id");
var idNum = fieldIDx.replace("RELATIONSHIP_PATH_LENGTH","");
var newIDx = "gedcomid"+idNum;
if (jQuery("#"+newIDx).val()=="") {
alert("'.WT_I18N::translate('You must specify an individual record before you can restrict the user to their immediate family.').'");
jQuery(this).val("");
}
});
function regex_quote(str) {
return str.replace(/[\\\\.?+*()[\](){}|]/g, "\\\\$&");
}
');
echo '
';
break;
case 'cleanup':
?>
getUserId()) == '1') {
Log::addAuthenticationLog('Deleted user: ' . $user->getUserName());
echo WT_I18N::translate('Deleted user: '), $user->getUserName(), ' ';
$user->delete();
}
}
break;
case 'listusers':
default:
echo
'
',
'',
'
',
'
',
'
user-id
',
'
', WT_I18N::translate('Username'), '
',
'
', WT_I18N::translate('Real name'), '
',
'
', WT_I18N::translate('Email'), '
',
'
', /* COLSPAN does not work? */
'
', WT_I18N::translate('Language'), '
',
'
date_registered
',
'
', WT_I18N::translate('Date registered'), '
',
'
last_login
',
'
', WT_I18N::translate('Last logged in'), '
',
'
', WT_I18N::translate('Verified'), '
',
'
', WT_I18N::translate('Approved'), '
',
'
',
'
',
'',
'',
'',
'
';
$controller
->addExternalJavascript(WT_JQUERY_DATATABLES_URL)
->addExternalJavascript(WT_JQUERY_JEDITABLE_URL)
->addInlineJavascript('
var oTable = jQuery("#list").dataTable({
dom: \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
'.WT_I18N::datatablesI18N().',
processing: true,
serverSide: true,
ajax: "'.WT_SCRIPT_NAME.'?action=loadrows",
jQueryUI: true,
autoWidth: false,
pageLength: ' . Auth::user()->getPreference('admin_users_page_size', 10).',
pagingType: "full_numbers",
sorting: [[2,"asc"]],
columns: [
/* details */ { sortable: false, class: "icon-open" },
/* user-id */ { visible: false },
/* user_name */ null,
/* real_name */ null,
/* email */ null,
/* email link */ { sortable: false },
/* language */ null,
/* registered (sort) */ { visible: false },
/* registered */ { dataSort: 7 },
/* last_login (sort) */ { visible: false },
/* last_login */ { dataSort: 9 },
/* verified */ { class: "center" },
/* approved */ { class: "center" },
/* delete */ { sortable: false }
],
"drawCallback": function() {
// Our JSON responses include Javascript as well as HTML. This does not get executed automatically…
jQuery("#list script").each(function() {
eval(this.text);
});
}
});
/* When clicking on the +/- icon, we expand/collapse the details block */
jQuery("#list tbody").on("click", "td.icon-close", function () {
var nTr=this.parentNode;
jQuery(this).removeClass("icon-close");
oTable.fnClose(nTr);
jQuery(this).addClass("icon-open");
});
jQuery("#list tbody").on("click", "td.icon-open", function () {
var nTr=this.parentNode;
jQuery(this).removeClass("icon-open");
var aData=oTable.fnGetData(nTr);
jQuery.get("'.WT_SCRIPT_NAME.'?action=load1row&user_id="+aData[1], function(data) {
oTable.fnOpen(nTr, data, "details");
});
jQuery(this).addClass("icon-close");
});
oTable.fnFilter("'.WT_Filter::get('filter').'");
');
break;
}