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

/**
 * Handler for reported profile posts.
 *
 * @package XenForo_Report
 */
class XenForo_ReportHandler_ProfilePost extends XenForo_ReportHandler_Abstract
{
    
/**
     * Gets report details from raw array of content (eg, a post record).
     *
     * @see XenForo_ReportHandler_Abstract::getReportDetailsFromContent()
     */
    
public function getReportDetailsFromContent(array $content)
    {
        
/* @var $profilePostModel XenForo_Model_ProfilePost */
        
$profilePostModel XenForo_Model::create('XenForo_Model_ProfilePost');

        
$profilePost $profilePostModel->getProfilePostById($content['profile_post_id'], array(
            
'join' => XenForo_Model_ProfilePost::FETCH_USER_RECEIVER
        
));
        if (!
$profilePost)
        {
            return array(
falsefalsefalse);
        }

        return array(
            
$content['profile_post_id'],
            
$content['user_id'],
            array(
                
'profile_user_id' => $profilePost['profile_user_id'],
                
'profile_username' => $profilePost['profile_username'],

                
'message' => $profilePost['message']
            )
        );
    }

    
/**
     * Gets the visible reports of this content type for the viewing user.
     *
     * @see XenForo_ReportHandler_Abstract:getVisibleReportsForUser()
     */
    
public function getVisibleReportsForUser(array $reports, array $viewingUser)
    {
        
$reportsByUser = array();
        foreach (
$reports AS $reportId => $report)
        {
            
$info unserialize($report['content_info']);
            
$reportsByUser[$info['profile_user_id']][] = $reportId;
        }

        
$users XenForo_Model::create('XenForo_Model_User')->getUsersByIds(array_keys($reportsByUser), array(
            
'join' => XenForo_Model_User::FETCH_USER_PRIVACY,
            
'followingUserId' => $viewingUser['user_id']
        ));

        
$userProfileModel XenForo_Model::create('XenForo_Model_UserProfile');

        foreach (
$reportsByUser AS $userId => $userReports)
        {
            
$remove false;

            if (!isset(
$users[$userId]))
            {
                
$remove true;
            }
            else if (!
$userProfileModel->canViewFullUserProfile($users[$userId], $null$viewingUser))
            {
                
$remove true;
            }
            else if (!
XenForo_Permission::hasPermission($viewingUser['permissions'], 'profilePost''editAny')
                && !
XenForo_Permission::hasPermission($viewingUser['permissions'], 'profilePost''deleteAny')
            )
            {
                
$remove true;
            }

            if (
$remove)
            {
                foreach (
$userReports AS $reportId)
                {
                    unset(
$reports[$reportId]);
                }
            }
        }

        return 
$reports;
    }

    
/**
     * Gets the title of the specified content.
     *
     * @see XenForo_ReportHandler_Abstract:getContentTitle()
     */
    
public function getContentTitle(array $report, array $contentInfo)
    {
        return new 
XenForo_Phrase('profile_post_for_x', array('username' => $contentInfo['profile_username']));
    }

    
/**
     * Gets the link to the specified content.
     *
     * @see XenForo_ReportHandler_Abstract::getContentLink()
     */
    
public function getContentLink(array $report, array $contentInfo)
    {
        return 
XenForo_Link::buildPublicLink('profile-posts', array('profile_post_id' => $report['content_id']));
    }

    
/**
     * A callback that is called when viewing the full report.
     *
     * @see XenForo_ReportHandler_Abstract::viewCallback()
     */
    
public function viewCallback(XenForo_View $view, array &$report, array &$contentInfo)
    {
        return 
$view->createTemplateObject('report_profile_post_content', array(
            
'report' => $report,
            
'content' => $contentInfo
        
));
    }
}
Онлайн: 1
Реклама