<?php // utf8-marker = äöü

/*
================================================== 
This file is a part of CMSimple 5.24
Released: 2026-08-09
Project website: www.cmsimple.org
================================================== 
CMSimple COPYRIGHT INFORMATION

(c) Gert Ebersbach - mail@ge-webdesign.de

CMSimple is released under the GPL3 licence. 
You may not remove copyright information from the files. 
Any modifications will fall under the copyleft conditions of GPL3.

GPL 3 Deutsch: http://www.gnu.de/documents/gpl.de.html
GPL 3 English: http://www.gnu.org/licenses/gpl.html

HISTORY:
-------------------------------------------------- 
2020-04-21 CMSimple 5 - www.cmsimple.org
(c) Gert Ebersbach - mail@ge-webdesign.de
-------------------------------------------------- 
2012-11-11 CMSimple 4 - www.cmsimple.org
(c) Gert Ebersbach - mail@ge-webdesign.de
-------------------------------------------------- 
CMSimple_XH 1.5.3
2012-03-19
based on CMSimple version 3.3 - December 31. 2009
For changelog, downloads and information please see http://www.cmsimple-xh.com
-------------------------------------------------- 
CMSimple version 3.3 - December 31. 2009
Small - simple - smart
(c) 1999-2009 Peter Andreas Harteg - peter@harteg.dk 

END CMSimple COPYRIGHT INFORMATION
================================================== 
*/

// wegen utf-8 Darstellung
if($_SERVER['QUERY_STRING'] === 'search' || $_SERVER['QUERY_STRING'] === 'search&normal') header('location: ./?search&search=öjönvvbvcbmX47cmvvjchdd3');

if(function_exists('opcache_get_status') && opcache_get_status(true)['opcache_enabled'] == 1)
{
	ini_set('opcache.validate_timestamps', 1);
	ini_set('opcache.revalidate_freq', 0);
}
ini_set('xcache.cacher', 'Off');
ini_set('xcache.stat', 'Off');

if(preg_match('/cms.php/i', $_SERVER['SCRIPT_NAME'])){die('Access Denied');}

$title = '';
$o = '';
$e = '';
$hjs = '';
$bjs = '';
$onload = '';

// version-informations
define('CMSIMPLE_VERSION', 'CMSimple 5.24');
define('CMSIMPLE_RELEASE', 2026080901);
define('CMSIMPLE_DATE', '2026-08-09');
define('CMSIMPLE_VERSIONSINFO', 'https://www.cmsimple.org/downloads_cmsimple40/versioninfo/version.nfo');
//END version-informations

header('Content-Type: text/html; charset=utf-8');

$pth['folder']['cmsimple'] = $pth['folder']['base'] . 'cmsimple/';
$pth['file']['log'] = $pth['folder']['cmsimple'] . 'log.php';
$pth['file']['cms'] = $pth['folder']['cmsimple'] . 'cms.php';
$pth['folder']['content'] = './content/';
$pth['file']['execute'] = './index.php';

// 4.5
if(file_exists($pth['folder']['content'] . 'content.htm') && !file_exists($pth['folder']['content'] . 'content.php'))
{
	copy($pth['folder']['content'] . 'content.htm',$pth['folder']['content'] . date("Ymd_His") . '_UPDATE45_content.htm');
	copy($pth['folder']['content'] . 'pagedata.php',$pth['folder']['content'] . date("Ymd_His") . '_UPDATE45_pagedata.php');
	copy($pth['folder']['content'] . 'content.htm',$pth['folder']['content'] . 'content.php');
}

if(file_exists($pth['folder']['content'] . 'content.htm') && file_exists($pth['folder']['content'] . 'content.php'))
{
	unlink($pth['folder']['content'] . 'content.htm');
}

if(file_exists($pth['folder']['cmsimple'] . 'log.txt') && file_get_contents($pth['folder']['cmsimple'] . 'log.txt') !== 'nix')
{
	copy($pth['folder']['cmsimple'] . 'log.txt',$pth['folder']['content'] . date("Ymd_His") . '_UPDATE45_log.txt');
	$logfileHandle = fopen($pth['folder']['cmsimple'] . 'log.txt', 'w+');
	fwrite($logfileHandle, 'nix');
	fclose($logfileHandle);
}
// END 4.5


