Seditio Source
Root |
./othercms/dotclear-2.22/inc/public/prepend.php
<?php
/**
 * @package Dotclear
 * @subpackage Public
 *
 * @copyright Olivier Meunier & Association Dotclear
 * @copyright GPL-2.0-only
 */
if (!empty($_GET['pf'])) {
    require
__DIR__ . '/../load_plugin_file.php';
    exit;
}

if (!empty(
$_GET['vf'])) {
    require
__DIR__ . '/../load_var_file.php';
    exit;
}

if (!isset(
$_SERVER['PATH_INFO'])) {
   
$_SERVER['PATH_INFO'] = '';
}

require_once
__DIR__ . '/../prepend.php';
require_once
__DIR__ . '/rs.extension.php';

# Loading blog
if (defined('DC_BLOG_ID')) {
    try {
       
$core->setBlog(DC_BLOG_ID);
    } catch (
Exception $e) {
       
init_prepend_l10n();
       
/* @phpstan-ignore-next-line */
       
__error(__('Database problem'), DC_DEBUG ?
           
__('The following error was encountered while trying to read the database:') . '</p><ul><li>' . $e->getMessage() . '</li></ul>' :
           
__('Something went wrong while trying to read the database.'), 620);
    }
}

if (
$core->blog->id == null) {
   
__error(__('Blog is not defined.'), __('Did you change your Blog ID?'), 630);
}

if ((bool) !
$core->blog->status) {
   
$core->unsetBlog();
   
__error(__('Blog is offline.'), __('This blog is offline. Please try again later.'), 670);
}

# Prepare for further notices, if any
$core->notices = new dcNotices($core);

# Cope with static home page option
if ($core->blog->settings->system->static_home) {
   
$core->url->registerDefault(['dcUrlHandlers', 'static_home']);
}

# Loading media
try {
   
$core->media = new dcMedia($core);
} catch (
Exception $e) {
}

# Creating template context
$_ctx = new context();

try {
   
$core->tpl = new dcTemplate(DC_TPL_CACHE, '$core->tpl', $core);
} catch (
Exception $e) {
   
__error(__('Can\'t create template files.'), $e->getMessage(), 640);
}

# Loading locales
$_lang = $core->blog->settings->system->lang;
$_lang = preg_match('/^[a-z]{2}(-[a-z]{2})?$/', $_lang) ? $_lang : 'en';

l10n::lang($_lang);
if (
l10n::set(__DIR__ . '/../../locales/' . $_lang . '/date') === false && $_lang != 'en') {
   
l10n::set(__DIR__ . '/../../locales/en/date');
}
l10n::set(__DIR__ . '/../../locales/' . $_lang . '/public');
l10n::set(__DIR__ . '/../../locales/' . $_lang . '/plugins');

// Set lexical lang
dcUtils::setlexicalLang('public', $_lang);

# Loading plugins
try {
   
$core->plugins->loadModules(DC_PLUGINS_ROOT, 'public', $_lang);
} catch (
Exception $e) {
}

# Loading themes
$core->themes = new dcThemes($core);
$core->themes->loadModules($core->blog->themes_path);

# Defining theme if not defined
if (!isset($__theme)) {
   
$__theme = $core->blog->settings->system->theme;
}

if (!
$core->themes->moduleExists($__theme)) {
   
$__theme = $core->blog->settings->system->theme = 'default';
}

$__parent_theme = $core->themes->moduleInfo($__theme, 'parent');
if (
$__parent_theme) {
    if (!
$core->themes->moduleExists($__parent_theme)) {
       
$__theme        = $core->blog->settings->system->theme        = 'default';
       
$__parent_theme = null;
    }
}

# If theme doesn't exist, stop everything
if (!$core->themes->moduleExists($__theme)) {
   
__error(__('Default theme not found.'), __('This either means you removed your default theme or set a wrong theme ' .
           
'path in your blog configuration. Please check theme_path value in ' .
           
'about:config module or reinstall default theme. (' . $__theme . ')'), 650);
}

# Ensure theme's settings namespace exists
$core->blog->settings->addNamespace('themes');

# Loading _public.php file for selected theme
$core->themes->loadNsFile($__theme, 'public');

# Loading translations for selected theme
if ($__parent_theme) {
   
$core->themes->loadModuleL10N($__parent_theme, $_lang, 'main');
}
$core->themes->loadModuleL10N($__theme, $_lang, 'main');

# --BEHAVIOR-- publicPrepend
$core->callBehavior('publicPrepend', $core);

# Prepare the HTTP cache thing
$mod_files = get_included_files();
$mod_ts    = [];
$mod_ts[]  = $core->blog->upddt;

$__theme_tpl_path = [
   
$core->blog->themes_path . '/' . $__theme . '/tpl',
];
if (
$__parent_theme) {
   
$__theme_tpl_path[] = $core->blog->themes_path . '/' . $__parent_theme . '/tpl';
}
$tplset = $core->themes->moduleInfo($core->blog->settings->system->theme, 'tplset');
if (!empty(
$tplset) && is_dir(__DIR__ . '/default-templates/' . $tplset)) {
   
$core->tpl->setPath(
       
$__theme_tpl_path,
       
__DIR__ . '/default-templates/' . $tplset,
       
$core->tpl->getPath()
    );
} else {
   
$core->tpl->setPath(
       
$__theme_tpl_path,
       
$core->tpl->getPath()
    );
}
$core->url->mode = $core->blog->settings->system->url_scan;

try {
   
# --BEHAVIOR-- publicBeforeDocument
   
$core->callBehavior('publicBeforeDocument', $core);

   
$core->url->getDocument();

   
# --BEHAVIOR-- publicAfterDocument
   
$core->callBehavior('publicAfterDocument', $core);
} catch (
Exception $e) {
   
__error($e->getMessage(), __('Something went wrong while loading template file for your blog.'), 660);
}