You are here

class Variables in Express 8

Class to help modify template variables.

Hierarchy

Expanded class hierarchy of Variables

25 files declare their use of Variables
BootstrapCarousel.php in themes/contrib/bootstrap/src/Plugin/Preprocess/BootstrapCarousel.php
Contains \Drupal\bootstrap\Plugin\Preprocess\BootstrapCarousel.
BootstrapDropdown.php in themes/contrib/bootstrap/src/Plugin/Preprocess/BootstrapDropdown.php
Contains \Drupal\bootstrap\Plugin\Preprocess\BootstrapDropdown.
BootstrapModal.php in themes/contrib/bootstrap/src/Plugin/Preprocess/BootstrapModal.php
Contains \Drupal\bootstrap\Plugin\Preprocess\BootstrapModal.
BootstrapPanel.php in themes/contrib/bootstrap/src/Plugin/Preprocess/BootstrapPanel.php
Contains \Drupal\bootstrap\Plugin\Preprocess\BootstrapPanel.
Breadcrumb.php in themes/contrib/bootstrap/src/Plugin/Preprocess/Breadcrumb.php
Contains \Drupal\bootstrap\Plugin\Preprocess\Breadcrumb.

... See full list

File

themes/contrib/bootstrap/src/Utility/Variables.php, line 14
Contains \Drupal\bootstrap\Utility\Variables.

Namespace

Drupal\bootstrap\Utility
View source
class Variables extends DrupalAttributes {

  /**
   * An element object.
   *
   * @var \Drupal\bootstrap\Utility\Element|FALSE
   */
  public $element = FALSE;

  /**
   * Element constructor.
   *
   * @param array $variables
   *   A theme hook variables array.
   */
  public function __construct(array &$variables) {
    $this->array =& $variables;
    if (isset($variables['element']) && Element::isRenderArray($variables['element'])) {
      $this->element = Element::create($variables['element']);
    }
    elseif (isset($variables['elements']) && Element::isRenderArray($variables['elements'])) {
      $this->element = Element::create($variables['elements']);
    }
  }

  /**
   * Creates a new \Drupal\bootstrap\Utility\Variables instance.
   *
   * @param array $variables
   *   A theme hook variables array.
   *
   * @return \Drupal\bootstrap\Utility\Variables
   *   The newly created variables instance.
   */
  public static function create(array &$variables) {
    return new self($variables);
  }

  /**
   * Retrieves a context value from the variables array or its element, if any.
   *
   * @param string $name
   *   The name of the context key to retrieve.
   * @param mixed $default
   *   Optional. The default value to use if the context $name isn't set.
   *
   * @return mixed|NULL
   *   The context value or the $default value if not set.
   */
  public function &getContext($name, $default = NULL) {
    $context =& $this
      ->offsetGet($this->attributePrefix . 'context', []);
    if (!isset($context[$name])) {

      // If there is no context on the variables array but there is an element
      // present, proxy the method to the element.
      if ($this->element) {
        return $this->element
          ->getContext($name, $default);
      }
      $context[$name] = $default;
    }
    return $context[$name];
  }

