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

src/Entity/Category.php
<?php

namespace Drupal\media_acquiadam\Entity;

/**
 * Class Category.
 *
 * Describes Acquia DAM's Category data type.
 */
class Category implements EntityInterface, \JsonSerializable {

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

  /**
   * Name of the Category.
   *
   * @var string
   */
  public $name;

  /**
   * Path of the category.
   *
   * @var string
   */
  public $path;

  /**
   * Parts information, useful in rendering breadcrumbs.
   *
   * @var array
   */
  public $parts = [];

  /**
   * An array of sub categories.
   *
   * @var Category[]
   */
  public $categories;

  /**
   * Links contains array of asset and categories.
   *
   * @var array
   */
  public $links;

  /**
   * Get category object.
   *
   * @param mixed $json
   *   Json object contain categories data.
   *
   * @return object
   *   Category data.
   */
  public static function fromJson($json) {
    if (is_string($json)) {
      $json = json_decode($json);
    }

    $subCategories = [];
    if (isset($json->total_count) && $json->total_count > 0) {
      foreach ($json->items as $subcategory_data) {
        $subCategories[] = Category::fromJson($subcategory_data);
      }
      return $subCategories;
    }
    elseif (isset($json->total_count) && $json->total_count === 0) {
      return $subCategories;
    }
    $properties = [
      'id',
      'name',
      'path',
      'parts',
      'links',
    ];

    $category = new static();
    foreach ($properties as $property) {
      if (isset($json->{$property})) {
        $category->{$property} = $json->{$property};
      }
    }

    $category->categories = $json->items ?? [];

    return $category;
  }

  /**
   * Serialize the category data.
   *
   * @return array
   *   Array contain category properties.
   */
  public function jsonSerialize(): array {
    $properties = [
      'id' => $this->id,
      'type' => 'category',
      'name' => $this->name,
      'path' => $this->path,
      'parts' => $this->parts,
      'links' => $this->links,
    ];

    if (!empty($this->categories)) {
      $properties['categories'] = $this->categories;
    }

    return $properties;
  }

}

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

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