. */ namespace Fisharebest\Webtrees; /** * Defined in session.php * * @global Tree $WT_TREE */ global $WT_TREE; use Fisharebest\Webtrees\Controller\AjaxController; use Fisharebest\Webtrees\Controller\PageController; use Fisharebest\Webtrees\Functions\Functions; use Fisharebest\Webtrees\Functions\FunctionsDb; define('WT_SCRIPT_NAME', 'index.php'); require './includes/session.php'; // The only option for action is "ajax" $action = Filter::get('action'); // The default view depends on whether we are logged in if (Auth::check()) { $ctype = Filter::get('ctype', 'gedcom|user', 'user'); } else { $ctype = 'gedcom'; } // Get the blocks list if ($ctype === 'user') { $blocks = FunctionsDb::getUserBlocks(Auth::id()); } else { $blocks = FunctionsDb::getTreeBlocks($WT_TREE->getTreeId()); } $active_blocks = Module::getActiveBlocks($WT_TREE); // The latest version is shown on the administration page. This updates it every day. Functions::fetchLatestVersion(); // We generate individual blocks using AJAX if ($action === 'ajax') { $controller = new AjaxController; $controller->pageHeader(); // Check we’re displaying an allowable block. $block_id = Filter::getInteger('block_id'); if (array_key_exists($block_id, $blocks['main'])) { $module_name = $blocks['main'][$block_id]; } elseif (array_key_exists($block_id, $blocks['side'])) { $module_name = $blocks['side'][$block_id]; } else { return; } if (array_key_exists($module_name, $active_blocks)) { echo $active_blocks[$module_name]->getBlock($block_id); } return; } // Redirect search engines to the full URL if (Filter::get('ctype') !== $ctype || Filter::get('ged') !== $WT_TREE->getName()) { header('Location: ' . WT_BASE_URL . 'index.php?ctype=' . $ctype . '&ged=' . $WT_TREE->getNameUrl()); return; } $controller = new PageController; if ($ctype === 'user') { $controller->restrictAccess(Auth::check()); } $controller ->setPageTitle($ctype === 'user' ? I18N::translate('My page') : $WT_TREE->getTitle()) ->setMetaRobots('index,follow') ->pageHeader() // By default jQuery modifies AJAX URLs to disable caching, causing JS libraries to be loaded many times. ->addInlineJavascript('jQuery.ajaxSetup({cache:true});'); if ($ctype === 'user') { echo '
'; echo '

', I18N::translate('My page'), '

'; } else { echo '
'; } if ($blocks['main']) { if ($blocks['side']) { echo '
'; } else { echo '
'; } foreach ($blocks['main'] as $block_id => $module_name) { if (array_key_exists($module_name, $active_blocks)) { if (Auth::isSearchEngine() || !$active_blocks[$module_name]->loadAjax()) { // Load the block directly echo $active_blocks[$module_name]->getBlock($block_id); } else { // Load the block asynchronously echo '
'; $controller->addInlineJavascript( 'jQuery("#block_' . $block_id . '").load("index.php?ctype=' . $ctype . '&action=ajax&block_id=' . $block_id . '");' ); } } } echo '
'; } if ($blocks['side']) { if ($blocks['main']) { echo '
'; } else { echo '
'; } foreach ($blocks['side'] as $block_id => $module_name) { if (array_key_exists($module_name, $active_blocks)) { if (Auth::isSearchEngine() || !$active_blocks[$module_name]->loadAjax()) { // Load the block directly echo $active_blocks[$module_name]->getBlock($block_id); } else { // Load the block asynchronously echo '
'; $controller->addInlineJavascript( 'jQuery("#block_' . $block_id . '").load("index.php?ctype=' . $ctype . '&action=ajax&block_id=' . $block_id . '");' ); } } } echo '
'; } echo '
';