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

/**
 * Handler for reported posts.
 *
 * @package XenForo_Report
 */
class XenForo_ReportHandler_Post 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 $postModel XenForo_Model_Post */
        
$postModel XenForo_Model::create('XenForo_Model_Post');

        
$post $postModel->getPostById($content['post_id'], array(
            
'join' => XenForo_Model_Post::FETCH_THREAD XenForo_Model_Post::FETCH_FORUM
        
));
        if (!
$post)
        {
            return array(
falsefalsefalse);
        }

        return array(
            
$content['post_id'],
            
$content['user_id'],
            array(
                
'thread_id' => $post['thread_id'],
                
'thread_title' => $post['title'],

                
'node_id' => $post['node_id'],
                
'node_title' => $post['node_title'],
                
'node_name' => $post['node_name'],

                
'username' => $post['username'],

                
'message' => $post['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)
    {
        
$reportsByForum = array();
        foreach (
$reports AS $reportId => $report)
        {
            
$info unserialize($report['content_info']);
            
$reportsByForum[$info['node_id']][] = $reportId;
        }

        
/* @var $forumModel XenForo_Model_Forum */
        
$forumModel XenForo_Model::create('XenForo_Model_Forum');
        
$forums $forumModel->getForumsByIds(array_keys($reportsByForum), array(
            
'permissionCombinationId' => $viewingUser['permission_combination_id']
        ));
        
$forums $forumModel->unserializePermissionsInList($forums'node_permission_cache');

        foreach (
$reportsByForum AS $forumId => $forumReports)
        {
            
$remove false;
            if (!isset(
$forums[$forumId]))
            {
                
$remove true;
            }
            else
            {
                
$forum $forums[$forumId];
                if (!
XenForo_Permission::hasContentPermission($forum['permissions'], 'editAnyPost')
                    && !
XenForo_Permission::hasContentPermission($forum['permissions'], 'deleteAnyPost')
                )
                {
                    
$remove true;
                }
            }

            if (
$remove)
            {
                foreach (
$forumReports 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('post_in_thread_x', array('title' => $contentInfo['thread_title']));
    }

    
/**
     * Gets the link to the specified content.
     *
     * @see XenForo_ReportHandler_Abstract::getContentLink()
     */
    
public function getContentLink(array $report, array $contentInfo)
    {
        return 
XenForo_Link::buildPublicLink('posts', array('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)
    {
        
$parser XenForo_BbCode_Parser::create(
            
XenForo_BbCode_Formatter_Base::create('Base', array('view' => $view))
        );

        return 
$view->createTemplateObject('report_post_content', array(
            
'report' => $report,
            
'content' => $contentInfo,
            
'bbCodeParser' => $parser
        
));
    }

    
/**
     * Prepares the extra content for display.
     *
     * @see XenForo_ReportHandler_Abstract::prepareExtraContent()
     */
    
public function prepareExtraContent(array $contentInfo)
    {
        
$contentInfo['thread_title'] = XenForo_Helper_String::censorString($contentInfo['thread_title']);

        return 
$contentInfo;
    }
}
Онлайн: 3
Реклама