diff --git a/Classes/Controller/AbstractController.php b/Classes/Controller/AbstractController.php index 7385c5a1cb1f881d10070a708a0a1d2dbf2a2bbf..e7d15e37fd9d3da8b8edab78a4f4aeb5986a575b 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, ]; }