/
TemplateConfigurationHandler.php
69 lines (59 loc) · 2.91 KB
/
TemplateConfigurationHandler.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
declare(strict_types=1);
namespace Tvp\TemplaVoilaPlus\Handler\Configuration;
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
use Symfony\Component\Finder\SplFileInfo;
use Tvp\TemplaVoilaPlus\Domain\Model\Configuration\AbstractConfiguration;
use Tvp\TemplaVoilaPlus\Domain\Model\Configuration\TemplateConfiguration;
class TemplateConfigurationHandler extends AbstractConfigurationHandler
{
public static $identifier = 'TVP\ConfigurationHandler\TemplateConfiguration';
public function createConfigurationFromConfigurationArray(array $configuration, string $identifier, SplFileInfo $file): AbstractConfiguration
{
$templateConfiguration = new TemplateConfiguration($identifier, $this->place, $this, $file);
if (!isset($configuration['tvp-template'])) {
throw new \Exception('No TemplaVoilà! Plus template configuration');
}
if (isset($configuration['tvp-template']['meta']['name'])) {
$templateConfiguration->setName($configuration['tvp-template']['meta']['name']);
} else {
$templateConfiguration->setName($file->getFilename());
}
if (isset($configuration['tvp-template']['meta']['renderer'])) {
/** @TODO Check before setting */
$templateConfiguration->setRenderHandlerIdentifier($configuration['tvp-template']['meta']['renderer']);
}
if (isset($configuration['tvp-template']['meta']['template'])) {
/**
* @TODO Check before setting
* @TODO Relative to Place or configuration file? Support Absolute or 'EXT:' (insecure?)
*/
$templateConfiguration->setTemplateFileName($configuration['tvp-template']['meta']['template']);
}
if (isset($configuration['tvp-template']['options']) && is_array($configuration['tvp-template']['options'])) {
$templateConfiguration->setOptions($configuration['tvp-template']['options']);
}
if (isset($configuration['tvp-template']['header']) && is_array($configuration['tvp-template']['header'])) {
$templateConfiguration->setHeader($configuration['tvp-template']['header']);
}
if (isset($configuration['tvp-template']['mapping']) && is_array($configuration['tvp-template']['mapping'])) {
$templateConfiguration->setMapping($configuration['tvp-template']['mapping']);
}
return $templateConfiguration;
}
public function saveConfiguration(AbstractConfiguration $configuration): void
{
throw new \Exception('Not Yet Implemented');
}
}