diff core/lib/Drupal/Core/Theme/ActiveTheme.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 129ea1e6d783
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/lib/Drupal/Core/Theme/ActiveTheme.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,231 @@
+<?php
+
+namespace Drupal\Core\Theme;
+
+/**
+ * Defines a theme and its information needed at runtime.
+ *
+ * The theme manager will store the active theme object.
+ *
+ * @see \Drupal\Core\Theme\ThemeManager
+ * @see \Drupal\Core\Theme\ThemeInitialization
+ */
+class ActiveTheme {
+
+  /**
+   * The machine name of the active theme.
+   *
+   * @var string
+   */
+  protected $name;
+
+  /**
+   * The path to the theme.
+   *
+   * @var string
+   */
+  protected $path;
+
+  /**
+   * The engine of the theme.
+   *
+   * @var string
+   */
+  protected $engine;
+
+  /**
+   * The path to the theme engine for root themes.
+   *
+   * @var string
+   */
+  protected $owner;
+
+  /**
+   * An array of base theme active theme objects keyed by name.
+   *
+   * @var static[]
+   */
+  protected $baseThemes;
+
+  /**
+   * The extension object.
+   *
+   * @var \Drupal\Core\Extension\Extension
+   */
+  protected $extension;
+
+  /**
+   * The stylesheets which are set to be removed by the theme.
+   *
+   * @var array
+   */
+  protected $styleSheetsRemove;
+
+  /**
+   * The libraries provided by the theme.
+   *
+   * @var array
+   */
+  protected $libraries;
+
+  /**
+   * The regions provided by the theme.
+   *
+   * @var array
+   */
+  protected $regions;
+
+  /**
+   * The libraries or library assets overridden by the theme.
+   *
+   * @var array
+   */
+  protected $librariesOverride;
+
+  /**
+   * Constructs an ActiveTheme object.
+   *
+   * @param array $values
+   *   The properties of the object, keyed by the names.
+   */
+  public function __construct(array $values) {
+    $values += [
+      'path' => '',
+      'engine' => 'twig',
+      'owner' => 'twig',
+      'stylesheets_remove' => [],
+      'libraries' => [],
+      'extension' => 'html.twig',
+      'base_themes' => [],
+      'regions' => [],
+      'libraries_override' => [],
+      'libraries_extend' => [],
+    ];
+
+    $this->name = $values['name'];
+    $this->path = $values['path'];
+    $this->engine = $values['engine'];
+    $this->owner = $values['owner'];
+    $this->styleSheetsRemove = $values['stylesheets_remove'];
+    $this->libraries = $values['libraries'];
+    $this->extension = $values['extension'];
+    $this->baseThemes = $values['base_themes'];
+    $this->regions = $values['regions'];
+    $this->librariesOverride = $values['libraries_override'];
+    $this->librariesExtend = $values['libraries_extend'];
+  }
+
+  /**
+   * Returns the machine name of the theme.
+   *
+   * @return string
+   */
+  public function getName() {
+    return $this->name;
+  }
+
+  /**
+   * Returns the path to the theme directory.
+   *
+   * @return string
+   */
+  public function getPath() {
+    return $this->path;
+  }
+
+  /**
+   * Returns the theme engine.
+   *
+   * @return string
+   */
+  public function getEngine() {
+    return $this->engine;
+  }
+
+  /**
+   * Returns the path to the theme engine for root themes.
+   *
+   * @see \Drupal\Core\Extension\ThemeHandler::rebuildThemeData
+   *
+   * @return mixed
+   */
+  public function getOwner() {
+    return $this->owner;
+  }
+
+  /**
+   * Returns the extension object.
+   *
+   * @return \Drupal\Core\Extension\Extension
+   */
+  public function getExtension() {
+    return $this->extension;
+  }
+
+  /**
+   * Returns the libraries provided by the theme.
+   *
+   * @return mixed
+   */
+  public function getLibraries() {
+    return $this->libraries;
+  }
+
+  /**
+   * Returns the removed stylesheets by the theme.
+   *
+   * @return mixed
+   *
+   * @deprecated in Drupal 8.0.0, will be removed before Drupal 9.0.0.
+   *
+   * @see https://www.drupal.org/node/2497313
+   */
+  public function getStyleSheetsRemove() {
+    return $this->styleSheetsRemove;
+  }
+
+  /**
+   * Returns an array of base theme active theme objects keyed by name.
+   *
+   * The order starts with the base theme of $this and ends with the root of
+   * the dependency chain.
+   *
+   * @return static[]
+   */
+  public function getBaseThemes() {
+    return $this->baseThemes;
+  }
+
+  /**
+   * The regions used by the theme.
+   *
+   * @return string[]
+   *   The list of region machine names supported by the theme.
+   *
+   * @see system_region_list()
+   */
+  public function getRegions() {
+    return array_keys($this->regions);
+  }
+
+  /**
+   * Returns the libraries or library assets overridden by the active theme.
+   *
+   * @return array
+   *   The list of libraries overrides.
+   */
+  public function getLibrariesOverride() {
+    return $this->librariesOverride;
+  }
+
+  /**
+   * Returns the libraries extended by the active theme.
+   *
+   * @return array
+   *   The list of libraries-extend definitions.
+   */
+  public function getLibrariesExtend() {
+    return $this->librariesExtend;
+  }
+
+}