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

namespace XF\Pub\Controller;

use
XF\Mvc\ParameterBag;

class
Warning extends AbstractController
{
    public function
actionIndex(ParameterBag $params)
    {
       
$warning = $this->assertViewableWarning($params->warning_id, ['User']);

        if (!
$warning->User)
        {
            return
$this->error(\XF::phrase('user_who_received_this_warning_no_longer_exists'));
        }

       
$handler = $warning->getHandler();
       
$content = $warning->Content;
        if (
$handler && $content)
        {
           
$canViewContent = $handler->canViewContent($content);
           
$contentUrl = $handler->getContentUrl($content);
        }
        else
        {
           
$canViewContent = false;
           
$contentUrl = '';
        }

       
$viewParams = [
           
'warning' => $warning,
           
'user' => $warning->User,
           
'canViewContent' => $canViewContent,
           
'contentUrl' => $contentUrl
       
];
        return
$this->view('XF:Warning\Info', 'warning_info', $viewParams);
    }

    public function
actionExpire(ParameterBag $params)
    {
       
$this->assertPostOnly();

       
$warning = $this->assertViewableWarning($params->warning_id);
        if (!
$warning->canEditExpiry($error))
        {
            return
$this->noPermission($error);
        }


        if (
$this->filter('expire', 'str') == 'now')
        {
           
$expiryDate = \XF::$time;
        }
        else
        {
           
$expiryLength = $this->filter('expiry_value', 'uint');
           
$expiryUnit = $this->filter('expiry_unit', 'str');

           
$expiryDate = strtotime("+$expiryLength $expiryUnit");
            if (
$expiryDate >= pow(2, 32) - 1)
            {
               
$expiryDate = 0;
            }
        }

       
$warning->expiry_date = $expiryDate;
       
$warning->save();

        return
$this->redirect($this->getDynamicRedirect());
    }

    public function
actionDelete(ParameterBag $params)
    {
       
$this->assertPostOnly();

       
$warning = $this->assertViewableWarning($params->warning_id);
        if (!
$warning->canDelete($error))
        {
            return
$this->noPermission($error);
        }

        if (
$this->filter('confirm', 'bool'))
        {
           
$warning->delete();

            return
$this->redirect($this->getDynamicRedirect());
        }
        else
        {
            return
$this->rerouteController('XF:Warning', 'index', $params->params());
        }
    }

   
/**
     * @param $id
     * @param array $extraWith
     *
     * @return \XF\Entity\Warning
     *
     * @throws \XF\Mvc\Reply\Exception
     */
   
protected function assertViewableWarning($id, array $extraWith = [])
    {
       
/** @var \XF\Entity\Warning $warning */
       
$warning = $this->em()->find('XF:Warning', $id, $extraWith);
        if (!
$warning)
        {
            throw
$this->exception($this->notFound(\XF::phrase('requested_warning_not_found')));
        }

        if (!
$warning->canView($error))
        {
            throw
$this->exception($this->noPermission($error));
        }

        return
$warning;
    }

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

}