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

/**
 * Moderation queue handler for threads.
 *
 * @package XenForo_Moderation
 */
class XenForo_ModerationQueueHandler_Thread extends XenForo_ModerationQueueHandler_Abstract
{
    
/**
     * Gets visible moderation queue entries for specified user.
     *
     * @see XenForo_ModerationQueueHandler_Abstract::getVisibleModerationQueueEntriesForUser()
     */
    
public function getVisibleModerationQueueEntriesForUser(array $contentIds, array $viewingUser)
    {
        
/* @var $threadModel XenForo_Model_Thread */
        
$threadModel XenForo_Model::create('XenForo_Model_Thread');
        
$threads $threadModel->getThreadsByIds($contentIds, array(
            
'join' => XenForo_Model_Thread::FETCH_FORUM XenForo_Model_Thread::FETCH_FIRSTPOST,
            
'permissionCombinationId' => $viewingUser['permission_combination_id']
        ));

        
$output = array();
        foreach (
$threads AS $thread)
        {
            
$thread['permissions'] = XenForo_Permission::unserializePermissions($thread['node_permission_cache']);

            
$canManage true;
            if (!
$threadModel->canViewThreadAndContainer(
                
$thread$thread$null$thread['permissions'], $viewingUser
            
))
            {
                
$canManage false;
            }
            else if (!
XenForo_Permission::hasContentPermission($thread['permissions'], 'editAnyPost')
                || !
XenForo_Permission::hasContentPermission($thread['permissions'], 'deleteAnyThread')
            )
            {
                
$canManage false;
            }

            if (
$canManage)
            {
                
$output[$thread['thread_id']] = array(
                    
'message' => $thread['message'],
                    
'user' => array(
                        
'user_id' => $thread['user_id'],
                        
'username' => $thread['username']
                    ),
                    
'title' => $thread['title'],
                    
'link' => XenForo_Link::buildPublicLink('threads'$thread),
                    
'contentTypeTitle' => new XenForo_Phrase('thread'),
                    
'titleEdit' => true
                
);
            }
        }

        return 
$output;
    }

    
/**
     * Approves the specified moderation queue entry.
     *
     * @see XenForo_ModerationQueueHandler_Abstract::approveModerationQueueEntry()
     */
    
public function approveModerationQueueEntry($contentId$message$title)
    {
        
$message XenForo_Helper_String::autoLinkBbCode($message);

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread'XenForo_DataWriter::ERROR_SILENT);
        
$dw->setExistingData($contentId);
        
$dw->set('discussion_state''visible');
        
$dw->set('title'$title);

        if (
$dw->save())
        {
            
XenForo_Model_Log::logModeratorAction('thread'$dw->getMergedData(), 'approve');

            
$messageDw XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post'XenForo_DataWriter::ERROR_SILENT);
            
$messageDw->setExistingData($dw->get('first_post_id'));
            
$messageDw->set('message_state''visible');
            
$messageDw->set('message'$message);

            
$saved $messageDw->save();
            return 
$saved;
        }
        else
        {
            return 
false;
        }
    }

    
/**
     * Deletes the specified moderation queue entry.
     *
     * @see XenForo_ModerationQueueHandler_Abstract::deleteModerationQueueEntry()
     */
    
public function deleteModerationQueueEntry($contentId)
    {
        
$dw XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread'XenForo_DataWriter::ERROR_SILENT);
        
$dw->setExistingData($contentId);
        
$dw->set('discussion_state''deleted');

        if (
$dw->save())
        {
            
XenForo_Model_Log::logModeratorAction('thread'$dw->getMergedData(), 'delete_soft', array('reason' => ''));
            return 
true;
        }
        else
        {
            return 
false;
        }
    }
}
Онлайн: 1
Реклама