Files
steiermark/public/typo3conf/ext/femanager/Classes/Finisher/FinisherRunner.php
T
2026-10-06 19:40:28 +02:00

91 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace In2code\Femanager\Finisher;
use In2code\Femanager\Domain\Model\User;
use In2code\Femanager\Domain\Service\FinisherService;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Extbase\Object\ObjectManagerInterface;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
/**
* Class FinisherRunner
*/
class FinisherRunner
{
/**
* @var ObjectManagerInterface
*/
protected $objectManager;
/**
* @var ConfigurationManagerInterface
*/
protected $configurationManager;
/**
* @var ContentObjectRenderer
*/
protected $contentObject;
/**
* TypoScript settings
*
* @var array
*/
protected $settings = [];
/**
* FinisherRunner constructor.
* @param ObjectManagerInterface $objectManager
* @param ConfigurationManagerInterface $configurationManager
*/
public function __construct(
ObjectManagerInterface $objectManager,
ConfigurationManagerInterface $configurationManager
) {
$this->objectManager = $objectManager;
$this->configurationManager = $configurationManager;
}
/**
* Call finisher classes after submit
*
* @param User $user
* @param string $actionMethodName
* @param array $settings
* @param ContentObjectRenderer $contentObject
*/
public function callFinishers(
User $user,
$actionMethodName,
$settings,
ContentObjectRenderer $contentObject
) {
foreach ($this->getFinisherClasses($settings) as $finisherSettings) {
/** @var FinisherService $finisherService */
$finisherService = $this->objectManager->get(FinisherService::class, $user, $settings, $contentObject);
$finisherService->setClass($finisherSettings['class']);
$finisherService->setRequirePath($finisherSettings['require'] ?? '');
$finisherService->setConfiguration($finisherSettings['config'] ?? []);
$finisherService->setActionMethodName($actionMethodName);
$finisherService->start();
}
}
/**
* Get all finisher classes from typoscript and sort them
*
* @param array $settings
* @return array
*/
protected function getFinisherClasses($settings)
{
$finishers = (array)$settings['finishers'];
ksort($finishers);
return $finishers;
}
}