Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / field / field.post_update.php
index d6a809e5f2922dc5d0eade00a0366a8881366a03..7476baa4673fb0504e6dea2d228977e4f63bff3c 100644 (file)
@@ -6,10 +6,10 @@
  */
 
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
+use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\field\Entity\FieldConfig;
 
-
 /**
  * Re-save all field storage config objects to add 'custom_storage' property.
  */
@@ -59,3 +59,26 @@ function field_post_update_email_widget_size_setting() {
 
   return t('The new size setting for email widgets has been added.');
 }
+
+/**
+ * Remove the stale 'handler_submit' setting for entity_reference fields.
+ */
+function field_post_update_remove_handler_submit_setting() {
+  $config = \Drupal::configFactory();
+  /** @var \Drupal\Core\Field\FieldTypePluginManager $field_type_manager */
+  $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
+
+  // Iterate on all field configs.
+  foreach ($config->listAll('field.field.') as $field_id) {
+    $field = $config->getEditable($field_id);
+    $class = $field_type_manager->getPluginClass($field->get('field_type'));
+
+    // Deal only with entity reference fields and descendants.
+    if ($class === EntityReferenceItem::class || is_subclass_of($class, EntityReferenceItem::class)) {
+      if ($field->get('settings.handler_submit')) {
+        // Remove 'handler_settings' from settings.
+        $field->clear('settings.handler_submit')->save();
+      }
+    }
+  }
+}