public function ContentModelUpdater::convertFields in Panopoly 8.2
Batch execution callback for converting entities reference fields.
File
- modules/
panopoly/ panopoly_media/ src/ Update/ ContentModelUpdater.php, line 119
Class
- ContentModelUpdater
- Applies changes to media content model from schema versions 8204 to 8205.
Namespace
Drupal\panopoly_media\UpdateCode
public function convertFields() {
// Find entity reference fields.
/** @var \Drupal\field\Entity\FieldConfig[] $fields */
$fields = FieldConfig::loadMultiple();
$fields = array_filter($fields, function ($fieldConfig) {
/** @var \Drupal\field\Entity\FieldConfig $fieldConfig */
return $fieldConfig
->getType() == 'entity_reference';
});
foreach ($fields as $fieldConfig) {
$settings = $fieldConfig
->getSettings();
if ($settings['handler'] == 'default:media') {
foreach ($settings['handler_settings']['target_bundles'] as $bundle) {
switch ($bundle) {
case 'file':
$settings['handler_settings']['target_bundles']['panopoly_media_file'] = 'panopoly_media_file';
unset($settings['handler_settings']['target_bundles'][$bundle]);
break;
case 'image':
$settings['handler_settings']['target_bundles']['panopoly_media_image'] = 'panopoly_media_image';
unset($settings['handler_settings']['target_bundles'][$bundle]);
break;
case 'video':
$settings['handler_settings']['target_bundles']['panopoly_media_remote_video'] = 'panopoly_media_remote_video';
unset($settings['handler_settings']['target_bundles'][$bundle]);
break;
}
}
if (isset($settings['handler_settings']['auto_create_bundle'])) {
switch ($settings['handler_settings']['auto_create_bundle']) {
case 'file':
$settings['handler_settings']['auto_create_bundle'] = 'panopoly_media_file';
break;
case 'image':
$settings['handler_settings']['auto_create_bundle'] = 'panopoly_media_image';
break;
case 'video':
$settings['handler_settings']['auto_create_bundle'] = 'panopoly_media_remote_video';
break;
}
}
ksort($settings);
$fieldConfig
->setSettings($settings);
$fieldConfig
->save();
}
}
}