public static function execRouterHook(_Core_Request $request, &$class, &$method, array &$chunks, &$templateEngine)
 {
     $access = new _Core_Access(_User::getCurrent());
     if (!$access->isAllowed($request->uri)) {
         // Редирект через заголовок. Дабы явно сменился урл в браузере оО
         _Core_Router::redirect($access->defaultPage, true, 403);
     }
 }
 /**
  * Удаляет указанный счет
  * @param $args array mixed
  * @return void
  */
 function delete($args)
 {
     if (isset($_REQUEST['confirmed']) && $_REQUEST['confirmed']) {
         $params = $_REQUEST;
         // Предупреждение перед удалением
         if (count($this->user->getUserAccounts()) == 1) {
             $this->renderJsonError('Перед удалением последнего счета создайте нужные Вам счета');
         }
         $account = Account::getTypeByID($params);
         $er = $account->delete($this->user, $params);
         if (!$er) {
             $this->renderJsonError('Счёт не удалён');
         }
         if ($er === 'cel') {
             $this->renderJsonError('Невозможно удалить счёт, к которому привязана фин.цель');
         } else {
             //@XXX Тут как бы хз.. Нужно проверять какую конструкцию поставить.
             //Сильно смущает строка ниже, передающая в шаблонизатор переменную
             $this->tpl->assign('result', array('text' => 'Счёт удален'));
         }
         $this->tpl->assign('name_page', 'info_panel/info_panel');
     } elseif (!isset($_POST['confirmed'])) {
         $confirm = array('title' => 'Удаление счёта', 'message' => 'Вы действительно хотите удалить выбранный счёт?', 'yesLink' => '/accounts/delete/?id=' . $args[0] . '&confirmed=1', 'noLink' => $_SERVER['HTTP_REFERER']);
         // Сохраняем в сессии адрес куда идти если согласится
         $_SESSION['redirect'] = $_SERVER['HTTP_REFERER'];
         $this->tpl->assign('confirm', $confirm);
         $this->tpl->assign('name_page', 'confirm');
         // Видимо передумали удалять и наша логика не сработала - редиректим на инфо
     } else {
         _Core_Router::redirect('/info');
     }
 }
 public static function redirect($url, $isExternal = false, $statusCode = 200)
 {
     if (array_key_exists($statusCode, self::$headerByCode)) {
         header(self::$headerByCode[$statusCode]);
     }
     if ($isExternal) {
         header('Location: ' . $url);
         exit;
     }
     $request = _Core_Request::getFake($url);
     $router = new _Core_Router($request, _Core_TemplateEngine::getPrepared($request));
     try {
         $router->performRequest();
     } catch (Exception $e) {
         // Вывод отладочной информации
         if (DEBUG) {
             echo highlight_string("<?php\n" . $e->getTraceAsString());
             exit;
         } elseif ('/notfound' == $url) {
             exit;
         } else {
             self::redirect('/notfound', false, 404);
         }
     }
 }
 /**
  * Делает редирект на указанную страницу. Нужна для тестов
  *
  * @param string $url
  * @return void
  */
 protected function _redirect($url)
 {
     _Core_Router::redirect($url);
 }
 /**
  * Удаляет указанную категорию
  * @param $args array mixed
  * @return void
  */
 function del($args)
 {
     $catId = 0;
     if (array_key_exists(0, $args) && is_numeric($args[0]) && $args[0]) {
         $catId = (int) $args[0];
     } elseif (isset($this->request->post['id']) && $this->request->post['id']) {
         $catId = (int) $this->request->post['id'];
     }
     // Проверяем, есть ли по категории операции
     if (isset($this->request->post['confirm']) && $this->request->post['confirm'] === 'false' && $this->model->getCountOperationByCategory(Core::getInstance()->user, $catId) > 0) {
         die(json_encode(array("confirm" => array("text" => "Эта категория содержит операции. " . "При удалении категории все операции по ней будут удалены!" . "\n\nВы действительно хотите удалить категорию?", "id" => $catId))));
     }
     // Если удаление подтверждено....
     if (isset($this->request->get['confirmed']) && $this->request->get['confirmed']) {
         // Отмечаем операции неподтверждёнными
         $operation = new Operation_Model();
         $operation->deleteOperationsByCategory(Core::getInstance()->user, $catId);
         // Удаляем категорию (делаем невидимой)
         if ($this->model->del($catId)) {
             $this->tpl->assign('result', array('text' => "Категория успешно удалена.", 'id' => $catId));
         } else {
             $this->tpl->assign('error', array('text' => "Не удалось удалить категорию."));
         }
         //возвращаемся
         if (array_key_exists('redirect', $_SESSION)) {
             _Core_Router::redirect($_SESSION['redirect'], true);
             unset($_SESSION['redirect']);
         }
     } elseif (!isset($request->get['confirmed'])) {
         $confirm = array('title' => 'Удаление категории', 'message' => 'Вы действительно хотите удалить категорию?', 'yesLink' => '/category/del/' . $catId . '?confirmed=1', 'noLink' => $_SERVER['HTTP_REFERER']);
         if ($this->model->getCountOperationByCategory(Core::getInstance()->user, $catId) > 0) {
             $confirm['message'] = "<b>Эта категория содержит операции.</b><br/>" . "При удалении категории все операции по ней будут удалены!<br/><br/>" . "Вы действительно хотите удалить категорию?";
         }
         // Сохраняем в сессии адрес куда идти если согласится
         $_SESSION['redirect'] = $_SERVER['HTTP_REFERER'];
         $this->tpl->assign('confirm', $confirm);
         $this->tpl->assign('name_page', 'confirm');
     } else {
         _Core_Router::redirect('/info');
     }
 }
 /**
  * Удаляет выбранное событие
  * @param $args array mixed Какие-нибудь аргументы
  * @return void
  */
 function del($args)
 {
     $operationId = 0;
     if (array_key_exists(0, $args) && is_numeric($args[0]) && $args[0]) {
         $operationId = (int) $args[0];
     } elseif (isset($this->request->post['id']) && $this->request->post['id']) {
         $operationId = $this->request->post['id'];
     }
     // Если удаление подтверждено....
     if (isset($this->request->get['confirmed']) && $this->request->get['confirmed']) {
         if ($this->model->deleteOperation($operationId)) {
             $this->tpl->assign('result', array('text' => "Операция успешно удалена."));
         } else {
             $this->tpl->assign('error', array('text' => "Не удалось удалить операцию."));
         }
         //возвращаемся
         if (array_key_exists('redirect', $_SESSION)) {
             _Core_Router::redirect($_SESSION['redirect'], true);
             unset($_SESSION['redirect']);
         }
     } elseif (!isset($this->request->get['confirmed'])) {
         $confirm = array('title' => 'Удаление операции', 'message' => 'Вы действительно хотите удалить операцию?', 'yesLink' => '/operation/del/' . $operationId . '?confirmed=1', 'noLink' => $_SERVER['HTTP_REFERER']);
         // Сохраняем в сессии адрес куда идти если согласится
         $_SESSION['redirect'] = $_SERVER['HTTP_REFERER'];
         $this->tpl->assign('confirm', $confirm);
         $this->tpl->assign('name_page', 'confirm');
     } else {
         _Core_Router::redirect('/info');
     }
 }
