Skip to content
Snippets Groups Projects
CategoryWarningDrawer.php 2.62 KiB
Newer Older
<?php
/*
 * Copyright notice
 *
 * (c) sgalinski Internet Services (https://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!
 */

namespace SGalinski\SgNews\Backend;

use SGalinski\SgNews\Domain\Model\Category;
use TYPO3\CMS\Backend\Controller\PageLayoutController;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Localization\LanguageService;
use TYPO3\CMS\Core\Messaging\FlashMessage;
use TYPO3\CMS\Core\Messaging\FlashMessageRendererResolver;
use TYPO3\CMS\Core\Utility\GeneralUtility;

/**
 *
 */
class CategoryWarningDrawer {
	/**
	 * @var LanguageService
	 */
	protected $languageService;

	public function __construct(LanguageService $languageService) {
		$this->languageService = $languageService;
	}

	/**
	 * @param array|NULL $params
	 * @param PageLayoutController|NULL $parentObj
	 * @return string
	 * @throws \Doctrine\DBAL\Driver\Exception
	 */
Stefan Galinski's avatar
Stefan Galinski committed
	public function render(array $params = NULL, PageLayoutController $parentObj = NULL): string {
		$parentPage = $parentObj->pageinfo['pid'];
		$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
			->getQueryBuilderForTable('pages');
		$parentDoktype = $queryBuilder->select('doktype')
			->from('pages')
			->where(
				$queryBuilder->expr()->eq(
					'uid',
					$queryBuilder->createNamedParameter($parentPage, Connection::PARAM_INT)
				)
			)->execute()
			->fetchOne();
		if ($parentDoktype === Category::DOK_TYPE_CATEGORY) {
			return '';
		}

Stefan Galinski's avatar
Stefan Galinski committed
		$message = GeneralUtility::makeInstance(
			FlashMessage::class,
			$this->languageService->sL(
				'LLL:EXT:sg_news/Resources/Private/Language/locallang_backend.xlf:categoryErrorMessage'
			),
			$this->languageService->sL(
				'LLL:EXT:sg_news/Resources/Private/Language/locallang_backend.xlf:categoryErrorMessageHeader'
			),
Stefan Galinski's avatar
Stefan Galinski committed
			FlashMessage::ERROR,
			TRUE
		);
		return GeneralUtility::makeInstance(FlashMessageRendererResolver::class)
Stefan Galinski's avatar
Stefan Galinski committed
			->resolve()
			->render([$message]);