. */ namespace Fisharebest\Webtrees; use Fisharebest\Webtrees\Controller\PageController; use Fisharebest\Webtrees\Functions\FunctionsEdit; /** @global Tree $WT_TREE */ global $WT_TREE; require 'includes/session.php'; $controller = new PageController; $controller->restrictAccess(Auth::isManager($WT_TREE)); $french_calendar_start = new Date('22 SEP 1792'); $french_calendar_end = new Date('31 DEC 1805'); $gregorian_calendar_start = new Date('15 OCT 1582'); $surname_list_styles = [ 'style1' => /* I18N: Layout option for lists of names */ I18N::translate('list'), 'style2' => /* I18N: Layout option for lists of names */ I18N::translate('table'), 'style3' => /* I18N: Layout option for lists of names */ I18N::translate('tag cloud'), ]; $layouts = [ 0 => /* I18N: page orientation */ I18N::translate('Portrait'), 1 => /* I18N: page orientation */ I18N::translate('Landscape'), ]; $formats = [ '' => /* I18N: None of the other options */ I18N::translate('none'), 'markdown' => /* I18N: https://en.wikipedia.org/wiki/Markdown */ I18N::translate('markdown'), ]; $source_types = [ 0 => I18N::translate('none'), 1 => I18N::translate('facts'), 2 => I18N::translate('records'), ]; $THEME_OPTIONS = ['' => I18N::translate('')] + Theme::themeNames(); $PRIVACY_CONSTANTS = [ 'none' => I18N::translate('Show to visitors'), 'privacy' => I18N::translate('Show to members'), 'confidential' => I18N::translate('Show to managers'), 'hidden' => I18N::translate('Hide from everyone'), ]; $tags = array_unique(array_merge( explode(',', $WT_TREE->getPreference('INDI_FACTS_ADD')), explode(',', $WT_TREE->getPreference('INDI_FACTS_UNIQUE')), explode(',', $WT_TREE->getPreference('FAM_FACTS_ADD')), explode(',', $WT_TREE->getPreference('FAM_FACTS_UNIQUE')), explode(',', $WT_TREE->getPreference('NOTE_FACTS_ADD')), explode(',', $WT_TREE->getPreference('NOTE_FACTS_UNIQUE')), explode(',', $WT_TREE->getPreference('SOUR_FACTS_ADD')), explode(',', $WT_TREE->getPreference('SOUR_FACTS_UNIQUE')), explode(',', $WT_TREE->getPreference('REPO_FACTS_ADD')), explode(',', $WT_TREE->getPreference('REPO_FACTS_UNIQUE')), ['SOUR', 'REPO', 'OBJE', '_PRIM', 'NOTE', 'SUBM', 'SUBN', '_UID', 'CHAN'] )); $all_tags = []; foreach ($tags as $tag) { if ($tag) { $all_tags[$tag] = GedcomTag::getLabel($tag); } } uasort($all_tags, '\Fisharebest\Webtrees\I18N::strcasecmp'); $resns = Database::prepare( "SELECT default_resn_id, tag_type, xref, resn" . " FROM `##default_resn`" . " LEFT JOIN `##name` ON (gedcom_id=n_file AND xref=n_id AND n_num=0)" . " WHERE gedcom_id=?" . " ORDER BY xref IS NULL, n_sort, xref, tag_type" )->execute([$WT_TREE->getTreeId()])->fetchAll(); foreach ($resns as $resn) { $resn->record = GedcomRecord::getInstance($resn->xref, $WT_TREE); if ($resn->tag_type) { $resn->tag_label = GedcomTag::getLabel($resn->tag_type); } else { $resn->tag_label = ''; } } usort($resns, function (\stdClass $x, \stdClass $y) { return I18N::strcasecmp($x->tag_label, $y->tag_label); }); // We have two fields in one $CALENDAR_FORMATS = explode('_and_', $WT_TREE->getPreference('CALENDAR_FORMAT') . '_and_'); // Split into separate fields $relatives_events = explode(',', $WT_TREE->getPreference('SHOW_RELATIVES_EVENTS')); switch (Filter::post('action')) { case 'privacy': foreach (Filter::postArray('delete', WT_REGEX_INTEGER) as $delete_resn) { Database::prepare( "DELETE FROM `##default_resn` WHERE default_resn_id=?" )->execute([$delete_resn]); } $xrefs = Filter::postArray('xref', WT_REGEX_XREF); $tag_types = Filter::postArray('tag_type', WT_REGEX_TAG); $resns = Filter::postArray('resn'); foreach ($xrefs as $n => $xref) { $tag_type = $tag_types[$n]; $resn = $resns[$n]; if ($tag_type || $xref) { // Delete any existing data if ($xref === '') { Database::prepare( "DELETE FROM `##default_resn` WHERE gedcom_id=? AND tag_type=? AND xref IS NULL" )->execute([$WT_TREE->getTreeId(), $tag_type]); } if ($tag_type === '') { Database::prepare( "DELETE FROM `##default_resn` WHERE gedcom_id=? AND xref=? AND tag_type IS NULL" )->execute([$WT_TREE->getTreeId(), $xref]); } // Add (or update) the new data Database::prepare( "REPLACE INTO `##default_resn` (gedcom_id, xref, tag_type, resn) VALUES (?, NULLIF(?, ''), NULLIF(?, ''), ?)" )->execute([$WT_TREE->getTreeId(), $xref, $tag_type, $resn]); } } $WT_TREE->setPreference('HIDE_LIVE_PEOPLE', Filter::postBool('HIDE_LIVE_PEOPLE')); $WT_TREE->setPreference('KEEP_ALIVE_YEARS_BIRTH', Filter::post('KEEP_ALIVE_YEARS_BIRTH', WT_REGEX_INTEGER, 0)); $WT_TREE->setPreference('KEEP_ALIVE_YEARS_DEATH', Filter::post('KEEP_ALIVE_YEARS_DEATH', WT_REGEX_INTEGER, 0)); $WT_TREE->setPreference('MAX_ALIVE_AGE', Filter::post('MAX_ALIVE_AGE', WT_REGEX_INTEGER, 100)); $WT_TREE->setPreference('REQUIRE_AUTHENTICATION', Filter::postBool('REQUIRE_AUTHENTICATION')); $WT_TREE->setPreference('SHOW_DEAD_PEOPLE', Filter::post('SHOW_DEAD_PEOPLE')); $WT_TREE->setPreference('SHOW_LIVING_NAMES', Filter::post('SHOW_LIVING_NAMES')); $WT_TREE->setPreference('SHOW_PRIVATE_RELATIONSHIPS', Filter::post('SHOW_PRIVATE_RELATIONSHIPS')); FlashMessages::addMessage(I18N::translate('The preferences for the family tree “%s” have been updated.', $WT_TREE->getTitleHtml()), 'success'); header('Location: admin_trees_manage.php?ged=' . $WT_TREE->getNameUrl()); return; case 'general': if (!Filter::checkCsrf()) { break; } // Coming soon if (Filter::postBool('all_trees')) { FlashMessages::addMessage(I18N::translate('The preferences for all family trees have been updated.', $WT_TREE->getTitleHtml()), 'success'); } if (Filter::postBool('new_trees')) { FlashMessages::addMessage(I18N::translate('The preferences for new family trees have been updated.', $WT_TREE->getTitleHtml()), 'success'); } $WT_TREE->setPreference('ADVANCED_NAME_FACTS', implode(',', Filter::postArray('ADVANCED_NAME_FACTS'))); $WT_TREE->setPreference('ADVANCED_PLAC_FACTS', implode(',', Filter::postArray('ADVANCED_PLAC_FACTS'))); $WT_TREE->setPreference('ALLOW_THEME_DROPDOWN', Filter::postBool('ALLOW_THEME_DROPDOWN')); // For backwards compatibility with webtrees 1.x we store the two calendar formats in one variable // e.g. "gregorian_and_jewish" $WT_TREE->setPreference('CALENDAR_FORMAT', implode('_and_', array_unique([ Filter::post('CALENDAR_FORMAT0', 'gregorian|julian|french|jewish|hijri|jalali', 'none'), Filter::post('CALENDAR_FORMAT1', 'gregorian|julian|french|jewish|hijri|jalali', 'none'), ]))); $WT_TREE->setPreference('CHART_BOX_TAGS', Filter::post('CHART_BOX_TAGS')); $WT_TREE->setPreference('CONTACT_USER_ID', Filter::post('CONTACT_USER_ID')); $WT_TREE->setPreference('DEFAULT_PEDIGREE_GENERATIONS', Filter::post('DEFAULT_PEDIGREE_GENERATIONS')); $WT_TREE->setPreference('EXPAND_NOTES', Filter::postBool('EXPAND_NOTES')); $WT_TREE->setPreference('EXPAND_SOURCES', Filter::postBool('EXPAND_SOURCES')); $WT_TREE->setPreference('FAM_FACTS_ADD', implode(',', Filter::postArray('FAM_FACTS_ADD'))); $WT_TREE->setPreference('FAM_FACTS_QUICK', implode(',', Filter::postArray('FAM_FACTS_QUICK'))); $WT_TREE->setPreference('FAM_FACTS_UNIQUE', implode(',', Filter::postArray('FAM_FACTS_UNIQUE'))); $WT_TREE->setPreference('FAM_ID_PREFIX', Filter::post('FAM_ID_PREFIX')); $WT_TREE->setPreference('FULL_SOURCES', Filter::postBool('FULL_SOURCES')); $WT_TREE->setPreference('FORMAT_TEXT', Filter::post('FORMAT_TEXT')); $WT_TREE->setPreference('GEDCOM_ID_PREFIX', Filter::post('GEDCOM_ID_PREFIX')); $WT_TREE->setPreference('GEDCOM_MEDIA_PATH', Filter::post('GEDCOM_MEDIA_PATH')); $WT_TREE->setPreference('GENERATE_UIDS', Filter::postBool('GENERATE_UIDS')); $WT_TREE->setPreference('GEONAMES_ACCOUNT', Filter::post('GEONAMES_ACCOUNT')); $WT_TREE->setPreference('HIDE_GEDCOM_ERRORS', Filter::postBool('HIDE_GEDCOM_ERRORS')); $WT_TREE->setPreference('INDI_FACTS_ADD', implode(',', Filter::postArray('INDI_FACTS_ADD'))); $WT_TREE->setPreference('INDI_FACTS_QUICK', implode(',', Filter::postArray('INDI_FACTS_QUICK'))); $WT_TREE->setPreference('INDI_FACTS_UNIQUE', implode(',', Filter::postArray('INDI_FACTS_UNIQUE'))); $WT_TREE->setPreference('LANGUAGE', Filter::post('LANGUAGE')); $WT_TREE->setPreference('MAX_DESCENDANCY_GENERATIONS', Filter::post('MAX_DESCENDANCY_GENERATIONS')); $WT_TREE->setPreference('MAX_PEDIGREE_GENERATIONS', Filter::post('MAX_PEDIGREE_GENERATIONS')); $WT_TREE->setPreference('MEDIA_ID_PREFIX', Filter::post('MEDIA_ID_PREFIX')); $WT_TREE->setPreference('MEDIA_UPLOAD', Filter::post('MEDIA_UPLOAD')); $WT_TREE->setPreference('META_DESCRIPTION', Filter::post('META_DESCRIPTION')); $WT_TREE->setPreference('META_TITLE', Filter::post('META_TITLE')); $WT_TREE->setPreference('NOTE_ID_PREFIX', Filter::post('NOTE_ID_PREFIX')); $WT_TREE->setPreference('NO_UPDATE_CHAN', Filter::postBool('NO_UPDATE_CHAN')); $WT_TREE->setPreference('PEDIGREE_LAYOUT', Filter::postBool('PEDIGREE_LAYOUT')); $WT_TREE->setPreference('PEDIGREE_ROOT_ID', Filter::post('PEDIGREE_ROOT_ID', WT_REGEX_XREF)); $WT_TREE->setPreference('PEDIGREE_SHOW_GENDER', Filter::postBool('PEDIGREE_SHOW_GENDER')); $WT_TREE->setPreference('PREFER_LEVEL2_SOURCES', Filter::post('PREFER_LEVEL2_SOURCES')); $WT_TREE->setPreference('QUICK_REQUIRED_FACTS', implode(',', Filter::postArray('QUICK_REQUIRED_FACTS'))); $WT_TREE->setPreference('QUICK_REQUIRED_FAMFACTS', implode(',', Filter::postArray('QUICK_REQUIRED_FAMFACTS'))); $WT_TREE->setPreference('REPO_FACTS_ADD', implode(',', Filter::postArray('REPO_FACTS_ADD'))); $WT_TREE->setPreference('REPO_FACTS_QUICK', implode(',', Filter::postArray('REPO_FACTS_QUICK'))); $WT_TREE->setPreference('REPO_FACTS_UNIQUE', implode(',', Filter::postArray('REPO_FACTS_UNIQUE'))); $WT_TREE->setPreference('REPO_ID_PREFIX', Filter::post('REPO_ID_PREFIX')); $WT_TREE->setPreference('SHOW_COUNTER', Filter::postBool('SHOW_COUNTER')); $WT_TREE->setPreference('SHOW_EST_LIST_DATES', Filter::postBool('SHOW_EST_LIST_DATES')); $WT_TREE->setPreference('SHOW_FACT_ICONS', Filter::postBool('SHOW_FACT_ICONS')); $WT_TREE->setPreference('SHOW_GEDCOM_RECORD', Filter::postBool('SHOW_GEDCOM_RECORD')); $WT_TREE->setPreference('SHOW_HIGHLIGHT_IMAGES', Filter::postBool('SHOW_HIGHLIGHT_IMAGES')); $WT_TREE->setPreference('SHOW_LAST_CHANGE', Filter::postBool('SHOW_LAST_CHANGE')); $WT_TREE->setPreference('SHOW_LDS_AT_GLANCE', Filter::postBool('SHOW_LDS_AT_GLANCE')); $WT_TREE->setPreference('SHOW_MEDIA_DOWNLOAD', Filter::post('SHOW_MEDIA_DOWNLOAD')); $WT_TREE->setPreference('SHOW_NO_WATERMARK', Filter::post('SHOW_NO_WATERMARK')); $WT_TREE->setPreference('SHOW_PARENTS_AGE', Filter::postBool('SHOW_PARENTS_AGE')); $WT_TREE->setPreference('SHOW_PEDIGREE_PLACES', Filter::post('SHOW_PEDIGREE_PLACES')); $WT_TREE->setPreference('SHOW_PEDIGREE_PLACES_SUFFIX', Filter::postBool('SHOW_PEDIGREE_PLACES_SUFFIX')); $WT_TREE->setPreference('SHOW_RELATIVES_EVENTS', implode(',', Filter::postArray('SHOW_RELATIVES_EVENTS'))); $WT_TREE->setPreference('SOURCE_ID_PREFIX', Filter::post('SOURCE_ID_PREFIX')); $WT_TREE->setPreference('SOUR_FACTS_ADD', implode(',', Filter::postArray('SOUR_FACTS_ADD'))); $WT_TREE->setPreference('SOUR_FACTS_QUICK', implode(',', Filter::postArray('SOUR_FACTS_QUICK'))); $WT_TREE->setPreference('SOUR_FACTS_UNIQUE', implode(',', Filter::postArray('SOUR_FACTS_UNIQUE'))); $WT_TREE->setPreference('SUBLIST_TRIGGER_I', Filter::post('SUBLIST_TRIGGER_I', WT_REGEX_INTEGER, 200)); $WT_TREE->setPreference('SURNAME_LIST_STYLE', Filter::post('SURNAME_LIST_STYLE')); $WT_TREE->setPreference('SURNAME_TRADITION', Filter::post('SURNAME_TRADITION')); $WT_TREE->setPreference('THEME_DIR', Filter::post('THEME_DIR')); $WT_TREE->setPreference('USE_SILHOUETTE', Filter::postBool('USE_SILHOUETTE')); $WT_TREE->setPreference('WEBMASTER_USER_ID', Filter::post('WEBMASTER_USER_ID')); $WT_TREE->setPreference('WEBTREES_EMAIL', Filter::post('WEBTREES_EMAIL')); $WT_TREE->setPreference('title', Filter::post('title')); // Only accept valid folders for MEDIA_DIRECTORY $MEDIA_DIRECTORY = preg_replace('/[\/\\\\]+/', '/', Filter::post('MEDIA_DIRECTORY') . '/'); if (substr($MEDIA_DIRECTORY, 0, 1) === '/') { $MEDIA_DIRECTORY = substr($MEDIA_DIRECTORY, 1); } if ($MEDIA_DIRECTORY) { if (is_dir(WT_DATA_DIR . $MEDIA_DIRECTORY)) { $WT_TREE->setPreference('MEDIA_DIRECTORY', $MEDIA_DIRECTORY); } elseif (File::mkdir(WT_DATA_DIR . $MEDIA_DIRECTORY)) { $WT_TREE->setPreference('MEDIA_DIRECTORY', $MEDIA_DIRECTORY); FlashMessages::addMessage(I18N::translate('The folder %s has been created.', Html::filename(WT_DATA_DIR . $MEDIA_DIRECTORY)), 'info'); } else { FlashMessages::addMessage(I18N::translate('The folder %s does not exist, and it could not be created.', Html::filename(WT_DATA_DIR . $MEDIA_DIRECTORY)), 'danger'); } } $gedcom = Filter::post('gedcom'); if ($gedcom && $gedcom !== $WT_TREE->getName()) { try { Database::prepare("UPDATE `##gedcom` SET gedcom_name = ? WHERE gedcom_id = ?")->execute([$gedcom, $WT_TREE->getTreeId()]); Database::prepare("UPDATE `##site_setting` SET setting_value = ? WHERE setting_name='DEFAULT_GEDCOM' AND setting_value = ?")->execute([$gedcom, $WT_TREE->getName()]); } catch (\Exception $ex) { // Probably a duplicate name. } } FlashMessages::addMessage(I18N::translate('The preferences for the family tree “%s” have been updated.', $WT_TREE->getTitleHtml()), 'success'); header('Location: admin_trees_manage.php'); return; } switch (Filter::get('action')) { case 'privacy': $controller ->setPageTitle($WT_TREE->getTitleHtml() . ' — ' . I18N::translate('Privacy')) ->addInlineJavascript(' $("#default-resn input[type=checkbox]").on("click", function() { if ($(this).prop("checked")) { $($(this).closest("tr").addClass("text-muted")); } else { $($(this).closest("tr").removeClass("text-muted")); } }); $("#add-resn").on("click", function() { $("#default-resn tbody").prepend($("#new-resn-template").html()); }); '); break; case 'general': $controller->setPageTitle($WT_TREE->getTitleHtml() . ' — ' . I18N::translate('Preferences')); break; default: header('Location: admin.php'); return; } $controller ->pageHeader() ->addExternalJavascript(WT_ADMIN_JS_URL); echo Bootstrap4::breadcrumbs([ 'admin.php' => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?>

