Вход Регистрация
Файл: 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($warningtrue);
            
$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');
    }
}
Онлайн: 0
Реклама