From e1c25e69bdadba124ddb8ee2f3ae8bf1ca1d6123 Mon Sep 17 00:00:00 2001 From: Fabian Galinski <fabian@sgalinski.de> Date: Fri, 17 Jun 2016 10:11:33 +0200 Subject: [PATCH] [FEATURE] Use the single news imaga data for teaser image data, if they are empty. --- Classes/Controller/AbstractController.php | 58 +++++++++++++++++++---- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/Classes/Controller/AbstractController.php b/Classes/Controller/AbstractController.php index 7385c5a..e7d15e3 100644 --- a/Classes/Controller/AbstractController.php +++ b/Classes/Controller/AbstractController.php @@ -80,11 +80,41 @@ abstract class AbstractController extends ActionController { * @return array */ protected function getMetaDataForNews(News $news, Category $category) { - /** @var FileReference $teaserImage */ + $singleNewsImageData = $this->getDataForSingleViewImage($news, $category); + $teaserImageData = $this->getDataForTeaserImage($news, $category); + + // Use single news image data for teaser image data, if the teaser imaga data are empty. + $teaserIsEmpty = $teaserImageData['teaserImage'] === NULL && $teaserImageData['teaserImageObject'] === NULL; + $singleNewsIsEmpty = $singleNewsImageData['image'] === NULL && $singleNewsImageData['imageObject'] === NULL; + if ($teaserIsEmpty && !$singleNewsIsEmpty) { + $teaserImageData = [ + 'teaserImage' => $singleNewsImageData['image'], + 'teaserImageObject' => $singleNewsImageData['imageObject'], + 'teaserImageHeadlineColor' => $singleNewsImageData['imageHeadlineColor'], + ]; + } + + return array_merge( + [ + 'category' => $category, + 'news' => $news, + ], + $singleNewsImageData, + $teaserImageData + ); + } + + /** + * Returns the single view image data as an array for the given news and category as fallback. + * + * @param News $news + * @param Category $category + * @return array + */ + protected function getDataForSingleViewImage(News $news, Category $category) { /** @var FileReference $singleNewsImage */ + $singleNewsImage = $singleNewsImageObject = NULL; $objectForData = $news; - $teaserImage = $singleNewsImage = $singleNewsImageObject = $teaserImageObject = NULL; - $singleNewsImages = $news->getTeaser2Image(); if (count($singleNewsImages)) { $singleNewsImage = $singleNewsImages->current(); @@ -108,6 +138,23 @@ abstract class AbstractController extends ActionController { } } + return [ + 'image' => $singleNewsImage, + 'imageObject' => $singleNewsImageObject, + 'imageHeadlineColor' => $imageHeadlineColor, + ]; + } + + /** + * Returns the teaser image data as an array for the given news and category as fallback. + * + * @param News $news + * @param Category $category + * @return array + */ + protected function getDataForTeaserImage(News $news, Category $category) { + /** @var FileReference $teaserImage */ + $teaserImage = $teaserImageObject = NULL; $objectForData = $news; $teaserImages = $news->getTeaser1Image(); if (count($teaserImages)) { @@ -133,13 +180,8 @@ abstract class AbstractController extends ActionController { } return [ - 'category' => $category, - 'news' => $news, - 'image' => $singleNewsImage, - 'imageObject' => $singleNewsImageObject, 'teaserImage' => $teaserImage, 'teaserImageObject' => $teaserImageObject, - 'imageHeadlineColor' => $imageHeadlineColor, 'teaserImageHeadlineColor' => $teaserImageHeadlineColor, ]; } -- GitLab