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

class XenForo_ControllerAdmin_Node extends XenForo_ControllerAdmin_NodeAbstract
{
    protected function 
_preDispatch($action)
    {
        
$this->assertAdminPermission('node');
    }

    
/**
     * Name of the DataWriter that will handle this node type
     *
     * @var string
     */
    
protected $_nodeDataWriterName 'XenForo_DataWriter_Node';

    public function 
actionIndex()
    {
        
$nodeModel $this->_getNodeModel();

        
$nodes $nodeModel->prepareNodesForAdmin($nodeModel->getAllNodes());

        
$moderatorsGrouped = array();
        
$moderators $this->_getModeratorModel()->getContentModerators(
            array(
'content' => 'node')
        );
        foreach (
$moderators AS $moderator)
        {
            
$moderatorsGrouped[$moderator['content_id']][] = $moderator;
        }
        foreach (
$nodes AS &$node)
        {
            if (isset(
$moderatorsGrouped[$node['node_id']]))
            {
                
$node['moderators'] = $moderatorsGrouped[$node['node_id']];
            }
            else
            {
                
$node['moderators'] = array();
            }

            
$node['moderatorCount'] = count($node['moderators']);
        }

        
$permissionSets $this->_getPermissionModel()->getUserCombinationsWithContentPermissions('node');
        
$nodesWithPerms = array();
        foreach (
$permissionSets AS $set)
        {
            
$nodesWithPerms[$set['content_id']] = true;
        }

        
$viewParams = array(
            
'nodes' => $nodes,
            
'nodesWithPerms' => $nodesWithPerms
        
);

        return 
$this->responseView('XenForo_ViewAdmin_Node_List''node_list'$viewParams);
    }

    
/**
     * Prompt the user to choose the node type they would like to add
     *
     * @return XenForo_ControllerResponse_View
     */
    
public function actionAdd()
    {
        
$nodeModel $this->_getNodeModel();

        
$parentNode = array();

        if (
$parentNodeId $this->_input->filterSingle('parent_node_id'XenForo_Input::UINT))
        {
            if (!
$parentNode $nodeModel->getNodeById($parentNodeId))
            {
                
$parentNodeId 0;
            }
        }

        
$viewParams = array(
            
'parentNode' => $parentNode,
            
'parent_node_id' => $parentNodeId,
            
'nodeTypeOptions' => $nodeModel->getNodeTypeOptionsArray($nodeModel->getAllNodeTypes()),
        );

        return 
$this->responseView('XenForo_ViewAdmin_Nodes_Add''node_add'$viewParams);
    }

    
/**
     * If one tries to edit a node, reroute to the controller appropriate to its type
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionEdit()
    {
        
$nodeId $this->_input->filterSingle('node_id'XenForo_Input::INT);

        if (
$nodeId && $nodeType $this->_getNodeModel()->getNodeTypeByNodeId($nodeId))
        {
            return 
$this->responseReroute($nodeType['controller_admin_class'], 'edit');
        }
        else
        {
            return 
$this->responseError(new XenForo_Phrase('requested_node_not_found'), 404);
        }
    }

    
/**
     * Accept a form input from actionAdd and either reroute to the appropriate handler, or fail and exit
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionInsert()
    {
        
$nodeTypeId $this->_input->filterSingle('node_type_id'XenForo_Input::STRING);

        if (
$nodeTypeId && $nodeType $this->_getNodeModel()->getNodeTypeById($nodeTypeId))
        {
            return 
$this->responseReroute($nodeType['controller_admin_class'], 'edit');
        }
        else
        {
            return 
$this->responseReroute(__CLASS__'add');
        }
    }

    
/**
     * @return XenForo_Model_Node
     */
    
protected function _getNodeModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Node');
    }

    
/**
     * @return XenForo_Model_Permission
     */
    
protected function _getPermissionModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Permission');
    }

    
/**
     * @return XenForo_Model_Moderator
     */
    
protected function _getModeratorModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Moderator');
    }

    
/**
     * @return XenForo_DataWriter_Node
     */
    
protected function _getNodeDataWriter()
    {
        return 
XenForo_DataWriter::create($this->_nodeDataWriterName);
    }
}
Онлайн: 0
Реклама