first commit
This commit is contained in:
commit
e81864e683
2984 files changed
+267797
No files matched your search
@@ -0,0 +1,90 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user