Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / pathauto / src / PathautoFieldItemList.php
diff --git a/web/modules/contrib/pathauto/src/PathautoFieldItemList.php b/web/modules/contrib/pathauto/src/PathautoFieldItemList.php
new file mode 100644 (file)
index 0000000..f8cde16
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+namespace Drupal\pathauto;
+
+use Drupal\path\Plugin\Field\FieldType\PathFieldItemList;
+
+class PathautoFieldItemList extends PathFieldItemList {
+
+  /**
+   * @inheritDoc
+   */
+  protected function delegateMethod($method) {
+    // @todo Workaround until this is fixed, see
+    //   https://www.drupal.org/project/drupal/issues/2946289.
+    $this->ensureComputedValue();
+
+    // Duplicate the logic instead of calling the parent due to the dynamic
+    // arguments.
+    $result = [];
+    $args = array_slice(func_get_args(), 1);
+    foreach ($this->list as $delta => $item) {
+      // call_user_func_array() is way slower than a direct call so we avoid
+      // using it if have no parameters.
+      $result[$delta] = $args ? call_user_func_array([$item, $method], $args) : $item->{$method}();
+    }
+    return $result;
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function computeValue() {
+    parent::computeValue();
+
+    // For a new entity, default to creating a new alias.
+    if ($this->getEntity()->isNew()) {
+      $this->list[0]->set('pathauto', PathautoState::CREATE);
+    }
+  }
+
+}