UpgradeManager.php in Video Embed Field 8
File
modules/video_embed_media/src/UpgradeManager.php
View source
<?php
namespace Drupal\video_embed_media;
use Drupal\Core\Entity\Query\QueryFactory;
use Drupal\media_entity\Entity\Media;
use Drupal\media_entity\Entity\MediaBundle;
use Drupal\video_embed_media\Plugin\MediaEntity\Type\VideoEmbedField;
class UpgradeManager implements UpgradeManagerInterface {
protected $entityQuery;
public function __construct(QueryFactory $entity_query) {
$this->entityQuery = $entity_query;
}
public function upgrade() {
$entities = $this->entityQuery
->get('media_bundle')
->condition('type', 'embeddable_video')
->execute();
foreach ($entities as $entity) {
$bundle = MediaBundle::load($entity);
$this
->upgradeBundle($bundle);
}
}
protected function upgradeBundle(MediaBundle $bundle) {
VideoEmbedField::createVideoEmbedField($bundle
->id());
$media_entities = $this->entityQuery
->get('media')
->condition('bundle', $bundle
->id())
->execute();
foreach ($media_entities as $media_entity) {
$media_entity = Media::load($media_entity);
$this
->upgradeEntity($media_entity, $bundle
->getTypeConfiguration());
}
$bundle->type = 'video_embed_field';
$bundle
->save();
}
protected function upgradeEntity(Media $media_entity, $type_configuration) {
$existing_url_field = $media_entity->{$type_configuration['source_field']}
->getValue();
$existing_url = isset($existing_url_field[0]['uri']) ? $existing_url_field[0]['uri'] : $existing_url_field[0]['value'];
$media_entity->{VideoEmbedField::VIDEO_EMBED_FIELD_DEFAULT_NAME} = [
[
'value' => $existing_url,
],
];
$media_entity
->save();
}
}