// 5.11 new installation (5.14: _disabled_plugins.txt in ./content/)
if(!file_exists($pth['folder']['cmsimple'] . 'config.php'))
{
	if(!file_exists($pth['folder']['content'] . 'content.php')) 
	{
		copy('./setup/defaults/content.php',$pth['folder']['content'] . 'content.php');
		chmod($pth['folder']['content'] . 'content.php', 0666);
		if(file_exists($pth['folder']['content'] . 'pagedata.php')) unlink($pth['folder']['content'] . 'pagedata.php');
		copy('./setup/defaults/pagedata.php',$pth['folder']['content'] . 'pagedata.php');
		chmod($pth['folder']['content'] . 'pagedata.php', 0666);
	}
	if(!file_exists($pth['folder']['cmsimple'] . 'languages/de.php')) copy('./setup/defaults/de.php',$pth['folder']['cmsimple'] . 'languages/de.php');
		chmod($pth['folder']['cmsimple'] . 'languages/de.php', 0666);
	if(!file_exists($pth['folder']['cmsimple'] . 'log.php')) copy('./setup/defaults/log.php',$pth['folder']['cmsimple'] . 'log.php');
		chmod($pth['folder']['cmsimple'] . 'log.php', 0666);
	if(!file_exists($pth['folder']['cmsimple'] . 'languages/en.php')) copy('./setup/defaults/en.php',$pth['folder']['cmsimple'] . 'languages/en.php');
		chmod($pth['folder']['cmsimple'] . 'languages/en.php', 0666);
	if(!file_exists('./content/_disabled_plugins.txt')) copy('./setup/defaults/disabled_plugins.txt','./content/_disabled_plugins.txt');
		chmod('./content/_disabled_plugins.txt', 0666);
	if(!file_exists('./content/_cmsimpleAdmin.php') && !file_exists('./content/cmsimpleAdmin.php')) copy('./setup/defaults/_cmsimpleAdmin.php','./content/_cmsimpleAdmin.php');
		chmod('./content/_cmsimpleAdmin.php', 0666);
	if(!is_dir('./templates/__cmsimple_default__')) 
	{
		if(is_dir('./templates/cmsimple_default')) rename('./templates/cmsimple_default', './templates/__cmsimple_default__');
	}
	else
	{
		if(is_dir('./templates/cmsimple_default')) rename('./templates/cmsimple_default', './templates/default_template_copy');
	}
	file_put_contents('./setupControl.php','');
	copy('./setup/defaults/config.php',$pth['folder']['cmsimple'] . 'config.php');
	chmod($pth['folder']['cmsimple'] . 'config.php', 0666);
}
// END 5.11 new installation


// 5.14 Update
if(!file_exists($pth['folder']['cmsimple'] . 'log.php')) copy('./setup/defaults/log.php',$pth['folder']['cmsimple'] . 'log.php');
	chmod($pth['folder']['cmsimple'] . 'log.php', 0666);
if(!file_exists('./content/_disabled_plugins.txt')) 
{
	if(file_exists('./disabled_plugins.txt')) 
	{
		copy('./disabled_plugins.txt','./content/_disabled_plugins.txt');
		unlink('./disabled_plugins.txt');
	}
	else copy($pth['folder']['base'] . 'setup/defaults/disabled_plugins.txt','./content/_disabled_plugins.txt');
	chmod('./content/_disabled_plugins.txt', 0666);
}

if(!file_exists('./content/_cmsimpleAdmin.php') && file_exists('./_cmsimpleAdmin.php')) 
{
	copy('./_cmsimpleAdmin.php','./content/_cmsimpleAdmin.php');
	chmod('./content/_cmsimpleAdmin.php', 0666);
	unlink('./_cmsimpleAdmin.php');
}

if(!file_exists('./content/cmsimpleAdmin.php') && file_exists('./cmsimpleAdmin.php')) 
{
	copy('./cmsimpleAdmin.php','./content/cmsimpleAdmin.php');
	chmod('./content/cmsimpleAdmin.php', 0666);
	unlink('./cmsimpleAdmin.php');
}

if(!file_exists('./content/_cmsimpleAdmin.php') && !file_exists('./content/cmsimpleAdmin.php')) 
{
	copy($pth['folder']['base'] . 'setup/defaults/_cmsimpleAdmin.php','./content/_cmsimpleAdmin.php');
	chmod('./content/_cmsimpleAdmin.php', 0666);
}
// END 5.14 Update

$pth['file']['content'] = $pth['folder']['content'] . 'content.php';
$pth['file']['pagedata'] = $pth['folder']['content'] . 'pagedata.php';

// CMSimple 4 define config.php
if(file_exists('./config.php') && $pth['folder']['base'] != './') $pth['file']['config'] = './config.php';
	else $pth['file']['config'] = $pth['folder']['cmsimple'] . 'config.php';