  /**
   * Maps an element's properties to the variables attributes array.
   *
   * @param array $map
   *   An associative array whose keys are element property names and whose
   *   values are the variable names to set in the variables array; e.g.,
   *   array('#property_name' => 'variable_name'). If both names are identical
   *   except for the leading '#', then an attribute name value is sufficient
   *   and no property name needs to be specified.
   * @param bool $overwrite
   *   If the variable exists, it will be overwritten. This does not apply to
   *   attribute arrays, they will always be merged recursively.
   *
   * @return $this
   */
  public function map(array $map, $overwrite = TRUE) {

    // Immediately return if there is no element in the variable array.
    if (!$this->element) {
      return $this;
    }

    // Iterate over each map item.
    foreach ($map as $property => $variable) {

      // If the key is numeric, the attribute name needs to be taken over.
      if (is_int($property)) {
        $property = $variable;
      }

      // Merge attributes from the element.
      if (strpos($property, 'attributes') !== FALSE) {
        $this
          ->setAttributes($this->element
          ->getAttributes($property)
          ->getArrayCopy(), $variable);
      }
      elseif ($overwrite || !$this
        ->offsetExists($variable)) {
        $this
          ->offsetSet($variable, $this->element
          ->getProperty($property));
      }
    }
    return $this;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ArrayObject::$array protected property The array.
ArrayObject::addAttachments public function Adds attachments. Overrides AttachmentsInterface::addAttachments
ArrayObject::addCacheableDependency public function Adds a dependency on an object: merges its cacheability metadata. Overrides RefinableCacheableDependencyInterface::addCacheableDependency
ArrayObject::addCacheContexts public function Adds cache contexts. Overrides RefinableCacheableDependencyInterface::addCacheContexts
ArrayObject::addCacheTags public function Adds cache tags. Overrides RefinableCacheableDependencyInterface::addCacheTags
ArrayObject::append public function Appends the value.
ArrayObject::asort public function Sort the entries by value.
ArrayObject::bubbleObject public function Merges an object's cacheable metadata into the variables array.
ArrayObject::bubbleRenderArray public function Merges a render array's cacheable metadata into the variables array.
ArrayObject::count public function Get the number of public properties in the ArrayObject.
ArrayObject::exchangeArray public function Exchange the array for another one. 1
ArrayObject::getArrayCopy public function Creates a copy of the ArrayObject.
ArrayObject::getAttachments public function Gets attachments. Overrides AttachmentsInterface::getAttachments
ArrayObject::getCacheContexts public function The cache contexts associated with this object. Overrides CacheableDependencyInterface::getCacheContexts
ArrayObject::getCacheMaxAge public function The maximum age for which this object may be cached. Overrides CacheableDependencyInterface::getCacheMaxAge
ArrayObject::getCacheTags public function The cache tags associated with this object. Overrides CacheableDependencyInterface::getCacheTags
ArrayObject::getIterator public function Creates a new iterator from an ArrayObject instance.
ArrayObject::ksort public function Sort the entries by key.
ArrayObject::merge public function Merges multiple values into the array.
ArrayObject::mergeCacheMaxAge public function Merges the maximum age (in seconds) with the existing maximum age. Overrides RefinableCacheableDependencyInterface::mergeCacheMaxAge
ArrayObject::natcasesort public function Sort an array using a case insensitive "natural order" algorithm.
ArrayObject::natsort public function Sort entries using a "natural order" algorithm.
ArrayObject::offsetExists public function Returns whether the requested key exists.
ArrayObject::offsetGet public function Returns the value at the specified key.
ArrayObject::offsetSet public function Sets the value at the specified key to value.
ArrayObject::offsetUnset public function Unsets the value at the specified key.
ArrayObject::serialize public function Serialize an ArrayObject.
ArrayObject::setAttachments public function Sets attachments. Overrides AttachmentsInterface::setAttachments
ArrayObject::uasort public function Sort entries with a user-defined function and maintain key association.
ArrayObject::uksort public function Sort the entries by keys using a user-defined comparison function.
ArrayObject::unserialize public function Unserialize an ArrayObject.
ArrayObject::__get public function Returns the value at the specified key by reference. 1
ArrayObject::__isset public function Returns whether the requested key exists. 1
ArrayObject::__set public function Sets the value at the specified key to value. 1
ArrayObject::__unset public function Unsets the value at the specified key. 1
DrupalAttributes::$attributePrefix protected property A prefix to use for retrieving attribute keys from the array. 1
DrupalAttributes::$attributes protected property Stored attribute instances.
DrupalAttributes::addClass public function Add class(es) to an attributes object.
DrupalAttributes::ATTRIBUTES constant Defines the "attributes" storage type constant.
DrupalAttributes::BODY constant Defines the "body_attributes" storage type constant.
DrupalAttributes::CONTENT constant Defines the "content_attributes" storage type constant.
DrupalAttributes::DESCRIPTION constant Defines the "description_attributes" storage type constant.
DrupalAttributes::FOOTER constant Defines the "footer_attributes" storage type constant.
DrupalAttributes::getAttribute public function Retrieve a specific attribute from an attributes object.
DrupalAttributes::getAttributes public function Retrieves a specific attributes object.
DrupalAttributes::getClasses public function Retrieves classes from an attributes object.
DrupalAttributes::hasAttribute public function Indicates whether an attributes object has a specific attribute set.
DrupalAttributes::hasClass public function Indicates whether an attributes object has a specific class.
DrupalAttributes::HEADER constant Defines the "header_attributes" storage type constant.
DrupalAttributes::HEADING constant Defines the "heading_attributes" storage type constant.
DrupalAttributes::INPUT_GROUP constant Defines the "input_group_attributes" storage type constant.
DrupalAttributes::LABEL constant Defines the "label_attributes" storage type constant.
DrupalAttributes::NAVBAR constant Defines the "navbar_attributes" storage type constant.
DrupalAttributes::removeAttribute public function Removes an attribute from an attributes object.
DrupalAttributes::removeClass public function Removes a class from an attributes object.
DrupalAttributes::replaceClass public function Replaces a class in an attributes object.
DrupalAttributes::setAttribute public function Sets an attribute on an attributes object.
DrupalAttributes::setAttributes public function Sets multiple attributes on an attributes object.
DrupalAttributes::SPLIT_BUTTON constant Defines the "split_button_attributes" storage type constant.
DrupalAttributes::TITLE constant Defines the "title_attributes" storage type constant.
DrupalAttributes::WRAPPER constant Defines the "wrapper_attributes" storage type constant.
Variables::$element public property An element object.
Variables::create public static function Creates a new \Drupal\bootstrap\Utility\Variables instance.
Variables::getContext public function Retrieves a context value from the variables array or its element, if any.
Variables::map public function Maps an element's properties to the variables attributes array.
Variables::__construct public function Element constructor. Overrides ArrayObject::__construct