vendor/easycorp/easyadmin-bundle/src/DataCollector/EasyAdminDataCollector.php line 45

Open in your IDE?
  1. <?php
  2. namespace EasyCorp\Bundle\EasyAdminBundle\DataCollector;
  3. use EasyCorp\Bundle\EasyAdminBundle\Configuration\ConfigManager;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpKernel\DataCollector\DataCollector;
  7. use Symfony\Component\VarDumper\Cloner\VarCloner;
  8. use Symfony\Component\VarDumper\Dumper\HtmlDumper;
  9. use Symfony\Component\Yaml\Yaml;
  10. /**
  11.  * Collects information about the requests related to EasyAdmin and displays
  12.  * it both in the web debug toolbar and in the profiler.
  13.  *
  14.  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  15.  */
  16. class EasyAdminDataCollector extends DataCollector
  17. {
  18.     private $configManager;
  19.     public function __construct(ConfigManager $configManager)
  20.     {
  21.         $this->configManager $configManager;
  22.         $this->reset();
  23.     }
  24.     /**
  25.      * {@inheritdoc}
  26.      */
  27.     public function reset()
  28.     {
  29.         $this->data = [
  30.             'num_entities' => 0,
  31.             'request_parameters' => null,
  32.             'current_entity_configuration' => null,
  33.             'backend_configuration' => null,
  34.         ];
  35.     }
  36.     /**
  37.      * {@inheritdoc}
  38.      */
  39.     public function collect(Request $requestResponse $response, \Throwable $exception null)
  40.     {
  41.         if ('easyadmin' !== $request->attributes->get('_route')) {
  42.             return;
  43.         }
  44.         $backendConfig $this->configManager->getBackendConfig();
  45.         $entityName $request->query->get('entity');
  46.         $currentEntityConfig = \array_key_exists($entityName$backendConfig['entities']) ? $backendConfig['entities'][$entityName] : [];
  47.         $this->data = [
  48.             'num_entities' => \count($backendConfig['entities']),
  49.             'request_parameters' => $this->getEasyAdminParameters($request),
  50.             'current_entity_configuration' => $currentEntityConfig,
  51.             'backend_configuration' => $backendConfig,
  52.         ];
  53.     }
  54.     private function getEasyAdminParameters(Request $request): ?array
  55.     {
  56.         return [
  57.             'action' => $request->query->get('action'),
  58.             'entity' => $request->query->get('entity'),
  59.             'id' => $request->query->get('id'),
  60.             'sort_field' => $request->query->get('sortField'),
  61.             'sort_direction' => $request->query->get('sortDirection'),
  62.         ];
  63.     }
  64.     /**
  65.      * @return bool
  66.      */
  67.     public function isEasyAdminAction()
  68.     {
  69.         return isset($this->data['num_entities']) && !== $this->data['num_entities'];
  70.     }
  71.     /**
  72.      * @return int
  73.      */
  74.     public function getNumEntities()
  75.     {
  76.         return $this->data['num_entities'];
  77.     }
  78.     /**
  79.      * @return array
  80.      */
  81.     public function getRequestParameters()
  82.     {
  83.         return $this->data['request_parameters'];
  84.     }
  85.     /**
  86.      * @return array
  87.      */
  88.     public function getCurrentEntityConfig()
  89.     {
  90.         return $this->data['current_entity_configuration'];
  91.     }
  92.     /**
  93.      * @return array
  94.      */
  95.     public function getBackendConfig()
  96.     {
  97.         return $this->data['backend_configuration'];
  98.     }
  99.     /**
  100.      * It dumps the contents of the given variable. It tries several dumpers in
  101.      * turn (VarDumper component, Yaml::dump, etc.) and if none is available, it
  102.      * falls back to PHP's var_export().
  103.      *
  104.      * @param mixed $variable
  105.      *
  106.      * @return string
  107.      */
  108.     public function dump($variable)
  109.     {
  110.         if (class_exists(HtmlDumper::class)) {
  111.             $cloner = new VarCloner();
  112.             $dumper = new HtmlDumper();
  113.             $dumper->dump($cloner->cloneVar($variable), $output fopen('php://memory''r+b'));
  114.             if (false !== $dumpedData stream_get_contents($output, -10)) {
  115.                 return $dumpedData;
  116.             }
  117.         }
  118.         if (class_exists(Yaml::class)) {
  119.             return sprintf('<pre class="sf-dump">%s</pre>'Yaml::dump((array) $variable1024));
  120.         }
  121.         return sprintf('<pre class="sf-dump">%s</pre>'var_export($variabletrue));
  122.     }
  123.     /**
  124.      * {@inheritdoc}
  125.      */
  126.     public function getName()
  127.     {
  128.         return 'easyadmin';
  129.     }
  130. }