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

/**
 * Node handler for forum-type nodes.
 *
 * @package XenForo_Forum
 */
class XenForo_NodeHandler_Forum extends XenForo_NodeHandler_Abstract
{
    
/**
     * Forum model object.
     *
     * @var XenForo_Model_Forum
     */
    
protected $_forumModel null;

    
/**
     * Determines if the specified node is viewable with the given permissions.
     *
     * @param array $node Node info
     * @param array $permissions Permissions for this node
     *
     * @return boolean
     */
    
public function isNodeViewable(array $node, array $permissions)
    {
        return 
$this->_getForumModel()->canViewForum($node$null$permissions);
    }

    
/**
     * Gets the effective data that can be pushed up to a parent node.
     *
     * @param array $node Current node info
     * @param array $childPushable List of pushable data from all child nodes: [node id] => pushable data
     * @param array $permissions Permissions for this node
     *
     * @return array List of pushable data (key-value pairs)
     */
    
public function getPushableDataForNode(array $node, array $childPushable, array $permissions)
    {
        if (!
XenForo_Permission::hasContentPermission($permissions'viewOthers'))
        {
            return 
$this->_compileForumLikePushableData(array('privateInfo' => true), $childPushable);
        }

        return 
$this->_getForumLikePushableData($node$childPushable);
    }

    
/**
     * Renders the specified node for display in a node tree.
     *
     * @param XenForo_View $view View object doing the rendering
     * @param array $node Information about this node
     * @param array $permissions Permissions for this node
     * @param array $renderedChildren List of rendered children, [node id] => rendered output
     * @param integer $level The level this node should be rendered at, relative to how it's to be displayed.
     *
     * @return string|XenForo_Template_Abstract
     */
    
public function renderNodeForTree(XenForo_View $view, array $node, array $permissions,
        array 
$renderedChildren$level
    
)
    {
        
$templateLevel = ($level <= $level 'n');

        return 
$view->createTemplateObject('node_forum_level_' $templateLevel, array(
            
'level' => $level,
            
'forum' => $node,
            
'renderedChildren' => $renderedChildren
        
));
    }

    
/**
     * Gets the extra, node-type-specified data for the list of nodes.
     *
     * @param array $nodeIds
     *
     * @return array Format: [node id] => info
     */
    
public function getExtraDataForNodes(array $nodeIds)
    {
        
$userId XenForo_Visitor::getUserId(); // TODO: ideally this should be passed in
        
$forumFetchOptions = array('readUserId' => $userId);

        return 
$this->_getForumModel()->getExtraForumDataForNodes($nodeIds$forumFetchOptions);
    }

    
/**
     * Do type-specific node preparations.
     *
     * @param array $node Unprepared data
     *
     * @return array Prepared data
     */
    
public function prepareNode(array $node)
    {
        return 
$this->_getForumModel()->prepareForum($node);
    }

    
/**
     * @return XenForo_Model_Forum
     */
    
protected function _getForumModel()
    {
        if (
$this->_forumModel === null)
        {
            
$this->_forumModel XenForo_Model::create('XenForo_Model_Forum');
        }

        return 
$this->_forumModel;
    }
}
Онлайн: 3
Реклама