DataWizard/Application/Model/ExportRenderer/RendererBridge.php

75 lines
2.0 KiB
PHP
Raw Normal View History

<?php
/**
2021-04-20 11:20:34 +02:00
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
2022-01-17 10:59:18 +01:00
*
2021-04-20 11:20:34 +02:00
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
2021-04-20 11:20:34 +02:00
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
2021-04-20 09:57:44 +02:00
declare(strict_types=1);
namespace D3\DataWizard\Application\Model\ExportRenderer;
use D3\DataWizard\Application\Model\Exceptions\NoSuitableRendererException;
class RendererBridge
{
2022-01-17 10:59:18 +01:00
public const FORMAT_CSV = 'CSV';
public const FORMAT_PRETTY = 'Pretty';
public const FORMAT_JSON = 'JSON';
2021-07-14 12:22:01 +02:00
/**
* @return array
*/
public function getRendererList(): array
{
return [
self::FORMAT_CSV => oxNew(Csv::class),
2021-10-29 11:39:56 +02:00
self::FORMAT_PRETTY => oxNew(Pretty::class),
2022-01-17 10:59:18 +01:00
self::FORMAT_JSON => oxNew(Json::class),
2021-07-14 12:22:01 +02:00
];
}
2021-12-20 13:41:24 +01:00
public function getTranslatedRendererIdList(): array
{
$rendererList = $this->getRendererList();
array_walk($rendererList, [$this, 'translateRendererId']);
return $rendererList;
}
/**
* @param RendererInterface $instance
*/
protected function translateRendererId(RendererInterface &$instance)
{
$instance = $instance->getTitleTranslationId();
}
/**
* @param string $format
*
* @return RendererInterface
2021-07-14 12:22:01 +02:00
* @throws NoSuitableRendererException
*/
2021-07-14 12:22:01 +02:00
public function getRenderer(string $format = self::FORMAT_CSV): RendererInterface
{
$format = strtolower($format);
2021-07-14 12:22:01 +02:00
$rendererList = array_change_key_case($this->getRendererList(), CASE_LOWER);
$rendererListTypes = array_keys(array_change_key_case($rendererList, CASE_LOWER));
if (in_array($format, $rendererListTypes, true)) {
2021-07-14 12:22:01 +02:00
return $rendererList[$format];
}
/** @var NoSuitableRendererException $e */
$e = oxNew(NoSuitableRendererException::class, $format);
throw $e;
}
2022-01-17 10:59:18 +01:00
}