Вход Регистрация
Файл: protected/extensions/yii2-debug/panels/Yii2RequestPanel.php
Строк: 140
<?php

/**
 * @author Roman Zhuravlev <zhuravljov@gmail.com>
 * @package Yii2Debug
 * @since 1.1.13
 */
class Yii2RequestPanel extends Yii2DebugPanel
{
    public function 
getName()
    {
        return 
'Request';
    }

    public function 
getSummary()
    {
        
$data $this->getData();
        return 
$this->render(dirname(__FILE__) . '/../views/panels/request_bar.php', array(
            
'statusCode' => $data['statusCode'],
            
'route' => $data['route'],
            
'action' => $data['action'],
        ));
    }

    public function 
getDetail()
    {
        return 
$this->render(dirname(__FILE__) . '/../views/panels/request.php', array(
            
'data' => $this->getData(),
        ));
    }

    public function 
save()
    {
        if (
function_exists('apache_request_headers')) {
            
$requestHeaders apache_request_headers();
        } elseif (
function_exists('http_get_request_headers')) {
            
$requestHeaders http_get_request_headers();
        } else {
            
$requestHeaders = array();
        }
        
$responseHeaders = array();
        foreach (
headers_list() as $header) {
            if ((
$pos strpos($header':')) !== false) {
                
$name substr($header0$pos);
                
$value trim(substr($header$pos 1));
                if (isset(
$responseHeaders[$name])) {
                    if (!
is_array($responseHeaders[$name])) {
                        
$responseHeaders[$name] = array($responseHeaders[$name], $value);
                    } else {
                        
$responseHeaders[$name][] = $value;
                    }
                } else {
                    
$responseHeaders[$name] = $value;
                }
            } else {
                
$responseHeaders[] = $header;
            }
        }

        
$route Yii::app()->getUrlManager()->parseUrl(Yii::app()->getRequest());
        
$action null;
        
$actionParams = array();
        if ((
$ca = @Yii::app()->createController($route)) !== null) {
            
/* @var CController $controller */
            /* @var string $actionID */
            
list($controller$actionID) = $ca;
            if (!
$actionID$actionID $controller->defaultAction;
            if ((
$a $controller->createAction($actionID)) !== null) {
                if (
$a instanceof CInlineAction) {
                    
$action get_class($controller) . '::action' ucfirst($actionID) . '()';
                } else {
                    
$action get_class($a) . '::run()';
                }
            }
            
$actionParams $controller->actionParams;
        }

        
/* @var CWebUser $user */
        
$user Yii::app()->getComponent('user'false);

        return array(
            
'flashes' => $user $user->getFlashes(false) : array(),
            
'statusCode' => $this->getStatusCode(),
            
'requestHeaders' => $requestHeaders,
            
'responseHeaders' => $responseHeaders,
            
'route' => $route,
            
'action' => $action,
            
'actionParams' => $actionParams,
            
'SERVER' => empty($_SERVER) ? array() : $_SERVER,
            
'GET' => empty($_GET) ? array() : $_GET,
            
'POST' => empty($_POST) ? array() : $_POST,
            
'COOKIE' => empty($_COOKIE) ? array() : $_COOKIE,
            
'FILES' => empty($_FILES) ? array() : $_FILES,
            
'SESSION' => empty($_SESSION) ? array() : $_SESSION,
        );
    }

    private 
$_statusCode;

    
/**
     * @return int|null
     */
    
protected function getStatusCode()
    {
        if (
function_exists('http_response_code')) {
            return 
http_response_code();
        } else {
            return 
$this->_statusCode;
        }
    }

    public function 
__construct($owner$id)
    {
        
parent::__construct($owner$id);
        if (!
function_exists('http_response_code')) {
            
Yii::app()->attachEventHandler('onException', array($this'onException'));
        }
    }

    
/**
     * @param CExceptionEvent $event
     */
    
protected function onException($event)
    {
        if (
$event->exception instanceof CHttpException) {
            
$this->_statusCode $event->exception->statusCode;
        } else {
            
$this->_statusCode 500;
        }
    }

    
/**
     * @param int $statusCode
     * @return string html
     */
    
public static function getStatusCodeHtml($statusCode)
    {
        
$type 'important';
        if (
$statusCode >= 100 && $statusCode 200) {
            
$type 'info';
        } elseif (
$statusCode >= 200 && $statusCode 300) {
            
$type 'success';
        } elseif (
$statusCode >= 300 && $statusCode 400) {
            
$type 'warning';
        }
        return 
CHtml::tag('span', array('class' => 'label label-' $type), $statusCode);
    }
}
Онлайн: 0
Реклама