drupalmoduleupgrader-8.x-1.5/src/Plugin/DMU/Fixer/ImplementHook.php

src/Plugin/DMU/Fixer/ImplementHook.php
<?php

namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Fixer;

use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\drupalmoduleupgrader\FixerBase;
use Pharborist\DocCommentNode;
use Pharborist\Functions\FunctionDeclarationNode;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * @Fixer(
 *  id = "implement_hook"
 * )
 */
class ImplementHook extends FixerBase implements ContainerFactoryPluginInterface {

  protected $moduleHandler;

  public function __construct(array $configuration, $plugin_id, $plugin_definition, ModuleHandlerInterface $module_handler) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->moduleHandler = $module_handler;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $container->get('module_handler')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function execute() {
    $this->moduleHandler->loadInclude($this->configuration['module'], 'php', 'api');

    $hook = $this->configuration['hook'];
    $function = FunctionDeclarationNode::create($this->target->id() . '_' . $hook);
    $function->setDocComment(DocCommentNode::create('Implements hook_' . $hook));

    $reflector = new \ReflectionFunction('hook_' . $hook);
    $function->matchReflector($reflector);

    $module = $this->target->getPath('.module');
    $doc = $this->target->open($module)->append($function);
    $this->target->save($doc);
  }

}

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

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