Exemple #7
0
 */
define('INDEX', true);
error_reporting(E_ALL);
// Подключаем файл с общей конфигурацией проекта
require_once dirname(dirname(__FILE__)) . '/include/config.php';
// Загружаем общие данные
// @todo оторвать!
require_once SYS_DIR_INC . 'common.php';
// Получаем обьект с параметрами запроса.
$request = _Core_Request::getCurrent();
// Получаем текущий шаблонизатор на основании запроса
$templateEngine = _Core_TemplateEngine::getPrepared($request);
// Запускаем хелпер для IFRAME авторизации и подключения шаблонов
Helper_IframeLogin::login($templateEngine);
// Инициализация роутера
$router = new _Core_Router($request, $templateEngine);
try {
    // Выполнение запроса (разбор ->вызов контроллера)
    $router->performRequest();
    if (_Core_Request::getCurrent()->host . '/' == HOST_ROOT_IFRAME) {
        $templateEngine->display('iframe/index.iframe.html');
    } elseif (_Core_Request::getCurrent()->host . '/' == HOST_ROOT_RAMBLER) {
        $templateEngine->display('index.html');
    } else {
        if (!IS_DEMO) {
            // Если пользователь зашёл с мобильного браузера
            if (_Core_Request::getCurrent()->host . '/' != HOST_ROOT_PDA && Helper_DetectBrowser::detectMobile() && !isset($_COOKIE['DO_WHANT_FULL_VERSION'])) {
                if (isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], HOST_ROOT_PDA) === false) {
                    header('Location: ' . URL_ROOT_PDA);
                    exit;
                } else {