Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Core/src/Panel/ComponentsPanel.php
<?php

namespace Croogo\Core\Panel;

use
Cake\Controller\ComponentRegistry;
use
Cake\Core\Configure;
use
Cake\Event\Event;
use
DebugKit\DebugPanel;

class
ComponentsPanel extends DebugPanel
{

    public
$plugin = 'Croogo/Core';

    protected
$_loadedComponents = [];

    public function
afterFilter(Event $event)
    {
       
/* @var ComponentRegistry $componentRegistry */
       
if (!isset($event->getSubject()->View)) {
            return;
        }

       
$componentRegistry = $event->getSubject()->components();

       
$loadedComponents = $componentRegistry->loaded();

        foreach (
$loadedComponents as $name) {
           
$component = $componentRegistry->get($name);
           
$this->_loadedComponents[$this->_classNameConvert(get_class($component))] = json_decode(json_encode($component->config()), true);
        }
    }

    public function
data()
    {
        return [
           
'loaded' => $this->_loadedComponents
       
];
    }

    public function
summary()
    {
        return
count($this->_loadedComponents);
    }

    public function
implementedEvents()
    {
        return [
           
'Controller.shutdown' => 'afterFilter'
       
];
    }

    protected function
_classNameConvert($className)
    {
       
$path = explode('\\', substr($className, 0, -9));
       
$pluginPath = array_diff($path, ['Controller', 'Component']);
       
$name = array_pop($pluginPath);

        if ((
$pluginPath === ['Cake']) || ($pluginPath === explode('\\', Configure::read('App.namespace')))) {
           
$pluginPath = [];
        }

        return
implode('.', pluginSplit($name, true, implode('/', $pluginPath)));
    }
}