Skip to content
Snippets Groups Projects
QueueController.php 5.43 KiB
Newer Older
<?php
namespace SGalinski\SgMail\Controller;

/***************************************************************
 *  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!
 ***************************************************************/
use SGalinski\SgMail\Service\BackendService;
use SGalinski\SgMail\Service\MailTemplateService;
use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Messaging\FlashMessage;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility;

/**
 * Controller for the mail templating service module
 */
class QueueController extends ActionController {
	/**
	 * DocHeaderComponent
	 *
	 * @var DocHeaderComponent
	 */
	protected $docHeaderComponent;

	/**
	 * @var \SGalinski\SgMail\Domain\Repository\MailRepository
	 * @inject
	 */
	protected $mailRepository;

	/**
	 * @var \SGalinski\SgMail\Session\PhpSession
	 */
	protected $session;

	/**
	 * @param string $selectedTemplate
	 * @param string $selectedExtension
	 * @throws \InvalidArgumentException
	 * @throws \UnexpectedValueException
	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
	public function indexAction($selectedTemplate = NULL, $selectedExtension = NULL, array $filters = []) {
		$registerArray = MailTemplateService::getRegisterArray();

		if ($selectedTemplate === NULL || $selectedTemplate === '') {
			$selectedExtension = key($registerArray);
			$selectedTemplate = key($registerArray[$selectedExtension]);
		}
Torsten Oppermann's avatar
Torsten Oppermann committed
		$siteRootId = BackendService::getSiteRoot((int) GeneralUtility::_GP('id'));
		$queue = $this->mailRepository->findAllEntries($siteRootId, 0, $filters);

		// create doc header component
		$pageInfo = BackendUtility::readPageAccess($pageUid, $GLOBALS['BE_USER']->getPagePermsClause(1));
		if ($pageInfo && $pageInfo['is_siteroot'] === '1') {
			$this->view->assign('selectedTemplateKey', $selectedTemplate);
			$this->view->assign('selectedExtensionKey', $selectedExtension);
			$this->view->assign('templates', $registerArray);
			$this->view->assign('templatesFilter', BackendService::getTemplatesForFilter());
			$this->view->assign('languages', BackendService::getLanguagesForFilter());
			if (!$filters['filterSent']) {
				$filters['filterSent'] = 0;
			}
			$this->view->assign('filters', $filters);
			$this->view->assign('queue', $queue);
			$this->view->assign(
				'filterFields', [
					BackendService::SENDER_FILTER_OPTION => LocalizationUtility::translate(
						'backend.filter.from', 'SgMail'
					),
					BackendService::RECIPIENT_FILTER_OPTION => LocalizationUtility::translate(
						'backend.filter.to', 'SgMail'
					),
					BackendService::SUBJECT_FILTER_OPTION => LocalizationUtility::translate(
						'backend.filter.subject', 'SgMail'
					),
					BackendService::MAILTEXT_FILTER_OPTION => LocalizationUtility::translate(
						'backend.filter.mailtext', 'SgMail'
					),
					BackendService::CC_FILTER_OPTION => LocalizationUtility::translate('backend.filter.cc', 'SgMail'),
					BackendService::BCC_FILTER_OPTION => LocalizationUtility::translate('backend.filter.bcc', 'SgMail')
		} else {
			$this->view->assign('pages', BackendService::getPages());
		$this->docHeaderComponent = GeneralUtility::makeInstance(DocHeaderComponent::class);

		$this->docHeaderComponent->setMetaInformation($pageInfo);
		$this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent());
		BackendService::makeButtons($this->docHeaderComponent, $this->request);
		$this->view->assign('typo3Version', VersionNumberUtility::convertVersionNumberToInteger(TYPO3_version));

	/**
	 * send or resend a mail in the queue
	 *
	 * @param int $uid
	 * @param string $selectedTemplate
	 * @param string $selectedExtension
Torsten Oppermann's avatar
Torsten Oppermann committed
	 * @throws \InvalidArgumentException
	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException
	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\UnknownObjectException
	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
	public function sendMailAction($uid, $selectedTemplate, $selectedExtension) {
		$mailService = new MailTemplateService();
		$mailService->sendMailFromQueue($uid);

		$message = LocalizationUtility::translate('backend.success_mail_queue', 'sg_mail');
		$this->addFlashMessage($message, '', FlashMessage::OK);
		$arguments = $this->request->getArguments();
		$this->redirect('index', NULL, NULL, $arguments);
	}