getPageTitle() ?>

I18N::translate('Show to visitors'), '1' => I18N::translate('Show to members')], $WT_TREE->getPreference('REQUIRE_AUTHENTICATION'), ['id' => 'REQUIRE_AUTHENTICATION', 'name' => 'REQUIRE_AUTHENTICATION']) ?>

getPreference('SHOW_DEAD_PEOPLE'), ['id' => 'SHOW_DEAD_PEOPLE', 'name' => 'SHOW_DEAD_PEOPLE']) ?>

I18N::translate('Show to visitors'), '1' => I18N::translate('Show to members')], $WT_TREE->getPreference('HIDE_LIVE_PEOPLE'), ['id' => 'HIDE_LIVE_PEOPLE', 'name' => 'HIDE_LIVE_PEOPLE']) ?>

getPreference('KEEP_ALIVE_YEARS_BIRTH') . '" size="5" maxlength="3">', '' ) ?>

getPreference('SHOW_LIVING_NAMES'), ['id' => 'SHOW_LIVING_NAMES', 'name' => 'SHOW_LIVING_NAMES']) ?>

I18N::translate('Hide from everyone'), '1' => I18N::translate('Show to visitors')], $WT_TREE->getPreference('SHOW_PRIVATE_RELATIONSHIPS'), ['id' => 'SHOW_PRIVATE_RELATIONSHIPS', 'name' => 'SHOW_PRIVATE_RELATIONSHIPS']) ?>

