Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/cakephp/debug_kit/src/Panel/DeprecationsPanel.php
<?php
/**
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
namespace DebugKit\Panel;

use
Cake\Event\Event;
use
Cake\Utility\Hash;
use
Composer\Json\JsonFile;
use
DebugKit\DebugInclude;
use
DebugKit\DebugPanel;

/**
 * Provides a list of deprecated methods for the current request
 *
 */
class DeprecationsPanel extends DebugPanel
{

   
/**
     * The list of depreated errors.
     *
     * @var array
     */
   
protected static $deprecatedErrors = [];

   
/**
     * instance of DebugInclude
     *
     * @var \DebugKit\DebugInclude
     */
   
protected $_debug;

   
/**
     * construct
     */
   
public function __construct()
    {
       
$this->_debug = new DebugInclude();
    }

   
/**
     * Get a list of files that were deprecated and split them out into the various parts of the app
     *
     * @return array
     */
   
protected function _prepare()
    {
       
$errors = static::$deprecatedErrors;
       
$return = ['cake' => [], 'app' => [], 'plugins' => [], 'vendor' => [], 'other' => []];

        foreach (
$errors as $error) {
           
$file = $error['file'];
           
$line = $error['line'];
            if (isset(
$error['context']['frame'])) {
               
$file = $error['context']['frame']['file'];
               
$line = $error['context']['frame']['line'];
            }

           
$errorData = [
               
'file' => $file,
               
'line' => $line,
               
'message' => $error['message'],
            ];

           
$pluginName = $this->_debug->getPluginName($file);
            if (
$pluginName) {
               
$errorData['niceFile'] = $this->_debug->niceFileName($file, 'plugin', $pluginName);
               
$return['plugins'][$pluginName][] = $errorData;
            } elseif (
$this->_debug->isAppFile($file)) {
               
$errorData['niceFile'] = $this->_debug->niceFileName($file, 'app');
               
$return['app'][] = $errorData;
            } elseif (
$this->_debug->isCakeFile($file)) {
               
$errorData['niceFile'] = $this->_debug->niceFileName($file, 'cake');
               
$return['cake'][] = $errorData;
            } else {
               
$vendorName = $this->_debug->getComposerPackageName($file);

                if (
$vendorName) {
                   
$errorData['niceFile'] = $this->_debug->niceFileName($file, 'vendor', $vendorName);
                   
$return['vendor'][$vendorName][] = $errorData;
                } else {
                   
$errorData['niceFile'] = $this->_debug->niceFileName($file, 'root');
                   
$return['other'][] = $errorData;
                }
            }
        }

       
ksort($return['app']);
       
ksort($return['cake']);
       
ksort($return['plugins']);
       
ksort($return['vendor']);

        foreach (
$return['plugins'] as &$plugin) {
           
ksort($plugin);
        }

        return
$return;
    }

   
/**
     * Add a error
     *
     * @param array $error The deprecated error
     * @return void
     */
   
public static function addDeprecatedError($error)
    {
        static::
$deprecatedErrors[] = $error;
    }

   
/**
     * Reset the tracked errors.
     *
     * @return void
     */
   
public static function clearDeprecatedErrors()
    {
        static::
$deprecatedErrors = [];
    }

   
/**
     * Get the number of files deprecated in this request.
     *
     * @return string
     */
   
public function summary()
    {
       
$data = $this->_data;
        if (empty(
$data)) {
           
$data = $this->_prepare();
        }

        return
array_reduce($data, function ($carry, $item) {
            if (empty(
$item)) {
                return
$carry;
            }
           
// app, cake, or other groups
           
if (Hash::dimensions($item) == 2) {
                return
$carry + count($item);
            }

           
// plugin and vendor groups
           
foreach ($item as $group) {
               
$carry += count($group);
            }

            return
$carry;
        },
0);
    }

   
/**
     * Shutdown callback
     *
     * @param \Cake\Event\Event $event Event
     * @return void
     */
   
public function shutdown(Event $event)
    {
       
$this->_data = $this->_prepare();
    }
}