Further modules included.
[yaffs-website] / web / modules / contrib / drupalmoduleupgrader / src / Plugin / DMU / Rewriter / FormState.php
diff --git a/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Rewriter/FormState.php b/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Rewriter/FormState.php
new file mode 100644 (file)
index 0000000..b710df9
--- /dev/null
@@ -0,0 +1,214 @@
+<?php
+
+namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Rewriter;
+
+use Pharborist\ExpressionNode;
+use Pharborist\Filter;
+use Pharborist\Functions\ParameterNode;
+use Pharborist\Objects\ObjectMethodCallNode;
+use Pharborist\Operators\AssignNode;
+use Pharborist\Token;
+use Pharborist\Types\ArrayNode;
+
+/**
+ * @Rewriter(
+ *  id = "form_state",
+ *  type_hint = "\Drupal\Core\Form\FormStateInterface",
+ *  properties = {
+ *    "always_process" = {
+ *      "get" = "getAlwaysProcess",
+ *      "set" = "setAlwaysProcess"
+ *    },
+ *    "build_info" = {
+ *      "get" = "getBuildInfo",
+ *      "set" = "setBuildInfo"
+ *    },
+ *    "buttons" = {
+ *      "get" = "getButtons",
+ *      "set" = "setButtons"
+ *    },
+ *    "cache" = {
+ *      "get" = "isCached",
+ *      "set" = "setCached"
+ *    },
+ *    "complete_form" = {
+ *      "get" = "getCompleteForm"
+ *    },
+ *    "executed" = {
+ *      "get" = "isExecuted",
+ *      "set" = "setExecuted"
+ *    },
+ *    "groups" = {
+ *      "get" = "getGroups",
+ *      "set" = "setGroups"
+ *    },
+ *    "has_file_element" = {
+ *      "get" = "hasFileElement",
+ *      "set" = "setHasFileElement"
+ *    },
+ *    "input" = {
+ *      "get" = "getUserInput",
+ *      "set" = "setUserInput"
+ *    },
+ *    "limit_validation_errors" = {
+ *      "get" = "getLimitValidationErrors",
+ *      "set" = "setLimitValidationErrors"
+ *    },
+ *    "must_validate" = {
+ *      "get" = "isValidationEnforced",
+ *      "set" = "setValidationEnforced"
+ *    },
+ *    "process_input" = {
+ *      "get" = "isProcessingInput",
+ *      "set" = "setProcessInput"
+ *    },
+ *    "programmed" = {
+ *      "get" = "isProgrammed",
+ *      "set" = "setProgrammed"
+ *    },
+ *    "programmed_bypass_access_check" = {
+ *      "get" = "isBypassingProgrammedAccessChecks",
+ *      "set" = "setProgrammedBypassAccessCheck"
+ *    },
+ *    "rebuild" = {
+ *      "get" = "isRebuilding",
+ *      "set" = "setRebuild"
+ *    },
+ *    "response" = {
+ *      "get" = "getResponse",
+ *      "set" = "setResponse"
+ *    },
+ *    "storage" = {
+ *      "get" = "getStorage",
+ *      "set" = "setStorage"
+ *    },
+ *    "submit_handlers" = {
+ *      "get" = "getSubmitHandlers",
+ *      "set" = "setSubmitHandlers"
+ *    },
+ *    "submitted" = {
+ *      "get" = "isSubmitted",
+ *      "set" = "getSubmitted"
+ *    },
+ *    "temporary" = {
+ *      "get" = "getTemporary",
+ *      "set" = "setTemporary"
+ *    },
+ *    "triggering_element" = {
+ *      "get" = "getTriggeringElement",
+ *      "set" = "setTriggeringElement"
+ *    },
+ *    "validate_handlers" = {
+ *      "get" = "getValidateHandlers",
+ *      "set" = "setValidateHandlers"
+ *    },
+ *    "validation_complete" = {
+ *      "get" = "isValidationComplete",
+ *      "set" = "setValidationComplete"
+ *    }
+ *  }
+ * )
+ */
+class FormState extends Generic {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rewrite(ParameterNode $parameter) {
+    parent::rewrite($parameter);
+
+    $function = $parameter->getFunction();
+    $form_state = Token::variable('$' . $parameter->getName());
+
+    $set_errors = $function->find(Filter::isFunctionCall('form_set_error', 'form_error'));
+    /** @var \Pharborist\Functions\FunctionCallNode $set_error */
+    foreach ($set_errors as $set_error) {
+      $arguments = $set_error->getArguments();
+      $method = $set_error->getName()->getText() == 'form_set_error' ? 'setErrorByName' : 'setError';
+
+      $rewrite = ObjectMethodCallNode::create(clone $form_state, $method)
+        ->appendArgument(clone $arguments[0])
+        ->appendArgument(clone $arguments[1]);
+
+      $set_error->replaceWith($rewrite);
+    }
+
+    // form_clear_error() --> $form_state->clearErrors().
+    $clear_errors = $function->find(Filter::isFunctionCall('form_clear_error'));
+    foreach ($clear_errors as $clear_error) {
+      $clear_error->replaceWith(ObjectMethodCallNode::create(clone $form_state, 'clearErrors'));
+    }
+
+    // form_get_errors() --> $form_state->getErrors()
+    $get_errors = $function->find(Filter::isFunctionCall('form_get_errors'));
+    foreach ($get_errors as $get_error) {
+      $get_error->replaceWith(ObjectMethodCallNode::create(clone $form_state, 'getErrors'));
+    }
+
+    // form_get_error() --> $form_state->getError()
+    $get_errors = $function->find(Filter::isFunctionCall('form_get_error'));
+    /** @var \Pharborist\Functions\FunctionCallNode $get_error */
+    foreach ($get_errors as $get_error) {
+      $rewrite = ObjectMethodCallNode::create(clone $form_state, 'getError')
+        ->appendArgument($get_error->getArguments()->get(0));
+      $get_error->replaceWith($rewrite);
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rewriteAsGetter(ExpressionNode $expr, $property) {
+    /** @var \Pharborist\ArrayLookupNode $expr */
+    $object = clone $expr->getRootArray();
+    $keys = $expr->getKeys();
+
+    // $foo = $form_state['values'] --> $foo = $form_state->getValues()
+    // $foo = $form_state['values']['baz'] --> $form_state->getValue(['baz'])
+    if ($property == 'values') {
+      if (sizeof($keys) == 1) {
+        return ObjectMethodCallNode::create($object, 'getValues');
+      }
+      else {
+        array_shift($keys);
+        return ObjectMethodCallNode::create($object, 'getValue')->appendArgument(ArrayNode::create($keys));
+      }
+    }
+    elseif (isset($this->pluginDefinition['properties'][$property]['get'])) {
+      return parent::rewriteAsGetter($expr, $property);
+    }
+    // $foo = $form_state['arbitrary_key'] --> $foo = $form_state->get(['arbitrary_key'])
+    else {
+      return ObjectMethodCallNode::create($object, 'get')
+        ->appendArgument(ArrayNode::create($keys));
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rewriteAsSetter(ExpressionNode $expr, $property, AssignNode $assignment) {
+    /** @var \Pharborist\ArrayLookupNode $expr */
+    $object = clone $expr->getRootArray();
+    $keys = $expr->getKeys();
+    $value = clone $assignment->getRightOperand();
+
+    // $form_state['values']['baz'] = 'foo' --> $form_state->setValue(['baz'], 'foo')
+    if ($property == 'values') {
+      array_shift($keys);
+      return ObjectMethodCallNode::create($object, 'setValue')
+        ->appendArgument(ArrayNode::create($keys))
+        ->appendArgument($value);
+    }
+    elseif (isset($this->pluginDefinition['properties'][$property]['set'])) {
+      return parent::rewriteAsSetter($expr, $property, $assignment);
+    }
+    // $form_state['arbitrary_key'] = 'baz' --> $form_state->set(['arbitrary_key'], 'baz')
+    else {
+      return ObjectMethodCallNode::create($object, 'set')
+        ->appendArgument(ArrayNode::create($keys))
+        ->appendArgument($value);
+    }
+  }
+
+}