record): ?> record->getFullName() ?> xref): ?>
xref ?> —
tag_label): ?> tag_label ?>
resn] ?>

?ged=

getPreference('PEDIGREE_ROOT_ID'), $WT_TREE), ['id' => 'PEDIGREE_ROOT_ID', 'name' => 'PEDIGREE_ROOT_ID']) ?>

'CALENDAR_FORMAT0']) ?>
'CALENDAR_FORMAT1']) ?>

display(false, null, false), $french_calendar_end->display(false, null, false), $gregorian_calendar_start->display(false, null, false)) ?>

getPreference('GENERATE_UIDS'), true) ?>


webtrees can automatically create emails to notify administrators of changes that need to be reviewed. webtrees also sends notification emails to users who have requested an account.

Usually, the “From:” field of these automatically created emails is something like From: webtrees-noreply@yoursite to show that no response to the email is required. To guard against spam or other email abuse, some email systems require each message’s “From:” field to reflect a valid email account and will not accept messages that are apparently from account webtrees-noreply.') ?>

getPreference('ALLOW_THEME_DROPDOWN'), true) ?>

getPreference('THEME_DIR'), ['id' => 'THEME_DIR', 'name' => 'THEME_DIR']) ?>

I18N::translate('Show to members'), Auth::PRIV_NONE => I18N::translate('Show to managers'), Auth::PRIV_HIDE => I18N::translate('Hide from everyone')], $WT_TREE->getPreference('MEDIA_UPLOAD'), ['id' => 'MEDIA_UPLOAD', 'name' => 'MEDIA_UPLOAD']) ?>

