Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Pub/Controller/SpamCleaner.php
<?php

namespace XF\Pub\Controller;

use
XF\Mvc\ParameterBag;

class
SpamCleaner extends AbstractController
{
    protected function
preDispatchController($action, ParameterBag $params)
    {
        if (!\
XF::visitor()->canCleanSpam())
        {
            throw
$this->exception($this->noPermission());
        }
    }

    protected function
filterSpamCleanActions()
    {
        return
$this->filter([
           
'action_threads' => 'bool',
           
'delete_messages' => 'bool',
           
'delete_conversations' => 'bool',
           
'ban_user' => 'bool',
           
'check_ips' => 'bool'
       
]);
    }

    public function
actionIndex(ParameterBag $params)
    {
       
/** @var \XF\Entity\User $user */
       
$user = $this->assertRecordExists('XF:User', $params->user_id);
        if (!
$user->isPossibleSpammer($error))
        {
            return
$this->error($error);
        }

       
$this->assertCanonicalUrl($this->buildLink('spam-cleaner', $user));

       
$canViewIps = \XF::visitor()->canViewIps();
       
$noRedirect = $this->filter('no_redirect', 'bool');

        if (
$this->isPost())
        {
           
$actions = $this->filterSpamCleanActions();

           
$cleaner = $this->app->spam()->cleaner($user);
           
$cleaner->cleanUp($actions);

            if (!
$cleaner->finalize())
            {
                return
$this->error($cleaner->getErrors());
            }

            if (
$actions['check_ips'] && $canViewIps)
            {
               
$shared = $user->getSharedIpUsers($this->app()->options()->sharedIpsCheckLimit);

               
$viewParams = [
                   
'spammer' => $user,
                   
'shared' => $shared,
                   
'noRedirect' => $noRedirect
               
];
                return
$this->view('XF:SpamCleaner\CheckIps', 'spam_cleaner_check_ips', $viewParams);
            }
            else
            {
                return
$this->redirect($this->getDynamicRedirect(), \XF::phrase('spam_deleted'));
            }
        }
        else
        {
            if (
$ipId = $this->filter('ip_id', 'uint'))
            {
               
$ip = $this->finder('XF:Ip')->where('ip_id', $ipId)->fetchOne();
                if (
$ip)
                {
                   
$contentIp = $ip->ip;
                }
                else
                {
                   
$contentIp = '';
                }
            }
            else
            {
               
$contentIp = '';
            }

           
$viewParams = [
               
'user' => $user,
               
'canViewIps' => $canViewIps,
               
'contentIp' => $contentIp,
               
'noRedirect' => $noRedirect
           
];
            return
$this->view('XF:SpamCleaner\Cleaner', 'spam_cleaner', $viewParams);
        }
    }

    public static function
getActivityDetails(array $activities)
    {
        return \
XF::phrase('performing_moderation_duties');
    }
}