function media_entity_instagram_post_update_change_source_name in Media entity Instagram 3.x
Rename source from "instagram" to "oembed:instagram".
File
- ./
media_entity_instagram.post_update.php, line 19 - Post update functions for Media entity Instagram module.
Code
function media_entity_instagram_post_update_change_source_name() {
$config_factory = \Drupal::configFactory();
foreach ($config_factory
->listAll('media.type.') as $name) {
$config = $config_factory
->getEditable($name);
if ($config
->get('source') === 'instagram') {
$config
->set('source', 'oembed:instagram');
$config
->save();
$source_configuration = $config
->get('source_configuration');
/** @var \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager */
$entity_type_manager = \Drupal::service('entity_type.manager');
/** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface[] $displays */
$displays = $entity_type_manager
->getStorage('entity_view_display')
->loadByProperties([
'targetEntityType' => 'media',
'bundle' => $config
->get('id'),
]);
foreach ($displays as $display) {
$source_field = $display
->getComponent($source_configuration['source_field']);
if ($source_field['type'] === 'instagram_embed') {
if (!empty($source_field['settings']['width'])) {
$source_field['settings'] = [
'max_width' => $source_field['settings']['width'],
'hidecaption' => $source_field['settings']['hidecaption'],
'max_height' => NULL,
];
}
$display
->setComponent($source_configuration['source_field'], $source_field);
$display
->save();
}
}
$displays = $entity_type_manager
->getStorage('entity_form_display')
->loadByProperties([
'targetEntityType' => 'media',
'bundle' => $config
->get('id'),
]);
foreach ($displays as $display) {
$source_field = $display
->getComponent($source_configuration['source_field']);
if ($source_field['type'] === 'string_textfield') {
$source_field['type'] = 'oembed_textfield';
$display
->setComponent($source_configuration['source_field'], $source_field);
$display
->save();
}
}
}
}
$config_factory
->getEditable('media_entity_instagram.settings')
->clear('local_images')
->set('facebook_app_id', '')
->set('facebook_app_secret', '')
->save();
}