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

class XenForo_Model_LinkForum extends XenForo_Model
{
    
/**
     * Fetches the combined node-link record for the specified node id
     *
     * @param integer $id Node ID
     *
     * @return array
     */
    
public function getLinkForumById($id, array $fetchOptions = array())
    {
        
$joinOptions $this->prepareLinkForumJoinOptions($fetchOptions);

        return 
$this->_getDb()->fetchRow('
            SELECT node.*, link_forum.*
                ' 
$joinOptions['selectFields'] . '
            FROM xf_link_forum AS link_forum
            INNER JOIN xf_node AS node ON (node.node_id = link_forum.node_id)
            ' 
$joinOptions['joinTables'] . '
            WHERE node.node_id = ?
        '
$id);
    }

    
/**
     * Checks the 'join' key of the incoming array for the presence of the FETCH_x bitfields in this class
     * and returns SQL snippets to join the specified tables if required
     *
     * @param array $fetchOptions Array containing a 'join' integer key build from this class's FETCH_x bitfields and other keys
     *
     * @return array Containing 'selectFields' and 'joinTables' keys. Example: selectFields = ', user.*, foo.title'; joinTables = ' INNER JOIN foo ON (foo.id = other.id) '
     */
    
public function prepareLinkForumJoinOptions(array $fetchOptions)
    {
        
$selectFields '';
        
$joinTables '';

        
$db $this->_getDb();

        if (!empty(
$fetchOptions['permissionCombinationId']))
        {
            
$selectFields .= ',
                permission.cache_value AS node_permission_cache'
;
            
$joinTables .= '
                LEFT JOIN xf_permission_cache_content AS permission
                    ON (permission.permission_combination_id = ' 
$db->quote($fetchOptions['permissionCombinationId']) . '
                        AND permission.content_type = '
node'
                        AND permission.content_id = link_forum.node_id)'
;
        }

        return array(
            
'selectFields' => $selectFields,
            
'joinTables'   => $joinTables
        
);
    }

    
/**
     * Determines if the specified link forum can be viewed with the given permissions.
     *
     * @param array $linkForum Info about the link forum
     * @param string $errorPhraseKey Returned phrase key for a specific error
     * @param array|null $nodePermissions List of permissions for this page; if not provided, use visitor's permissions
     * @param array|null $viewingUser
     *
     * @return boolean
     */
    
public function canViewLinkForum(array $linkForum, &$errorPhraseKey '', array $nodePermissions null, array $viewingUser null)
    {
        
$this->standardizeViewingUserReferenceForNode($linkForum['node_id'], $viewingUser$nodePermissions);

        return 
XenForo_Permission::hasContentPermission($nodePermissions'view');
    }
}
Онлайн: 1
Реклама