Mercurial > hg > cmmr2012-drupal-site
comparison core/modules/field/field.post_update.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
1 <?php | |
2 | |
3 /** | |
4 * @file | |
5 * Post update functions for Field module. | |
6 */ | |
7 | |
8 use Drupal\Core\Entity\Entity\EntityFormDisplay; | |
9 use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem; | |
10 use Drupal\field\Entity\FieldStorageConfig; | |
11 use Drupal\field\Entity\FieldConfig; | |
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 | |
21 return t('All field storage configuration objects re-saved.'); | |
22 } | |
23 | |
24 /** | |
25 * Fixes the 'handler' setting for entity reference fields. | |
26 */ | |
27 function field_post_update_entity_reference_handler_setting() { | |
28 foreach (FieldConfig::loadMultiple() as $field_config) { | |
29 $field_type_manager = \Drupal::service('plugin.manager.field.field_type'); | |
30 $item_class = 'Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem'; | |
31 $class = $field_type_manager->getPluginClass($field_config->getType()); | |
32 if ($class === $item_class || is_subclass_of($class, $item_class)) { | |
33 // field_field_config_presave() will fix the 'handler' setting on save. | |
34 $field_config->save(); | |
35 } | |
36 } | |
37 | |
38 return t('Selection handler for entity reference fields have been adjusted.'); | |
39 } | |
40 | |
41 /** | |
42 * Adds the 'size' setting for email widgets. | |
43 */ | |
44 function field_post_update_email_widget_size_setting() { | |
45 foreach (EntityFormDisplay::loadMultiple() as $entity_form_display) { | |
46 $changed = FALSE; | |
47 foreach ($entity_form_display->getComponents() as $name => $options) { | |
48 if (isset($options['type']) && $options['type'] === 'email_default') { | |
49 $options['settings']['size'] = '60'; | |
50 $entity_form_display->setComponent($name, $options); | |
51 $changed = TRUE; | |
52 } | |
53 } | |
54 | |
55 if ($changed) { | |
56 $entity_form_display->save(); | |
57 } | |
58 } | |
59 | |
60 return t('The new size setting for email widgets has been added.'); | |
61 } | |
62 | |
63 /** | |
64 * Remove the stale 'handler_submit' setting for entity_reference fields. | |
65 */ | |
66 function field_post_update_remove_handler_submit_setting() { | |
67 $config = \Drupal::configFactory(); | |
68 /** @var \Drupal\Core\Field\FieldTypePluginManager $field_type_manager */ | |
69 $field_type_manager = \Drupal::service('plugin.manager.field.field_type'); | |
70 | |
71 // Iterate on all field configs. | |
72 foreach ($config->listAll('field.field.') as $field_id) { | |
73 $field = $config->getEditable($field_id); | |
74 $class = $field_type_manager->getPluginClass($field->get('field_type')); | |
75 | |
76 // Deal only with entity reference fields and descendants. | |
77 if ($class === EntityReferenceItem::class || is_subclass_of($class, EntityReferenceItem::class)) { | |
78 if ($field->get('settings.handler_submit')) { | |
79 // Remove 'handler_settings' from settings. | |
80 $field->clear('settings.handler_submit')->save(); | |
81 } | |
82 } | |
83 } | |
84 } |