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;
  }

}

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

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