From bd19b8665a9411531003a0333e1a99ed84350fa3 Mon Sep 17 00:00:00 2001 From: slawkens Date: Tue, 29 May 2018 20:17:39 +0200 Subject: [PATCH] * do not display software version --- index.php | 862 +++++++++++++++++----------------- install/template/template.php | 2 +- system/functions.php | 2 +- 3 files changed, 433 insertions(+), 433 deletions(-) diff --git a/index.php b/index.php index c5fe145a..fe882b04 100644 --- a/index.php +++ b/index.php @@ -1,431 +1,431 @@ - - * @copyright 2017 MyAAC - * @link http://my-aac.org - */ - -// uncomment if your php.ini have display_errors disabled and you want to see errors -// ini_set('display_errors', 1); -// ini_set('display_startup_errors', 1); -// error_reporting(E_ALL); - -require_once('common.php'); -require_once(SYSTEM . 'functions.php'); - -$uri = $_SERVER['REQUEST_URI']; - -$tmp = BASE_DIR; -if(!empty($tmp)) - $uri = str_replace(BASE_DIR . '/', '', $uri); -else - $uri = str_replace_first('/', '', $uri); - -$uri = str_replace(array('index.php/', '?'), '', $uri); -define('URI', $uri); - -if(preg_match("/^[A-Za-z0-9-_%\'+]+\.png$/i", $uri)) { - $tmp = explode('.', $uri); - $_REQUEST['name'] = urldecode($tmp[0]); - - chdir(TOOLS . 'signature'); - include(TOOLS . 'signature/index.php'); - exit(); -} -else if(preg_match("/^(.*)\.(gif|jpg|png|jpeg|tiff|bmp|css|js|less|map|html|php|zip|rar|gz|ttf|woff|ico)$/i", $_SERVER['REQUEST_URI'])) { - header("HTTP/1.0 404 Not Found"); - exit; -} - -require_once(BASE . 'config.local.php'); -if(file_exists(BASE . 'install') && (!isset($config['installed']) || !$config['installed'])) -{ - header('Location: ' . BASE_URL . 'install/'); - die('Setup detected that install/ directory exists. Please visit this url to start MyAAC Installation.
Delete install/ directory if you already installed MyAAC.
Remember to REFRESH this page when you\'re done!'); -} - -$found = false; -if(empty($uri) || isset($_REQUEST['template'])) { - $_REQUEST['p'] = 'news'; - $found = true; -} -else { - $tmp = strtolower($uri); - if(!preg_match('/[^A-z0-9_\-]/', $uri) && file_exists(SYSTEM . 'pages/' . $tmp . '.php')) { - $_REQUEST['p'] = $uri; - $found = true; - } - else { - $rules = array( - '/^account\/manage\/?$/' => array('subtopic' => 'accountmanagement'), - '/^account\/create\/?$/' => array('subtopic' => 'createaccount'), - '/^account\/lost\/?$/' => array('subtopic' => 'lostaccount'), - '/^account\/logout\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'logout'), - '/^account\/password\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_password'), - '/^account\/register\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'register'), - '/^account\/register\/new\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'register_new'), - '/^account\/email\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_email'), - '/^account\/info\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_info'), - '/^account\/character\/create\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'create_character'), - '/^account\/character\/name\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_name'), - '/^account\/character\/sex\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_sex'), - '/^account\/character\/delete\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'delete_character'), - '/^account\/character\/comment\/[A-Za-z0-9-_%+\']+\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_comment', 'name' => '$3'), - '/^account\/character\/comment\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_comment'), - '/^account\/confirm_email\/[A-Za-z0-9-_]+\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'confirm_email', 'v' => '$2'), - '/^characters\/[A-Za-z0-9-_%+\']+$/' => array('subtopic' => 'characters', 'name' => '$1'), - '/^changelog\/[0-9]+\/?$/' => array('subtopic' => 'changelog', 'page' => '$1'), - '/^commands\/add\/?$/' => array('subtopic' => 'commands', 'action' => 'add'), - '/^commands\/edit\/?$/' => array('subtopic' => 'commands', 'action' => 'edit'), - '/^faq\/add\/?$/' => array('subtopic' => 'faq', 'action' => 'add'), - '/^faq\/edit\/?$/' => array('subtopic' => 'faq', 'action' => 'edit'), - '/^forum\/add_board\/?$/' => array('subtopic' => 'forum', 'action' => 'add_board'),# - '/^forum\/edit_board\/?$/' => array('subtopic' => 'forum', 'action' => 'edit_board'), - '/^forum\/board\/[0-9]+\/?$/' => array('subtopic' => 'forum', 'action' => 'show_board', 'id' => '$2'), - '/^forum\/board\/[0-9]+\/[0-9]+\/?$/' => array('subtopic' => 'forum', 'action' => 'show_board', 'id' => '$2', 'page' => '$3'), - '/^forum\/thread\/[0-9]+\/?$/' => array('subtopic' => 'forum', 'action' => 'show_thread', 'id' => '$2'), - '/^forum\/thread\/[0-9]+\/[0-9]+\/?$/' => array('subtopic' => 'forum', 'action' => 'show_thread', 'id' => '$2', 'page' => '$3'), - '/^gallery\/add\/?$/' => array('subtopic' => 'gallery', 'action' => 'add'), - '/^gallery\/edit\/?$/' => array('subtopic' => 'gallery', 'action' => 'edit'), - '/^gallery\/[0-9]+\/?$/' => array('subtopic' => 'gallery', 'image' => '$1'), - '/^gifts\/history\/?$/' => array('subtopic' => 'gifts', 'action' => 'show_history'), - '/^guilds\/[A-Za-z0-9-_%+\']+$/' => array('subtopic' => 'guilds', 'action' => 'show', 'guild' => '$1'), - '/^highscores\/[A-Za-z0-9-_]+\/[A-Za-z0-9-_]+\/[0-9]+\/?$/' => array('subtopic' => 'highscores', 'list' => '$1', 'vocation' => '$2', 'page' => '$3'), - '/^highscores\/[A-Za-z0-9-_]+\/[0-9]+\/?$/' => array('subtopic' => 'highscores', 'list' => '$1', 'page' => '$2'), - '/^highscores\/[A-Za-z0-9-_]+\/[A-Za-z0-9-_]+\/?$/' => array('subtopic' => 'highscores', 'list' => '$1', 'vocation' => '$2'), - '/^highscores\/[A-Za-z0-9-_\']+\/?$/' => array('subtopic' => 'highscores', 'list' => '$1'), - '/^news\/add\/?$/' => array('subtopic' => 'news', 'action' => 'add'), - '/^news\/edit\/?$/' => array('subtopic' => 'news', 'action' => 'edit'), - '/^news\/archive\/?$/' => array('subtopic' => 'newsarchive'), - '/^news\/archive\/[0-9]+\/?$/' => array('subtopic' => 'newsarchive', 'id' => '$2'), - '/^polls\/[0-9]+\/?$/' => array('subtopic' => 'polls', 'id' => '$1'), - '/^spells\/[A-Za-z0-9-_%]+\/[A-Za-z0-9-_]+\/?$/' => array('subtopic' => 'spells', 'vocation' => '$1', 'order' => '$2'), - '/^gifts\/history\/?$/' => array('subtopic' => 'gifts', 'action' => 'show_history'), - ); - - foreach($rules as $rule => $redirect) { - if (preg_match($rule, $uri)) { - $tmp = explode('/', $uri); - foreach($redirect as $key => $value) { - - if(strpos($value, '$') !== false) { - $value = str_replace('$' . $value[1], $tmp[$value[1]], $value); - } - - $_REQUEST[$key] = $value; - $_GET[$key] = $value; - } - - $found = true; - break; - } - } - } -} - -// define page visited, so it can be used within events system -$page = isset($_REQUEST['subtopic']) ? $_REQUEST['subtopic'] : (isset($_REQUEST['p']) ? $_REQUEST['p'] : ''); -if(empty($page) || !preg_match('/^[A-z0-9\_\-]+$/', $page)) { - $tmp = URI; - if(!empty($tmp)) { - $page = $tmp; - } - else { - if(!$found) - $page = '404'; - else - $page = 'news'; - } -} - -$page = strtolower($page); -define('PAGE', $page); - -$template_place_holders = array(); - -require_once(SYSTEM . 'init.php'); -require_once(SYSTEM . 'template.php'); -require_once(SYSTEM . 'login.php'); -require_once(SYSTEM . 'status.php'); - -$twig->addGlobal('config', $config); -$twig->addGlobal('status', $status); - -// database migrations -$tmp = ''; -if(fetchDatabaseConfig('database_version', $tmp)) { // we got version - $tmp = (int)$tmp; - if($tmp < DATABASE_VERSION) { // import if older - for($i = $tmp + 1; $i <= DATABASE_VERSION; $i++) { - require(SYSTEM . 'migrations/' . $i . '.php'); - updateDatabaseConfig('database_version', $i); - } - } -} -else { // register first version - registerDatabaseConfig('database_version', 0); - for($i = 1; $i <= DATABASE_VERSION; $i++) { - require(SYSTEM . 'migrations/' . $i . '.php'); - updateDatabaseConfig('database_version', $i); - } -} - -// event system -require_once(SYSTEM . 'hooks.php'); -$hooks = new Hooks(); -$hooks->load(); -$hooks->trigger(HOOK_STARTUP); - -// anonymous usage statistics -// sent only when user agrees -if(isset($config['anonymous_usage_statistics']) && $config['anonymous_usage_statistics']) { - $report_time = 30 * 24 * 60 * 60; // report one time per 30 days - $should_report = true; - - $value = ''; - if($cache->enabled() && $cache->fetch('last_usage_report', $value)) { - $should_report = time() > (int)$value + $report_time; - } - else { - $value = ''; - if(fetchDatabaseConfig('last_usage_report', $value)) { - $should_report = time() > (int)$value + $report_time; - if($cache->enabled()) { - $cache->set('last_usage_report', $value); - } - } - else { - registerDatabaseConfig('last_usage_report', time() - ($report_time - (7 * 24 * 60 * 60))); // first report after a week - $should_report = false; - } - } - - if($should_report) { - require_once(LIBS . 'usage_statistics.php'); - Usage_Statistics::report(); - - updateDatabaseConfig('last_usage_report', time()); - if($cache->enabled()) { - $cache->set('last_usage_report', time()); - } - } -} - -if($config['views_counter']) - require_once(SYSTEM . 'counter.php'); - -if($config['visitors_counter']) -{ - require_once(SYSTEM . 'libs/visitors.php'); - $visitors = new Visitors($config['visitors_counter_ttl']); -} - -// page content loading -if(!isset($content[0])) - $content = ''; -$load_it = true; - -// check if site has been closed -$site_closed = false; -if(fetchDatabaseConfig('site_closed', $site_closed)) { - $site_closed = ($site_closed == 1); - if($site_closed) { - if(!admin()) - { - $title = getDatabaseConfig('site_closed_title'); - $content .= '

' . getDatabaseConfig('site_closed_message') . '


'; - $load_it = false; - } - - if(!$logged) - { - ob_start(); - require(SYSTEM . 'pages/accountmanagement.php'); - $content .= ob_get_contents(); - ob_end_clean(); - $load_it = false; - } - } -} -define('SITE_CLOSED', $site_closed); - -// backward support for gesior -if($config['backward_support']) { - define('INITIALIZED', true); - $SQL = $db; - $layout_header = template_header(); - $layout_name = $template_path; - $news_content = ''; - $tickers_content = ''; - $subtopic = PAGE; - $main_content = ''; - - $config['access_admin_panel'] = 2; - $group_id_of_acc_logged = 0; - if($logged && $account_logged) - $group_id_of_acc_logged = $account_logged->getGroupId(); - - $config['site'] = &$config; - $config['server'] = &$config['lua']; - $config['site']['shop_system'] = $config['gifts_system']; - - if(!isset($config['vdarkborder'])) - $config['vdarkborder'] = '#505050'; - if(!isset($config['darkborder'])) - $config['darkborder'] = '#D4C0A1'; - if(!isset($config['lightborder'])) - $config['lightborder'] = '#F1E0C6'; - - $config['site']['download_page'] = true; - $config['site']['serverinfo_page'] = true; - $config['site']['screenshot_page'] = true; - - if($config['forum'] != '') - $config['forum_link'] = (strtolower($config['forum']) == 'site' ? getLink('forum') : $config['forum']); - - foreach($status as $key => $value) - $config['status']['serverStatus_' . $key] = $value; -} - -if($load_it) -{ - if(SITE_CLOSED && admin()) - $content .= '

Site is under maintenance (closed mode). Only privileged users can see it.

'; - - if($config['backward_support']) - require(SYSTEM . 'compat_pages.php'); - - $ignore = false; - - $logged_access = 1; - if($logged && $account_logged && $account_logged->isLoaded()) { - $logged_access = $account_logged->getAccess(); - } - - $query = - $db->query( - 'SELECT `id`, `title`, `body`, `php`, `hidden`' . - ' FROM `' . TABLE_PREFIX . 'pages`' . - ' WHERE `name` LIKE ' . $db->quote($page) . ' AND `hidden` != 1 AND `access` <= ' . $db->quote($logged_access)); - if($query->rowCount() > 0) // found page - { - $ignore = true; - $query = $query->fetch(); - $title = $query['title']; - - if($query['php'] == '1') // execute it as php code - { - $tmp = substr($query['body'], 0, 10); - if(($pos = strpos($tmp, ' $errno, 'errstr' => $errstr); - } - set_error_handler('error_handler'); - - ob_start(); - eval($tmp); - $content .= ob_get_contents(); - ob_end_clean(); - - restore_error_handler(); - if(isset($php_errors[0]) && superAdmin()) { - var_dump($php_errors); - } - } - else - $content .= $query['body']; // plain html - - if(hasFlag(FLAG_CONTENT_PAGES) || superAdmin()) { - $content = $twig->render('admin.pages.links.html.twig', array( - 'page' => array('id' => $query['id'], 'hidden' => $query['hidden']) - )) . $content; - } - } - else - { - $file = SYSTEM . 'pages/' . $page . '.php'; - if(!@file_exists($file)) - { - $page = '404'; - $file = SYSTEM . 'pages/404.php'; - } - } - - ob_start(); - if($hooks->trigger(HOOK_BEFORE_PAGE)) { - if(!$ignore) - require($file); - } - - if($config['backward_support'] && isset($main_content[0])) - $content .= $main_content; - - $content .= ob_get_contents(); - ob_end_clean(); - $hooks->trigger(HOOK_AFTER_PAGE); -} - -if($config['backward_support']) { - $main_content = $content; - if(!isset($title)) - $title = ucfirst($page); - - $topic = $title; -} - -$title_full = (isset($title) ? $title . $config['title_separator'] : '') . $config['lua']['serverName']; -if(file_exists($template_path . '/index.php')) - require($template_path . '/index.php'); -else if(file_exists($template_path . '/template.php')) // deprecated - require($template_path . '/template.php'); -else if($config['backward_support'] && file_exists($template_path . '/layout.php')) -{ - require($template_path . '/layout.php'); -} -else -{ - // TODO: save more info to log file - die('ERROR: Cannot load template.'); -} - -echo '' . "\n"; -if(($config['debug_level'] & 1) == 1) - echo ''; - -if(($config['debug_level'] & 2) == 2) - echo "\n" . ''; - -if(($config['debug_level'] & 4) == 4 && function_exists('memory_get_peak_usage')) - echo "\n" . ''; - -$hooks->trigger(HOOK_FINISH); -?> + + * @copyright 2017 MyAAC + * @link http://my-aac.org + */ + +// uncomment if your php.ini have display_errors disabled and you want to see errors +// ini_set('display_errors', 1); +// ini_set('display_startup_errors', 1); +// error_reporting(E_ALL); + +require_once('common.php'); +require_once(SYSTEM . 'functions.php'); + +$uri = $_SERVER['REQUEST_URI']; + +$tmp = BASE_DIR; +if(!empty($tmp)) + $uri = str_replace(BASE_DIR . '/', '', $uri); +else + $uri = str_replace_first('/', '', $uri); + +$uri = str_replace(array('index.php/', '?'), '', $uri); +define('URI', $uri); + +if(preg_match("/^[A-Za-z0-9-_%\'+]+\.png$/i", $uri)) { + $tmp = explode('.', $uri); + $_REQUEST['name'] = urldecode($tmp[0]); + + chdir(TOOLS . 'signature'); + include(TOOLS . 'signature/index.php'); + exit(); +} +else if(preg_match("/^(.*)\.(gif|jpg|png|jpeg|tiff|bmp|css|js|less|map|html|php|zip|rar|gz|ttf|woff|ico)$/i", $_SERVER['REQUEST_URI'])) { + header("HTTP/1.0 404 Not Found"); + exit; +} + +require_once(BASE . 'config.local.php'); +if(file_exists(BASE . 'install') && (!isset($config['installed']) || !$config['installed'])) +{ + header('Location: ' . BASE_URL . 'install/'); + die('Setup detected that install/ directory exists. Please visit this url to start MyAAC Installation.
Delete install/ directory if you already installed MyAAC.
Remember to REFRESH this page when you\'re done!'); +} + +$found = false; +if(empty($uri) || isset($_REQUEST['template'])) { + $_REQUEST['p'] = 'news'; + $found = true; +} +else { + $tmp = strtolower($uri); + if(!preg_match('/[^A-z0-9_\-]/', $uri) && file_exists(SYSTEM . 'pages/' . $tmp . '.php')) { + $_REQUEST['p'] = $uri; + $found = true; + } + else { + $rules = array( + '/^account\/manage\/?$/' => array('subtopic' => 'accountmanagement'), + '/^account\/create\/?$/' => array('subtopic' => 'createaccount'), + '/^account\/lost\/?$/' => array('subtopic' => 'lostaccount'), + '/^account\/logout\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'logout'), + '/^account\/password\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_password'), + '/^account\/register\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'register'), + '/^account\/register\/new\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'register_new'), + '/^account\/email\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_email'), + '/^account\/info\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_info'), + '/^account\/character\/create\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'create_character'), + '/^account\/character\/name\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_name'), + '/^account\/character\/sex\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_sex'), + '/^account\/character\/delete\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'delete_character'), + '/^account\/character\/comment\/[A-Za-z0-9-_%+\']+\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_comment', 'name' => '$3'), + '/^account\/character\/comment\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'change_comment'), + '/^account\/confirm_email\/[A-Za-z0-9-_]+\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'confirm_email', 'v' => '$2'), + '/^characters\/[A-Za-z0-9-_%+\']+$/' => array('subtopic' => 'characters', 'name' => '$1'), + '/^changelog\/[0-9]+\/?$/' => array('subtopic' => 'changelog', 'page' => '$1'), + '/^commands\/add\/?$/' => array('subtopic' => 'commands', 'action' => 'add'), + '/^commands\/edit\/?$/' => array('subtopic' => 'commands', 'action' => 'edit'), + '/^faq\/add\/?$/' => array('subtopic' => 'faq', 'action' => 'add'), + '/^faq\/edit\/?$/' => array('subtopic' => 'faq', 'action' => 'edit'), + '/^forum\/add_board\/?$/' => array('subtopic' => 'forum', 'action' => 'add_board'),# + '/^forum\/edit_board\/?$/' => array('subtopic' => 'forum', 'action' => 'edit_board'), + '/^forum\/board\/[0-9]+\/?$/' => array('subtopic' => 'forum', 'action' => 'show_board', 'id' => '$2'), + '/^forum\/board\/[0-9]+\/[0-9]+\/?$/' => array('subtopic' => 'forum', 'action' => 'show_board', 'id' => '$2', 'page' => '$3'), + '/^forum\/thread\/[0-9]+\/?$/' => array('subtopic' => 'forum', 'action' => 'show_thread', 'id' => '$2'), + '/^forum\/thread\/[0-9]+\/[0-9]+\/?$/' => array('subtopic' => 'forum', 'action' => 'show_thread', 'id' => '$2', 'page' => '$3'), + '/^gallery\/add\/?$/' => array('subtopic' => 'gallery', 'action' => 'add'), + '/^gallery\/edit\/?$/' => array('subtopic' => 'gallery', 'action' => 'edit'), + '/^gallery\/[0-9]+\/?$/' => array('subtopic' => 'gallery', 'image' => '$1'), + '/^gifts\/history\/?$/' => array('subtopic' => 'gifts', 'action' => 'show_history'), + '/^guilds\/[A-Za-z0-9-_%+\']+$/' => array('subtopic' => 'guilds', 'action' => 'show', 'guild' => '$1'), + '/^highscores\/[A-Za-z0-9-_]+\/[A-Za-z0-9-_]+\/[0-9]+\/?$/' => array('subtopic' => 'highscores', 'list' => '$1', 'vocation' => '$2', 'page' => '$3'), + '/^highscores\/[A-Za-z0-9-_]+\/[0-9]+\/?$/' => array('subtopic' => 'highscores', 'list' => '$1', 'page' => '$2'), + '/^highscores\/[A-Za-z0-9-_]+\/[A-Za-z0-9-_]+\/?$/' => array('subtopic' => 'highscores', 'list' => '$1', 'vocation' => '$2'), + '/^highscores\/[A-Za-z0-9-_\']+\/?$/' => array('subtopic' => 'highscores', 'list' => '$1'), + '/^news\/add\/?$/' => array('subtopic' => 'news', 'action' => 'add'), + '/^news\/edit\/?$/' => array('subtopic' => 'news', 'action' => 'edit'), + '/^news\/archive\/?$/' => array('subtopic' => 'newsarchive'), + '/^news\/archive\/[0-9]+\/?$/' => array('subtopic' => 'newsarchive', 'id' => '$2'), + '/^polls\/[0-9]+\/?$/' => array('subtopic' => 'polls', 'id' => '$1'), + '/^spells\/[A-Za-z0-9-_%]+\/[A-Za-z0-9-_]+\/?$/' => array('subtopic' => 'spells', 'vocation' => '$1', 'order' => '$2'), + '/^gifts\/history\/?$/' => array('subtopic' => 'gifts', 'action' => 'show_history'), + ); + + foreach($rules as $rule => $redirect) { + if (preg_match($rule, $uri)) { + $tmp = explode('/', $uri); + foreach($redirect as $key => $value) { + + if(strpos($value, '$') !== false) { + $value = str_replace('$' . $value[1], $tmp[$value[1]], $value); + } + + $_REQUEST[$key] = $value; + $_GET[$key] = $value; + } + + $found = true; + break; + } + } + } +} + +// define page visited, so it can be used within events system +$page = isset($_REQUEST['subtopic']) ? $_REQUEST['subtopic'] : (isset($_REQUEST['p']) ? $_REQUEST['p'] : ''); +if(empty($page) || !preg_match('/^[A-z0-9\_\-]+$/', $page)) { + $tmp = URI; + if(!empty($tmp)) { + $page = $tmp; + } + else { + if(!$found) + $page = '404'; + else + $page = 'news'; + } +} + +$page = strtolower($page); +define('PAGE', $page); + +$template_place_holders = array(); + +require_once(SYSTEM . 'init.php'); +require_once(SYSTEM . 'template.php'); +require_once(SYSTEM . 'login.php'); +require_once(SYSTEM . 'status.php'); + +$twig->addGlobal('config', $config); +$twig->addGlobal('status', $status); + +// database migrations +$tmp = ''; +if(fetchDatabaseConfig('database_version', $tmp)) { // we got version + $tmp = (int)$tmp; + if($tmp < DATABASE_VERSION) { // import if older + for($i = $tmp + 1; $i <= DATABASE_VERSION; $i++) { + require(SYSTEM . 'migrations/' . $i . '.php'); + updateDatabaseConfig('database_version', $i); + } + } +} +else { // register first version + registerDatabaseConfig('database_version', 0); + for($i = 1; $i <= DATABASE_VERSION; $i++) { + require(SYSTEM . 'migrations/' . $i . '.php'); + updateDatabaseConfig('database_version', $i); + } +} + +// event system +require_once(SYSTEM . 'hooks.php'); +$hooks = new Hooks(); +$hooks->load(); +$hooks->trigger(HOOK_STARTUP); + +// anonymous usage statistics +// sent only when user agrees +if(isset($config['anonymous_usage_statistics']) && $config['anonymous_usage_statistics']) { + $report_time = 30 * 24 * 60 * 60; // report one time per 30 days + $should_report = true; + + $value = ''; + if($cache->enabled() && $cache->fetch('last_usage_report', $value)) { + $should_report = time() > (int)$value + $report_time; + } + else { + $value = ''; + if(fetchDatabaseConfig('last_usage_report', $value)) { + $should_report = time() > (int)$value + $report_time; + if($cache->enabled()) { + $cache->set('last_usage_report', $value); + } + } + else { + registerDatabaseConfig('last_usage_report', time() - ($report_time - (7 * 24 * 60 * 60))); // first report after a week + $should_report = false; + } + } + + if($should_report) { + require_once(LIBS . 'usage_statistics.php'); + Usage_Statistics::report(); + + updateDatabaseConfig('last_usage_report', time()); + if($cache->enabled()) { + $cache->set('last_usage_report', time()); + } + } +} + +if($config['views_counter']) + require_once(SYSTEM . 'counter.php'); + +if($config['visitors_counter']) +{ + require_once(SYSTEM . 'libs/visitors.php'); + $visitors = new Visitors($config['visitors_counter_ttl']); +} + +// page content loading +if(!isset($content[0])) + $content = ''; +$load_it = true; + +// check if site has been closed +$site_closed = false; +if(fetchDatabaseConfig('site_closed', $site_closed)) { + $site_closed = ($site_closed == 1); + if($site_closed) { + if(!admin()) + { + $title = getDatabaseConfig('site_closed_title'); + $content .= '

