Skip to content
Snippets Groups Projects
Commit 30f5ad07 authored by Edouard Cunibil's avatar Edouard Cunibil
Browse files

Issue #3367024 by paucala, pol, duaelfr: References used in foreach loops should be unset

parent 39f028a4
Branches
Tags
No related merge requests found
Pipeline #462297 passed with warnings
......@@ -68,11 +68,6 @@ class ResponsiveBgImageFormatter extends BgImageFormatter {
$selectors = array_filter(preg_split('/$/', $css_settings['bg_image_selector']));
$files = $this->getEntitiesToView($items, $langcode);
// Filter out empty selectors.
$selectors = array_map(static function ($value) {
return trim($value, ',');
}, $selectors);
// Early opt-out if the field is empty.
if (empty($files) || empty($settings['image_style'])) {
return $elements;
......@@ -90,9 +85,11 @@ class ResponsiveBgImageFormatter extends BgImageFormatter {
$items->getEntity()->getEntityTypeId() => $items->getEntity(),
];
foreach ($selectors as &$selector) {
$selector = \Drupal::token()->replace($selector, $token_data);
}
// Clean and resolve selectors.
$selectors = array_map(static function ($selector) use ($token_data) {
$selector = trim($selector, ', ');
return \Drupal::token()->replace($selector, $token_data);
}, $selectors);
// Need an empty element so views renderer will see something to render.
$elements[0] = [];
......@@ -100,7 +97,7 @@ class ResponsiveBgImageFormatter extends BgImageFormatter {
/** @var \Drupal\file\FileInterface $file */
foreach ($files as $delta => $file) {
// Use the static index for selector cycling.
$current_selector = !empty($selectors) ? $selectors[static::$selectorIndex[$field_id] % \count($selectors)] : 'body';
$selector = !empty($selectors) ? $selectors[static::$selectorIndex[$field_id] % \count($selectors)] : 'body';
// Increment the index after using it.
static::$selectorIndex[$field_id]++;
......@@ -142,7 +139,7 @@ class ResponsiveBgImageFormatter extends BgImageFormatter {
// will deactivate.
$media = str_replace('screen (max-width', 'screen and (max-width', $media);
$css_settings['bg_image_selector'] = $current_selector;
$css_settings['bg_image_selector'] = $selector;
$css = $this->getBackgroundImageCss($src, $css_settings);
$css['media'] = $media;
......
......@@ -548,11 +548,6 @@ class BgImageFormatter extends ImageFormatter {
$selectors = explode(\PHP_EOL, trim($css_settings['bg_image_selector']));
$colors = explode(\PHP_EOL, trim($css_settings['bg_image_color']));
// Filter out empty selectors.
$selectors = array_map(static function ($value) {
return trim($value, ',');
}, $selectors);
// Filter out empty colors.
$colors = array_filter(array_map('trim', $colors));
......@@ -573,9 +568,11 @@ class BgImageFormatter extends ImageFormatter {
$items->getEntity()->getEntityTypeId() => $items->getEntity(),
];
foreach ($selectors as &$selector) {
$selector = \Drupal::token()->replace($selector, $token_data);
}
// Clean and resolve selectors.
$selectors = array_map(static function ($selector) use ($token_data) {
$selector = trim($selector, ', ');
return \Drupal::token()->replace($selector, $token_data);
}, $selectors);
// Need an empty element so views renderer will see something to render.
$elements[0] = [];
......@@ -583,8 +580,8 @@ class BgImageFormatter extends ImageFormatter {
/** @var \Drupal\file\FileInterface $file */
foreach ($files as $delta => $file) {
// Use the static index for selector cycling.
$current_selector = !empty($selectors) ? $selectors[static::$selectorIndex[$field_id] % \count($selectors)] : 'body';
$css_settings['bg_image_selector'] = $current_selector;
$selector = !empty($selectors) ? $selectors[static::$selectorIndex[$field_id] % \count($selectors)] : 'body';
$css_settings['bg_image_selector'] = $selector;
if ($colors) {
$css_settings['bg_image_color'] = $colors[static::$selectorIndex[$field_id] % \count($colors)];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment