loopit-8.x-1.x-dev/src/Controller/LoopitController.php

src/Controller/LoopitController.php
<?php

/**
 * @file
 * Contains \Drupal\loopit\Controller\LoopitController.
 */

namespace Drupal\loopit\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\loopit\Aggregate\AggregateEntity;
use Drupal\loopit\Aggregate\AggregatePlugin;
use Drupal\loopit\Aggregate\AggregateService;

/**
 * Returns responses for devel module routes.
 *
 * @see \Drupal\devel\Controller\DevelController
 */
class LoopitController extends ControllerBase {


  public function entityClasses($pattern) {

    if ($pattern == 'all') {
      $subset_array_parents = NULL;
    }
    else {
      // categories: __contrib__, __custom__,
      // Or using provider pattern: __block*__, __*content__,
      // Or on the full class name: *Type for (Drupal\block_content\Entity\BlockContentType, Drupal\Core\Config\Entity\ConfigEntityType, ...)
      $subset_array_parents = [
        '*/\*handlers' => $pattern,
        '*/\*class' => $pattern,
        '*/\*provider' => $pattern,
      ];

    }

    $aggreg = AggregateEntity::getClasses($subset_array_parents);
    $context = $aggreg->getContext();

    return [
      $this->exportAsRenderable($context['entity_id_centric'], 'Entity classes'),
      $this->exportAsRenderable($context['entity_handler_centric'], 'Entity classes by handlers'),
    ];
  }

  public function pluginClasses($pattern) {

    if ($pattern == 'all') {
      $leaf_match = ['*class' => '*', '*provider' => '*', '*deriver' => '*'];
    }
    else {
      $leaf_match = [
        '*class' => $pattern,
        '*provider' => $pattern,
        '*deriver' => $pattern,
      ];
    }

    $aggreg = AggregatePlugin::getClasses($leaf_match);
    $context = $aggreg->getContext();

    return [
      $this->exportAsRenderable($context['plugin_id_centric'], 'Plugin classes'),
      $this->exportAsRenderable($context['plugin_handler_shared'], 'Shared plugin classes'),
      $this->exportAsRenderable($context['plugin_handler_unique'], 'Unique plugin classes'),
    ];
  }

  public function serviceClasses($pattern) {

    if ($pattern == 'all') {
      $leaf_match = ['*class' => '*', '*Class' => '*'];
    }
    else {
      $leaf_match = ['*class' => $pattern, '*Class' => $pattern];
    }

    $aggreg = AggregateService::getClasses($leaf_match);
    $context = $aggreg->getContext();

    return [
      $this->exportAsRenderable($context['service_id_references'], 'Service classes and references'),
      $this->exportAsRenderable($context['service_only_references'], 'Service only references (because filtered classes)'),
    ];
  }

  /**
   * Export as renderable without array cast.
   *
   * @see \Drupal\loopit_krumo\Plugin\Devel\Dumper\KrumoDebug::exportAsRenderable()
   */
  public function exportAsRenderable($input, $name = NULL) {
    $output['container'] = [
      '#type' => 'details',
      '#title' => $name ? : $this->t('Variable'),
      '#attached' => [
        'library' => ['devel/devel']
      ],
      '#attributes' => [
        'class' => ['container-inline', 'devel-dumper', 'devel-selectable'],
      ],
      'export' => [
        '#markup' => \Drupal::service('devel.dumper')->export($input),
      ],
    ];

    return $output;
  }

  public function viewsData() {
    /** @var $views_data_service \Drupal\views\ViewsData */
    $views_data_service = \Drupal::service('views.views_data');
    $views_data = $views_data_service->getAll();
    ksort($views_data);
    return \Drupal::service('devel.dumper')->exportAsRenderable($views_data);
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc