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

src/Emergency.php
<?php

namespace Drupal\digital_signage_framework;

use Drupal\Component\Plugin\Exception\PluginException;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Entity\FieldableEntityInterface;

/**
 * Provides emergency services.
 */
class Emergency {

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

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

  /**
   * Gets all published emergency entities.
   *
   * @return \Drupal\Core\Entity\ContentEntityInterface[]
   *   The list of emergency entities.
   */
  protected function queryAll(): array {
    $entities = [];
    try {
      // @phpstan-ignore-next-line
      $ids = $this->entityTypeManager
        ->getStorage('digital_signage_content_setting')
        ->getQuery()
        ->accessCheck(FALSE)
        ->condition('status', 1)
        ->condition('emergencymode', 1)
        ->execute();
      /** @var int[] $ids */
      array_walk($ids, static function (&$item) {
        $item = (int) $item;
      });
      /** @var \Drupal\digital_signage_framework\ContentSettingInterface $item */
      foreach ($this->entityTypeManager->getStorage('digital_signage_content_setting')->loadMultiple($ids) as $item) {
        /** @var \Drupal\Core\Entity\ContentEntityInterface|null $entity */
        $entity = $this->entityTypeManager->getStorage($item->getReverseEntityType())->load($item->getReverseEntityId());
        if (($entity instanceof FieldableEntityInterface) && (!$entity->hasField('status') || $entity->get('status')->value)) {
          $entities[] = $entity;
        }
      }
    }
    catch (PluginException) {
      // @todo Log this exception.
    }
    return $entities;
  }

  /**
   * Gets a list of emergency entities as sequence items.
   *
   * @return array
   *   The list of emergency entities as sequence items.
   */
  public function all(): array {
    $entities = [];
    foreach ($this->queryAll() as $entity) {
      $entities[] = (new SequenceItem(
        $entity->get('digital_signage')->getValue()[0]['target_id'],
        $entity->id(),
        $entity->getEntityTypeId(),
        $entity->bundle(),
        $entity->label(),
        0,
        FALSE
      ))->toArray();
    }
    return $entities;
  }

  /**
   * Gets a list of emergency entities as a form select list.
   *
   * @return array
   *   The list of emergency entities as form select list.
   */
  public function allForSelect(): array {
    $entities = [];
    foreach ($this->queryAll() as $entity) {
      $entities[implode('/', [$entity->getEntityTypeId(), $entity->id()])] = $entity->label();
    }
    return $entities;
  }

}

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

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