' . getDatabaseConfig('site_closed_message') . '


'; + $load_it = false; + } + + if(!$logged) + { + ob_start(); + require(SYSTEM . 'pages/accountmanagement.php'); + $content .= ob_get_contents(); + ob_end_clean(); + $load_it = false; + } + } +} +define('SITE_CLOSED', $site_closed); + +// backward support for gesior +if($config['backward_support']) { + define('INITIALIZED', true); + $SQL = $db; + $layout_header = template_header(); + $layout_name = $template_path; + $news_content = ''; + $tickers_content = ''; + $subtopic = PAGE; + $main_content = ''; + + $config['access_admin_panel'] = 2; + $group_id_of_acc_logged = 0; + if($logged && $account_logged) + $group_id_of_acc_logged = $account_logged->getGroupId(); + + $config['site'] = &$config; + $config['server'] = &$config['lua']; + $config['site']['shop_system'] = $config['gifts_system']; + + if(!isset($config['vdarkborder'])) + $config['vdarkborder'] = '#505050'; + if(!isset($config['darkborder'])) + $config['darkborder'] = '#D4C0A1'; + if(!isset($config['lightborder'])) + $config['lightborder'] = '#F1E0C6'; + + $config['site']['download_page'] = true; + $config['site']['serverinfo_page'] = true; + $config['site']['screenshot_page'] = true; + + if($config['forum'] != '') + $config['forum_link'] = (strtolower($config['forum']) == 'site' ? getLink('forum') : $config['forum']); + + foreach($status as $key => $value) + $config['status']['serverStatus_' . $key] = $value; +} + +if($load_it) +{ + if(SITE_CLOSED && admin()) + $content .= '

