Вход Регистрация
Файл: library/XenForo/ControllerAdmin/RouteFilter.php
Строк: 165
<?php

class XenForo_ControllerAdmin_RouteFilter extends XenForo_ControllerAdmin_Abstract
{
    protected function 
_preDispatch($action)
    {
        
$this->assertAdminPermission('option');
    }

    
/**
     * Lists all available route filters.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionIndex()
    {
        
$routeFilterModel $this->_getRouteFilterModel();

        
$viewParams = array(
            
'routeFilters' => $routeFilterModel->getRouteFilters('public'),
        );

        return 
$this->responseView('XenForo_ViewAdmin_RouteFilter_List''route_filter_list'$viewParams);
    }

    
/**
     * Gets the add/edit form response for a route filter.
     *
     * @param array $routeFilter
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
protected function _getRouteFilterAddEditResponse(array $routeFilter)
    {
        
$fullIndex XenForo_Link::buildPublicLink('full:index');
        
$fullThreadLink XenForo_Link::buildPublicLink('full:threads', array('thread_id' => 1'title' => 'example'));
        
$routeValue str_replace(array($fullIndex'?'), ''$fullThreadLink);

        
$viewParams = array(
            
'routeFilter' => $routeFilter,
            
'fullThreadLink' => $fullThreadLink,
            
'routeValue' => $routeValue
        
);

        return 
$this->responseView('XenForo_ViewAdmin_RouteFilter_Edit''route_filter_edit'$viewParams);
    }

    
/**
     * Displays a form to add a new route filter.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionAdd()
    {
        return 
$this->_getRouteFilterAddEditResponse(array(
            
'find_route' => '',
            
'replace_route' => '',
            
'url_to_route_only' => 0,
            
'enabled' => 1
        
));
    }

    
/**
     * Displays a form to edit an existing route filter.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionEdit()
    {
        
$routeFilterId $this->_input->filterSingle('route_filter_id'XenForo_Input::UINT);
        
$routeFilter $this->_getRouteFilterOrError($routeFilterId);

        return 
$this->_getRouteFilterAddEditResponse($routeFilter);
    }

    
/**
     * Inserts a new route filter or updates an existing one.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionSave()
    {
        
$this->_assertPostOnly();

        
$routeFilterId $this->_input->filterSingle('route_filter_id'XenForo_Input::UINT);
        
$dwData $this->_input->filter(array(
            
'find_route' => XenForo_Input::STRING,
            
'replace_route' => XenForo_Input::STRING,
            
'enabled' => XenForo_Input::UINT,
            
'url_to_route_only' => XenForo_Input::UINT,
        ));

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_RouteFilter');
        if (
$routeFilterId)
        {
            
$dw->setExistingData($routeFilterId);
        }
        
$dw->bulkSet($dwData);
        
$dw->set('route_type''public');
        
$dw->save();

        
$routeFilterId $dw->get('route_filter_id');

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('route-filters') . $this->getLastHash($routeFilterId)
        );
    }

    public function 
actionDelete()
    {
        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_RouteFilter''route_filter_id',
                
XenForo_Link::buildAdminLink('route-filters')
            );
        }
        else
        {
            
$routeFilterId $this->_input->filterSingle('route_filter_id'XenForo_Input::UINT);
            
$routeFilter $this->_getRouteFilterOrError($routeFilterId);

            
$viewParams = array(
                
'routeFilter' => $routeFilter
            
);

            return 
$this->responseView('XenForo_ViewAdmin_RouteFilter_Delete''route_filter_delete'$viewParams);
        }
    }

    
/**
     * Selectively enables or disables specified route filters
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionToggle()
    {
        return 
$this->_getToggleResponse(
            
$this->_getRouteFilterModel()->getRouteFilters('public'),
            
'XenForo_DataWriter_RouteFilter',
            
'route-filters',
            
'enabled'
        
);
    }

    
/**
     * Gets the specified route filter or throws an exception.
     *
     * @param string $id
     *
     * @return array
     */
    
protected function _getRouteFilterOrError($id)
    {
        
$routeFilterModel $this->_getRouteFilterModel();

        return 
$this->getRecordOrError(
            
$id$routeFilterModel'getRouteFilterById',
            
'requested_route_filter_not_found'
        
);
    }

    
/**
     * @return XenForo_Model_RouteFilter
     */
    
protected function _getRouteFilterModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_RouteFilter');
    }
}
Онлайн: 3
Реклама