wayfinding-2.1.x-dev/modules/digital_signage/src/Render.php

modules/digital_signage/src/Render.php
<?php

namespace Drupal\wayfinding_digital_signage;

use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\digital_signage_computed_content\ComputedContentInterface;
use Drupal\digital_signage_computed_content\RenderInterface;
use Drupal\digital_signage_framework\Entity\ContentSetting;
use Drupal\digital_signage_framework\Entity\Device;
use Drupal\wayfinding\Query;

/**
 * Provides render services for digital signage.
 *
 * @package Drupal\wayfinding_digital_signage
 */
class Render implements RenderInterface {

  use StringTranslationTrait;

  /**
   * The query services.
   *
   * @var \Drupal\wayfinding\Query
   */
  protected Query $query;

  /**
   * The entity updates services.
   *
   * @var \Drupal\wayfinding_digital_signage\EntityUpdate
   */
  protected EntityUpdate $entityUpdate;

  /**
   * Render constructor.
   *
   * @param \Drupal\wayfinding\Query $query
   *   The query services.
   * @param \Drupal\wayfinding_digital_signage\EntityUpdate $entity_update
   *   The entity update services.
   */
  public function __construct(Query $query, EntityUpdate $entity_update) {
    $this->query = $query;
    $this->entityUpdate = $entity_update;
  }

  /**
   * {@inheritdoc}
   */
  public function getMarkup(ComputedContentInterface $entity): array {
    $settingsTarget = $entity->get('digital_signage')->getValue();
    if (isset($settingsTarget[0]['target_id'])) {
      /** @var \Drupal\digital_signage_framework\ContentSettingInterface|null $settings */
      $settings = ContentSetting::load($settingsTarget[0]['target_id']);
      if ($settings && ($device_ids = $settings->getDeviceIds())) {
        $device_id = reset($device_ids);
        /** @var \Drupal\digital_signage_framework\DeviceInterface|null $device */
        $device = Device::load($device_id);
        if ($device) {
          $position = $this->entityUpdate->getGeolocation($device);
          return $this->query->build(
            TRUE,
            $this->entityUpdate->getPerspective($device),
            $position['lat'],
            $position['lng'],
            $device->id(),
            $device->extId()
          );
        }
      }
    }
    return [
      '#markup' => $this->t('Something went wrong loading wayfinding information.'),
    ];
  }

}

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

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