degov-8.x-2.0/modules/degov_media_audio/degov_media_audio.post_update.php

modules/degov_media_audio/degov_media_audio.post_update.php
<?php

/**
 * Migrate field_audio_caption to field_title.
 */
function degov_media_audio_post_update_migrate_field_title(&$sandbox) {
  // Initialize some variables during the first pass through.
  if (!isset($sandbox['total'])) {
    $sandbox['is_index'] = FALSE;
    $max = \Drupal::entityQuery('media')
      ->condition('bundle', 'audio')
      ->count()
      ->execute();
    $sandbox['total'] = $max;
    $sandbox['current'] = 0;
    if (\Drupal::moduleHandler()->moduleExists('degov_search_media')) {
      $index = \Drupal\search_api\Entity\Index::load('search_media');
      if ($index) {
        $index->setOption('index_directly', FALSE);
        $index->save();
        $sandbox['is_index'] = TRUE;
      }
    }
  }

  $media_per_batch = 50;

  // Handle one pass through.
  $mids = \Drupal::entityQuery('media')
    ->condition('bundle', 'audio')
    ->range($sandbox['current'], $sandbox['current'] + $media_per_batch)
    ->execute();
  $medias = \Drupal\media\Entity\Media::loadMultiple($mids);
  foreach($medias as $media) {
    $caption = $media->get('field_audio_caption')->getValue();
    $media->set('field_title', $caption);
    $media->save();
    $sandbox['current']++;
  }

  $sandbox['#finished'] = ($sandbox['current'] / $sandbox['total']);
  if ($sandbox['#finished'] == 1 && $sandbox['is_index']) {
    $index = \Drupal\search_api\Entity\Index::load('search_media');
    $index->setOption('index_directly', TRUE);
    $index->save();
  }
  return t('@current media processed.',['@current' => $sandbox['current']]);
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc