Skip to content
Snippets Groups Projects
Commit 42311d5c authored by Matthias Adrowski's avatar Matthias Adrowski
Browse files

[TASK] ECS run

parent f8ea489d
No related branches found
No related tags found
1 merge request!38Feature upgrade to typo3 11
Showing
with 258 additions and 131 deletions
......@@ -29,6 +29,7 @@ namespace SGalinski\SgNews\Command;
use SGalinski\SgNews\Domain\Model\News;
use SGalinski\SgNews\Domain\Repository\FileReferenceRepository;
use SGalinski\SgNews\Domain\Repository\NewsRepository;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
......@@ -41,7 +42,6 @@ use TYPO3\CMS\Core\Resource\File;
use TYPO3\CMS\Core\Resource\FileInterface;
use TYPO3\CMS\Core\Resource\ResourceFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use Symfony\Component\Console\Command\Command;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException;
use TYPO3\CMS\Extbase\Persistence\Exception\UnknownObjectException;
......@@ -77,12 +77,15 @@ class MigrateNewsCommandController extends Command {
->addArgument('categoryPid', InputArgument::REQUIRED, 'The page id of the category page')
->addArgument('year', InputArgument::OPTIONAL, 'Only news from that year will be migrated', 2015)
->addArgument(
'languageMapAsJson', InputArgument::OPTIONAL,
'languageMapAsJson',
InputArgument::OPTIONAL,
'A json, mapping language ids (old => new). this is needed if the sys_language_uids have changed',
'{"3":1,"1":0,"2":2,"0":3}'
)
->addArgument(
'categoryMapAsJson', InputArgument::OPTIONAL, 'A json, mapping sys_category ids (old => new).',
'categoryMapAsJson',
InputArgument::OPTIONAL,
'A json, mapping sys_category ids (old => new).',
'{"2":17,"3":16,"4":15,"5":14,"6":14,"7":15,"8":16,"9":17}'
)
->addArgument('pId', InputArgument::OPTIONAL, 'Only news from that pid will be migrated', 52);
......@@ -167,16 +170,22 @@ class MigrateNewsCommandController extends Command {
$file = $this->getMatchingFile($row);
if ($file instanceof File) {
$teaserImage1 = $fileReferenceRepository->addFileReferenceFromFile(
$file, $this->newsPagesMap[$row['uid']],
$this->newsPagesMap[$row['uid']], 'pages', 'tx_sgnews_teaser1_image'
$file,
$this->newsPagesMap[$row['uid']],
$this->newsPagesMap[$row['uid']],
'pages',
'tx_sgnews_teaser1_image'
);
if ($teaserImage1) {
$newsPage->addTeaser1Image($teaserImage1);
$teaserImage2 = $fileReferenceRepository->addFileReferenceFromFile(
$file, $this->newsPagesMap[$row['uid']],
$this->newsPagesMap[$row['uid']], 'pages', 'tx_sgnews_teaser2_image'
$file,
$this->newsPagesMap[$row['uid']],
$this->newsPagesMap[$row['uid']],
'pages',
'tx_sgnews_teaser2_image'
);
$newsPage->addTeaser2Image($teaserImage2);
}
......@@ -194,12 +203,15 @@ class MigrateNewsCommandController extends Command {
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq(
'pid', $queryBuilder->createNamedParameter($newPageId, Connection::PARAM_INT)
'pid',
$queryBuilder->createNamedParameter($newPageId, Connection::PARAM_INT)
),
$queryBuilder->expr()->eq(
'sys_language_uid', $queryBuilder->createNamedParameter(
$this->languageMap[(int) $row['sys_language_uid']], \PDO::PARAM_INT
)
'sys_language_uid',
$queryBuilder->createNamedParameter(
$this->languageMap[(int) $row['sys_language_uid']],
\PDO::PARAM_INT
)
)
)
)
......@@ -230,11 +242,13 @@ class MigrateNewsCommandController extends Command {
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq(
'tablenames', $queryBuilder->createNamedParameter('tx_news_domain_model_news')
'tablenames',
$queryBuilder->createNamedParameter('tx_news_domain_model_news')
),
$queryBuilder->expr()->eq('fieldname', $queryBuilder->createNamedParameter('fal_media')),
$queryBuilder->expr()->eq(
'uid_foreign', $queryBuilder->createNamedParameter($row['uid'], Connection::PARAM_INT)
'uid_foreign',
$queryBuilder->createNamedParameter($row['uid'], Connection::PARAM_INT)
)
)
)
......@@ -251,7 +265,8 @@ class MigrateNewsCommandController extends Command {
->from('sys_file_news_migration')
->where(
$queryBuilder->expr()->eq(
'uid', $queryBuilder->createNamedParameter($fileReferenceResult['uid_local'], Connection::PARAM_INT)
'uid',
$queryBuilder->createNamedParameter($fileReferenceResult['uid_local'], Connection::PARAM_INT)
)
)
->execute()->fetch();
......@@ -283,7 +298,8 @@ class MigrateNewsCommandController extends Command {
->from('sys_category_record_mm_news_migration')
->where(
$queryBuilder->expr()->eq(
'uid_foreign', $queryBuilder->createNamedParameter($row['uid'], Connection::PARAM_INT)
'uid_foreign',
$queryBuilder->createNamedParameter($row['uid'], Connection::PARAM_INT)
)
)
->execute()->fetchAll();
......@@ -322,7 +338,8 @@ class MigrateNewsCommandController extends Command {
if ((int) $this->languageMap[(int) $row['sys_language_uid'] === 0]) {
$queryBuilder->where(
$queryBuilder->expr()->eq(
'uid', $queryBuilder->createNamedParameter($originalContentElement[0], Connection::PARAM_INT)
'uid',
$queryBuilder->createNamedParameter($originalContentElement[0], Connection::PARAM_INT)
)
);
} else {
......@@ -338,9 +355,11 @@ class MigrateNewsCommandController extends Command {
if (isset($this->languageMap[(int) $row['sys_language_uid']])) {
$queryBuilder->andWhere(
$queryBuilder->expr()->eq(
'sys_language_uid', $queryBuilder->createNamedParameter(
$this->languageMap[(int) $row['sys_language_uid']], Connection::PARAM_INT
)
'sys_language_uid',
$queryBuilder->createNamedParameter(
$this->languageMap[(int) $row['sys_language_uid']],
Connection::PARAM_INT
)
)
);
} else {
......@@ -362,7 +381,8 @@ class MigrateNewsCommandController extends Command {
->from('pages')
->where(
$queryBuilder->expr()->eq(
'uid', $queryBuilder->createNamedParameter($parentId, Connection::PARAM_INT)
'uid',
$queryBuilder->createNamedParameter($parentId, Connection::PARAM_INT)
)
)
->execute()->fetch();
......@@ -390,7 +410,8 @@ class MigrateNewsCommandController extends Command {
$queryBuilder->update('pages')
->where(
$queryBuilder->expr()->eq(
'uid', $queryBuilder->createNamedParameter($parentId, Connection::PARAM_INT)
'uid',
$queryBuilder->createNamedParameter($parentId, Connection::PARAM_INT)
)
)
->set('title', $newTitle, TRUE)
......@@ -402,7 +423,8 @@ class MigrateNewsCommandController extends Command {
$queryBuilder->update('pages')
->where(
$queryBuilder->expr()->eq(
'l10n_parent', $queryBuilder->createNamedParameter($parentId, Connection::PARAM_INT)
'l10n_parent',
$queryBuilder->createNamedParameter($parentId, Connection::PARAM_INT)
)
);
......@@ -412,9 +434,11 @@ class MigrateNewsCommandController extends Command {
) {
$queryBuilder->andWhere(
$queryBuilder->expr()->eq(
'sys_language_uid', $queryBuilder->createNamedParameter(
$this->languageMap[(int) $row['sys_language_uid']], Connection::PARAM_INT
)
'sys_language_uid',
$queryBuilder->createNamedParameter(
$this->languageMap[(int) $row['sys_language_uid']],
Connection::PARAM_INT
)
)
);
} else {
......
......@@ -221,11 +221,9 @@ abstract class AbstractController extends ActionController {
* @param string|NULL $html
* @return \Psr\Http\Message\ResponseInterface
*/
protected function htmlResponse(string $html = null): \Psr\Http\Message\ResponseInterface
{
protected function htmlResponse(string $html = NULL): \Psr\Http\Message\ResponseInterface {
return $this->responseFactory->createResponse()
->withHeader('Content-Type', 'text/html; charset=utf-8')
->withBody($this->streamFactory->createStream($html ?? $this->view->render()));
}
}
......@@ -36,7 +36,6 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
* @package SGalinski\SgNews\Controller\Ajax
*/
class LikeController extends AbstractAjaxController {
/**
* This action increases the tx_sgnews_likes field of a given page ($newsPid) by one
*
......@@ -57,9 +56,9 @@ class LikeController extends AbstractAjaxController {
)
->execute();
} catch (\Exception $exception) {
$this->returnData(['success' => false]);
$this->returnData(['success' => FALSE]);
}
$this->returnData(['success' => true]);
$this->returnData(['success' => TRUE]);
}
}
......@@ -43,7 +43,6 @@ use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
* News Controller
*/
class BackendController extends ActionController {
/**
* The uid of the current page
*
......@@ -114,7 +113,8 @@ class BackendController extends ActionController {
}
$this->language = $backendUser->getModuleData(
'tools_beuser/index.php/web_SgNewsNews_language', 'ses'
'tools_beuser/index.php/web_SgNewsNews_language',
'ses'
) ?: 0;
$languageOptions = BackendNewsUtility::getAvailableLanguages($this->pageUid);
$currentLanguageInfo = $languageOptions[$this->language] ?? NULL;
......@@ -170,8 +170,7 @@ class BackendController extends ActionController {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->createBackendResponse();
}
}
......@@ -232,7 +231,8 @@ class BackendController extends ActionController {
->setTitle($language['title'])
->setHref(
$uriBuilder->buildUriFromRoute(
'web_SgNewsNews', ['id' => $this->pageUid, 'SET' => ['language' => $key]]
'web_SgNewsNews',
['id' => $this->pageUid, 'SET' => ['language' => $key]]
)
);
if ((int) $this->language === (int) $key) {
......@@ -249,8 +249,7 @@ class BackendController extends ActionController {
*
* @return \Psr\Http\Message\ResponseInterface
*/
protected function createBackendResponse(): \Psr\Http\Message\ResponseInterface
{
protected function createBackendResponse(): \Psr\Http\Message\ResponseInterface {
$moduleTemplate = $this->moduleTemplateFactory->create($this->request);
$moduleTemplate->setContent($this->view->render());
return $this->htmlResponse($moduleTemplate->renderContent());
......
......@@ -79,7 +79,15 @@ class LatestController extends AbstractController {
$startTime = (int) $this->settings['starttime'];
$endTime = (int) $this->settings['endtime'];
$latestNewsEntries = $this->newsRepository->findLastUpdatedOrHighlightedNewsByCategories(
$limit, FALSE, $categoryUids, $offset, TRUE, $sortBy, $tagUids, $startTime, $endTime
$limit,
FALSE,
$categoryUids,
$offset,
TRUE,
$sortBy,
$tagUids,
$startTime,
$endTime
);
$categories = [];
......@@ -106,8 +114,7 @@ class LatestController extends AbstractController {
$this->view->assign('newsMetaData', $newsMetaData);
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -115,7 +122,8 @@ class LatestController extends AbstractController {
/**
* @param CategoryRepository $categoryRepository
*/
public function injectCategoryRepository(CategoryRepository $categoryRepository
public function injectCategoryRepository(
CategoryRepository $categoryRepository
) {
$this->categoryRepository = $categoryRepository;
}
......
......@@ -32,8 +32,8 @@ use SGalinski\SgNews\Domain\Repository\NewsRepository;
use SGalinski\SgNews\Domain\Repository\TagRepository;
use SGalinski\SgNews\Service\ConfigurationService;
use SGalinski\SgNews\Service\HeaderMetaDataService;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Core\Http\ImmediateResponseException;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\Controller\ErrorController;
use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
......@@ -60,7 +60,8 @@ class ListByCategoryController extends AbstractController {
/**
* @param CategoryRepository $categoryRepository
*/
public function injectCategoryRepository(CategoryRepository $categoryRepository
public function injectCategoryRepository(
CategoryRepository $categoryRepository
) {
$this->categoryRepository = $categoryRepository;
}
......@@ -159,7 +160,14 @@ class ListByCategoryController extends AbstractController {
$sortDirection = $configurationService->getConfiguration('sortDirection', $this->settings);
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryUids, $newsPerPage, $offset, $sortBy, $tagUids, $startTime, $endTime, $sortDirection
$categoryUids,
$newsPerPage,
$offset,
$sortBy,
$tagUids,
$startTime,
$endTime,
$sortDirection
)->toArray();
foreach ($news as $newsEntry) {
......@@ -186,8 +194,7 @@ class ListByCategoryController extends AbstractController {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......
......@@ -57,8 +57,7 @@ class NewsByAuthorController extends AbstractController {
if (\count($newsAuthorsIds) <= 0) {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -95,8 +94,7 @@ class NewsByAuthorController extends AbstractController {
if (\count($authors) <= 0) {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -106,8 +104,7 @@ class NewsByAuthorController extends AbstractController {
if (\count($news) <= 0) {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -142,8 +139,7 @@ class NewsByAuthorController extends AbstractController {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......
......@@ -52,7 +52,15 @@ class NewsFeedController extends AbstractController {
$startTime = (int) $this->settings['starttime'];
$endTime = (int) $this->settings['endtime'];
$news = $this->newsRepository->findLastUpdatedOrHighlightedNewsByCategories(
10, FALSE, $categories, 0, FALSE, 'date', $tags, $startTime, $endTime
10,
FALSE,
$categories,
0,
FALSE,
'date',
$tags,
$startTime,
$endTime
);
$newsCategories = [];
......@@ -77,8 +85,7 @@ class NewsFeedController extends AbstractController {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......
......@@ -35,13 +35,13 @@ use SGalinski\SgNews\Domain\Repository\TagRepository;
use SGalinski\SgNews\Service\ConfigurationService;
use SGalinski\SgNews\Service\HeaderMetaDataService;
use TYPO3\CMS\Core\Http\ImmediateResponseException;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Persistence\Generic\Query;
use TYPO3\CMS\Extbase\Persistence\Generic\QueryResult;
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
use TYPO3\CMS\Frontend\Controller\ErrorController;
use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
/**
* Controller that handles the overview page of categories and their news
......@@ -65,7 +65,8 @@ class OverviewController extends AbstractController {
/**
* @param CategoryRepository $categoryRepository
*/
public function injectCategoryRepository(CategoryRepository $categoryRepository
public function injectCategoryRepository(
CategoryRepository $categoryRepository
) {
$this->categoryRepository = $categoryRepository;
}
......@@ -116,9 +117,8 @@ class OverviewController extends AbstractController {
break;
default:
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
$this->forward('overviewWithoutCategories', NULL, NULL, $this->request->getArguments());
}
else {
$this->forward('overviewWithoutCategories', NULL, NULL, $this->request->getArguments());
} else {
return (new \TYPO3\CMS\Extbase\Http\ForwardResponse('overviewWithoutCategories'))->withControllerName('Record')
->withExtensionName('Extension')
->withArguments($this->request->getArguments());
......@@ -128,8 +128,7 @@ class OverviewController extends AbstractController {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -148,7 +147,15 @@ class OverviewController extends AbstractController {
/** @var News $highlightedNews */
$highlightedNews = $this->newsRepository
->findLastUpdatedOrHighlightedNewsByCategories(
1, FALSE, $categoryIds, 0, FALSE, $this->settings['sortBy'], $tagIds, $startTime, $endTime
1,
FALSE,
$categoryIds,
0,
FALSE,
$this->settings['sortBy'],
$tagIds,
$startTime,
$endTime
)->getFirst();
if (!$highlightedNews) {
return;
......@@ -185,7 +192,10 @@ class OverviewController extends AbstractController {
* @throws \TYPO3\CMS\Core\Error\Http\PageNotFoundException
*/
protected function overviewWithCategories(
array $newsByCategory = [], array $allNews = [], array $newsFilter = [], int $currentPageBrowserPage = 0
array $newsByCategory = [],
array $allNews = [],
array $newsFilter = [],
int $currentPageBrowserPage = 0
) {
$newsLimitPerCategory = (int) $this->settings['newsLimit'];
$this->categoryRepository->setDefaultOrderings(['sorting' => Query::ORDER_ASCENDING]);
......@@ -260,7 +270,13 @@ class OverviewController extends AbstractController {
}
foreach ($categoryIdsForSelect as $categoryIdsForSelectId) {
$news = $this->newsRepository->findAllSortedNewsByCategories(
[$categoryIdsForSelectId], $newsLimitPerCategory, $offset, $sortBy, $tagIds, $startTime, $endTime,
[$categoryIdsForSelectId],
$newsLimitPerCategory,
$offset,
$sortBy,
$tagIds,
$startTime,
$endTime,
$sortDirection
);
......@@ -309,7 +325,14 @@ class OverviewController extends AbstractController {
$tagIds = [(int) $newsFilter['tag']];
}
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryIds, $newsLimitPerCategory, $offset, $sortBy, $tagIds, $startTime, $endTime, $sortDirection
$categoryIds,
$newsLimitPerCategory,
$offset,
$sortBy,
$tagIds,
$startTime,
$endTime,
$sortDirection
);
foreach ($news as $newsEntry) {
......@@ -375,7 +398,10 @@ class OverviewController extends AbstractController {
* @throws \TYPO3\CMS\Core\Error\Http\PageNotFoundException
*/
protected function overviewWithTags(
array $newsByTag = [], array $allNews = [], array $newsFilter = [], int $currentPageBrowserPage = 0
array $newsByTag = [],
array $allNews = [],
array $newsFilter = [],
int $currentPageBrowserPage = 0
) {
$startTime = (int) $this->settings['starttime'];
$endTime = (int) $this->settings['endtime'];
......@@ -423,7 +449,14 @@ class OverviewController extends AbstractController {
$tagsById[$tagId] = $tag;
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryIds, $newsLimitPerTag, $offset, $sortBy, [$tagId], $startTime, $endTime, $sortDirection
$categoryIds,
$newsLimitPerTag,
$offset,
$sortBy,
[$tagId],
$startTime,
$endTime,
$sortDirection
);
$newsMetaData[$tagId] = [];
foreach ($news as $newsEntry) {
......@@ -468,7 +501,14 @@ class OverviewController extends AbstractController {
// Get all news by tags.
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryIds, $newsLimitPerTag, $offset, $sortBy, $tagIds, $startTime, $endTime, $sortDirection
$categoryIds,
$newsLimitPerTag,
$offset,
$sortBy,
$tagIds,
$startTime,
$endTime,
$sortDirection
);
foreach ($news as $newsEntry) {
/** @var News $newsEntry */
......@@ -545,7 +585,9 @@ class OverviewController extends AbstractController {
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
protected function overviewWithoutCategoriesAction(
array $newsMetaData = [], array $newsFilter = NULL, int $currentPageBrowserPage = 0
array $newsMetaData = [],
array $newsFilter = NULL,
int $currentPageBrowserPage = 0
): ?\Psr\Http\Message\ResponseInterface {
// remember selection of the filter values, if any
$selectedTag = $this->tagRepository->findByUid((int) $newsFilter['tag']);
......@@ -609,8 +651,7 @@ class OverviewController extends AbstractController {
if ($newsCount <= 0) {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -626,7 +667,14 @@ class OverviewController extends AbstractController {
}
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryIds, $newsPerPage, $offset, $sortBy, $tagIds, $startTime, $endTime, $sortDirection
$categoryIds,
$newsPerPage,
$offset,
$sortBy,
$tagIds,
$startTime,
$endTime,
$sortDirection
);
foreach ($news as $newsEntry) {
/** @var News $newsEntry */
......@@ -661,8 +709,7 @@ class OverviewController extends AbstractController {
$this->view->assign('newsMetaData', $newsMetaData);
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......
......@@ -72,8 +72,7 @@ class SingleViewController extends AbstractController {
if (!$news) {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -83,8 +82,7 @@ class SingleViewController extends AbstractController {
if (!$newsCategory) {
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -114,8 +112,7 @@ class SingleViewController extends AbstractController {
);
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
return NULL;
}
else {
} else {
return $this->htmlResponse();
}
}
......@@ -123,7 +120,8 @@ class SingleViewController extends AbstractController {
/**
* @param CategoryRepository $categoryRepository
*/
public function injectCategoryRepository(CategoryRepository $categoryRepository
public function injectCategoryRepository(
CategoryRepository $categoryRepository
) {
$this->categoryRepository = $categoryRepository;
}
......
......@@ -30,5 +30,4 @@ namespace SGalinski\SgNews\Domain\Model;
* FileReference
*/
class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference {
}
......@@ -31,7 +31,6 @@ use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
* Tag
*/
class Tag extends AbstractEntity {
/**
* @var string
*/
......
......@@ -90,6 +90,6 @@ abstract class AbstractRepository extends Repository {
* @return int
*/
public function getCount(QueryInterface $query) {
return \count($query->execute(true));
return \count($query->execute(TRUE));
}
}
......@@ -32,5 +32,4 @@ use SGalinski\SgNews\Domain\Repository\AbstractRepository;
* Repository for the Author model.
*/
class AuthorRepository extends AbstractRepository {
}
......@@ -37,7 +37,6 @@ use TYPO3\CMS\Extbase\Persistence\QueryInterface;
* Category Repository
*/
class CategoryRepository extends AbstractRepository {
/**
* @var array
*/
......
......@@ -26,16 +26,15 @@ namespace SGalinski\SgNews\Domain\Repository;
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use SGalinski\SgNews\Domain\Model\FileReference;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Resource\File;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* FileReference Repository
*/
class FileReferenceRepository extends AbstractRepository {
/**
* Method creates a file reference entry in the database. This step is necessary because the
* extbase can not handle the default TCA for FAL records. Without this method the FAL records will miss
......
......@@ -84,8 +84,14 @@ class NewsRepository extends AbstractRepository {
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
public function findAllSortedNewsByCategories(
array $categoryIds = NULL, $limit = 0, $offset = 0, $sortBy = 'date', array $tagIds = NULL,
$startTime = 0, $endTime = 0, $sortDirection = 'DESC'
array $categoryIds = NULL,
$limit = 0,
$offset = 0,
$sortBy = 'date',
array $tagIds = NULL,
$startTime = 0,
$endTime = 0,
$sortDirection = 'DESC'
): QueryResultInterface {
$query = $this->createQuery();
......@@ -169,7 +175,10 @@ class NewsRepository extends AbstractRepository {
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
public function newsCountByCategories(
array $categoryIds = NULL, array $tagIds = NULL, $startTime = 0, $endTime = 0
array $categoryIds = NULL,
array $tagIds = NULL,
$startTime = 0,
$endTime = 0
): int {
$query = $this->createQuery();
......@@ -229,13 +238,26 @@ class NewsRepository extends AbstractRepository {
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
public function findLastUpdatedOrHighlightedNewsByCategories(
$limit = 1, $onlyHighlighted = FALSE, array $categoryIds = NULL,
$offset = 0, $hideNeverHighlightedNews = FALSE, $sortBy = 'date', array $tagIds = NULL,
$startTime = 0, $endTime = 0
$limit = 1,
$onlyHighlighted = FALSE,
array $categoryIds = NULL,
$offset = 0,
$hideNeverHighlightedNews = FALSE,
$sortBy = 'date',
array $tagIds = NULL,
$startTime = 0,
$endTime = 0
): QueryResultInterface {
return $this->getQueryForLastUpdatedOrHighlightedNewsByCategories(
$limit, $onlyHighlighted, $categoryIds, $offset, $hideNeverHighlightedNews, $sortBy, $tagIds,
$startTime, $endTime
$limit,
$onlyHighlighted,
$categoryIds,
$offset,
$hideNeverHighlightedNews,
$sortBy,
$tagIds,
$startTime,
$endTime
)->execute();
}
......@@ -255,9 +277,15 @@ class NewsRepository extends AbstractRepository {
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
protected function getQueryForLastUpdatedOrHighlightedNewsByCategories(
$limit = 1, $onlyHighlighted = FALSE, array $categoryIds = NULL,
$offset = 0, $hideNeverHighlightedNews = FALSE, $sortBy = 'date', array $tagIds = NULL,
$startTime = 0, $endTime = 0
$limit = 1,
$onlyHighlighted = FALSE,
array $categoryIds = NULL,
$offset = 0,
$hideNeverHighlightedNews = FALSE,
$sortBy = 'date',
array $tagIds = NULL,
$startTime = 0,
$endTime = 0
): QueryInterface {
$query = $this->createQuery();
$constraints = NULL;
......
......@@ -37,7 +37,6 @@ use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
* Backend edid form hook
*/
class PageLayoutController {
/**
* Adds a Button to News-Pages which allows the user to switch to the News module
*
......
......@@ -34,7 +34,6 @@ use TYPO3\CMS\Fluid\View\StandaloneView;
* @package SGalinski\SgNews\Hook\PagelayoutView\PluginRenderer
*/
class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
/**
* Preprocesses the preview rendering of an sg_news content element plugin.
*
......@@ -46,7 +45,11 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
* @noinspection ReferencingObjectsInspection
*/
public function preProcess(
PageLayoutView &$parentObject, &$drawItem, &$headerContent, &$itemContent, array &$row
PageLayoutView &$parentObject,
&$drawItem,
&$headerContent,
&$itemContent,
array &$row
): void {
switch ($row['list_type']) {
case 'sgnews_overview':
......@@ -59,7 +62,8 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
// Get available plugin settings and their values from flexform
$pluginConfiguration = GeneralUtility::xml2array(
$row['pi_flexform'], 'T3DataStructure'
$row['pi_flexform'],
'T3DataStructure'
)['data']['main']['lDEF'];
$templateData = [
......@@ -88,7 +92,8 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
// Get available plugin settings and their values from flexform
$pluginConfiguration = GeneralUtility::xml2array(
$row['pi_flexform'], 'T3DataStructure'
$row['pi_flexform'],
'T3DataStructure'
)['data']['main']['lDEF'];
$categories = $pluginConfiguration['settings.categories']['vDEF'];
......@@ -96,10 +101,12 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
$templateData = [
'limit' => $pluginConfiguration['settings.limit']['vDEF'],
'categories' => is_string($categories) ? $this->addFieldContentsToRecordIdList(
'pages', $categories
'pages',
$categories
) : '',
'tags' => is_string($tags) ? $this->addFieldContentsToRecordIdList(
'sys_category', $tags
'sys_category',
$tags
) : '',
'starttime' => $pluginConfiguration['settings.starttime']['vDEF'],
'endtime' => $pluginConfiguration['settings.endtime']['vDEF'],
......@@ -121,7 +128,8 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
// Get available plugin settings and their values from flexform
$pluginConfiguration = GeneralUtility::xml2array(
$row['pi_flexform'], 'T3DataStructure'
$row['pi_flexform'],
'T3DataStructure'
)['data']['main']['lDEF'];
$categories = $pluginConfiguration['settings.categories']['vDEF'];
......@@ -129,7 +137,8 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
$templateData = [
'newsLimitPerPage' => $pluginConfiguration['settings.newsLimitPerPage']['vDEF'],
'categories' => is_string($categories) ? $this->addFieldContentsToRecordIdList(
'pages', $categories
'pages',
$categories
) : '',
'tags' => is_string($tags) ? $this->addFieldContentsToRecordIdList('sys_category', $tags) : '',
'starttime' => $pluginConfiguration['settings.starttime']['vDEF'],
......@@ -153,26 +162,33 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
// Get available plugin settings and their values from flexform
$pluginConfiguration = GeneralUtility::xml2array(
$row['pi_flexform'], 'T3DataStructure'
$row['pi_flexform'],
'T3DataStructure'
)['data']['main']['lDEF'];
$newsAuthors = $pluginConfiguration['settings.newsAuthors']['vDEF'];
$templateData = [
'showDetails' => $pluginConfiguration['settings.showDetails']['vDEF'],
'newsAuthors' => is_string($newsAuthors) ? $this->addFieldContentsToRecordIdList(
'tx_sgnews_domain_model_author',$newsAuthors,'name'
'tx_sgnews_domain_model_author',
$newsAuthors,
'name'
) : ''
];
// Not using addFieldContentsToRecordIdList to avoid repetitive imploding and exploding.
$excludedNewsIds = GeneralUtility::intExplode(
',', $pluginConfiguration['settings.excludedNews']['vDEF'], TRUE
',',
$pluginConfiguration['settings.excludedNews']['vDEF'],
TRUE
);
$excludedNewsListWithTitles = [];
foreach ($excludedNewsIds as $excludedNewsId) {
$excludedNewsListWithTitles[] = BackendUtility::getRecord(
'pages', $excludedNewsId, 'title'
)['title'] . ' [' . $excludedNewsId . ']';
'pages',
$excludedNewsId,
'title'
)['title'] . ' [' . $excludedNewsId . ']';
}
$templateData['excludedNews'] = $excludedNewsListWithTitles;
......@@ -193,8 +209,7 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
* @param string $templateName
* @return StandaloneView
*/
protected
function createViewWithTemplate(string $templateName): StandaloneView {
protected function createViewWithTemplate(string $templateName): StandaloneView {
$view = GeneralUtility::makeInstance(StandaloneView::class);
$view->setTemplateRootPaths(['EXT:sg_news/Resources/Private/Templates/Backend']);
$view->setPartialRootPaths(['EXT:sg_news/Resources/Private/Partials/Backend']);
......@@ -212,11 +227,11 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
* @param $headerContent
* @param $row
*/
protected
function adaptPluginHeaderContent(&$headerContent, $row): void {
protected function adaptPluginHeaderContent(&$headerContent, $row): void {
$headerContent = '<h4>' . $this->getPluginNameForHeaderContent(
(int) $row['pid'], $row['list_type']
) . $headerContent . '</h4>';
(int) $row['pid'],
$row['list_type']
) . $headerContent . '</h4>';
}
/**
......@@ -227,13 +242,15 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
* @param string $listType
* @return string
*/
protected
function getPluginNameForHeaderContent(int $pid, string $listType): string {
protected function getPluginNameForHeaderContent(int $pid, string $listType): string {
$languageService = GeneralUtility::makeInstance(LanguageService::class);
$pluginName = $languageService->sL(
BackendUtility::getLabelFromItemListMerged(
$pid, 'tt_content', 'list_type', $listType
$pid,
'tt_content',
'list_type',
$listType
)
);
return '<span class="label label-primary">' . $pluginName . '</span>&nbsp;';
......@@ -250,15 +267,19 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface {
* @return string
*/
protected function addFieldContentsToRecordIdList(
string $table, string $recordIdList, string $field = 'title'
string $table,
string $recordIdList,
string $field = 'title'
): string {
$recordIdsArray = GeneralUtility::intExplode(',', $recordIdList, TRUE);
$recordsWithTitlesArray = [];
foreach ($recordIdsArray as $recordId) {
$recordsWithTitlesArray[] = BackendUtility::getRecord(
$table, $recordId, $field
)[$field] . ' [' . $recordId . ']';
$table,
$recordId,
$field
)[$field] . ' [' . $recordId . ']';
}
return implode(', ', $recordsWithTitlesArray);
}
......
......@@ -37,7 +37,8 @@ class RealUrlAutoConfiguration {
*/
public function addNewsConfig($params): array {
return array_merge_recursive(
$params['config'], [
$params['config'],
[
'postVarSets' => [
'_DEFAULT' => [
'page' => [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment