. */ /** * Defined in session.php * * @global Tree $WT_TREE */ global $WT_TREE; define('WT_SCRIPT_NAME', 'admin_trees_manage.php'); require './includes/session.php'; $controller = new PageController; $controller ->addExternalJavascript(WT_ADMIN_JS_URL) ->restrictAccess(Auth::isAdmin() || Auth::isManager($WT_TREE)) ->setPageTitle(I18N::translate('Manage family trees')); $gedcom_files = glob(WT_DATA_DIR . '*.{ged,Ged,GED}', GLOB_NOSORT | GLOB_BRACE); // Process POST actions switch (Filter::post('action')) { case 'delete': $gedcom_id = Filter::postInteger('gedcom_id'); if (Filter::checkCsrf() && $gedcom_id) { $tree = Tree::findById($gedcom_id); FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success'); $tree->delete(); } header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME); return; case 'setdefault': if (Filter::checkCsrf()) { Site::setPreference('DEFAULT_GEDCOM', Filter::post('ged')); FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” will be shown to visitors when they first arrive at this website.', $WT_TREE->getTitleHtml()), 'success'); } header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME); return; case 'new_tree': $basename = basename(Filter::post('tree_name')); $tree_title = Filter::post('tree_title'); if (Filter::checkCsrf() && $basename && $tree_title) { if (Tree::findByName($basename)) { FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” already exists.', Filter::escapeHtml($basename)), 'danger'); } else { Tree::create($basename, $tree_title); FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been created.', Filter::escapeHtml($basename)), 'success'); } } header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME . '?ged=' . $basename); return; case 'replace_upload': $gedcom_id = Filter::postInteger('gedcom_id'); $keep_media = Filter::post('keep_media', '1', '0'); $GEDCOM_MEDIA_PATH = Filter::post('GEDCOM_MEDIA_PATH'); $WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0'); $tree = Tree::findById($gedcom_id); if (Filter::checkCsrf() && $tree) { $tree->setPreference('keep_media', $keep_media); $tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH); $tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES); if (isset($_FILES['tree_name'])) { if ($_FILES['tree_name']['error'] == 0 && is_readable($_FILES['tree_name']['tmp_name'])) { $tree->importGedcomFile($_FILES['tree_name']['tmp_name'], $_FILES['tree_name']['name']); } } else { FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger'); } } header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME); return; case 'replace_import': $basename = basename(Filter::post('tree_name')); $gedcom_id = Filter::postInteger('gedcom_id'); $keep_media = Filter::post('keep_media', '1', '0'); $GEDCOM_MEDIA_PATH = Filter::post('GEDCOM_MEDIA_PATH'); $WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0'); $tree = Tree::findById($gedcom_id); if (Filter::checkCsrf() && $tree) { $tree->setPreference('keep_media', $keep_media); $tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH); $tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES); if ($basename) { $tree->importGedcomFile(WT_DATA_DIR . $basename, $basename); } else { FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger'); } } header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME); return; case 'synchronize': if (Filter::checkCsrf()) { $basenames = array(); foreach ($gedcom_files as $gedcom_file) { $filemtime = filemtime($gedcom_file); // Only import files that have changed $basename = basename($gedcom_file); $basenames[] = $basename; $tree = Tree::findByName($basename); if (!$tree) { $tree = Tree::create($basename, $basename); } if ($tree->getPreference('filemtime') != $filemtime) { $tree->importGedcomFile($gedcom_file, $basename, false); $tree->setPreference('filemtime', $filemtime); FlashMessages::addMessage(I18N::translate('The GEDCOM file “%s” has been imported.', Filter::escapeHtml($basename)), 'success'); } } foreach (Tree::getAll() as $tree) { if (!in_array($tree->getName(), $basenames)) { FlashMessages::addMessage(I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success'); $tree->delete(); } } } header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME); return; } $default_tree_title = /* I18N: Default name for a new tree */ I18N::translate('My family tree'); $default_tree_name = 'tree'; $default_tree_number = 1; $existing_trees = Tree::getNameList(); while (array_key_exists($default_tree_name . $default_tree_number, $existing_trees)) { $default_tree_number++; } $default_tree_name .= $default_tree_number; // Process GET actions switch (Filter::get('action')) { case 'importform': $controller ->setPageTitle($WT_TREE->getTitleHtml() . ' — ' . I18N::translate('Import a GEDCOM file')) ->pageHeader(); ?>

getPageTitle(); ?>

getPreference('gedcom_filename') ?>

getTitleHtml()); ?>

'; echo ''; sort($files); foreach ($files as $gedcom_file) { echo ''; } if (!$files) { echo ''; } echo ''; ?>

C:\\Documents\\family\\photo.jpeg', 'family\\photo.jpeg', 'C:\\Documents\\'); ?>

pageHeader(); // List the gedcoms available to this user ?>

getPageTitle(); ?>

execute(array($tree->getTreeId()))->fetchOne(); if ($importing) { ?>
addInlineJavascript( 'jQuery("#import' . $tree->getTreeId() . '").load("import.php?gedcom_id=' . $tree->getTreeId() . '");' ); } ?>
?ged=

Important note: The transfer wizard is not able to assist with moving media items. You will need to set up and move or copy your media configuration and objects separately after the transfer wizard is finished.'); ?>

= 25): ?>