getPreference('SHOW_MEDIA_DOWNLOAD'), ['id' => 'SHOW_MEDIA_DOWNLOAD', 'name' => 'SHOW_MEDIA_DOWNLOAD']) ?>

getPreference('SHOW_HIGHLIGHT_IMAGES'), true) ?>

getPreference('USE_SILHOUETTE'), true) ?>

getPreference('SHOW_NO_WATERMARK'), ['id' => 'SHOW_NO_WATERMARK', 'name' => 'SHOW_NO_WATERMARK']) ?>

getPreference('SURNAME_LIST_STYLE'), ['id' => 'SURNAME_LIST_STYLE', 'name' => 'SURNAME_LIST_STYLE']) ?>


This option determines when sub-listing of surnames will occur. To disable sub-listing completely, set this option to zero.') ?>

getPreference('SHOW_EST_LIST_DATES'), true) ?>

getPreference('SHOW_LAST_CHANGE'), true) ?>

getPreference('PEDIGREE_LAYOUT'), true) ?>

getPreference('PEDIGREE_SHOW_GENDER'), true) ?>


Since the gender is also indicated by the color of the box, this option doesn’t conceal the gender. The option simply removes some duplicate information from the box.') ?>

getPreference('SHOW_PARENTS_AGE'), true) ?>

