Tour.php

Contains \Drupal\tour\Plugin\Core\Entity\Tour.

Namespace

Drupal\tour\Plugin\Core\Entity

File

drupal/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php
View source
<?php

/**
 * @file
 * Contains \Drupal\tour\Plugin\Core\Entity\Tour.
 */
namespace Drupal\tour\Plugin\Core\Entity;

use Drupal\Core\Config\Entity\ConfigEntityBase;
use Drupal\Core\Entity\Annotation\EntityType;
use Drupal\Core\Annotation\Translation;
use Drupal\tour\TipsBag;
use Drupal\tour\TourInterface;

/**
 * Defines the configured tour entity.
 *
 * @EntityType(
 *   id = "tour",
 *   label = @Translation("Tour"),
 *   module = "tour",
 *   controllers = {
 *     "storage" = "Drupal\Core\Config\Entity\ConfigStorageController",
 *     "render" = "Drupal\tour\TourRenderController"
 *   },
 *   config_prefix = "tour.tour",
 *   entity_keys = {
 *     "id" = "id",
 *     "label" = "label",
 *     "uuid" = "uuid"
 *   }
 * )
 */
class Tour extends ConfigEntityBase implements TourInterface {

  /**
   * The name (plugin ID) of the tour.
   *
   * @var string
   */
  public $id;

  /**
   * The module which this tour is assigned to.
   *
   * @var string
   */
  public $module;

  /**
   * The label of the tour.
   *
   * @var string
   */
  public $label;

  /**
   * The paths in which this tip can be displayed.
   *
   * @var array
   */
  protected $paths = array();

  /**
   * Holds the collection of tips that are attached to this tour.
   *
   * @var \Drupal\tour\TipsBag
   */
  protected $tipsBag;

  /**
   * The array of plugin config, only used for export and to populate the $tipsBag.
   *
   * @var array
   */
  protected $tips = array();

  /**
   * Overrides \Drupal\Core\Config\Entity\ConfigEntityBase::__construct();
   */
  public function __construct(array $values, $entity_type) {
    parent::__construct($values, $entity_type);
    $this->tipsBag = new TipsBag(drupal_container()
      ->get('plugin.manager.tour.tip'), $this->tips);
  }

  /**
   * {@inheritdoc}
   */
  public function getPaths() {
    return $this->paths;
  }

  /**
   * {@inheritdoc}
   */
  public function getTip($id) {
    return $this->tipsBag
      ->get($id);
  }

  /**
   * {@inheritdoc}
   */
  public function getTips() {
    $tips = array();
    foreach ($this->tips as $id => $tip) {
      $tips[] = $this
        ->getTip($id);
    }
    uasort($tips, function ($a, $b) {
      if ($a
        ->getWeight() == $b
        ->getWeight()) {
        return 0;
      }
      return $a
        ->getWeight() < $b
        ->getWeight() ? -1 : 1;
    });
    \Drupal::moduleHandler()
      ->alter('tour_tips', $tips, $this);
    return array_values($tips);
  }

  /**
   * Overrides \Drupal\Core\Config\Entity\ConfigEntityBase::getExportProperties();
   */
  public function getExportProperties() {
    $properties = parent::getExportProperties();
    $names = array(
      'paths',
      'tips',
    );
    foreach ($names as $name) {
      $properties[$name] = $this
        ->get($name);
    }
    return $properties;
  }

}

Classes

Namesort descending Description
Tour Defines the configured tour entity.