/** * Обработка события до какого-либо экшена. * * @param string $action * * @return bool */ public function beforeAction($action) { $this->uid = get_uid(false); //Если будет новый заказ от анонимуса //то эти проверки не нужны if ($action != 'neworder') { //Юзер должен быть зарегистрирован if (!$this->uid) { switch ($action) { //редирект на создание заказа для анонимуса case 'newpersonalorder': $this->redirect(tservices_helper::getGuestPersonalOrderUrl()); break; //редирект на регистрацию/авторизацию //редирект на регистрацию/авторизацию default: $this->redirect('/registration/?user_action=add_order'); } } //Юзер в белом списке? if (!tservices_helper::isUserOrderWhiteList()) { $this->missingAction($action); } } //искуственно повторяем чтобы сохранить текущий урл в сессию $this->uid = get_uid(); //заказ инициировать может только работодатель $filter_action = in_array($action, array('order', 'newprojectorder', 'newpersonalorder')); if ($filter_action && !$this->is_emp) { $this->redirect('/registration/?user_action=add_order'); } //свой список заказов видит только фрилансер if ($action == 'frllist' && $this->is_emp) { if ($_SESSION['login']) { $url = "/users/{$_SESSION['login']}/tu-orders/"; $this->redirect($url); } else { $this->missingAction($action); } } return true; }