function thunder_media_update_8102 in Thunder 8.2
Introduce image and video paragraph.
File
- modules/
thunder_media/ thunder_media.install, line 649 - Contains.
Code
function thunder_media_update_8102() {
/** @var \Drupal\update_helper\Updater $updater */
$updater = \Drupal::service('update_helper.updater');
$updateLogger = $updater
->logger();
\Drupal::service('module_installer')
->install([
'config_update',
]);
$configUpdater = \Drupal::service('config_update.config_update');
$imports = [
'paragraphs_type' => [
'image',
'video',
],
'field_storage_config' => [
'paragraph.field_image',
'paragraph.field_video',
],
'field_config' => [
'paragraph.image.field_image',
'paragraph.video.field_video',
],
'view' => [
'video_browser',
],
'system.simple' => [
'entity_browser.browser.video_browser',
],
'entity_form_display' => [
'paragraph.video.default',
'paragraph.image.default',
],
'entity_view_display' => [
'paragraph.video.default',
'paragraph.image.default',
'paragraph.image.preview',
'paragraph.video.preview',
],
];
$successfulUpdate = TRUE;
foreach ($imports as $type => $entities) {
foreach ($entities as $entity) {
try {
$configUpdater
->import($type, $entity);
$updateLogger
->info(t('Successfully imported configuration: @type -> @entity', [
'@type' => $type,
'@entity' => $entity,
]));
} catch (\Exception $e) {
$successfulUpdate = FALSE;
$updateLogger
->warning(t('Unable to import config: @type -> @entity', [
'@type' => $type,
'@entity' => $entity,
]));
}
}
}
if ($successfulUpdate) {
/** @var \Drupal\user\Entity\Role[] $roles */
$roles = Role::loadMultiple([
'editor',
'seo',
]);
foreach ($roles as $role) {
try {
$role
->grantPermission('access video_browser entity browser pages');
$role
->save();
$updateLogger
->info(t('Permission for accessing video browser is granted for @user_role user role.', [
'@user_role' => $role
->id(),
]));
} catch (EntityStorageException $storageException) {
$successfulUpdate = FALSE;
$updateLogger
->warning(t('Unable to change permissions for @user_role user role.', [
'@user_role' => $role
->id(),
]));
}
}
$fieldConfigs = [
'node.article.field_paragraphs',
'taxonomy_term.channel.field_paragraphs',
'taxonomy_term.tags.field_paragraphs',
];
foreach ($fieldConfigs as $fieldConfig) {
/** @var \Drupal\field\Entity\FieldConfig $field */
$field = FieldConfig::load($fieldConfig);
if ($field) {
$settings = $field
->getSetting('handler_settings');
$settings['target_bundles']['image'] = 'image';
$settings['target_bundles']['video'] = 'video';
$settings['target_bundles_drag_drop']['image'] = [
'enabled' => TRUE,
'weight' => 10,
];
$settings['target_bundles_drag_drop']['video'] = [
'enabled' => TRUE,
'weight' => 10,
];
try {
$field
->setSetting('handler_settings', $settings);
$field
->save();
$updateLogger
->info(t('Field @field_id successfully changed.', [
'@field_id' => $field
->id(),
]));
} catch (EntityStorageException $storageException) {
$successfulUpdate = FALSE;
$updateLogger
->warning(t('Unable to save changes for @field_id field.', [
'@field_id' => $field
->id(),
]));
}
}
else {
$successfulUpdate = FALSE;
$updateLogger
->warning(t('Unable to change field config for @fieldConfig.', [
'@fieldConfig' => $fieldConfig,
]));
}
}
// Update gallery and image entity browser settings.
$expectedConfigs['multiple_image_browser']['display_configuration']['link_text'] = 'Select entities';
$expectedConfigs['multiple_image_browser']['widgets']['7d7f8f45-f628-48a3-84a8-c962c73f39e8']['settings']['submit_text'] = 'Select entities';
$expectedConfigs['image_browser']['display_configuration']['link_text'] = 'Select entities';
$expectedConfigs['image_browser']['widgets']['f09e2255-6bd8-4301-ba02-1d446f7fca70']['settings']['submit_text'] = 'Select entities';
// New configuration for entity browsers that should be applied.
$newConfigs['multiple_image_browser']['display_configuration']['link_text'] = 'Select images';
$newConfigs['multiple_image_browser']['widgets']['7d7f8f45-f628-48a3-84a8-c962c73f39e8']['settings']['submit_text'] = 'Select images';
$newConfigs['image_browser']['display_configuration']['link_text'] = 'Select image';
$newConfigs['image_browser']['widgets']['f09e2255-6bd8-4301-ba02-1d446f7fca70']['settings']['submit_text'] = 'Select image';
foreach ($newConfigs as $browserId => $newConfig) {
if (_thunder_media_update_entity_browser_config($browserId, $newConfig, $expectedConfigs[$browserId])) {
$updateLogger
->info(t('Text for @browser_id entity browser is adjusted.', [
'@browser_id' => $browserId,
]));
}
else {
$successfulUpdate = FALSE;
$updateLogger
->warning(t('Unable to update @browser_id entity browser configuration.', [
'@browser_id' => $browserId,
]));
}
}
}
try {
/** @var \Drupal\update_helper_checklist\UpdateChecklist $updateChecklist */
$updateChecklist = \Drupal::service('update_helper_checklist.update_checklist');
if ($successfulUpdate) {
$updateChecklist
->markUpdatesSuccessful([
'thunder' => [
'v1_1__image_video_paragraph',
],
], FALSE);
}
else {
$updateChecklist
->markUpdatesFailed([
'thunder' => [
'v1_1__image_video_paragraph',
],
]);
}
} catch (EntityStorageException $ee) {
$updateLogger
->warning(t('Unable to mark update in checklist.'));
} catch (ServiceNotFoundException $se) {
// If service is not available, we will just ignore it.
}
// Output log result depending on channel used for update execution.
return $updateLogger
->output();
}