cloudinary-8.x-1.x-dev/modules/cloudinary_video/src/Plugin/CloudinaryMedia/CloudinaryVideo.php
modules/cloudinary_video/src/Plugin/CloudinaryMedia/CloudinaryVideo.php
<?php
namespace Drupal\cloudinary_video\Plugin\CloudinaryMedia;
use Drupal\cloudinary_media_library_widget\Model\Asset;
use Drupal\cloudinary_media_library_widget\Plugin\CloudinaryMediaBase;
use Drupal\cloudinary_media_library_widget\Plugin\CloudinaryMediaPluginInterface;
use Drupal\file\FileInterface;
use Drupal\media\MediaInterface;
/**
* Defines a Cloudinary video plugin.
*
* @CloudinaryMedia(
* id = "cloudinary_video",
* label = @Translation("Cloudinary Video"),
* resource_type = "video"
* )
*
* @deprecated in cloudinary:3.0.0 and is removed from cloudinary:4.0.0. Use
* a dedicated source plugin instead.
*
* @see https://www.drupal.org/project/cloudinary/issues/3314722
*/
class CloudinaryVideo extends CloudinaryMediaBase implements CloudinaryMediaPluginInterface {
/**
* {@inheritdoc}
*/
public function findMedia(Asset $asset, string $bundle): ?MediaInterface {
/** @var \Drupal\media\MediaInterface[] $entities */
$entities = $this->entityTypeManager
->getStorage('media')
->loadByProperties([
'name' => $asset->getPublicId(),
'bundle' => $bundle,
]);
$media = current($entities);
return ($media instanceof MediaInterface) ? $media : NULL;
}
/**
* {@inheritdoc}
*/
public function createMedia(Asset $asset, string $bundle, FileInterface $file = NULL): MediaInterface {
if ($media = $this->findMedia($asset, $bundle)) {
return $media;
}
$field_name = $this->getMediaSourceFieldName($bundle);
$media_data = [
'bundle' => $bundle,
'name' => $asset->getPublicId(),
$field_name => $asset->getAssetUri($asset),
];
/** @var \Drupal\media\MediaInterface $media */
$media = $this->entityTypeManager->getStorage('media')->create($media_data);
$media->save();
return $media;
}
}