if(file_exists($pth['folder']['cmsimple'].'defaultconfig.php')) include($pth['folder']['cmsimple'].'defaultconfig.php');
if(!include($pth['file']['config']))die('Config file missing');
if(isset($cf['site']['allow_embed_in_frames']) && $cf['site']['allow_embed_in_frames'] != 'allow') header('X-Frame-Options: ' . $cf['site']['allow_embed_in_frames']);
if(isset($cf['server']['timezone']) && $cf['server']['timezone'] != "") date_default_timezone_set($cf['server']['timezone']);


// define menulevel depending of splitting method
if($cf['use']['h1only_pagesplitting'] == 'true') $CMSimple4menulevel = '6';
	else $CMSimple4menulevel = $cf['menu']['levels'];

//for compatibility with older versions
if(!isset($cf['folders']['userfiles'])) $cf['folders']['userfiles'] = 'userfiles/';
if(!isset($cf['folders']['downloads'])) $cf['folders']['downloads'] = 'downloads/';
if(!isset($cf['folders']['images'])) $cf['folders']['images'] = 'images/';
if(!isset($cf['folders']['media'])) $cf['folders']['media'] = 'downloads/';

// fix $_SERVER['SCRIPT_NAME'] for crazy configured IIS servers 
$cmsimpleScriptNameVar = $_SERVER['SCRIPT_NAME'];
$cmsimpleScriptNameArray = explode('/', $cmsimpleScriptNameVar);

if($cf['server']['script_name_slice'] == 'true')
{
	$cmsimpleScriptNameArray = array_slice($cmsimpleScriptNameArray,2);
	$cmsimpleScriptNameVarNew = '/' . implode('/', $cmsimpleScriptNameArray);
}
else $cmsimpleScriptNameVarNew = implode('/', $cmsimpleScriptNameArray);

$_SERVER['SCRIPT_NAME'] = $cmsimpleScriptNameVarNew;


// create $sn variable (2014, moved 2023)
$sn = preg_replace('/index.php/i', '', $_SERVER['SCRIPT_NAME']);

// CMSimpleSubsites: prepare CMSIMPLE_ROOT
$cmsimpleRootVar = preg_replace('/\/index.php/i', '', $_SERVER['SCRIPT_NAME']);
$cmsimpleRootArray = explode('/', $cmsimpleRootVar);

if($pth['folder']['base'] == '../../')
{
	array_pop($cmsimpleRootArray);
	array_pop($cmsimpleRootArray);
}

if($pth['folder']['base'] == '../') array_pop($cmsimpleRootArray);
$cmsimpleRootVarNew = implode('/', $cmsimpleRootArray) . '/';

