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

/**
 * Helper for user profile related pages.
 * Provides validation methods, amongst other things.
 *
 * @package XenForo_Thread
 */
class XenForo_ControllerHelper_UserProfile extends XenForo_ControllerHelper_Abstract
{
    
/**
     * The current visiting user.
     *
     * @var XenForo_Visitor
     */
    
protected $_visitor;

    
/**
     * Additional constructor setup behavior.
     */
    
protected function _constructSetup()
    {
        
$this->_visitor XenForo_Visitor::getInstance();
    }

    public function 
assertUserProfileValidAndViewable($userId, array $fetchOptions = array())
    {
        
$user $this->getUserOrError($userId$fetchOptions);

        if (!
$this->_controller->getModelFromCache('XenForo_Model_UserProfile')->canViewFullUserProfile($user$errorPhraseKey))
        {
            throw 
$this->_controller->getErrorOrNoPermissionResponseException($errorPhraseKey);
        }

        
$user $this->_controller->getModelFromCache('XenForo_Model_User')->prepareUser($user);

        return 
$user;
    }

    public function 
assertProfilePostValidAndViewable($profilePostId, array $profilePostFetchOptions = array(),
        array 
$userFetchOptions = array()
    )
    {
        
$profilePost $this->getProfilePostOrError($profilePostId$profilePostFetchOptions);
        
$user $this->assertUserProfileValidAndViewable($profilePost['profile_user_id'], $userFetchOptions);

        if (!
$this->_controller->getModelFromCache('XenForo_Model_ProfilePost')->canViewProfilePost($profilePost$user$errorPhraseKey))
        {
            throw 
$this->_controller->getErrorOrNoPermissionResponseException($errorPhraseKey);
        }

        
$profilePost $this->_controller->getModelFromCache('XenForo_Model_ProfilePost')->prepareProfilePost($profilePost$user);

        return array(
$profilePost$user);
    }

    public function 
assertProfilePostCommentValidAndViewable($commentId, array $commentFetchOptions = array(),
        array 
$profilePostFetchOptions = array(), array $userFetchOptions = array()
    )
    {
        
$comment $this->getProfilePostCommentOrError($commentId$commentFetchOptions);
        list(
$profilePost$user) = $this->assertProfilePostValidAndViewable($comment['profile_post_id'], $profilePostFetchOptions$userFetchOptions);

        
$comment $this->_controller->getModelFromCache('XenForo_Model_ProfilePost')->prepareProfilePostComment($comment$profilePost$user);

        return array(
$comment$profilePost$user);
    }

    
/**
     * Gets the specified user or throws an error.
     *
     * @param integer $userId
     * @param array $fetchOptions Options that control the data fetched with the record
     *
     * @return array
     */
    
public function getUserOrError($userId, array $fetchOptions = array())
    {
        
$fetchOptions['followingUserId'] = XenForo_Visitor::getUserId();

        
$user $this->_controller->getModelFromCache('XenForo_Model_User')->getFullUserById($userId$fetchOptions);
        if (!
$user)
        {
            throw 
$this->_controller->responseException(
                
$this->_controller->responseError(new XenForo_Phrase('requested_member_not_found'), 404)
            );
        }

        return 
$user;
    }

    
/**
     * Gets the specified profile post or throws an error.
     *
     * @param integer $profilePostId
     * @param array $fetchOptions Options that control the data fetched with the record
     *
     * @return array
     */
    
public function getProfilePostOrError($profilePostId, array $fetchOptions = array())
    {
        if (isset(
$fetchOptions['join']))
        {
            
$fetchOptions['join'] |= XenForo_Model_ProfilePost::FETCH_USER_POSTER;
        }
        else
        {
            
$fetchOptions['join'] = XenForo_Model_ProfilePost::FETCH_USER_POSTER;
        }

        
$profilePost $this->_controller->getModelFromCache('XenForo_Model_ProfilePost')->getProfilePostById($profilePostId$fetchOptions);
        if (!
$profilePost)
        {
            throw 
$this->_controller->responseException(
                
$this->_controller->responseError(new XenForo_Phrase('requested_profile_post_not_found'), 404)
            );
        }

        return 
$profilePost;
    }

    
/**
     * Gets the specified profile post comment or throws an error.
     *
     * @param integer $commentId
     * @param array $fetchOptions Options that control the data fetched with the record
     *
     * @return array
     */
    
public function getProfilePostCommentOrError($commentId, array $fetchOptions = array())
    {
        
$comment $this->_controller->getModelFromCache('XenForo_Model_ProfilePost')->getProfilePostCommentById($commentId$fetchOptions);
        if (!
$comment)
        {
            throw 
$this->_controller->responseException(
                
$this->_controller->responseError(new XenForo_Phrase('requested_comment_not_found'), 404)
            );
        }

        return 
$comment;
    }
}
Онлайн: 1
Реклама