media_acquiadam-8.x-1.46/src/Entity/Asset.php

src/Entity/Asset.php
<?php

namespace Drupal\media_acquiadam\Entity;

/**
 * The asset entity describing the asset object shared by Acquia DAM.
 *
 * @phpcs:disable Drupal.NamingConventions.ValidVariableName.LowerCamelName
 */
class Asset implements EntityInterface, \JsonSerializable {

  /**
   * The ID of the asset.
   *
   * @var string
   */
  public $id;

  /**
   * The external ID of the asset.
   *
   * @var string
   */
  public $external_id;

  /**
   * The filename of the asset.
   *
   * @var string
   */
  public $filename;

  /**
   * The date the asset has been created (format: YYYY-MM-DDTHH:MM:SSZ).
   *
   * @var string
   */
  public $created_date;

  /**
   * The latest date the asset has been updated (format: YYYY-MM-DDTHH:MM:SSZ).
   *
   * @var string
   */
  public $last_update_date;

  /**
   * The date the file has been uploaded (format: YYYY-MM-DDTHH:MM:SSZ).
   *
   * @var string
   */
  public $file_upload_date;

  /**
   * The date the asset has been deleted (format: YYYY-MM-DDTHH:MM:SSZ).
   *
   * @var string
   */
  public $deleted_date;

  /**
   * Flag assets which are released and not expired.
   *
   * @var bool
   */
  public $released_and_not_expired;

  /**
   * The link to download the asset.
   *
   * @var array
   */
  public $download_link;

  /**
   * An array of thumbnail urls.
   *
   * @var array
   */
  public $thumbnails;

  /**
   * The list of the asset's properties.
   *
   * @var array
   */
  public $asset_properties;

  /**
   * A list of urls to embed the asset.
   *
   * @var object
   */
  public $embeds;

  /**
   * The list of the file's properties.
   *
   * @var array
   */
  public $file_properties;

  /**
   * The asset's metadata.
   *
   * @var object
   */
  public $metadata;

  /**
   * The description of the asset's metadata types.
   *
   * @var array
   */
  public $metadata_info;

  /**
   * The possible values of the metadata of vocabulary types.
   *
   * @var array
   */
  public $metadata_vocabulary;

  /**
   * The asset's security metadata.
   *
   * @var array
   */
  public $security;

  /**
   * The list of the expanded attributes.
   *
   * @var array
   */
  public $expanded;

  /**
   * Various links related to the asset.
   *
   * @var object
   */
  public $links;

  /**
   * A list of allowed values for the "expand" query attribute.
   *
   * @return string[]
   *   The exhaustive list of allowed "expand" values.
   */
  public static function getAllowedExpands(): array {
    return [
      'asset_properties',
      'file_properties',
      'metadata',
      'metadata_info',
      'metadata_vocabulary',
      'security',
      'status',
      'thumbnails',
      'embeds',
    ];
  }

  /**
   * The default expand query attribute.
   *
   * These attributes are mandatory for some later process.
   *
   * @return string[]
   *   The list of expands properties which must be fetched along the asset.
   */
  public static function getRequiredExpands(): array {
    return [
      'file_properties',
      'metadata',
      'embeds',
      'security',
    ];
  }

  /**
   * Acquia DAM supported file formats.
   *
   * @todo Get these values from Config.
   * @todo Check if the values should be translatable.
   *
   * @return string[]
   *   An array of supported file formats.
   */
  public static function getFileFormats(): array {
    return [
      0 => 'All',
      'IMAGE' => 'Image',
      'video' => 'Video',
      'pdf' => 'PDF',
      'AUDIO' => 'Audio',
      'COMPRESSED_ARCHIVE' => 'Archive',
      'EBOOK' => 'Ebook',
      'GENERIC_BINARY' => 'Generic Binary',
      'OFFICE' => 'Office',
      'OPEN_OFFICE' => 'Open Office',
      'INDESIGN' => 'Indesign',
      'PROJECT_ARCHIVE' => 'Project Archive',
      'SHOCKWAVE' => 'Shockwave',
      'ZOOM' => 'Zoom',
    ];
  }

  /**
   * {@inheritdoc}
   */
  public static function fromJson($json) {
    if (is_string($json)) {
      $json = json_decode($json);
    }

    $properties = [
      'id',
      'external_id',
      'filename',
      'created_date',
      'last_update_date',
      'file_upload_date',
      'deleted_date',
      'released_and_not_expired',
      'download_link',
      'thumbnails',
      'asset_properties',
      'embeds',
      'file_properties',
      'metadata',
      'metadata_info',
      'metadata_vocabulary',
      'security',
      'expanded',
      '_links',
    ];

    // Copy all the simple properties.
    $asset = new self();
    foreach ($properties as $property) {
      if (isset($json->{$property})) {
        if ($property === '_links') {
          $asset->links = $json->{$property};
        }
        else {
          $asset->{$property} = $json->{$property};
        }
      }
    }

    return $asset;
  }

  /**
   * {@inheritdoc}
   */
  public function jsonSerialize(): array {
    return [
      'id' => $this->id,
      'external_id' => $this->external_id,
      'filename' => $this->filename,
      'created_date' => $this->created_date,
      'last_update_date' => $this->last_update_date,
      'file_upload_date' => $this->file_upload_date,
      'deleted_date' => $this->deleted_date,
      'released_and_not_expired' => $this->released_and_not_expired,
      'download_link' => $this->download_link,
      'thumbnails' => $this->thumbnails,
      'asset_properties' => $this->asset_properties,
      'embeds' => $this->embeds,
      'file_properties' => $this->file_properties,
      'metadata' => $this->metadata,
      'metadata_info' => $this->metadata_info,
      'metadata_vocabulary' => $this->metadata_vocabulary,
      'security' => $this->security,
      'expanded' => $this->expanded,
      '_links' => $this->links,
    ];
  }

}

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

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