vimeo_player-1.0.0-rc1/src/Plugin/ECA/Event/VimeoPlayerEvent.php

src/Plugin/ECA/Event/VimeoPlayerEvent.php
<?php

namespace Drupal\vimeo_player\Plugin\ECA\Event;

use Drupal\eca\Attributes\Token;
use Drupal\eca\Event\Tag;
use Drupal\eca\Plugin\DataType\DataTransferObject;
use Drupal\eca\Plugin\ECA\Event\EventBase;
use Drupal\vimeo_player\Event\VimeoPlayerEvent as PlayerEvent;

/**
 * Plugin implementation of the ECA Events for vimeo player event.
 *
 * @EcaEvent(
 *   id = "vimeo_player_event",
 *   deriver = "Drupal\vimeo_player\Plugin\ECA\Event\VimeoPlayerEventDeriver",
 *   eca_version_introduced = "2.1.1"
 * )
 */
class VimeoPlayerEvent extends EventBase {

  /**
   * {@inheritdoc}
   */
  public static function definitions(): array {
    return [
      'vimeo_event' => [
        'label' => 'Vimeo event',
        'event_name' => PlayerEvent::VIMEO_PLAYER_EVENT,
        'event_class' => PlayerEvent::class,
        'tags' => Tag::CONTENT | Tag::VIEW,
      ],
    ];
  }

  /**
   * {@inheritdoc}
   */
  #[Token(
    name: 'vimeo_event_name',
    description: 'The name of the vimeo player event.',
    classes: [PlayerEvent::class],
  )]
  #[Token(
    name: 'vimeo_event_data',
    description: 'The Vimeo Player event data.',
    classes: [PlayerEvent::class],
    properties: [
      new Token(name: 'duration', description: 'Length of the video in seconds.'),
      new Token(name: 'percent', description: 'Current progress of the video as percentage value.'),
      new Token(name: 'seconds', description: 'Current progress of the video as number of sedond.'),
    ],
  )]
  #[Token(
    name: 'vimeo_embed_options',
    description: 'The Vimeo Player embed options used.',
    classes: [PlayerEvent::class],
    properties: [
      new Token(name: 'id', description: 'The video ID.'),
      new Token(name: 'url', description: 'The videp URL.'),
    ],
  )]
  #[Token(
    name: 'vimeo_video_info',
    description: 'Video info like src and title of the iframe.',
  )]
  public function getData(string $key): mixed {
    /** @var \Drupal\vimeo_player\Event\VimeoPlayerEvent */
    $event = $this->event;
    if ($key == 'vimeo_event_name') {
      return $event->getName();
    }
    else if ($key == 'vimeo_event_data') {
      return $event->getData();
    }
    else if ($key == 'vimeo_embed_options') {
      return $event->getEmbedOptions();
    }
    else if ($key == 'vimeo_video_info') {
      return DataTransferObject::create($event->getVideoInfo());
    }
    return parent::getData($key);
  }

}

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

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