public static function file($path, $data = null) { try { FileSys::includeFile($path, $data); } catch (SystemException $e) { Router::set404(); } }
public static function start() { //если сайт отключен if (SConfig::SITE_DISABLED) { FileSys::includeFile(SITE_ROOT . '/client/pages/site_disabled.php'); exit; } //в переменную $request_url заносим url без GET-параметров $request_url = explode('?', $_SERVER['REQUEST_URI'])[0]; //проверяем url if (!preg_match('/^\\/(([-a-z0-9_]+\\/)*[-a-z0-9_]+\\.html)?(\\?.*)?$/', $request_url)) { Router::set404(); } Request::setOriginalUrl($request_url); $db = (new Db())->setTable('url_redirects'); //если у страницы есть новый адрес - перенаправляем, чтобы избежать дублей страниц if ($ou = $db->getOne('SELECT `old_url` FROM # WHERE new_url=?s AND type="I"', $request_url)) { Router::redirect($ou); } //проверяем, есть ли редиректы $r = $db->getRow('SELECT `new_url`,`type`,`comment` FROM # WHERE old_url=?s', $request_url); if ($r) { //если редирект внутренний if ($r[1] === 'I') { $request_url = $r[0]; } elseif ($r[1] === 'E') { Router::redirect($r[0]); } } //получаем параметры пункта меню (если есть) $item = $db->getRow('SELECT * FROM ##menu_items WHERE `item_url`=?s', [Request::getOriginalUrl()], MYSQLI_ASSOC); if ($item) { if ($item['params']) { $item['params'] = Json::decode($item['params']); } Request::setItemParams($item); } Request::setRealUrl($request_url); Request::setUrlSegments(explode('/', substr($request_url, 1, -5))); //запускаем вывод страницы Document::generate(); }
protected static function generateModule($position) { $db = (new Db())->setTable('modules'); $modules = $db->getAll('SELECT module_type,name,assignment_type,assignment_urls,show_header,params,id FROM # WHERE position=?s AND published=1 ORDER BY ordering', $position, MYSQLI_ASSOC); ob_start(); foreach ($modules as $module) { //проверяем, должен ли модуль отображаться на данной странице if ($module['assignment_type'] != 'all') { $assig_urls = Json::decode($module['assignment_urls']); if ($module['assignment_type'] == 'on') { if (!in_array(Request::getOriginalUrl(), $assig_urls)) { continue; } } elseif ($module['assignment_type'] == 'except') { if (in_array(Request::getOriginalUrl(), $assig_urls)) { continue; } } } ob_start(); FileSys::includeFile(SITE_ROOT . '/modules/' . $module['module_type'] . '/index.php', ['data' => $module, 'params' => Json::decode($module['params'])]); $module_output = ob_get_clean(); FileSys::includeFile(SITE_ROOT . '/modules/common_template.php', ['data' => $module, 'module_output' => $module_output]); } return ob_get_clean(); }
//проверяем, авторизован ли пользователь session_start(); if (!isset($_SESSION['user'])) { //если запрошена главная страница админки - выводим страницу авторизации if ($_SERVER['REQUEST_URI'] === '/admin/') { FileSys::includeFile(SITE_ROOT . '/client/pages/login.php'); exit; } elseif ($_SERVER['REQUEST_URI'] !== '/admin/index.php?com=users&action=login') { header("HTTP/1.0 401 Unauthorized"); echo 'Необходима авторизация'; exit; } } //если запрошена главная страница админки - выводим ее шаблон if ($_SERVER['REQUEST_URI'] === '/admin/') { FileSys::includeFile(ADMIN_ROOT . '/templates/default/index.php'); } else { $com = Request::get('com'); if (!is_dir(ADMIN_ROOT . '/components/' . $com)) { Router::set404(); } if (is_file(ADMIN_ROOT . '/components/' . $com . '/config.php')) { require_once ADMIN_ROOT . '/components/' . $com . '/config.php'; } if (is_file(ADMIN_ROOT . '/components/' . $com . '/SectionController.php')) { Load::controller(ADMIN_ROOT . '/components/' . $com . '/SectionController.php', Request::get('section', false)); } else { $com_dirs = FileSys::getDirs(ADMIN_ROOT . '/components/' . $com); $forbidden_dir = ['client']; $section = Request::get('section'); if (in_array($section, $com_dirs) && !in_array($section, $forbidden_dir)) {
$errors[] = 'Неверно введены <b>символы с картинки</b>'; } if (isset($_SESSION['captcha'])) { unset($_SESSION['captcha']); } } //если ошибок нет if (!$errors) { //отправляем письмо $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $headers .= 'From: ' . $sender . "\r\n"; $headers .= 'Reply-To: ' . $sender . "\r\n"; //генерируем тело письма ob_start(); FileSys::includeFile(SITE_ROOT . '/components/feedback/message.php', ['data' => $data]); $message = ob_get_clean(); if ($subject === '') { $subject = 'Без темы'; } if (!mail($form_data['addressee_email'], '=?UTF-8?B?' . base64_encode($subject) . '?=', $message, $headers)) { $errors[] = 'Ошибка при отправке письма'; } } if (isset($_POST['_ajax_mode_'])) { if ($errors) { throw new ValidatorException(implode('<br />', $errors)); } else { echo 'Сообщение успешно отправлено'; } exit;