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

class XenForo_ControllerPublic_Warning extends XenForo_ControllerPublic_Abstract
{
    public function 
actionIndex()
    {
        
$warningId = $this->_input->filterSingle('warning_id', XenForo_Input::UINT);
        
$warning = $this->_getWarningOrError($warningId);

        if (!
$this->_getUserModel()->canViewWarnings())
        {
            return 
$this->responseNoPermission();
        }

        
$user = $this->_getUserModel()->getUserById($warning['user_id']);
        if (!
$user)
        {
            return 
$this->responseError(new XenForo_Phrase('user_who_received_this_warning_no_longer_exists'));
        }

        
$handler = $this->_getWarningModel()->getWarningHandler($warning['content_type']);
        
$contentUrl = '';
        
$canViewContent = false;
        if (
$handler)
        {
            
$content = $handler->getContent($warning['content_id']);
            if (
$content)
            {
                
$contentUrl = $handler->getContentUrl($content);
                
$canViewContent = $handler->canView($content);
            }
        }

        
$viewParams = array(
            
'warning' => $warning,
            
'user' => $user,
            
'contentUrl' => $contentUrl,
            
'canViewContent' => $canViewContent,
            
'canDeleteWarning' => $this->_getWarningModel()->canDeleteWarning($warning),
            
'canExpireWarning' => $this->_getWarningModel()->canUpdateWarningExpiration($warning),
            
'redirect' => $this->getDynamicRedirect()
        );
        return 
$this->responseView('XenForo_ViewPublic_Warning_Info', 'warning_info', $viewParams);
    }

    public function 
actionExpire()
    {
        
$warningId = $this->_input->filterSingle('warning_id', XenForo_Input::UINT);
        
$warning = $this->_getWarningOrError($warningId);

        if (!
$this->_getUserModel()->canViewWarnings() || !$this->_getWarningModel()->canUpdateWarningExpiration($warning))
        {
            return 
$this->responseNoPermission();
        }

        if (
$this->isConfirmedPost())
        {
            
$expire = $this->_input->filterSingle('expire', XenForo_Input::STRING);
            if (
$expire == 'now')
            {
                
$expiryDate = XenForo_Application::$time;
            }
            else if (
$expire == 'future')
            {
                
$expiryLength = $this->_input->filterSingle('expiry_length', XenForo_Input::UINT);
                
$expiryUnit = $this->_input->filterSingle('expiry_unit', XenForo_Input::STRING);

                
$expiryDate = strtotime("+$expiryLength $expiryUnit");
                
$expiryDate = min(pow(2,32) - 1, $expiryDate);
                if (!
$expiryDate || $expiryDate < XenForo_Application::$time)
                {
                    
$expiryDate = XenForo_Application::$time;
                }
            }
            else
            {
                return 
$this->responseReroute(__CLASS__, 'index');
            }

            
$dw = XenForo_DataWriter::create('XenForo_DataWriter_Warning');
            
$dw->setExistingData($warning, true);
            
$dw->set('expiry_date', $expiryDate);
            
$dw->save();

            return 
$this->responseRedirect(
                
XenForo_ControllerResponse_Redirect::SUCCESS,
                
$this->getDynamicRedirect()
            );
        }
        else
        {
            return 
$this->responseReroute(__CLASS__, 'index');
        }
    }

    
/**
     * Deletes a warning.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionDelete()
    {
        
$warningId = $this->_input->filterSingle('warning_id', XenForo_Input::UINT);
        
$warning = $this->_getWarningOrError($warningId);

        if (!
$this->_getUserModel()->canViewWarnings() || !$this->_getWarningModel()->canDeleteWarning($warning))
        {
            return 
$this->responseNoPermission();
        }

        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_Warning', 'warning_id',
                
$this->getDynamicRedirect()
            );
        }
        else
        {
            return 
$this->responseReroute(__CLASS__, 'index');
        }
    }

    
/**
     * Gets the specified warning or throws an error.
     *
     * @param integer $id
     *
     * @return array
     */
    
protected function _getWarningOrError($id)
    {
        return 
$this->_getWarningModel()->prepareWarning($this->getRecordOrError(
            
$id, $this->_getWarningModel(), 'getWarningById',
            
'requested_warning_not_found'
        
));
    }

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

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