Вход Регистрация
Файл: system/controllers/messages/actions/notice_action.php
Строк: 64
<?php

class actionMessagesNoticeAction extends cmsAction {

    public function 
run(){

        if (!
$this->request->isAjax()){ cmsCore::error404(); }

        
$notice_id $this->request->get('notice_id') or cmsCore::error404();
        
$action_name $this->request->get('action_name') or cmsCore::error404();

        
$user cmsUser::getInstance();
        
$template cmsTemplate::getInstance();

        
$notice $this->model->getNotice($notice_id);

        
$result = array('error' => true);

        
//
        // Проверяем хозяина уведомления
        //
        
if ($notice['user_id'] != $user->id){
            
$template->renderJSON(array(
                
'error' => true,
                
'message' => 'unknown user'
            
));
        }

        
//
        // Если это закрытие уведомления и его можно закрывать, то закроем
        //
        
if ($action_name == 'close' && $notice['options']['is_closeable']){
            
$this->model->deleteNotice($notice_id);
            
$template->renderJSON(array(
                
'error' => false,
            ));
        }

        
//
        // Проверяем наличие требуемого действия
        //
        
if (!isset($notice['actions'][$action_name])){
            
$template->renderJSON(array(
                
'error' => true,
                
'message' => 'unknown action'
            
));
        }

        
$action $notice['actions'][$action_name];

        
//
        // Если указан URL для редиректа, то возвращаем его
        //
        
if (isset($action['href'])){
            
$result = array(
                
'error' => false,
                
'href' => $action['href'],
            );
        }

        
//
        // Если указан контроллер и действие, то выполняем
        //
        
if (isset($action['controller'], $action['action'])){

            
$params = isset($action['params']) ? $action['params'] : array();

            
$controller cmsCore::getController($action['controller']);

            
$controller->runAction($action['action'], $params);

            
$result = array(
                
'error' => false,
            );

        }

        
//
        // Удаляем уведомление и возвращаем результат
        //
        
if (!$result['error']) { $this->model->deleteNotice($notice_id); }
        
$template->renderJSON($result);

    }

}
Онлайн: 1
Реклама