getPreference('SHOW_LDS_AT_GLANCE'), true) ?>

LDS ordinances for the individual. “B” indicates an LDS baptism. “E” indicates an LDS endowment. “S” indicates an LDS spouse sealing. “P” indicates an LDS child-to-parent sealing.') ?>

getPreference('SHOW_FACT_ICONS'), true) ?>

getPreference('EXPAND_NOTES'), true) ?>

Note record on the Individual page.') ?>

getPreference('EXPAND_SOURCES'), true) ?>

Source record on the Individual page.') ?>

I18N::translateContext('Show the [first/last] [N] parts of a place name.', 'first'), '1' => I18N::translateContext('Show the [first/last] [N] parts of a place name.', 'last'), ], $WT_TREE->getPreference('SHOW_PEDIGREE_PLACES_SUFFIX', ['name' => 'SHOW_PEDIGREE_PLACES_SUFFIX'])), Bootstrap4::select(FunctionsEdit::numericOptions(range(1,9)), $WT_TREE->getPreference('SHOW_PEDIGREE_PLACES'), ['name' => 'SHOW_PEDIGREE_PLACES']) ) ?>

village, county, or the last few part of it, such as region, country.') ?>

getPreference('FORMAT_TEXT'), true) ?>

getPreference('SHOW_GEDCOM_RECORD'), true) ?>

