field.post_update.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * @file
  4. * Post update functions for Field module.
  5. */
  6. use Drupal\Core\Entity\Entity\EntityFormDisplay;
  7. use Drupal\field\Entity\FieldStorageConfig;
  8. use Drupal\field\Entity\FieldConfig;
  9. /**
  10. * @addtogroup updates-8.0.0-beta
  11. * @{
  12. */
  13. /**
  14. * Re-save all field storage config objects to add 'custom_storage' property.
  15. */
  16. function field_post_update_save_custom_storage_property() {
  17. foreach (FieldStorageConfig::loadMultiple() as $field_storage_config) {
  18. $field_storage_config->save();
  19. }
  20. return t('All field storage configuration objects re-saved.');
  21. }
  22. /**
  23. * Fixes the 'handler' setting for entity reference fields.
  24. */
  25. function field_post_update_entity_reference_handler_setting() {
  26. foreach (FieldConfig::loadMultiple() as $field_config) {
  27. $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
  28. $item_class = 'Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem';
  29. $class = $field_type_manager->getPluginClass($field_config->getType());
  30. if ($class === $item_class || is_subclass_of($class, $item_class)) {
  31. // field_field_config_presave() will fix the 'handler' setting on save.
  32. $field_config->save();
  33. }
  34. }
  35. return t('Selection handler for entity reference fields have been adjusted.');
  36. }
  37. /**
  38. * @} End of "addtogroup updates-8.0.0-beta".
  39. */
  40. /**
  41. * @addtogroup updates-8.1.0
  42. * @{
  43. */
  44. /**
  45. * Adds the 'size' setting for email widgets.
  46. */
  47. function field_post_update_email_widget_size_setting() {
  48. foreach (EntityFormDisplay::loadMultiple() as $entity_form_display) {
  49. $changed = FALSE;
  50. foreach ($entity_form_display->getComponents() as $name => $options) {
  51. if (isset($options['type']) && $options['type'] === 'email_default') {
  52. $options['settings']['size'] = '60';
  53. $entity_form_display->setComponent($name, $options);
  54. $changed = TRUE;
  55. }
  56. }
  57. if ($changed) {
  58. $entity_form_display->save();
  59. }
  60. }
  61. return t('The new size setting for email widgets has been added.');
  62. }
  63. /**
  64. * @} End of "addtogroup updates-8.1.0".
  65. */