Mercurial > hg > isophonics-drupal-site
view core/modules/layout_builder/src/Context/LayoutBuilderContextTrait.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | 1fec387a4317 |
children | af1871eacc83 |
line wrap: on
line source
<?php namespace Drupal\layout_builder\Context; use Drupal\Core\Plugin\Context\ContextInterface; use Drupal\layout_builder\SectionStorageInterface; /** * Provides a wrapper around getting contexts from a section storage object. */ trait LayoutBuilderContextTrait { /** * The context repository. * * @var \Drupal\Core\Plugin\Context\ContextRepositoryInterface */ protected $contextRepository; /** * Gets the context repository service. * * @return \Drupal\Core\Plugin\Context\ContextRepositoryInterface * The context repository service. */ protected function contextRepository() { if (!$this->contextRepository) { $this->contextRepository = \Drupal::service('context.repository'); } return $this->contextRepository; } /** * Provides all available contexts, both global and section_storage-specific. * * @param \Drupal\layout_builder\SectionStorageInterface $section_storage * The section storage. * * @return \Drupal\Core\Plugin\Context\ContextInterface[] * The array of context objects. */ protected function getAvailableContexts(SectionStorageInterface $section_storage) { // Get all globally available contexts that have a defined value. $contexts = array_filter($this->contextRepository()->getAvailableContexts(), function (ContextInterface $context) { return $context->hasContextValue(); }); // Add in the per-section_storage contexts. $contexts += $section_storage->getContexts(); return $contexts; } }