define('CMSIMPLE_ROOT', $cmsimpleRootVarNew);
define('CMSIMPLE_BASE', $pth['folder']['base']);
define('CMSIMPLE_SITEURL', (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['SERVER_NAME'] . $sn);
define('CMSIMPLE_ROOTURL', (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['SERVER_NAME'] . CMSIMPLE_ROOT);

// prepare $subsite_folder
if(CMSIMPLE_ROOT == '/') $cmsimpleRootReplace = '';
	else $cmsimpleRootReplace = CMSIMPLE_ROOT;

$subsite_folder = str_replace($cmsimpleRootReplace,'',$_SERVER['SCRIPT_NAME']);
$subsite_folder = str_replace('index.php', '', $subsite_folder);
$subsite_folder = trim($subsite_folder, '/') . '/';

// own userfiles folders (if exists and writable) for subsites and second languages
if(is_writable('./userfiles') && is_writable('./userfiles/downloads') && is_writable('./userfiles/images') && is_writable('./userfiles/media') && $pth['folder']['base'] != './')
{
	$userfiles_path = $subsite_folder . $cf['folders']['userfiles'];
	$userfiles_path_downloads = $subsite_folder . $cf['folders']['downloads'];
	$userfiles_path_images = $subsite_folder . $cf['folders']['images'];
	$userfiles_path_media = $subsite_folder . $cf['folders']['media'];
}
else
{
	$userfiles_path = $cf['folders']['userfiles'];
	$userfiles_path_downloads = $cf['folders']['downloads'];
	$userfiles_path_images = $cf['folders']['images'];
	$userfiles_path_media = $cf['folders']['media'];
}

// Userfiles-folders
if(is_writable('./userfiles') && is_writable('./userfiles/downloads') && is_writable('./userfiles/images') && is_writable('./userfiles/media') && $pth['folder']['base'] != './')
{
	$pth['folder']['userfiles'] = './' . $cf['folders']['userfiles'];
	$pth['folder']['downloads'] = './' . $cf['folders']['downloads'];
	$pth['folder']['images'] = './' . $cf['folders']['images'];
	$pth['folder']['media'] = './' . $cf['folders']['media'];
	$pth['folder']['flags'] = $pth['folder']['images'] . 'flags/';
}
else
{
	$pth['folder']['userfiles'] = $pth['folder']['base'] . $cf['folders']['userfiles'];
	$pth['folder']['downloads'] = $pth['folder']['base'] . $cf['folders']['downloads'];
	$pth['folder']['images'] = $pth['folder']['base'] . $cf['folders']['images'];
	$pth['folder']['media'] = $pth['folder']['base'] . $cf['folders']['media'];
	$pth['folder']['flags'] = $pth['folder']['images'] . 'flags/';
}

// 4.5
if(file_exists($pth['folder']['downloads'] . 'XHdebug.txt') && is_writable($pth['folder']['downloads'])){unlink($pth['folder']['downloads'] . 'XHdebug.txt');}
if(file_exists($pth['folder']['downloads'] . '_XHdebug.txt') && is_writable($pth['folder']['downloads'])){unlink($pth['folder']['downloads'] . '_XHdebug.txt');}
// END 4.5


// 5.11 new installation
if(!file_exists($pth['folder']['userfiles'] . '_core/_CMSimpleDebug.txt') && !file_exists($pth['folder']['userfiles'] . '_core/CMSimpleDebug.txt') && is_dir('./userfiles/_core/')) 
{
	copy($pth['folder']['base'] . 'setup/defaults/CMSimpleDebug.txt',$pth['folder']['userfiles'] . '_core/CMSimpleDebug.txt');
	chmod($pth['folder']['userfiles'] . '_core/CMSimpleDebug.txt', 0666);
}
// END 5.11 new installation


if($cf['functions']['file'] != "") include($pth['folder']['cmsimple'] . $cf['functions']['file']);

// debug-mode, enables error-reporting
CMSimpleDebugMode();
$errors = array();

// CMSimple 4: define selected language
$slVar = $_SERVER['SCRIPT_NAME'];
$slVarArray = explode('/', $slVar);
array_pop($slVarArray);

if(file_exists('./cmsimplelanguage.htm')) $sl = array_pop($slVarArray);
	else $sl = $cf['language']['default'];

// fallback selected language
if(!isset($sl)) $sl = $cf['language']['default'];
// END define $sl

// Own language files for subsites
if(file_exists('./languages/' . basename($sl) . '.php')) $pth['folder']['language'] = './languages/';
	else $pth['folder']['language'] = $pth['folder']['cmsimple'] . 'languages/';
$pth['folder']['language_default'] = $pth['folder']['cmsimple'] . 'languages/';
$pth['file']['language'] = $pth['folder']['language'] . basename($sl) . '.php';

if(!file_exists($pth['file']['language'])) copy($pth['folder']['language_default'].'default.php', $pth['file']['language']);
if(!file_exists($pth['file']['language']) && !file_exists($pth['folder']['language_default'].'default.php')) die('Language file ' . $pth['file']['language'] . ' missing');
include $pth['folder']['language_default'] . 'default.php';
include $pth['file']['language'];

$pth['file']['corestyle'] = $pth['folder']['base'] . 'css/core.css';

if(file_exists('./templates')) $pth['folder']['templates'] = './templates/';
	else $pth['folder']['templates'] = $pth['folder']['base'] . 'templates/';

$pth['folder']['template'] = $pth['folder']['templates'] . $cf['site']['template'] . '/';
$pth['file']['template'] = $pth['folder']['template'].'template.htm';
$pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css';
$pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/';
$pth['folder']['templateimages'] = $pth['folder']['template'].'images/';

// template fallback
if(!is_readable($pth['file']['template']) || $pth['folder']['template'] == $pth['folder']['templates'].'__maintenance__/') 
{
	$pth['folder']['template'] = $pth['folder']['templates'].'__fallback__/';
	$pth['file']['template'] = $pth['folder']['template'].'template.htm';
	$pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css';
	$pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/';
	$pth['folder']['templateimages'] = $pth['folder']['template'].'images/';
}
// END template fallback

// fallback template text 1-9
$txc['template']['text1'] = $tx['template']['text1'];
$txc['template']['text2'] = $tx['template']['text2'];
$txc['template']['text3'] = $tx['template']['text3'];
$txc['template']['text4'] = $tx['template']['text4'];
$txc['template']['text5'] = $tx['template']['text5'];
$txc['template']['text6'] = $tx['template']['text6'];
$txc['template']['text7'] = $tx['template']['text7'];
$txc['template']['text8'] = $tx['template']['text8'];
$txc['template']['text9'] = $tx['template']['text9'];
// END fallback template text 1-9

$pth['folder']['plugins'] = $pth['folder']['base'] . $cf['plugins']['folder'] . '/';

$iis = strpos(sv('SERVER_SOFTWARE'), "IIS");
$cgi = (php_sapi_name() == 'cgi' || php_sapi_name() == 'cgi-fcgi');

// create variables for CRSF Protection (2017)
$snForCsrf = str_replace('/','___',$sn);
$snForCsrf = uenc($snForCsrf);
$csrfSession = 'csrf_token' . $snForCsrf;


// NEW 2016 (4.6.5)
// prevents call with "/index.php" from address line 
if(preg_match('/index.php/i', $_SERVER['REQUEST_URI']) && $cf['site']['allow_call_indexphp'] != "true")
{
	die('<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>CMSimple - Open Source CMS ohne Datenbank</title>
<meta name="robots" content="noindex, nofollow">
<style type="text/css">
a {text-decoration: none;}
a:hover {color: #c60;}
</style>
</head>
<body style="background: #d0d6d9;">
<p style="margin-top: 60px; text-align: center; font-size: 20px; font-weight: 700;">
<a href="./">Come In &raquo;</a><br>
<a href="./"><span style="font-size: 96px; line-height: 96px;"><img src="' . $pth['folder']['base'] . 'css/icons/entrance.png" title="Entrance" alt="&raquo;"></span></a>
</p>
</body>
</html>');
}
// END NEW


foreach (array('download', 'function', 'media', 'search', 'mailform', 'sitemap', 'text', 'selected', 'login', 'logout', 'settings', 'print', 'retrieve', 'file', 'action', 'validate', 'edit', 'normal', 'stylesheet', 'passwd', 'userfiles', 'cmsimplepages')as $i)
    initvar($i);

// define su - selected url
$su = '';
if(sv('QUERY_STRING') != '') 
{
    $rq = explode('&', sv('QUERY_STRING'));
    if(!strpos($rq[0], '='))
        $su = $rq[0];
    $v = count($rq);
    for ($i = 0; $i < $v; $i++)
        if(!strpos($rq[$i], '='))
            $GLOBALS[$rq[$i]] = 'true';
}
else $su = $selected;

if(!isset($cf['uri']['length'])) $cf['uri']['length'] = 200;
$su = substr($su, 0, $cf['uri']['length']);

if(strstr($_SERVER['QUERY_STRING'],'&stylesheet'))
{
    header("Content-type: text/css");
    include($pth['file']['stylesheet']);
    exit;
}

if(strstr($_SERVER['QUERY_STRING'],'download=')) download($pth['folder']['downloads'] . basename($download));

$pth['file']['login'] = $pth['folder']['cmsimple'] . 'login.php';
$pth['file']['adm'] = $pth['folder']['cmsimple'] . 'adm.php';
$pth['file']['search'] = $pth['folder']['cmsimple'] . 'search.php';
$pth['file']['mailform'] = $pth['folder']['cmsimple'] . 'mailform.php';

$adm = 0;
$f = '';

if(!@include($pth['file']['login']))
	if($login) e('missing', 'file', $pth['file']['login']);

$cl = 0;

// maintenance mode warning
if($adm && $cf['site']['content_visible'] != 'true') 
	$o.= '<p class="cmsimplecore_warning" style="text-align: center; font-weight: 700; margin: 0;">' . $tx['message']['maintenance_backend'] . '</p>';

rfc(); // Here content is loaded

if($function == 'search')
	$f = 'search';
if($_SERVER['QUERY_STRING'] === 'mailform' && !strstr($_SERVER['QUERY_STRING'],'admin=plugin_') && !strstr($_SERVER['QUERY_STRING'],'&normal') || $function == 'mailform')
	$f = 'mailform';
if(!$edit && ($_SERVER['QUERY_STRING'] === 'sitemap' || $_SERVER['QUERY_STRING'] == 'sitemap&pexopensitemap' || $_SERVER['QUERY_STRING'] == '&sitemap'))
	$f = 'sitemap';
if($_SERVER['QUERY_STRING'] === '&cmsimplepages')
	$f = 'cmsimplepages';

if(file_exists($pth['folder']['cmsimple'] . 'userfuncs.php')) include($pth['folder']['cmsimple'] . 'userfuncs.php');

// $txc fallback for Plugins
$txc['site']['title'] = $cf['site']['title'];
$txc['subsite']['template'] = $cf['site']['template'];
$txc['meta']['keywords'] = $cf['meta']['keywords'];
$txc['meta']['description'] = $cf['meta']['description'];
$txc['mailform']['email'] = $cf['mailform']['email'];
$txc['mailform']['captcha'] = $cf['mailform']['captcha'];

// fallback for TinyMCE toolbar
$plugin_cf['tinymce']['init'] = $cf['editor']['tinymce_toolbar'];


// Create plugins array
$handle_pluginlist = opendir($pth['folder']['plugins']);

while ($pluginlist_item = readdir($handle_pluginlist)) 
	if(strpos($pluginlist_item, '.') === false && $pluginlist_item != 'pluginloader' && is_dir($pth['folder']['plugins'] . $pluginlist_item)) $pluginlist_array[] = $pluginlist_item;

closedir($handle_pluginlist);
sort($pluginlist_array);

$plugins = $pluginlist_array;

// update message CMSimple and plugins
if($cf['site']['allow_versionsinfo'] != 'true' && isset($sysinfo) && $adm)
{
	$o.= '<p class="cmsimplecore_warning" style="float: left;">' . $tx['sysinfo']['version_info_disabled'];
	$o.= '&nbsp;- <a href="./?file=config&action=array"><b>' . $tx['sysinfo']['version_info_configlink'] . '</b></a>';
	$o.= '</p><br><br>';
}

if
(
	!isset($sysinfo) && 
	$adm && 
	$file == 'config' || 
	$file == 'language' || 
	$file == 'template' || 
	$file == 'stylesheet' || 
	strstr($_SERVER['QUERY_STRING'],'k2chj47mrx3p&backups') && $adm || 
	strstr($_SERVER['QUERY_STRING'],'&settings') && $adm || 
	strstr($_SERVER['QUERY_STRING'],'&cmsimple_pluginmanager') && $adm || 
	strstr($_SERVER['QUERY_STRING'],'&pagemanager') && $adm || 
	strstr($_SERVER['QUERY_STRING'],'&userfiles') && $adm
)
{
	$o.= '<p id="update_message"><a href="./?k2chj47mrx3p&sysinfo"><b>' . $tx['sysinfo']['version_info'] . '</b></a></p>
<br style="clear: both;">';
}

// Plugin loading
if($function == 'save') $edit = true;
if(!$adm) $edit = false;
if($cf['plugins']['folder'] != "") include($pth['folder']['plugins'] . 'index.php');
if($f == 'search') include($pth['file']['search']);

if($f == 'mailform') if($cf['mailform']['email'] != '') include($pth['file']['mailform']); 
	else shead(404); 

if($f == 'sitemap') 
{
    $title = $tx['title'][$f];
    $ta = array();
    $o .= '<h1>' . $title . '</h1>' . "\n";
    for ($i = 0; $i < $cl; $i++)
        if(!hide($i) || $cf['hidden']['pages_sitemap'] == 'true')
            $ta[] = $i;
    $o .= li($ta, 'sitemaplevel');
}

// Compatibility for DHTML menus, moved from functions.php to cms.php
$si = -1;
$hc = array();
for ($i = 0; $i < $cl; $i++) 
{
    if(!hide($i) || ($i == $s && $cf['hidden']['pages_toc'] == 'true'))
        $hc[] = $i;
    if($i == $s)
        $si = count($hc);
}
$hl = count($hc);
//END Compatibility for DHTML menus

// LEGAL NOTICES - no needed under GPL3
if($cf['menu']['legal'] == '')
	$cf['menu']['legal'] = 'CMSimple Legal Notices';

if($su == uenc($cf['menu']['legal'])) 
{
    $f = $title = $cf['menu']['legal'];
    $s = -1;
    $o .= '<h1>' . $title . '</h1>' . rf($pth['folder']['cmsimple'] . 'legal.txt');
}

if(!include($pth['file']['adm'])) 
{
	if($login) e('missing', 'file', $pth['file']['adm']);
	if($s == -1 && !$f && $o == '' && $su == '') $s = 0;
}

// CMSimple scripting
if(!($edit && $adm) && $s > -1) 
{
    $c[$s] = evaluate_cmsimple_scripting($c[$s]);
    if(isset($keywords))
	$cf['meta']['keywords'] = $keywords;
    if(isset($description))
	$cf['meta']['description'] = $description;
}

if($s == -1 && !$f && $o == '') shead('404');
if(function_exists('loginforms')) loginforms();

foreach (array('content', 'pagedata', 'config', 'language', 'stylesheet', 'template', 'log') as $i)
    chkfile($i, (($login || $settings) && $adm));
if($e) $o = '<div class="cmsimplecore_warning cmsimplecore_center"><b>' . $tx['heading']['warning'] . '</b></div>' . "\n" . '<ul>' . "\n" . $e . '</ul>' . "\n" . $o;

if($title == '') 
{
	if($s > -1) $title = $h[$s];
	elseif($f != '') $title = ucfirst($f);
//	else $title = 'middle of nowhere';
}

if(strstr($_SERVER['QUERY_STRING'],'&retrieve'))
{
	echo '<html><head>' . head() . '</head><body class="retrieve">' . $c[$s] . '</body></html>';
	exit;
}

if(strstr($_SERVER['QUERY_STRING'],'&print') && $cf['site']['content_visible'] == 'true')
{
    echo '<!DOCTYPE html>' . "\n";
    echo '<head>' . "\n" . head(), '<meta name="robots" content="noindex">' . "\n" . '</head>' . "\n" . '
<body class="cmsimplecore_print"', onload(), '>';
    if($cf['site']['printview_with_backlink'] == 'true')
    {
        echo '<div class="cmsimplecore_printinfo">
<p>' . $cf['meta']['author'] . '</p>
<p><b>URL:</b> <a href="./' . ($s==0 && !strstr($_SERVER['QUERY_STRING'],'k2chj47mrx3p&logout') ? '' : '?') . htmlspecialchars(strip_tags(str_replace('&print','',$_SERVER['QUERY_STRING'])), ENT_QUOTES, 'UTF-8') . '">' . $_SERVER['SERVER_NAME'] . $sn . ($s==0 && !strstr($_SERVER['QUERY_STRING'],'k2chj47mrx3p&logout') ? '' : '?') . htmlspecialchars(strip_tags(str_replace('&print','',$_SERVER['QUERY_STRING'])), ENT_QUOTES, 'UTF-8') . '</a></p>
</div>';
    }

    echo content(), '</body>' . "\n" . '</html>' . "\n";
    exit;
}

ob_start('final_clean_up');
$cmsimple_debugMode = CMSimpleDebugMode();

// pluginmanager (added) - Array $active_plugins 

$active_plugins = array();
$handle = opendir($pth['folder']['plugins']);

if($handle) 
{
	while ($plugin = readdir($handle)) 
	{
		if(strpos($plugin, '.') === false 
		&& !stristr(file_get_contents($pm_datafile_path), '|||'.$plugin.'|||'))
		{
			$active_plugins[] = $plugin;
		}
	}
	closedir($handle);
}
sort($active_plugins);

// END pluginmanager (added) - Array $active_plugins 


// activate maintenance template
if($adm != 1 && $cf['site']['content_visible'] != 'true')
{
	$pth['folder']['template'] = $pth['folder']['templates'].'__maintenance__/';
	$pth['file']['template'] = $pth['folder']['template'].'template.htm';
	$pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css';
	$pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/';
	$pth['folder']['templateimages'] = $pth['folder']['template'].'images/';
	$cf['meta']['robots'] = 'noindex, nofollow';
}

// activate backend template
if
(
	($adm && $cf['use']['backend_template'] == 'true' && 
		(
			strstr($_SERVER['QUERY_STRING'],'&sysinfo') || 
			strstr($_SERVER['QUERY_STRING'],'&cmsimple_pluginmanager') || 
			$_SERVER['QUERY_STRING'] == 'k2chj47mrx3p&pagemanager&edit' || 
//			isset($_REQUEST['images']) || 
			isset($file) && $file == 'language' || 
			isset($file) && $file == 'config' || 
			isset($file) && $file == 'template' || 
			isset($file) && $file == 'stylesheet' || 
			isset($file) && $file == 'log' || 
			isset($admin) && $admin == 'plugin_config' || 
			isset($admin) && $admin == 'plugin_language' || 
			isset($admin) && $admin == 'plugin_stylesheet' || 
			strstr($_SERVER['QUERY_STRING'],'&settings') && $adm || 
			isset($_GET['restore_cf']) && $adm || 
			isset($_GET['delete_of']) && $adm || 
			isset($_GET['deleted_of']) && $adm || 
			strstr($_SERVER['QUERY_STRING'],'k2chj47mrx3p&backups') && $adm || 
			isset($_GET['backup_deleted']) && $adm
		)
	)
	|| 
	(
		$adm && !$normal && $cf['use']['backend_template_always'] == 'true'
	)
)
{
	$pth['folder']['template'] = $pth['folder']['templates'].'__cmsimple_backend__/';
	$pth['file']['template'] = $pth['folder']['template'].'template.htm';
	$pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css';
	$pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/';
	$pth['folder']['templateimages'] = $pth['folder']['template'].'images/';
	$cf['meta']['robots'] = 'noindex, nofollow';
}

// activate filebrowser template
if($adm && strstr($_SERVER['QUERY_STRING'],'&userfiles'))
{
	$pth['folder']['template'] = $pth['folder']['templates'].'__cmsimple_backend__/';
	$pth['file']['template'] = $pth['folder']['template'].'template.htm';
	$pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css';
	$pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/';
	$pth['folder']['templateimages'] = $pth['folder']['template'].'images/';
	$cf['meta']['robots'] = 'noindex, nofollow';
}


$poweredLinkCheck = '
<div style="width: 314px; background: #fc0; color: #000; font-size: 14px; font-family: arial, sans-serif; border: 3px solid #000; padding: 6px 20px; position: fixed; z-index: 9999;">
<p><img src="userfiles/images/flags/en.gif">&nbsp; <b>Wrong CMS Link detected in template!</b></p>
<p>Please <b>remove</b> following strings from your template (template.htm):</p>
<p>-xh &nbsp;&nbsp;&nbsp; _XH &nbsp;&nbsp;&nbsp; XH &nbsp;&nbsp;&nbsp; xh</p>
<p>Please <b>replace</b> following strings in your template (template.htm):</p>
<p>cmsimple.name => cmsimple.org<br>cmsimple.eu => cmsimple.org</p>
<p>Without or with a correct CMS link (cmsimple.org), this message will disappear.</p>
<p><img src="userfiles/images/flags/de.gif">&nbsp; <b>Falscher CMS Link im Template erkannt!</b></p>
<p>Bitte <b>entfernen</b> Sie folgende Zeichenketten aus Ihrem Template (template.htm):</p>
<p>-xh &nbsp;&nbsp;&nbsp; _XH &nbsp;&nbsp;&nbsp; XH &nbsp;&nbsp;&nbsp; xh</p>
<p>Bitte <b>ersetzen</b> Sie folgende Zeichenketten aus Ihrem Template (template.htm):</p>
<p>cmsimple.name => cmsimple.org<br>cmsimple.eu => cmsimple.org</p>
<p>Ohne oder mit einem korrekten CMS Link (zu cmsimple.org) wird diese Meldung nicht mehr erscheinen.</p>
</div>
';

if(preg_match('/CMSimple_XH|cmsimple-xh|CMSimple XH|&nbsp;XH|cmsimple\.name|cmsimple\.eu/i',file_get_contents($pth['file']['template']))) 
	echo($poweredLinkCheck);

// template fallback
if(!include($pth['file']['template'])) 
{
	echo '<!DOCTYPE html>
<html>
<head>';
	echo head();
	echo '</head>';
	echo '<body>
<div style="width: 480px; margin: 0 auto;">';
	echo '<div style="background: #eee; color: #c00; font-size: 20px; letter-spacing: 2px; text-align: center; font-weight: 700; border: 5px solid #c00; padding: 24px; margin: 20px 0;">
<p><b>!!! Template is missing !!!</b></p>' 
. loginlink() . '</div>';
	echo content();
	echo '</div>
</body>
</html>';
}




if(!$adm) $edit = false; 
if($adm && !isset($_POST['cmsimpleDataStored']) && $s < 1 && (!isset($_SERVER['QUERY_STRING']) || $_SERVER['QUERY_STRING'] == '' || $_SERVER['QUERY_STRING'] == '&edit')) 
	header("Location: ./?" . $u[0]);
/*
if($edit && $_SERVER['QUERY_STRING'] === 'function&sitemap') 
	header("Location: ./?function&sitemap&normal");
if($edit && $_SERVER['QUERY_STRING'] === 'function&mailform') 
	header("Location: ./?function&mailform&normal");


if($edit && $_SERVER['QUERY_STRING'] === 'function&sitemap') 
$o = '<br><p style="background: #fff; color: #600; border: 2px solid #000; text-align: center; font-weight: 700; padding: 8px 12px;">' . $tx['error']['cntlocateheading'] . '</p>' . "\n";
if($edit && ($_SERVER['QUERY_STRING'] === 'function&mailform' || $_SERVER['QUERY_STRING'] === 'mailform' || $_SERVER['QUERY_STRING'] === '&mailform' || $_SERVER['QUERY_STRING'] === 'mailform&edit' || $_SERVER['QUERY_STRING'] === '&mailform')) 
$o = '<br><p style="background: #fff; color: #600; border: 2px solid #000; text-align: center; font-weight: 700; padding: 8px 12px;">' . $tx['error']['cntlocateheading'] . '</p>' . "\n";
*/

?>