Site is under maintenance (closed mode). Only privileged users can see it.

'; + + if($config['backward_support']) + require(SYSTEM . 'compat_pages.php'); + + $ignore = false; + + $logged_access = 1; + if($logged && $account_logged && $account_logged->isLoaded()) { + $logged_access = $account_logged->getAccess(); + } + + $query = + $db->query( + 'SELECT `id`, `title`, `body`, `php`, `hidden`' . + ' FROM `' . TABLE_PREFIX . 'pages`' . + ' WHERE `name` LIKE ' . $db->quote($page) . ' AND `hidden` != 1 AND `access` <= ' . $db->quote($logged_access)); + if($query->rowCount() > 0) // found page + { + $ignore = true; + $query = $query->fetch(); + $title = $query['title']; + + if($query['php'] == '1') // execute it as php code + { + $tmp = substr($query['body'], 0, 10); + if(($pos = strpos($tmp, ' $errno, 'errstr' => $errstr); + } + set_error_handler('error_handler'); + + ob_start(); + eval($tmp); + $content .= ob_get_contents(); + ob_end_clean(); + + restore_error_handler(); + if(isset($php_errors[0]) && superAdmin()) { + var_dump($php_errors); + } + } + else + $content .= $query['body']; // plain html + + if(hasFlag(FLAG_CONTENT_PAGES) || superAdmin()) { + $content = $twig->render('admin.pages.links.html.twig', array( + 'page' => array('id' => $query['id'], 'hidden' => $query['hidden']) + )) . $content; + } + } + else + { + $file = SYSTEM . 'pages/' . $page . '.php'; + if(!@file_exists($file)) + { + $page = '404'; + $file = SYSTEM . 'pages/404.php'; + } + } + + ob_start(); + if($hooks->trigger(HOOK_BEFORE_PAGE)) { + if(!$ignore) + require($file); + } + + if($config['backward_support'] && isset($main_content[0])) + $content .= $main_content; + + $content .= ob_get_contents(); + ob_end_clean(); + $hooks->trigger(HOOK_AFTER_PAGE); +} + +if($config['backward_support']) { + $main_content = $content; + if(!isset($title)) + $title = ucfirst($page); + + $topic = $title; +} + +$title_full = (isset($title) ? $title . $config['title_separator'] : '') . $config['lua']['serverName']; +if(file_exists($template_path . '/index.php')) + require($template_path . '/index.php'); +else if(file_exists($template_path . '/template.php')) // deprecated + require($template_path . '/template.php'); +else if($config['backward_support'] && file_exists($template_path . '/layout.php')) +{ + require($template_path . '/layout.php'); +} +else +{ + // TODO: save more info to log file + die('ERROR: Cannot load template.'); +} + +echo base64_decode('PCEtLSBQb3dlcmVkIGJ5IE15QUFDIDo6IGh0dHBzOi8vd3d3Lm15LWFhYy5vcmcvIC0tPg==') . PHP_EOL; +if(($config['debug_level'] & 1) == 1) + echo ''; + +if(($config['debug_level'] & 2) == 2) + echo "\n" . ''; + +if(($config['debug_level'] & 4) == 4 && function_exists('memory_get_peak_usage')) + echo "\n" . ''; + +$hooks->trigger(HOOK_FINISH); +?> diff --git a/install/template/template.php b/install/template/template.php index e5422831..5c582703 100644 --- a/install/template/template.php +++ b/install/template/template.php @@ -8,7 +8,7 @@
diff --git a/system/functions.php b/system/functions.php index cb834ea3..fd34a5d6 100644 --- a/system/functions.php +++ b/system/functions.php @@ -473,7 +473,7 @@ function template_header($is_admin = false) $ret .= ' - +