5 * Contains \Drupal\drupalmoduleupgrader\FixerBase.
8 namespace Drupal\drupalmoduleupgrader;
10 use Drupal\Core\Plugin\PluginBase as CorePluginBase;
11 use Pharborist\Constants\ConstantNode;
12 use Pharborist\Functions\ParameterNode;
14 use Pharborist\NodeInterface;
17 * Base class for fixers, containing a lot of helpful utilities.
19 abstract class FixerBase extends CorePluginBase implements FixerInterface {
22 * @var \Drupal\drupalmoduleupgrader\TargetInterface
29 public function setTarget(TargetInterface $target) {
30 $this->target = $target;
33 protected function getUnaliasedPath($path) {
34 return preg_replace('/^~/', $this->target->getBasePath(), $path);
38 * Returns if a node uses a specific trait anywhere in its lineage.
40 * @param \Pharborist\NodeInterface $node
44 protected function usesTrait($trait, NodeInterface $node) {
45 $hierarchy = class_parents($node);
46 array_unshift($hierarchy, get_class($node));
49 foreach ($hierarchy as $parent) {
50 $this->collectTraits($parent, $traits);
53 return in_array($trait, $traits);
56 private function collectTraits($class, array &$all_traits = []) {
57 $traits = class_uses($class);
59 foreach ($traits as $trait) {
60 $this->collectTraits($trait, $traits);
63 $all_traits += $traits;