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

/**
 * Spam Cleaner.
 * - Deletes any posts by the spam-posting user
 * - Deletes or moves any threads started by the user
 * - Bans the user
 */
class XenForo_ControllerPublic_SpamCleaner extends XenForo_ControllerPublic_Abstract
{
    protected function 
_preDispatch($action)
    {
        if (!
XenForo_Visitor::getInstance()->hasPermission('general''cleanSpam'))
        {
            throw 
$this->getErrorOrNoPermissionResponseException(false);
        }
    }

    public function 
actionIndex()
    {
        
$userModel $this->_getUserModel();

        
$userId $this->_input->filterSingle('user_id'XenForo_Input::UINT);
        
$user $userModel->getUserById($userId, array('join' => XenForo_Model_User::FETCH_LAST_ACTIVITY));
        if (!
$user)
        {
            return 
$this->responseError(new XenForo_Phrase('requested_member_not_found'), 404);
        }

        if (!
$userModel->couldBeSpammer($user$errorKey))
        {
            return 
$this->responseError(new XenForo_Phrase($errorKey));
        }

        
$canViewIps $userModel->canViewIps();

        
$noredirect $this->_input->filterSingle('noredirect'XenForo_Input::UINT);

        if (
$this->isConfirmedPost())
        {
            
$options $this->_input->filter(array(
                
'action_threads'  => XenForo_Input::STRING,
                
'delete_messages' => XenForo_Input::UINT,
                
'delete_conversations' => XenForo_Input::UINT,
                
'ban_user'        => XenForo_Input::UINT,
                
'check_ips'       => XenForo_Input::UINT,
                
'email_user'      => XenForo_Input::UINT,
                
'email'           => XenForo_Input::STRING,
            ));

            
$spamCleanerModel $this->_getSpamCleanerModel();

            if (!
$log $spamCleanerModel->cleanUp($user$options$log$errorKey))
            {
                return 
$this->responseError(new XenForo_Phrase($errorKey));
            }

            if (
$options['check_ips'] && $canViewIps)
            {
                
$users $spamCleanerModel->checkIps($user['user_id'], XenForo_Application::get('options')->spamCheckIpsDaysLimit);

                
$viewParams = array(
                    
'user' => $user,
                    
'spammer' => $user,
                    
'users' => $users,
                    
'noredirect' => $noredirect
                
);

                return 
$this->responseView(
                    
'XenForo_ViewPublic_SpamCleaner_CheckIps',
                    
'spam_cleaner_check_ips',
                    
$viewParams
                
);
            }
            else
            {
                if (
$noredirect && !$options['ban_user'])
                {
                    
$redirect $this->getDynamicRedirect();
                }
                else
                {
                    
$redirect XenForo_Link::buildPublicLink('index');
                }

                return 
$this->responseRedirect(
                    
XenForo_ControllerResponse_Redirect::SUCCESS,
                    
$redirect,
                    new 
XenForo_Phrase('spam_deleted')
                );
            }
        }
        else
        {
            if (
$ipId $this->_input->filterSingle('ip_id'XenForo_Input::UINT))
            {
                
$contentIpRecord XenForo_Model_Ip::getById($ipId);
                
$contentIp $contentIpRecord['ip_address'];
            }
            else
            {
                
$contentIp '';
            }

            
$options XenForo_Application::get('options');

            
$contactUrl $options->contactUrl;
            if (
$contactUrl['type'] == 'default')
            {
                
$contactUrl XenForo_Link::buildPublicLink('canonical:misc/contact');
            }
            else if (
$contactUrl['type'] == 'custom')
            {
                
$contactUrl $contactUrl['custom'];
            }
            else
            {
                
$contactUrl '';
            }

            
$emailText strtr(
                
$options->spamEmailText,
                array(
                    
'{username}' => $user['username'],
                    
'{boardTitle}' => $options->boardTitle,
                    
'{contactUrl}' => $contactUrl
                
)
            );

            
$viewParams = array(
                
'user' => $user,
                
'canViewIps' => $canViewIps,
                
'registrationIps' => $userModel->getRegistrationIps($user['user_id']),
                
'contentIp' => $contentIp,
                
'emailText' => $emailText,
                
'noredirect' => $noredirect,
            );

            return 
$this->responseView(
                
'XenForo_ViewPublic_SpamCleaner',
                
'spam_cleaner',
                
$viewParams
            
);
        }
    }

    
/**
     * Session activity details.
     * @see XenForo_Controller::getSessionActivityDetailsForList()
     */
    
public static function getSessionActivityDetailsForList(array $activities)
    {
        return new 
XenForo_Phrase('performing_moderation_duties');
    }

    
/**
     * @return XenForo_Model_User
     */
    
protected function _getUserModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_User');
    }

    
/**
     * @return XenForo_Model_SpamCleaner
     */
    
protected function _getSpamCleanerModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_SpamCleaner');
    }
}
Онлайн: 0
Реклама