Theme.php

Same filename in this branch
  1. 11.x core/lib/Drupal/Core/Updater/Theme.php
Same filename and directory in other branches
  1. 10 core/lib/Drupal/Core/Updater/Theme.php
  2. 9 core/lib/Drupal/Core/Updater/Theme.php
  3. 8.9.x core/lib/Drupal/Core/Updater/Theme.php
  4. main core/lib/Drupal/Core/Extension/Theme.php

Namespace

Drupal\Core\Extension

File

core/lib/Drupal/Core/Extension/Theme.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Core\Extension;

use Drupal\Core\StringTranslation\TranslatableMarkup;

/**
 * The Theme extension object.
 *
 * Extending this class is not supported and no BC is provided for subclasses.
 *
 * @see \Drupal\Core\Extension\ThemeExtensionList::doList()
 *
 * @todo https://www.drupal.org/project/drupal/issues/3026232 Replace public
 *   and dynamic properties with methods.
 *
 * @final
 */
class Theme extends Extension {
  
  /**
   * Constructs a new Theme object.
   *
   * @param string $root
   *   The app root.
   * @param string $pathname
   *   The relative path and filename of the extension's info file; e.g.,
   *   'core/themes/olivero/olivero.info.yml'.
   * @param array $info
   *   The info array parsed from the theme's .info.yml file.
   * @param string|null $filename
   *   (optional) The filename of the main extension file; e.g., olivero.theme.
   */
  public function __construct(string $root, string $pathname, array $info, ?string $filename = NULL) {
    parent::__construct($root, 'theme', $pathname, $filename);
    $this->info = $info;
  }
  
  /**
   * Lists all the theme's regions.
   *
   * @return \Drupal\Core\StringTranslation\TranslatableMarkup[]
   *   An array of human-readable region names keyed by machine names.
   */
  public function listAllRegions() : array {
    return array_map(static function ($label) {
      // phpcs:ignore Drupal.Semantics.FunctionT.NotLiteralString
      return new TranslatableMarkup($label);
    }, $this->info['regions']);
  }
  
  /**
   * Lists all the theme's visible regions.
   *
   * @return \Drupal\Core\StringTranslation\TranslatableMarkup[]
   *   An array of human-readable region names keyed by machine names.
   */
  public function listVisibleRegions() : array {
    // List only regions that do not appear in the 'regions_hidden' key.
    return array_diff_key($this->listAllRegions(), array_flip($this->info['regions_hidden']));
  }
  
  /**
   * Gets the name of the default region for the theme.
   *
   * @return string
   *   The machine name of the default region.
   */
  public function getDefaultRegion() : string {
    return (string) key($this->listVisibleRegions());
  }

}

Classes

Title Deprecated Summary
Theme The Theme extension object.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.