digital_signage_framework-2.3.x-dev/src/Query.php

src/Query.php
<?php

namespace Drupal\digital_signage_framework;

use Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException;
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
use Drupal\Core\Entity\EntityTypeManagerInterface;

/**
 * Service provides commonly used database queries.
 */
class Query {

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The emregency service.
   *
   * @var \Drupal\digital_signage_framework\Emergency
   */
  protected Emergency $emergency;

  /**
   * Renderer constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\digital_signage_framework\Emergency $emergency
   *   The emergency service.
   */
  public function __construct(EntityTypeManagerInterface $entity_type_manager, Emergency $emergency) {
    $this->entityTypeManager = $entity_type_manager;
    $this->emergency = $emergency;
  }

  /**
   * Gets a list of all entities contained in any schedule for a form select.
   *
   * @param \Drupal\digital_signage_framework\DeviceInterface[] $devices
   *   The list of devices.
   *
   * @return \Drupal\Core\Entity\ContentEntityInterface[]
   *   The list of entities.
   */
  public function allEntitiesForSelect(array $devices): array {
    $entities = [];
    foreach ($devices as $device) {
      if ($schedule = $device->getSchedule(FALSE)) {
        foreach ($schedule->getItems() as $item) {
          $key = implode('/', [$item['entity']['type'], $item['entity']['id']]);
          if (!isset($entities[$key])) {
            try {
              if ($entity = $this->entityTypeManager->getStorage($item['entity']['type'])
                ->load($item['entity']['id'])) {
                $entities[$key] = $entity->label();
              }
            }
            catch (InvalidPluginDefinitionException | PluginNotFoundException) {
              // Can be ignored.
            }
          }
        }
      }
    }
    foreach ($this->emergency->allForSelect() as $key => $label) {
      $entities[$key] = $label;
    }
    return $entities;
  }

}

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

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