Yes will place links on individuals, sources, and families to let users bring up another window containing the raw data taken right out of the GEDCOM file.') ?>

getPreference('HIDE_GEDCOM_ERRORS'), true) ?>

getPreference('SHOW_COUNTER'), true) ?>

getPreference('INDI_FACTS_ADD')), ['id' => 'INDI_FACTS_ADD', 'name' => 'INDI_FACTS_ADD[]', 'class' => 'select2']) ?>

getPreference('INDI_FACTS_UNIQUE')), ['id' => 'INDI_FACTS_UNIQUE', 'name' => 'INDI_FACTS_UNIQUE[]', 'class' => 'select2']) ?>

getPreference('QUICK_REQUIRED_FACTS')), ['id' => 'QUICK_REQUIRED_FACTS', 'name' => 'QUICK_REQUIRED_FACTS[]', 'class' => 'select2']) ?>

getPreference('INDI_FACTS_QUICK')), ['id' => 'INDI_FACTS_QUICK', 'name' => 'INDI_FACTS_QUICK[]', 'class' => 'select2']) ?>

getPreference('FAM_FACTS_ADD')), ['id' => 'FAM_FACTS_ADD', 'name' => 'FAM_FACTS_ADD[]', 'class' => 'select2']) ?>

getPreference('FAM_FACTS_UNIQUE')), ['id' => 'FAM_FACTS_UNIQUE', 'name' => 'FAM_FACTS_UNIQUE[]', 'class' => 'select2']) ?>

