drupalmoduleupgrader-8.x-1.5/src/FixerBase.php

src/FixerBase.php
<?php

namespace Drupal\drupalmoduleupgrader;

use Drupal\Core\Plugin\PluginBase as CorePluginBase;
use Pharborist\NodeInterface;

/**
 * Base class for fixers, containing a lot of helpful utilities.
 */
abstract class FixerBase extends CorePluginBase implements FixerInterface {

  /**
   * @var \Drupal\drupalmoduleupgrader\TargetInterface
   */
  protected $target;

  /**
   * {@inheritdoc}
   */
  public function setTarget(TargetInterface $target) {
    $this->target = $target;
  }

  protected function getUnaliasedPath($path) {
    return preg_replace('/^~/', $this->target->getBasePath(), $path);
  }

  /**
   * Returns if a node uses a specific trait anywhere in its lineage.
   *
   * @param \Pharborist\NodeInterface $node
   *
   * @return bool
   */
  protected function usesTrait($trait, NodeInterface $node) {
    $hierarchy = class_parents($node);
    array_unshift($hierarchy, get_class($node));

    $traits = [];
    foreach ($hierarchy as $parent) {
      $this->collectTraits($parent, $traits);
    }

    return in_array($trait, $traits);
  }

  private function collectTraits($class, array &$all_traits = []) {
    $traits = class_uses($class);

    foreach ($traits as $trait) {
      $this->collectTraits($trait, $traits);
    }

    $all_traits += $traits;
  }

}

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

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