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; } }