Mercurial > hg > isophonics-drupal-site
view vendor/consolidation/output-formatters/src/StructuredData/RenderCellCollectionTrait.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line source
<?php namespace Consolidation\OutputFormatters\StructuredData; use Consolidation\OutputFormatters\Options\FormatterOptions; use Consolidation\OutputFormatters\Formatters\FormatterAwareInterface; use Consolidation\OutputFormatters\Formatters\FormatterAwareTrait; trait RenderCellCollectionTrait { use FormatterAwareTrait; /** @var RenderCellInterface[] */ protected $rendererList = [ RenderCellCollectionInterface::PRIORITY_FIRST => [], RenderCellCollectionInterface::PRIORITY_NORMAL => [], RenderCellCollectionInterface::PRIORITY_FALLBACK => [], ]; /** * Add a renderer * * @return $this */ public function addRenderer(RenderCellInterface $renderer, $priority = RenderCellCollectionInterface::PRIORITY_NORMAL) { $this->rendererList[$priority][] = $renderer; return $this; } /** * Add a callable as a renderer * * @return $this */ public function addRendererFunction(callable $rendererFn, $priority = RenderCellCollectionInterface::PRIORITY_NORMAL) { $renderer = new CallableRenderer($rendererFn); return $this->addRenderer($renderer, $priority); } /** * {@inheritdoc} */ public function renderCell($key, $cellData, FormatterOptions $options, $rowData) { $flattenedRendererList = array_reduce( $this->rendererList, function ($carry, $item) { return array_merge($carry, $item); }, [] ); foreach ($flattenedRendererList as $renderer) { if ($renderer instanceof FormatterAwareInterface) { $renderer->setFormatter($this->getFormatter()); } $cellData = $renderer->renderCell($key, $cellData, $options, $rowData); } return $cellData; } }