Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
namespace SGalinski\SgNews\Controller;
/***************************************************************
* Copyright notice
*
* (c) sgalinski Internet Services (http://www.sgalinski.de)
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use SGalinski\SgNews\Domain\Model\Category;
use SGalinski\SgNews\Domain\Model\News;
use TYPO3\CMS\Extbase\Persistence\Generic\Query;
/**
* Controller that handles the overview page of categories and their news
*/
class OverviewController extends AbstractController {
/**
* @inject
* @var \SGalinski\SgNews\Domain\Repository\CategoryRepository
*/
protected $categoryRepository;
/**
* @inject
* @var \SGalinski\SgNews\Domain\Repository\NewsRepository
*/
protected $newsRepository;
/**
* Renders the news overview
*
* @return void
*/
public function overviewAction() {
$newsByCategory = [];
$newsLimitPerCategory = (int) $this->settings['newsLimitPerCategory'];
$this->categoryRepository->setDefaultOrderings(['sorting' => Query::ORDER_ASCENDING]);
$categories = $this->categoryRepository->findAll();
foreach ($categories as $category) {
/** @var Category $category */
$categoryId = $category->getUid();
$newsMetaData = [];
$news = $this->newsRepository->findAllSortedNewsByCategory($categoryId, $newsLimitPerCategory);
foreach ($news as $newsEntry) {
/** @var News $newsEntry */
$data = $this->getMetaDataForNews($newsEntry, $category);
$newsMetaData[] = $data;
}
/** @noinspection PhpUndefinedMethodInspection */
$newsByCategory[$categoryId] = [
'category' => $category,
'categoryId' => $categoryId,
'newsCount' => $this->newsRepository->countByPid($categoryId),
'newsMetaData' => $newsMetaData
];
}
/** @var News $highlightedNews */
$highlightedNews = $this->newsRepository->findLastUpdatedOrHighlightedNewsByCategory(1, FALSE)->getFirst();
$category = $newsByCategory[$highlightedNews->getPid()]['category'];
$highlightedNewsMetaData = NULL;
if ($category) {
$highlightedNewsMetaData = $this->getMetaDataForNews($highlightedNews, $category);
}
$this->view->assign('newsByCategory', $newsByCategory);
$this->view->assign('highlightedNewsMetaData', $highlightedNewsMetaData);
}
}
?>