getPreference('QUICK_REQUIRED_FAMFACTS')), ['id' => 'QUICK_REQUIRED_FAMFACTS', 'name' => 'QUICK_REQUIRED_FAMFACTS[]', 'class' => 'select2']) ?>

getPreference('FAM_FACTS_QUICK')), ['id' => 'FAM_FACTS_QUICK', 'name' => 'FAM_FACTS_QUICK[]', 'class' => 'select2']) ?>

getPreference('SOUR_FACTS_ADD')), ['id' => 'SOUR_FACTS_ADD', 'name' => 'SOUR_FACTS_ADD[]', 'class' => 'select2']) ?>

getPreference('SOUR_FACTS_UNIQUE')), ['id' => 'SOUR_FACTS_UNIQUE', 'name' => 'SOUR_FACTS_UNIQUE[]', 'class' => 'select2']) ?>

getPreference('SOUR_FACTS_QUICK')), ['id' => 'SOUR_FACTS_QUICK', 'name' => 'SOUR_FACTS_QUICK[]', 'class' => 'select2']) ?>

getPreference('REPO_FACTS_ADD')), ['id' => 'REPO_FACTS_ADD', 'name' => 'REPO_FACTS_ADD[]', 'class' => 'select2']) ?>

getPreference('REPO_FACTS_UNIQUE')), ['id' => 'REPO_FACTS_UNIQUE', 'name' => 'REPO_FACTS_UNIQUE[]', 'class' => 'select2']) ?>

getPreference('REPO_FACTS_QUICK')), ['id' => 'REPO_FACTS_QUICK', 'name' => 'REPO_FACTS_QUICK[]', 'class' => 'select2']) ?>

getPreference('ADVANCED_NAME_FACTS')), ['id' => 'ADVANCED_NAME_FACTS', 'name' => 'ADVANCED_NAME_FACTS[]', 'class' => 'select2']) ?>

getPreference('ADVANCED_PLAC_FACTS')), ['id' => 'ADVANCED_PLAC_FACTS', 'name' => 'ADVANCED_PLAC_FACTS[]', 'class' => 'select2']) ?>

getPreference('SURNAME_TRADITION'), false) ?>

getPreference('FULL_SOURCES'), true) ?>

getPreference('PREFER_LEVEL2_SOURCES'), true) ?>

getPreference('NO_UPDATE_CHAN'), true) ?>