[FEATURE] Add option to set custom http return status
This commit is contained in:
parent
802f44f51c
commit
7c1dae9b5d
164
Classes/Controller/AbstractCommandController.php
Normal file
164
Classes/Controller/AbstractCommandController.php
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
<?php
|
||||||
|
namespace Cjel\TemplatesAide\Controller;
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* This file is part of the "Templates Aide" Extension for TYPO3 CMS.
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please read the
|
||||||
|
* LICENSE.txt file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* (c) 2021 Philipp Dieter <philippdieter@attic-media.net>
|
||||||
|
*
|
||||||
|
***/
|
||||||
|
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use TYPO3\CMS\Core\Cache\CacheManager;
|
||||||
|
use TYPO3\CMS\Core\Database\ConnectionPool;
|
||||||
|
use TYPO3\CMS\Core\Database\Query\Restriction\DefaultRestrictionContainer;
|
||||||
|
use TYPO3\CMS\Core\Log\LogManager;
|
||||||
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||||
|
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
|
||||||
|
use TYPO3\CMS\Extbase\Object\ObjectManager;
|
||||||
|
use TYPO3\CMS\Frontend\Plugin\AbstractPlugin;
|
||||||
|
use TYPO3\CMS\Frontend\Utility\EidUtility;
|
||||||
|
use TYPO3\CMS\Extbase\Reflection\ClassSchema;
|
||||||
|
use TYPO3\CMS\Extbase\Reflection\ReflectionService;
|
||||||
|
use Symfony\Component\Console\Command\Command;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AbstractEIDController
|
||||||
|
*/
|
||||||
|
class AbstractCommandController extends Commands
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var BackendConfigurationManager
|
||||||
|
*/
|
||||||
|
protected $configurationManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ApiUtility
|
||||||
|
*/
|
||||||
|
protected $apiUtility = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* extension Key
|
||||||
|
*/
|
||||||
|
protected $extensionKey = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* objectManager
|
||||||
|
*/
|
||||||
|
protected $objectManager = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* storagePids
|
||||||
|
*/
|
||||||
|
protected $settings = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* storagePids
|
||||||
|
*/
|
||||||
|
protected $storagePids = [];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* logManager
|
||||||
|
*/
|
||||||
|
protected $logManager = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* logger
|
||||||
|
*/
|
||||||
|
protected $importLogger = null;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* returns the extensionkey set in the exended calss
|
||||||
|
*/
|
||||||
|
public function getExtensionKey() {
|
||||||
|
return $this->extensionKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct
|
||||||
|
*
|
||||||
|
* @param ObjectManager $objectManager
|
||||||
|
* @param array $configuration
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
ObjectManager $objectManager = null,
|
||||||
|
array $configuration = []
|
||||||
|
) {
|
||||||
|
$this->objectManager = GeneralUtility::makeInstance(
|
||||||
|
ObjectManager::class
|
||||||
|
);
|
||||||
|
$this->initFrontendController();
|
||||||
|
$this->configurationManager = $this->objectManager->get(
|
||||||
|
ConfigurationManagerInterface::class
|
||||||
|
);
|
||||||
|
$this->apiUtility = $this->objectManager->get(
|
||||||
|
\Cjel\TemplatesAide\Utility\ApiUtility::class
|
||||||
|
);
|
||||||
|
$this->configurationManager->setConfiguration(array());
|
||||||
|
$frameworkConfiguration = $this->configurationManager->getConfiguration(
|
||||||
|
ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK,
|
||||||
|
$this->getExtensionKey()
|
||||||
|
);
|
||||||
|
$this->settings = $frameworkConfiguration;
|
||||||
|
$this->storagePids = explode(
|
||||||
|
',',
|
||||||
|
str_replace(
|
||||||
|
' ',
|
||||||
|
'',
|
||||||
|
$frameworkConfiguration['persistence']['storagePid']
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$this->logManager = $this->objectManager->get(
|
||||||
|
LogManager::Class
|
||||||
|
);
|
||||||
|
$this->importLogger = $this->logManager->getLogger(
|
||||||
|
'importLogger'
|
||||||
|
);
|
||||||
|
$this->reflectionService = GeneralUtility::makeInstance(
|
||||||
|
ReflectionService::class, GeneralUtility::makeInstance(
|
||||||
|
CacheManager::class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$classInfo = $this->reflectionService->getClassSchema(
|
||||||
|
get_class($this)
|
||||||
|
);
|
||||||
|
foreach ($classInfo->getInjectMethods() as $method => $className) {
|
||||||
|
$class = $this->objectManager->get(
|
||||||
|
$className
|
||||||
|
);
|
||||||
|
$this->{$method}($class);
|
||||||
|
}
|
||||||
|
parent::__construct($name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize frontentController
|
||||||
|
*/
|
||||||
|
private function initFrontendController()
|
||||||
|
{
|
||||||
|
$currentDomain = strtok(GeneralUtility::getIndpEnv('HTTP_HOST'), ':');
|
||||||
|
$frontendController = GeneralUtility::makeInstance(
|
||||||
|
\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::class,
|
||||||
|
$GLOBALS['TYPO3_CONF_VARS'],
|
||||||
|
null,
|
||||||
|
0,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$GLOBALS['TSFE'] = $frontendController;
|
||||||
|
$frontendController->connectToDB();
|
||||||
|
$frontendController->fe_user = EidUtility::initFeUser();
|
||||||
|
$frontendController->id = $result[0]['pid'];
|
||||||
|
$frontendController->determineId();
|
||||||
|
$frontendController->initTemplate();
|
||||||
|
$frontendController->getConfigArray();
|
||||||
|
EidUtility::initTCA();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -191,9 +191,10 @@ class AbstractEIDController
|
|||||||
* @param ResponseInterface $response
|
* @param ResponseInterface $response
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function processRequest(ServerRequestInterface $request,
|
public function processRequest(
|
||||||
ResponseInterface $response = null)
|
ServerRequestInterface $request,
|
||||||
{
|
ResponseInterface $response = null
|
||||||
|
) {
|
||||||
$apiObject = explode('/', $request->getUri()->getPath())[3];
|
$apiObject = explode('/', $request->getUri()->getPath())[3];
|
||||||
$apiObjectId = explode('/', $request->getUri()->getPath())[4];
|
$apiObjectId = explode('/', $request->getUri()->getPath())[4];
|
||||||
if (!$apiObject) {
|
if (!$apiObject) {
|
||||||
@ -221,6 +222,18 @@ class AbstractEIDController
|
|||||||
) {
|
) {
|
||||||
$response = $response->withStatus(400);
|
$response = $response->withStatus(400);
|
||||||
}
|
}
|
||||||
|
if (is_array($responseData)
|
||||||
|
&& array_key_exists('status', $responseData)
|
||||||
|
) {
|
||||||
|
if (is_array($responseData['status'])) {
|
||||||
|
$response = $response->withStatus(
|
||||||
|
$responseData['status'][0],
|
||||||
|
$responseData['status'][1]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$response = $response->withStatus($responseData['status']);
|
||||||
|
}
|
||||||
|
}
|
||||||
$response->getBody()->write(\json_encode($responseData));
|
$response->getBody()->write(\json_encode($responseData));
|
||||||
return $response;
|
return $response;
|
||||||
} else {
|
} else {
|
||||||
|
154
Classes/Traits/DependencyInjectionTrait.php
Normal file
154
Classes/Traits/DependencyInjectionTrait.php
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
<?php
|
||||||
|
namespace Cjel\TemplatesAide\Traits;
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* This file is part of the "Templates Aide" Extension for TYPO3 CMS.
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please read the
|
||||||
|
* LICENSE.txt file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* (c) 2021 Philipp Dieter <philippdieter@attic-media.net>
|
||||||
|
*
|
||||||
|
***/
|
||||||
|
|
||||||
|
use Cjel\TemplatesAide\Utility\ApiUtility;
|
||||||
|
use TYPO3\CMS\Core\Cache\CacheManager;
|
||||||
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||||
|
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
|
||||||
|
use TYPO3\CMS\Extbase\Object\ObjectManager;
|
||||||
|
use TYPO3\CMS\Extbase\Reflection\ClassSchema;
|
||||||
|
use TYPO3\CMS\Extbase\Reflection\ReflectionService;
|
||||||
|
use TYPO3\CMS\Frontend\Utility\EidUtility;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ValidationTrait
|
||||||
|
*/
|
||||||
|
trait DependencyInjectionTrait
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* extension Key
|
||||||
|
*/
|
||||||
|
protected $extensionKey = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* storagePids
|
||||||
|
*/
|
||||||
|
protected $storagePids = [];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* objectManager
|
||||||
|
*/
|
||||||
|
protected $objectManager = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var BackendConfigurationManager
|
||||||
|
*/
|
||||||
|
protected $configurationManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ApiUtility
|
||||||
|
*/
|
||||||
|
protected $apiUtility = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* storagePids
|
||||||
|
*/
|
||||||
|
protected $settings = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* logManager
|
||||||
|
*/
|
||||||
|
protected $logManager = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* logger
|
||||||
|
*/
|
||||||
|
protected $importLogger = null;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* returns the extensionkey set in the exended calss
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getExtensionKey() {
|
||||||
|
return $this->extensionKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads config and sets up extbase like dependecny injection
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setupDependencyInjection() {
|
||||||
|
$this->objectManager = GeneralUtility::makeInstance(
|
||||||
|
ObjectManager::class
|
||||||
|
);
|
||||||
|
$this->initFrontendController();
|
||||||
|
$this->configurationManager = $this->objectManager->get(
|
||||||
|
ConfigurationManagerInterface::class
|
||||||
|
);
|
||||||
|
$this->configurationManager->setConfiguration(
|
||||||
|
array()
|
||||||
|
);
|
||||||
|
$this->apiUtility = $this->objectManager->get(
|
||||||
|
ApiUtility::class
|
||||||
|
);
|
||||||
|
$frameworkConfiguration = $this->configurationManager->getConfiguration(
|
||||||
|
ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK,
|
||||||
|
$this->getExtensionKey()
|
||||||
|
);
|
||||||
|
$this->configurationManager->setConfiguration($frameworkConfiguration);
|
||||||
|
$this->settings = $frameworkConfiguration;
|
||||||
|
$this->storagePids = explode(
|
||||||
|
',',
|
||||||
|
str_replace(
|
||||||
|
' ',
|
||||||
|
'',
|
||||||
|
$frameworkConfiguration['persistence']['storagePid']
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$this->reflectionService = GeneralUtility::makeInstance(
|
||||||
|
ReflectionService::class, GeneralUtility::makeInstance(
|
||||||
|
CacheManager::class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$classInfo = $this->reflectionService->getClassSchema(
|
||||||
|
get_class($this)
|
||||||
|
);
|
||||||
|
foreach ($classInfo->getInjectMethods() as $method => $className) {
|
||||||
|
$class = $this->objectManager->get(
|
||||||
|
$className
|
||||||
|
);
|
||||||
|
$this->{$method}($class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize frontentController
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private function initFrontendController()
|
||||||
|
{
|
||||||
|
$currentDomain = strtok(GeneralUtility::getIndpEnv('HTTP_HOST'), ':');
|
||||||
|
$frontendController = GeneralUtility::makeInstance(
|
||||||
|
\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::class,
|
||||||
|
$GLOBALS['TYPO3_CONF_VARS'],
|
||||||
|
null,
|
||||||
|
0,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$GLOBALS['TSFE'] = $frontendController;
|
||||||
|
$frontendController->connectToDB();
|
||||||
|
$frontendController->fe_user = EidUtility::initFeUser();
|
||||||
|
$frontendController->id = $result[0]['pid'];
|
||||||
|
$frontendController->determineId();
|
||||||
|
$frontendController->initTemplate();
|
||||||
|
$frontendController->getConfigArray();
|
||||||
|
EidUtility::initTCA();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user