Ejemplo n.º 1
0
 public static function file($path, $data = null)
 {
     try {
         FileSys::includeFile($path, $data);
     } catch (SystemException $e) {
         Router::set404();
     }
 }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
 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();
 }
Ejemplo n.º 4
0
 //проверяем, авторизован ли пользователь
 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)) {
Ejemplo n.º 5
0
        $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;