Further modules included.
[yaffs-website] / web / modules / contrib / drupalmoduleupgrader / src / Utility / Filter / FieldValueFilter.php
diff --git a/web/modules/contrib/drupalmoduleupgrader/src/Utility/Filter/FieldValueFilter.php b/web/modules/contrib/drupalmoduleupgrader/src/Utility/Filter/FieldValueFilter.php
new file mode 100644 (file)
index 0000000..63d9af9
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+namespace Drupal\drupalmoduleupgrader\Utility\Filter;
+
+use Pharborist\ArrayLookupNode;
+use Pharborist\Node;
+use Pharborist\Objects\ObjectPropertyNode;
+use Pharborist\Variables\VariableNode;
+
+/**
+ * Filters for things that *look like* field accesses, e.g.
+ * $foo->bar[LANGUAGE_NONE][0]['value']. This filter doesn't guarantee that
+ * matched nodes actually ARE field accesses -- just that they have the proper
+ * formation (S-foils in attack formation!...what, you don't like Star Wars?)
+ */
+class FieldValueFilter {
+
+  /**
+   * @var string
+   */
+  protected $variable;
+
+  public function __construct($variable) {
+    $this->variable = $variable;
+  }
+
+  /**
+   * @return boolean
+   */
+  public function __invoke(Node $node) {
+    if ($node instanceof ArrayLookupNode) {
+      $root = $node->getRootArray();
+
+      if ($root instanceof ObjectPropertyNode) {
+        $object = $root->getObject();
+
+        if ($object instanceof VariableNode && $object->getName() == $this->variable) {
+          return (sizeof($node->getKeys()) >= 3);
+        }
+      }
+    }
+    return FALSE;
+  }
+
+}