Вход Регистрация
Файл: library/XenForo/ViewAdmin/Error/ServerError.php
Строк: 131
<?php

class XenForo_ViewAdmin_Error_ServerError extends XenForo_ViewAdmin_Base
{
    
/**
     * Checks for the presence of an exception in the view parameters, and if one exists,
     * prepares the trace as HTML in the form of <li> tags.
     *
     * @return array Returns 'message', 'trace', and 'traceHtml' keys
     */
    
protected function _getExceptionTraceHtml()
    {
        
$traceHtml '';

        if (isset(
$this->_params['exception']) && $this->_params['exception'] instanceof Exception)
        {
            
$e $this->_params['exception'];
            
$error $e->getMessage();
            
$cwd getcwd();

            foreach (
$e->getTrace() AS $traceEntry)
            {
                
$function = (isset($traceEntry['class']) ? $traceEntry['class'] . $traceEntry['type'] : '') . $traceEntry['function'];
                
$traceHtml .= "t<li><b class="function">" htmlspecialchars($function) . "()</b>" . (isset($traceEntry['file']) && isset($traceEntry['line']) ? ' <span class="shade">in</span> <b class="file">' str_replace("$cwd/library/"''$traceEntry['file']) . "</b> <span class="shade">at line</span> <b class="line">$traceEntry[line]</b>" '') . "</li>n";
            }
        }
        else
        {
            
$message '';
        }

        return array(
            
'error' => $error,
            
'traceHtml' => $traceHtml
        
);
    }

    public function 
renderHtml()
    {
        
$exception $this->_getExceptionTraceHtml();

        return 
"<div class="baseHtml exception"><h2>Server Error</h2> <p>$exception[error]</p> <ol class="traceHtml">n$exception[traceHtml]</ol></div>";
    }

    public function 
renderJson()
    {
        return 
XenForo_ViewRenderer_Json::jsonEncodeForOutput($this->_getExceptionTraceHtml());
    }

    public function 
renderXml()
    {
        
$document = new DOMDocument('1.0''utf-8');
        
$document->formatOutput true;

        
$rootNode $document->createElement('errors');
        
$document->appendChild($rootNode);

        if (isset(
$this->_params['exception']) && $this->_params['exception'] instanceof Exception)
        {
            
$e $this->_params['exception'];
            
$exceptionMessage $e->getMessage();

            
$rootNode->appendChild(
                
XenForo_Helper_DevelopmentXml::createDomElement($document'error'$exceptionMessage)
            );
            
$traceNode $document->createElement('trace');

            foreach (
$e->getTrace() AS $trace)
            {
                
$function = (isset($trace['class']) ? $trace['class'] . $trace['type'] : '') . $trace['function'];

                if (!isset(
$trace['file']))
                {
                    
$trace['file'] = '';
                }
                if (!isset(
$trace['line']))
                {
                    
$trace['line'] = '';
                }

                
$entryNode $document->createElement('entry');
                
$entryNode->setAttribute('function'$function);
                
$entryNode->setAttribute('file'$trace['file']);
                
$entryNode->setAttribute('line'$trace['line']);

                
$traceNode->appendChild($entryNode);
            }

            
$rootNode->appendChild($traceNode);
        }
        else
        {
            
$rootNode->appendChild($document->createElement('error''Unknown error, trace unavailable'));
        }

        return 
$document->saveXML();
    }
}
Онлайн: 1
Реклама