You are here

function thunder_media_update_8101 in Thunder 8.2

Remove "Language" filter and add descriptions from media browsers.

File

modules/thunder_media/thunder_media.install, line 567
Contains.

Code

function thunder_media_update_8101() {

  /** @var \Drupal\update_helper\Updater $updater */
  $updater = \Drupal::service('update_helper.updater');
  $updateLogger = $updater
    ->logger();

  // Perform removal of language filters from relevant views.
  $successfulUpdate = TRUE;
  $viewIds = [
    'image_browser',
    'media_browser',
  ];
  foreach ($viewIds as $viewId) {

    /** @var \Drupal\views\Entity\View $view */
    $view = View::load($viewId);
    if (!empty($view) && !empty($view
      ->getDisplay('default')['display_options']['filters']['langcode'])) {
      unset($view
        ->getDisplay('default')['display_options']['filters']['langcode']);
      try {
        $view
          ->save();
        $updateLogger
          ->info(t('Language filter for media browser view "@view_id" is removed.', [
          '@view_id' => $viewId,
        ]));
      } catch (EntityStorageException $storageException) {
        $successfulUpdate = FALSE;
        $updateLogger
          ->warning(t('Unable to save changes for view: @view_id.', [
          '@view_id' => $viewId,
        ]));
      }
    }
    else {
      $successfulUpdate = FALSE;
      $updateLogger
        ->warning(t('Unable to remove Language filter for media browser view: @view_id.', [
        '@view_id' => $viewId,
      ]));
    }
  }

  // Update names and descriptions for Image view.
  $expectedImageViewConfig['display']['default']['display_options']['filters']['status']['group_info']['description'] = '';
  $expectedImageViewConfig['display']['default']['display_options']['filters']['status']['group_info']['default_group'] = 'All';
  $expectedImageViewConfig['display']['default']['display_options']['filters']['name']['expose']['label'] = 'Media name';
  $expectedImageViewConfig['display']['default']['display_options']['filters']['name']['expose']['description'] = '';
  $newImageViewConfig['display']['default']['display_options']['filters']['status']['group_info']['description'] = 'Filter by status';
  $newImageViewConfig['display']['default']['display_options']['filters']['status']['group_info']['default_group'] = '1';
  $newImageViewConfig['display']['default']['display_options']['filters']['name']['expose']['label'] = 'Image name';
  $newImageViewConfig['display']['default']['display_options']['filters']['name']['expose']['description'] = 'Filter by name';
  if (_thunder_media_update_config('views.view.image_browser', $newImageViewConfig, $expectedImageViewConfig)) {
    $updateLogger
      ->info(t('Entity browser image view filter descriptions and names are updated.'));
  }
  else {
    $successfulUpdate = FALSE;
    $updateLogger
      ->warning(t('Unable to change entity browser image view filter descriptions and names.'));
  }

  // If update is successful for all views, then check entry in checklist.
  if (!$successfulUpdate) {
    $updateLogger
      ->warning(t('Unable to remove language filters from views. Please perform this process manually.'));
  }
  try {

    /** @var \Drupal\update_helper_checklist\UpdateChecklist $updateChecklist */
    $updateChecklist = \Drupal::service('update_helper_checklist.update_checklist');
    if ($successfulUpdate) {
      $updateChecklist
        ->markUpdatesSuccessful([
        'thunder' => [
          'v1_1__remove_entity_browser_language_filter',
        ],
      ]);
    }
    else {
      $updateChecklist
        ->markUpdatesFailed([
        'thunder' => [
          'v1_1__remove_entity_browser_language_filter',
        ],
      ]);
    }
  } 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();
}