Comparer les révisions

...

14 Révisions

49 fichiers modifiés avec 329 ajouts et 243 suppressions

5
.gitattributes externe Fichier normal
Voir le fichier

@ -0,0 +1,5 @@
* text=auto
/.gitattributes export-ignore
/.gitignore export-ignore
/.php-cs-fixer.php export-ignore

1
.gitignore externe Fichier normal
Voir le fichier

@ -0,0 +1 @@
.php-cs-fixer.cache

13
.php-cs-fixer.php Fichier normal
Voir le fichier

@ -0,0 +1,13 @@
<?php
$finder = PhpCsFixer\Finder::create()
->in(__DIR__)
;
$config = new PhpCsFixer\Config();
return $config->setRules([
'@PHP73Migration' => true,
'@PSR12' => true
])
->setFinder($finder)
;

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -101,4 +101,4 @@ class d3ActionWizard extends AdminDetailsController
{ {
return null; return null;
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -115,4 +115,4 @@ class d3ExportWizard extends AdminDetailsController
{ {
return null; return null;
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -33,7 +33,7 @@ abstract class ActionBase implements QueryBase
* Ensure that the translations are equally available in the frontend and the backend * Ensure that the translations are equally available in the frontend and the backend
* @return string * @return string
*/ */
public function getDescription() : string public function getDescription(): string
{ {
return ''; return '';
} }
@ -53,7 +53,7 @@ abstract class ActionBase implements QueryBase
} }
} }
$this->executeAction( $this->getQuery() ); $this->executeAction($this->getQuery());
} }
/** /**
@ -63,21 +63,21 @@ abstract class ActionBase implements QueryBase
* @throws DatabaseConnectionException * @throws DatabaseConnectionException
* @throws DatabaseErrorException * @throws DatabaseErrorException
*/ */
public function executeAction( array $query ): int public function executeAction(array $query): int
{ {
[ $queryString, $parameters ] = $query; [ $queryString, $parameters ] = $query;
$queryString = trim($queryString); $queryString = trim($queryString);
if ( strtolower( substr( $queryString, 0, 6 ) ) === 'select' ) { if (strtolower(substr($queryString, 0, 6)) === 'select') {
throw oxNew( throw oxNew(
Exceptions\TaskException::class, Exceptions\TaskException::class,
$this, $this,
Registry::getLang()->translateString( 'D3_DATAWIZARD_ERR_ACTIONSELECT' ) Registry::getLang()->translateString('D3_DATAWIZARD_ERR_ACTIONSELECT')
); );
} }
$affected = $this->d3GetDb()->execute( $queryString, $parameters ); $affected = $this->d3GetDb()->execute($queryString, $parameters);
throw oxNew( throw oxNew(
Exceptions\TaskException::class, Exceptions\TaskException::class,
@ -97,13 +97,13 @@ abstract class ActionBase implements QueryBase
*/ */
public function d3GetDb(): ?DatabaseInterface public function d3GetDb(): ?DatabaseInterface
{ {
return DatabaseProvider::getDb( DatabaseProvider::FETCH_MODE_ASSOC ); return DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC);
} }
/** /**
* @return string * @return string
*/ */
public function getButtonText() : string public function getButtonText(): string
{ {
return "D3_DATAWIZARD_ACTION_SUBMIT"; return "D3_DATAWIZARD_ACTION_SUBMIT";
} }
@ -138,4 +138,4 @@ abstract class ActionBase implements QueryBase
{ {
return $this->formElements; return $this->formElements;
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -19,13 +19,13 @@ use D3\DataWizard\Application\Model\Exceptions\DataWizardException;
class Configuration class Configuration
{ {
const GROUP_SHOP = 'D3_DATAWIZARD_GROUP_SHOP'; public const GROUP_SHOP = 'D3_DATAWIZARD_GROUP_SHOP';
const GROUP_CATEGORY = 'D3_DATAWIZARD_GROUP_CATEGORIES'; public const GROUP_CATEGORY = 'D3_DATAWIZARD_GROUP_CATEGORIES';
const GROUP_ARTICLES = 'D3_DATAWIZARD_GROUP_ARTICLES'; public const GROUP_ARTICLES = 'D3_DATAWIZARD_GROUP_ARTICLES';
const GROUP_USERS = 'D3_DATAWIZARD_GROUP_USERS'; public const GROUP_USERS = 'D3_DATAWIZARD_GROUP_USERS';
const GROUP_ORDERS = 'D3_DATAWIZARD_GROUP_ORDERS'; public const GROUP_ORDERS = 'D3_DATAWIZARD_GROUP_ORDERS';
const GROUP_REMARKS = 'D3_DATAWIZARD_GROUP_REMARKS'; public const GROUP_REMARKS = 'D3_DATAWIZARD_GROUP_REMARKS';
const GROUP_CMS = 'D3_DATAWIZARD_GROUP_CMS'; public const GROUP_CMS = 'D3_DATAWIZARD_GROUP_CMS';
protected $actions = []; protected $actions = [];
protected $exports = []; protected $exports = [];
@ -113,7 +113,7 @@ class Configuration
/** /**
* @return array * @return array
*/ */
public function getAllActions() : array public function getAllActions(): array
{ {
$all = []; $all = [];
@ -127,7 +127,7 @@ class Configuration
/** /**
* @return array * @return array
*/ */
public function getAllExports() : array public function getAllExports(): array
{ {
$all = []; $all = [];
@ -143,7 +143,7 @@ class Configuration
* *
* @return ActionBase * @return ActionBase
*/ */
public function getActionById($id) : ActionBase public function getActionById($id): ActionBase
{ {
$allActions = $this->getAllActions(); $allActions = $this->getAllActions();
@ -159,7 +159,7 @@ class Configuration
* *
* @return ExportBase * @return ExportBase
*/ */
public function getExportById($id) : ExportBase public function getExportById($id): ExportBase
{ {
$allExports = $this->getAllExports(); $allExports = $this->getAllExports();

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -19,4 +19,4 @@ use OxidEsales\Eshop\Core\Exception\StandardException;
class DataWizardException extends StandardException class DataWizardException extends StandardException
{ {
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -20,13 +20,13 @@ use OxidEsales\Eshop\Core\Registry;
class DebugException extends DataWizardException class DebugException extends DataWizardException
{ {
public function __construct($sMessage = "not set", $iCode = 0, Exception $previous = null ) public function __construct($sMessage = "not set", $iCode = 0, Exception $previous = null)
{ {
$sMessage = sprintf( $sMessage = sprintf(
Registry::getLang()->translateString('D3_DATAWIZARD_DEBUG'), Registry::getLang()->translateString('D3_DATAWIZARD_DEBUG'),
$sMessage $sMessage
); );
parent::__construct($sMessage, $iCode, $previous ); parent::__construct($sMessage, $iCode, $previous);
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -20,13 +20,13 @@ use OxidEsales\Eshop\Core\Registry;
class ExportFileException extends DataWizardException class ExportFileException extends DataWizardException
{ {
public function __construct($sMessage = "not set", $iCode = 0, Exception $previous = null ) public function __construct($sMessage = "not set", $iCode = 0, Exception $previous = null)
{ {
$sMessage = sprintf( $sMessage = sprintf(
Registry::getLang()->translateString('D3_DATAWIZARD_ERR_EXPORTFILEERROR'), Registry::getLang()->translateString('D3_DATAWIZARD_ERR_EXPORTFILEERROR'),
$sMessage $sMessage
); );
parent::__construct($sMessage, $iCode, $previous ); parent::__construct($sMessage, $iCode, $previous);
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -32,7 +32,7 @@ class InputUnvalidException extends DataWizardException
* @param Exception|null $previous * @param Exception|null $previous
* @throws Exception * @throws Exception
*/ */
public function __construct( QueryBase $task, Input $inputElement, $iCode = 0, Exception $previous = null ) public function __construct(QueryBase $task, Input $inputElement, $iCode = 0, Exception $previous = null)
{ {
$messages = []; $messages = [];
foreach ($inputElement->getError()->getIterator() as $item) { foreach ($inputElement->getError()->getIterator() as $item) {
@ -43,11 +43,11 @@ class InputUnvalidException extends DataWizardException
' - ', ' - ',
[ [
$task->getTitle(), $task->getTitle(),
implode(', ', $messages) implode(', ', $messages),
] ]
); );
parent::__construct( $sMessage, $iCode, $previous ); parent::__construct($sMessage, $iCode, $previous);
$this->task = $task; $this->task = $task;
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -20,13 +20,13 @@ use OxidEsales\Eshop\Core\Registry;
class NoSuitableRendererException extends DataWizardException class NoSuitableRendererException extends DataWizardException
{ {
public function __construct($sMessage = "not set", $iCode = 0, Exception $previous = null ) public function __construct($sMessage = "not set", $iCode = 0, Exception $previous = null)
{ {
$sMessage = sprintf( $sMessage = sprintf(
Registry::getLang()->translateString('D3_DATAWIZARD_ERR_NOSUITABLERENDERER'), Registry::getLang()->translateString('D3_DATAWIZARD_ERR_NOSUITABLERENDERER'),
$sMessage $sMessage
); );
parent::__construct($sMessage, $iCode, $previous ); parent::__construct($sMessage, $iCode, $previous);
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -17,4 +17,4 @@ namespace D3\DataWizard\Application\Model\Exceptions;
class RenderException extends DataWizardException class RenderException extends DataWizardException
{ {
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -23,17 +23,17 @@ class TaskException extends DataWizardException
/** @var QueryBase */ /** @var QueryBase */
public $task; public $task;
public function __construct( QueryBase $task, $sMessage = "not set", $iCode = 0, Exception $previous = null ) public function __construct(QueryBase $task, $sMessage = "not set", $iCode = 0, Exception $previous = null)
{ {
$sMessage = implode( $sMessage = implode(
' - ', ' - ',
[ [
$task->getTitle(), $task->getTitle(),
$sMessage $sMessage,
] ]
); );
parent::__construct( $sMessage, $iCode, $previous ); parent::__construct($sMessage, $iCode, $previous);
$this->task = $task; $this->task = $task;
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -40,11 +40,11 @@ abstract class ExportBase implements QueryBase
* Ensure that the translations are equally available in the frontend and the backend * Ensure that the translations are equally available in the frontend and the backend
* @return string * @return string
*/ */
public function getDescription() : string public function getDescription(): string
{ {
return ''; return '';
} }
/** /**
* @param string $format * @param string $format
* @param $path * @param $path
@ -59,7 +59,7 @@ abstract class ExportBase implements QueryBase
* @throws d3_cfg_mod_exception * @throws d3_cfg_mod_exception
* @return string * @return string
*/ */
public function run( string $format = RendererBridge::FORMAT_CSV, $path = null): string public function run(string $format = RendererBridge::FORMAT_CSV, $path = null): string
{ {
if ($this->hasFormElements()) { if ($this->hasFormElements()) {
/** @var Input $element */ /** @var Input $element */
@ -76,7 +76,7 @@ abstract class ExportBase implements QueryBase
/** /**
* @return string * @return string
*/ */
public function getButtonText() : string public function getButtonText(): string
{ {
return "D3_DATAWIZARD_EXPORT_SUBMIT"; return "D3_DATAWIZARD_EXPORT_SUBMIT";
} }
@ -128,7 +128,7 @@ abstract class ExportBase implements QueryBase
/** /**
* @return string * @return string
*/ */
public function getExportFilenameBase() : string public function getExportFilenameBase(): string
{ {
return $this->getTitle(); return $this->getTitle();
} }
@ -139,7 +139,7 @@ abstract class ExportBase implements QueryBase
* @return string * @return string
* @throws Exceptions\NoSuitableRendererException * @throws Exceptions\NoSuitableRendererException
*/ */
public function getExportFileName($format) : string public function getExportFileName($format): string
{ {
return $this->getExportFilenameBase().'_'.date('Y-m-d_H-i-s').'.'.$this->getFileExtension($format); return $this->getExportFilenameBase().'_'.date('Y-m-d_H-i-s').'.'.$this->getFileExtension($format);
} }
@ -151,31 +151,31 @@ abstract class ExportBase implements QueryBase
* @throws DatabaseConnectionException * @throws DatabaseConnectionException
* @throws DatabaseErrorException * @throws DatabaseErrorException
*/ */
public function getExportData( array $query ): array public function getExportData(array $query): array
{ {
[ $queryString, $parameters ] = $query; [ $queryString, $parameters ] = $query;
$queryString = trim($queryString); $queryString = trim($queryString);
if ( strtolower( substr( $queryString, 0, 6 ) ) !== 'select' ) { if (strtolower(substr($queryString, 0, 6)) !== 'select') {
throw oxNew( throw oxNew(
Exceptions\TaskException::class, Exceptions\TaskException::class,
$this, $this,
Registry::getLang()->translateString( 'D3_DATAWIZARD_ERR_NOEXPORTSELECT' ) Registry::getLang()->translateString('D3_DATAWIZARD_ERR_NOEXPORTSELECT')
); );
} }
$rows = $this->d3GetDb()->getAll( $queryString, $parameters ); $rows = $this->d3GetDb()->getAll($queryString, $parameters);
if ( count( $rows ) <= 0 ) { if (count($rows) <= 0) {
throw oxNew( throw oxNew(
Exceptions\TaskException::class, Exceptions\TaskException::class,
$this, $this,
Registry::getLang()->translateString( 'D3_DATAWIZARD_ERR_NOEXPORTCONTENT', null, true ) Registry::getLang()->translateString('D3_DATAWIZARD_ERR_NOEXPORTCONTENT', null, true)
); );
} }
$fieldNames = array_keys( $rows[0] ); $fieldNames = array_keys($rows[0]);
return [ $rows, $fieldNames ]; return [ $rows, $fieldNames ];
} }
@ -225,7 +225,7 @@ abstract class ExportBase implements QueryBase
*/ */
protected function executeExport(string $format, $path): string protected function executeExport(string $format, $path): string
{ {
$content = $this->getContent( $format ); $content = $this->getContent($format);
/** @var $oFS d3filesystem */ /** @var $oFS d3filesystem */
$oFS = $this->getFileSystem(); $oFS = $this->getFileSystem();
@ -267,12 +267,12 @@ abstract class ExportBase implements QueryBase
* @throws DatabaseErrorException * @throws DatabaseErrorException
* @throws Exceptions\NoSuitableRendererException * @throws Exceptions\NoSuitableRendererException
*/ */
public function getContent( string $format ): string public function getContent(string $format): string
{ {
[ $rows, $fieldNames ] = $this->getExportData( $this->getQuery() ); [ $rows, $fieldNames ] = $this->getExportData($this->getQuery());
$content = $this->renderContent( $rows, $fieldNames, $format ); $content = $this->renderContent($rows, $fieldNames, $format);
return $content; return $content;
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -35,12 +35,12 @@ class Csv implements RendererInterface
{ {
try { try {
$csv = $this->getCsv(); $csv = $this->getCsv();
$csv->insertOne( $fieldNames ); $csv->insertOne($fieldNames);
$csv->insertAll( $rows ); $csv->insertAll($rows);
return (string) $csv; return (string) $csv;
} catch (Exception $e) { } catch (Exception $e) {
/** @var RenderException $newException */ /** @var RenderException $newException */
$newException = oxNew(RenderException::class, $e->getMessage(), $e->getCode(), $e ); $newException = oxNew(RenderException::class, $e->getMessage(), $e->getCode(), $e);
throw $newException; throw $newException;
} }
} }
@ -90,4 +90,4 @@ class Csv implements RendererInterface
{ {
return Registry::getConfig(); return Registry::getConfig();
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -31,11 +31,11 @@ class Json implements RendererInterface
{ {
try { try {
$flags = JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR; $flags = JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR;
$json = json_encode( $rows, $flags ); $json = json_encode($rows, $flags);
return $json; return $json;
} catch ( JsonException $e) { } catch (JsonException $e) {
/** @var RenderException $newException */ /** @var RenderException $newException */
$newException = oxNew(RenderException::class, $e->getMessage(), $e->getCode(), $e ); $newException = oxNew(RenderException::class, $e->getMessage(), $e->getCode(), $e);
throw $newException; throw $newException;
} }
} }
@ -52,4 +52,4 @@ class Json implements RendererInterface
{ {
return "D3_DATAWIZARD_EXPORT_FORMAT_JSON"; return "D3_DATAWIZARD_EXPORT_FORMAT_JSON";
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -25,7 +25,7 @@ class Pretty implements RendererInterface
* *
* @return string * @return string
*/ */
public function getContent($rows, $fieldNames) : string public function getContent($rows, $fieldNames): string
{ {
$renderer = $this->getArrayToTextTableInstance($rows); $renderer = $this->getArrayToTextTableInstance($rows);
return $renderer->getTable(); return $renderer->getTable();
@ -55,4 +55,4 @@ class Pretty implements RendererInterface
{ {
return "D3_DATAWIZARD_EXPORT_FORMAT_PRETTY"; return "D3_DATAWIZARD_EXPORT_FORMAT_PRETTY";
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -19,9 +19,9 @@ use D3\DataWizard\Application\Model\Exceptions\NoSuitableRendererException;
class RendererBridge class RendererBridge
{ {
const FORMAT_CSV = 'CSV'; public const FORMAT_CSV = 'CSV';
const FORMAT_PRETTY = 'Pretty'; public const FORMAT_PRETTY = 'Pretty';
const FORMAT_JSON = 'JSON'; public const FORMAT_JSON = 'JSON';
/** /**
* @return array * @return array
@ -31,7 +31,7 @@ class RendererBridge
return [ return [
self::FORMAT_CSV => oxNew(Csv::class), self::FORMAT_CSV => oxNew(Csv::class),
self::FORMAT_PRETTY => oxNew(Pretty::class), self::FORMAT_PRETTY => oxNew(Pretty::class),
self::FORMAT_JSON => oxNew(Json::class) self::FORMAT_JSON => oxNew(Json::class),
]; ];
} }
@ -71,4 +71,4 @@ class RendererBridge
$e = oxNew(NoSuitableRendererException::class, $format); $e = oxNew(NoSuitableRendererException::class, $format);
throw $e; throw $e;
} }
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -23,15 +23,15 @@ interface RendererInterface
* *
* @return string * @return string
*/ */
public function getContent($rows, $fieldNames) : string; public function getContent($rows, $fieldNames): string;
/** /**
* @return string * @return string
*/ */
public function getFileExtension() : string; public function getFileExtension(): string;
/** /**
* @return string * @return string
*/ */
public function getTitleTranslationId() : string; public function getTitleTranslationId(): string;
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -25,23 +25,23 @@ interface QueryBase
* Ensure that the translations are equally available in the frontend and the backend * Ensure that the translations are equally available in the frontend and the backend
* @return string * @return string
*/ */
public function getTitle() : string; public function getTitle(): string;
/** /**
* Ensure that the translations are equally available in the frontend and the backend * Ensure that the translations are equally available in the frontend and the backend
* @return string * @return string
*/ */
public function getDescription() : string; public function getDescription(): string;
/** /**
* @return string * @return string
*/ */
public function getButtonText() : string; public function getButtonText(): string;
/** /**
* @return array [string $query, array $parameters] * @return array [string $query, array $parameters]
*/ */
public function getQuery() : array; public function getQuery(): array;
/** /**
* @param Input $input * @param Input $input
@ -57,4 +57,4 @@ interface QueryBase
* @return array * @return array
*/ */
public function getFormElements(): array; public function getFormElements(): array;
} }

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -11,13 +11,14 @@
* @link https://www.oxidmodule.com * @link https://www.oxidmodule.com
*/ */
// @codeCoverageIgnoreStart
declare(strict_types=1); declare(strict_types=1);
$sLangName = "Deutsch"; $sLangName = "Deutsch";
// ------------------------------- // -------------------------------
// RESOURCE IDENTITFIER = STRING // RESOURCE IDENTITFIER = STRING
// ------------------------------- // -------------------------------
$aLang = array( $aLang = [
//Navigation //Navigation
'charset' => 'UTF-8', 'charset' => 'UTF-8',
@ -42,6 +43,7 @@ $aLang = array(
'D3_DATAWIZARD_EXPORT_FORMAT_JSON' => 'JSON-Format', 'D3_DATAWIZARD_EXPORT_FORMAT_JSON' => 'JSON-Format',
'D3_DATAWIZARD_ACTION_SUBMIT' => 'Aktion starten', 'D3_DATAWIZARD_ACTION_SUBMIT' => 'Aktion starten',
'D3_DATAWIZARD_ACTION_SUBMIT_CONFIRM' => 'Soll die Aktion gestartet werden?',
'D3_DATAWIZARD_DEBUG' => 'Debug: %1$s', 'D3_DATAWIZARD_DEBUG' => 'Debug: %1$s',
@ -55,4 +57,5 @@ $aLang = array(
'D3_DATAWIZARD_ERR_NOACTION_INSTALLED' => 'Es sind keine Aktionen installiert oder aktiviert.', 'D3_DATAWIZARD_ERR_NOACTION_INSTALLED' => 'Es sind keine Aktionen installiert oder aktiviert.',
'D3_DATAWIZARD_ERR_ACTIONRESULT' => '%1$s Eintrag verändert', 'D3_DATAWIZARD_ERR_ACTIONRESULT' => '%1$s Eintrag verändert',
'D3_DATAWIZARD_ERR_ACTIONRESULTS' => '%1$s Einträge verändert', 'D3_DATAWIZARD_ERR_ACTIONRESULTS' => '%1$s Einträge verändert',
); ];
// @codeCoverageIgnoreEnd

Voir le fichier

@ -3,7 +3,7 @@
/** /**
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* https://www.d3data.de * https://www.d3data.de
* *
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@ -11,13 +11,14 @@
* @link https://www.oxidmodule.com * @link https://www.oxidmodule.com
*/ */
// @codeCoverageIgnoreStart
declare(strict_types=1); declare(strict_types=1);
$sLangName = "English"; $sLangName = "English";
// ------------------------------- // -------------------------------
// RESOURCE IDENTITFIER = STRING // RESOURCE IDENTITFIER = STRING
// ------------------------------- // -------------------------------
$aLang = array( $aLang = [
//Navigation //Navigation
'charset' => 'UTF-8', 'charset' => 'UTF-8',
@ -42,6 +43,7 @@ $aLang = array(
'D3_DATAWIZARD_EXPORT_FORMAT_JSON' => 'JSON format', 'D3_DATAWIZARD_EXPORT_FORMAT_JSON' => 'JSON format',
'D3_DATAWIZARD_ACTION_SUBMIT' => 'run action', 'D3_DATAWIZARD_ACTION_SUBMIT' => 'run action',
'D3_DATAWIZARD_ACTION_SUBMIT_CONFIRM' => 'Should the action be executed?',
'D3_DATAWIZARD_DEBUG' => 'Debug: %1$s', 'D3_DATAWIZARD_DEBUG' => 'Debug: %1$s',
@ -55,4 +57,5 @@ $aLang = array(
'D3_DATAWIZARD_ERR_NOACTION_INSTALLED' => 'No actions are installed or activated.', 'D3_DATAWIZARD_ERR_NOACTION_INSTALLED' => 'No actions are installed or activated.',
'D3_DATAWIZARD_ERR_ACTIONRESULT' => '%1$s entry changed', 'D3_DATAWIZARD_ERR_ACTIONRESULT' => '%1$s entry changed',
'D3_DATAWIZARD_ERR_ACTIONRESULTS' => '%1$s entries changed', 'D3_DATAWIZARD_ERR_ACTIONRESULTS' => '%1$s entries changed',
); ];
// @codeCoverageIgnoreEnd

Voir le fichier

@ -1,6 +1,6 @@
[{block name="submitElements"}] [{block name="submitElements"}]
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-primary" onclick="startTask('[{$id}]')"> <button type="button" class="btn btn-primary" onclick="if (confirm('[{oxmultilang ident="D3_DATAWIZARD_ACTION_SUBMIT_CONFIRM"}]') === true) {startTask('[{$id}]')}">
<i class="fas fa-fw fa-magic"></i> <i class="fas fa-fw fa-magic"></i>
[{oxmultilang ident=$item->getButtonText()}] [{oxmultilang ident=$item->getButtonText()}]
</button> </button>

Voir le fichier

@ -1,64 +1,65 @@
# Changelog # Changelog
All notable changes to this project will be documented in this file.
## 2.1.0.0 (2021-12-21) The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
#### Changed ## [Unreleased](https://git.d3data.de/D3Public/DataWizard/compare/2.1.1.0...rel_2.x)
## [2.1.1.0](https://git.d3data.de/D3Public/DataWizard/compare/2.1.0.0...2.1.1.0) - 2022-12-24
### Added
- installable in OXID 6.5.0 and 6.5.1
- request confirmation before execute action
### Changed
- documentation extended
## [2.1.0.0](https://git.d3data.de/D3Public/DataWizard/compare/2.0.0.0...2.1.0.0) - 2021-12-21
### Changed
- adjust to CLI extension which can export to STDOUT - adjust to CLI extension which can export to STDOUT
--- ## [2.0.0.0](https://git.d3data.de/D3Public/DataWizard/compare/1.4.0.0...2.0.0.0) - 2021-12-20
### Added
## 2.0.0.0 (2021-12-20)
#### Added
- add tests - add tests
- make installable in OXID 6.4 - make installable in OXID 6.4
#### Changed ### Changed
- adjust code to PHP 7.3 and up - adjust code to PHP 7.3 and up
--- ## [1.4.0.0](https://git.d3data.de/D3Public/DataWizard/compare/1.3.1.0...1.4.0.0) - 2021-11-11
### Added
## 1.4.0.0 (2021-11-11)
#### Added
- add JSON export renderer - add JSON export renderer
- add tpl block for easier extension - add tpl block for easier extension
- enable controller based exception handling - enable controller based exception handling
#### Changed ### Changed
- change deprecated CSV export code - change deprecated CSV export code
- show registered export renderers in admin submit without required tpl block extension - show registered export renderers in admin submit without required tpl block extension
- force get translations from admin - force get translations from admin
--- ## [1.3.1.0](https://git.d3data.de/D3Public/DataWizard/compare/1.2.0.0...1.3.0.0) - 2021-09-10
### Added
## 1.3.1.0 (2021-09-10)
- installable in OXID 6.3.1 - installable in OXID 6.3.1
--- ## [1.3.0.0](https://git.d3data.de/D3Public/DataWizard/compare/1.2.0.0...1.3.0.0) - 2021-07-29
### Changed
## 1.3.0.0 (2021-07-29)
- can handle long task description text - can handle long task description text
- has more generic admin controller templates - has more generic admin controller templates
--- ## [1.2.0.0](https://git.d3data.de/D3Public/DataWizard/compare/1.1.0.0...1.2.0.0) - 2021-07-27
### Added
## 1.2.0.0 (2021-07-27)
- adjustments for CLI extension - adjustments for CLI extension
### Fixed
- fix OXID 6.1 incompatibilities - fix OXID 6.1 incompatibilities
--- ## [1.1.0.0](https://git.d3data.de/D3Public/DataWizard/compare/1.0.0.0...1.1.0.0) - 2021-06-25
### Added
## 1.1.0.0 (2021-06-25)
- implement form builder - implement form builder
### Fixed
- fix key figures export - fix key figures export
--- ## [1.0.0.0](https://git.d3data.de/D3Public/DataWizard/releases/tag/1.0.0.0) - 2021-06-22
### Added
## 1.0.0.0 (2021-06-22)
- initial implementation - initial implementation

Voir le fichier

@ -9,13 +9,26 @@ The exports are defined via database queries or ready-made data lists. Various e
All exports and tasks are grouped together for better clarity. All exports and tasks are grouped together for better clarity.
Sample exports are included in the package d3/datawizardtasks. These are intended to serve as an implementation reference for individual exports. Sample exports are included in the package `d3/datawizardtasks`. These are intended to serve as an implementation reference for individual exports.
![administration area](assets/administration_exports.jpg "administration area") ![administration area](assets/administration_exports.jpg "administration area")
## Table of content
- [Installation](#installation)
- [Usage](#usage)
- [Extensibility](#extensibility)
- [Extension packages](#extension-packages)
- [Changelog](#changelog)
- [Contributing](#contributing)
- [License](#license)
- [Further licences and terms of use](#further-licences-and-terms-of-use)
## Installation ## Installation
In the console in the shop root (above source and vendor), execute the following command: This package requires an Composer installed OXID eShop as defined in [composer.json](composer.json).
Open a command line interface and navigate to the shop root directory (parent of source and vendor). Execute the following command. Adapt the paths to your environment.
```bash ```bash
php composer require d3/datawizard:^2.0 php composer require d3/datawizard:^2.0
@ -23,6 +36,12 @@ php composer require d3/datawizard:^2.0
Activate the module in the admin area of the shop in "Extensions -> Modules". Activate the module in the admin area of the shop in "Extensions -> Modules".
## Usage
These package doesn't contain any export or action items. See [Extension packages](#extension_packages) for installable example items.
Log in to the admin area of your shop and navigate to "D³ Modules -> Data Wizard". Go to "Exports" or "Actions" (as desired). Choose your desired item and export or execute it.
## Extensibility ## Extensibility
The module represents the technical basic framework of the exports and does not claim to be complete. In order to adapt the scope to individual requirements, the following extensions are prepared: The module represents the technical basic framework of the exports and does not claim to be complete. In order to adapt the scope to individual requirements, the following extensions are prepared:
@ -33,7 +52,7 @@ The module represents the technical basic framework of the exports and does not
Independently of this, all extension options are available that the OXID Shop provides for modules. Independently of this, all extension options are available that the OXID Shop provides for modules.
## Extension packages ### Extension packages
- `d3/datawizardtasks` - provides sample exports and their implementation reference - `d3/datawizardtasks` - provides sample exports and their implementation reference
- `d3/datawizardcli` - provides the execution of exports or tasks via the command prompt (e.g. as cronjobs) - `d3/datawizardcli` - provides the execution of exports or tasks via the command prompt (e.g. as cronjobs)
@ -43,9 +62,21 @@ Independently of this, all extension options are available that the OXID Shop pr
See [CHANGELOG](CHANGELOG.md) for further informations. See [CHANGELOG](CHANGELOG.md) for further informations.
## Licence of this software (d3/datawizard) ## Contributing
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue. Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (git checkout -b feature/AmazingFeature)
- Commit your Changes (git commit -m 'Add some AmazingFeature')
- Push to the Branch (git push origin feature/AmazingFeature)
- Open a Pull Request
## Licence
(status: 2021-05-06) (status: 2021-05-06)
Distributed under the GPLv3 license.
``` ```
Copyright (c) D3 Data Development (Inh. Thomas Dartsch) Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
@ -118,4 +149,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
``` ```

Voir le fichier

@ -9,13 +9,27 @@ Die Exporte werden über Datenbankabfragen oder fertige Datenlisten definiert. E
Alle Exporte bzw. Tasks sind für eine bessere Übersichtlichkeit in Gruppen zusammengefasst. Alle Exporte bzw. Tasks sind für eine bessere Übersichtlichkeit in Gruppen zusammengefasst.
Im Paket d3/datawizardtasks sind Beispielexporte enthalten. Diese sollen als Implementierungsreferenz für individuelle Exporte dienen. Im Paket `d3/datawizardtasks` sind Beispielexporte enthalten. Diese sollen als Implementierungsreferenz für individuelle Exporte dienen.
![Adminbereich](assets/administration_exports.jpg "Adminbereich") ![Adminbereich](assets/administration_exports.jpg "Adminbereich")
## Schnellinstallation ## Inhaltsverzeichnis
- [Installation](#installation)
- [Verwendung](#verwendung)
- [Erweiterbarkeit](#erweiterbarkeit)
- [Erweiterungspakete](#erweiterungspakete)
- [Changelog](#changelog)
- [Beitragen](#beitragen)
- [Lizenz](#lizenz)
- [weitere Lizenzen und Nutzungsbedingungen](#weitere-lizenzen-und-nutzungsbedingungen)
## Installation
Dieses Paket erfordert einen mit Composer installierten OXID eShop in einer in der [composer.json](composer.json) definierten Version.
Öffnen Sie eine Kommandozeile und navigieren Sie zum Stammverzeichnis des Shops (Elternverzeichnis von source und vendor). Führen Sie den folgenden Befehl aus. Passen Sie die Pfadangaben an Ihre Installationsumgebung an.
Auf der Konsole im Shoproot (oberhalb von source und vendor) folgenden Befehl ausführen:
```bash ```bash
php composer require d3/datawizard:^2.0 php composer require d3/datawizard:^2.0
@ -23,6 +37,12 @@ php composer require d3/datawizard:^2.0
Aktivieren Sie das Modul im Shopadmin unter "Erweiterungen -> Module". Aktivieren Sie das Modul im Shopadmin unter "Erweiterungen -> Module".
## Verwendung
Dieses Paket enthält keine Exporte oder Aktionen. In [Erweiterungspakete](#erweiterungspakete) finden Sie installierbare Beispieleinträge.
Melden Sie sich im Adminbereich Ihres Shops an und navigieren Sie zu "D³ Module -> Data Wizard". Wechseln Sie je nach Wunsch zu "Exporte" oder "Aktionen". Wählen Sie den gewünschten Eintrag und starten Sie den Export bzw. die Aktion.
## Erweiterbarkeit ## Erweiterbarkeit
Das Modul stellt das technische Grundgerüst der Exporte dar und erhebt keinen Anspruch auf Vollständigkeit. Um den Umfang an die individuellen Anforderungen anzupassen, sind folgende Erweiterungen vorbereitet: Das Modul stellt das technische Grundgerüst der Exporte dar und erhebt keinen Anspruch auf Vollständigkeit. Um den Umfang an die individuellen Anforderungen anzupassen, sind folgende Erweiterungen vorbereitet:
@ -33,7 +53,7 @@ Das Modul stellt das technische Grundgerüst der Exporte dar und erhebt keinen A
Unabhängig dessen stehen alle Erweiterungsmöglichkeiten zur Verfügung, die der OXID Shop für Module bereitstellt. Unabhängig dessen stehen alle Erweiterungsmöglichkeiten zur Verfügung, die der OXID Shop für Module bereitstellt.
## Erweiterungspakete ### Erweiterungspakete
- `d3/datawizardtasks` - liefert Beispielexporte und deren Implementierungsreferenz - `d3/datawizardtasks` - liefert Beispielexporte und deren Implementierungsreferenz
- `d3/datawizardcli` - ermöglicht die Ausführung der Exporte oder Tasks über die Eingabeaufforderung (z.B. als Cronjobs) - `d3/datawizardcli` - ermöglicht die Ausführung der Exporte oder Tasks über die Eingabeaufforderung (z.B. als Cronjobs)
@ -43,9 +63,21 @@ Unabhängig dessen stehen alle Erweiterungsmöglichkeiten zur Verfügung, die de
Siehe [CHANGELOG](CHANGELOG.md) für weitere Informationen. Siehe [CHANGELOG](CHANGELOG.md) für weitere Informationen.
## Lizenz dieser Software (d3/datawizard) ## Beitragen
Wenn Sie eine Verbesserungsvorschlag haben, legen Sie einen Fork des Repositories an und erstellen Sie einen Pull Request. Alternativ können Sie einfach ein Issue erstellen. Fügen Sie das Projekt zu Ihren Favoriten hinzu. Vielen Dank.
- Erstellen Sie einen Fork des Projekts
- Erstellen Sie einen Feature Branch (git checkout -b feature/AmazingFeature)
- Fügen Sie Ihre Änderungen hinzu (git commit -m 'Add some AmazingFeature')
- Übertragen Sie den Branch (git push origin feature/AmazingFeature)
- Öffnen Sie einen Pull Request
## Lizenz
(Stand: 06.05.2021) (Stand: 06.05.2021)
Vertrieben unter der GPLv3 Lizenz.
``` ```
Copyright (c) D3 Data Development (Inh. Thomas Dartsch) Copyright (c) D3 Data Development (Inh. Thomas Dartsch)

Voir le fichier

@ -1,6 +1,6 @@
{ {
"name": "d3/datawizard", "name": "d3/datawizard",
"description": "das magische Datenwerkzeug", "description": "the magical data tool /\n das magische Datenwerkzeug",
"type": "oxideshop-module", "type": "oxideshop-module",
"keywords": [ "keywords": [
"oxid", "oxid",
@ -26,10 +26,11 @@
], ],
"require": { "require": {
"php": ">=7.3", "php": ">=7.3",
"oxid-esales/oxideshop-ce": "6.8 - 6.10", "oxid-esales/oxideshop-ce": "6.8 - 6.13",
"league/csv": "^9.0", "league/csv": "^9.0",
"mathieuviossat/arraytotexttable": "^1.0", "mathieuviossat/arraytotexttable": "^1.0",
"form-manager/form-manager": "^6.1" "form-manager/form-manager": "^6.1",
"d3/modcfg": "^6.0"
}, },
"extra": { "extra": {
"oxideshop": { "oxideshop": {

Voir le fichier

@ -32,13 +32,13 @@ $aModule = [
'en' => '', 'en' => '',
], ],
'thumbnail' => '', 'thumbnail' => '',
'version' => '2.1.0.0', 'version' => '2.1.1.0',
'author' => 'D&sup3; Data Development (Inh.: Thomas Dartsch)', 'author' => 'D&sup3; Data Development (Inh.: Thomas Dartsch)',
'email' => 'support@shopmodule.com', 'email' => 'support@shopmodule.com',
'url' => 'https://www.oxidmodule.com/', 'url' => 'https://www.oxidmodule.com/',
'controllers' => [ 'controllers' => [
'd3ExportWizard' => D3\DataWizard\Application\Controller\Admin\d3ExportWizard::class, 'd3ExportWizard' => D3\DataWizard\Application\Controller\Admin\d3ExportWizard::class,
'd3ActionWizard' => D3\DataWizard\Application\Controller\Admin\d3ActionWizard::class 'd3ActionWizard' => D3\DataWizard\Application\Controller\Admin\d3ActionWizard::class,
], ],
'extend' => [], 'extend' => [],
'events' => [], 'events' => [],
@ -54,8 +54,8 @@ $aModule = [
'group' => $sModuleId.'_general', 'group' => $sModuleId.'_general',
'name' => $sModuleId.'_debug', 'name' => $sModuleId.'_debug',
'type' => 'bool', 'type' => 'bool',
'value' => false 'value' => false,
] ],
], ],
'blocks' => [] 'blocks' => [],
]; ];

Voir le fichier

@ -12,6 +12,7 @@
*/ */
// Include datawizard test config // Include datawizard test config
namespace D3\DataWizard\tests; namespace D3\DataWizard\tests;
use D3\ModCfg\Tests\additional_abstract; use D3\ModCfg\Tests\additional_abstract;
@ -36,4 +37,5 @@ class additional extends additional_abstract
try { try {
d3GetModCfgDIC()->get(additional::class); d3GetModCfgDIC()->get(additional::class);
} catch (Exception $e) {} } catch (Exception $e) {
}

Voir le fichier

@ -12,4 +12,3 @@
*/ */
const D3DATAWIZARD_REQUIRE_MODCFG = true; const D3DATAWIZARD_REQUIRE_MODCFG = true;

Voir le fichier

@ -15,4 +15,4 @@ class d3TestAction extends ActionBase
{ {
return ["UPDATE 1"]; return ["UPDATE 1"];
} }
} }

Voir le fichier

@ -15,4 +15,4 @@ class d3TestExport extends ExportBase
{ {
return ["SELECT 1"]; return ["SELECT 1"];
} }
} }

Voir le fichier

@ -33,7 +33,7 @@ class d3ActionWizardTest extends d3AdminControllerTest
protected $testClassName = d3ActionWizard::class; protected $testClassName = d3ActionWizard::class;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -99,7 +99,7 @@ class d3ActionWizardTest extends d3AdminControllerTest
{ {
return [ return [
['test1'], ['test1'],
['test2'] ['test2'],
]; ];
} }
@ -144,7 +144,7 @@ class d3ActionWizardTest extends d3AdminControllerTest
$actionMock = $this->getMockBuilder(d3TestAction::class) $actionMock = $this->getMockBuilder(d3TestAction::class)
->onlyMethods([ ->onlyMethods([
'getQuery', 'getQuery',
'run' 'run',
]) ])
->getMock(); ->getMock();
$actionMock->expects($this->atLeastOnce())->method('getQuery')->willReturn(['SELECT 1', ['1']]); $actionMock->expects($this->atLeastOnce())->method('getQuery')->willReturn(['SELECT 1', ['1']]);
@ -190,4 +190,4 @@ class d3ActionWizardTest extends d3AdminControllerTest
'debug' => [true], 'debug' => [true],
]; ];
} }
} }

Voir le fichier

@ -39,7 +39,7 @@ abstract class d3AdminControllerTest extends d3ModCfgUnitTestCase
protected $testClassName; protected $testClassName;
public function tearDown() : void public function tearDown(): void
{ {
parent::tearDown(); parent::tearDown();
@ -169,7 +169,7 @@ abstract class d3AdminControllerTest extends d3ModCfgUnitTestCase
$actionMock = $this->getMockBuilder(d3TestAction::class) $actionMock = $this->getMockBuilder(d3TestAction::class)
->onlyMethods([ ->onlyMethods([
'getQuery', 'getQuery',
'run' 'run',
]) ])
->getMock(); ->getMock();
$actionMock->expects($this->atLeastOnce())->method('getQuery')->willReturn(['SELECT 1', ['1']]); $actionMock->expects($this->atLeastOnce())->method('getQuery')->willReturn(['SELECT 1', ['1']]);
@ -259,4 +259,4 @@ abstract class d3AdminControllerTest extends d3ModCfgUnitTestCase
) )
); );
} }
} }

Voir le fichier

@ -34,7 +34,7 @@ class d3ExportWizardTest extends d3AdminControllerTest
protected $testClassName = d3ExportWizard::class; protected $testClassName = d3ExportWizard::class;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -100,7 +100,7 @@ class d3ExportWizardTest extends d3AdminControllerTest
{ {
return [ return [
['test1'], ['test1'],
['test2'] ['test2'],
]; ];
} }
@ -146,7 +146,7 @@ class d3ExportWizardTest extends d3AdminControllerTest
$exportMock = $this->getMockBuilder(d3TestExport::class) $exportMock = $this->getMockBuilder(d3TestExport::class)
->onlyMethods([ ->onlyMethods([
'getQuery', 'getQuery',
'run' 'run',
]) ])
->getMock(); ->getMock();
$exportMock->expects($this->atLeastOnce())->method('getQuery')->willReturn(['SELECT 1', ['1']]); $exportMock->expects($this->atLeastOnce())->method('getQuery')->willReturn(['SELECT 1', ['1']]);
@ -192,4 +192,4 @@ class d3ExportWizardTest extends d3AdminControllerTest
'debug' => [true], 'debug' => [true],
]; ];
} }
} }

Voir le fichier

@ -31,14 +31,14 @@ class ActionBaseTest extends d3ModCfgUnitTestCase
/** @var d3TestAction */ /** @var d3TestAction */
protected $_oModel; protected $_oModel;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
$this->_oModel = oxNew(d3TestAction::class); $this->_oModel = oxNew(d3TestAction::class);
} }
public function tearDown() : void public function tearDown(): void
{ {
parent::tearDown(); parent::tearDown();
@ -135,7 +135,7 @@ class ActionBaseTest extends d3ModCfgUnitTestCase
$inputMock = $this->getMockBuilder($inputClass) $inputMock = $this->getMockBuilder($inputClass)
->onlyMethods([ ->onlyMethods([
'setTemplate', 'setTemplate',
'setAttribute' 'setAttribute',
]) ])
->getMock(); ->getMock();
$inputMock->expects($this->atLeastOnce())->method('setTemplate'); $inputMock->expects($this->atLeastOnce())->method('setTemplate');
@ -160,7 +160,7 @@ class ActionBaseTest extends d3ModCfgUnitTestCase
return [ return [
'Radio' => [Radio::class], 'Radio' => [Radio::class],
'Checkbox' => [Radio::class], 'Checkbox' => [Radio::class],
'Hidden' => [Hidden::class] 'Hidden' => [Hidden::class],
]; ];
} }
@ -175,7 +175,7 @@ class ActionBaseTest extends d3ModCfgUnitTestCase
->onlyMethods([ ->onlyMethods([
'hasFormElements', 'hasFormElements',
'executeAction', 'executeAction',
'getQuery' 'getQuery',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('hasFormElements')->willReturn(false); $modelMock->expects($this->atLeastOnce())->method('hasFormElements')->willReturn(false);
@ -204,7 +204,7 @@ class ActionBaseTest extends d3ModCfgUnitTestCase
'hasFormElements', 'hasFormElements',
'executeAction', 'executeAction',
'getQuery', 'getQuery',
'getFormElements' 'getFormElements',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('hasFormElements')->willReturn(true); $modelMock->expects($this->atLeastOnce())->method('hasFormElements')->willReturn(true);
@ -246,7 +246,7 @@ class ActionBaseTest extends d3ModCfgUnitTestCase
return [ return [
'validElements' => [[$validMock, $validMock], false], 'validElements' => [[$validMock, $validMock], false],
'invalidElements' => [[$validMock, $invalidField], true] 'invalidElements' => [[$validMock, $invalidField], true],
]; ];
} }
@ -313,4 +313,4 @@ class ActionBaseTest extends d3ModCfgUnitTestCase
) )
); );
} }
} }

Voir le fichier

@ -28,14 +28,14 @@ class ConfigurationTest extends d3ModCfgUnitTestCase
/** @var Configuration */ /** @var Configuration */
protected $_oModel; protected $_oModel;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
$this->_oModel = oxNew(Configuration::class); $this->_oModel = oxNew(Configuration::class);
} }
public function tearDown() : void public function tearDown(): void
{ {
parent::tearDown(); parent::tearDown();
@ -148,16 +148,16 @@ class ConfigurationTest extends d3ModCfgUnitTestCase
* @param $array * @param $array
* @return array|false * @return array|false
*/ */
public function array_flatten($array) { public function array_flatten($array)
{
if (!is_array($array)) { if (!is_array($array)) {
return false; return false;
} }
$result = array(); $result = [];
foreach ($array as $key => $value) { foreach ($array as $key => $value) {
if (is_array($value)) { if (is_array($value)) {
$result = array_merge($result, $this->array_flatten($value)); $result = array_merge($result, $this->array_flatten($value));
} } else {
else {
$result[$key] = $value; $result[$key] = $value;
} }
} }
@ -321,7 +321,7 @@ class ConfigurationTest extends d3ModCfgUnitTestCase
$modelMock = $this->getMockBuilder(Configuration::class) $modelMock = $this->getMockBuilder(Configuration::class)
->onlyMethods([ ->onlyMethods([
'getActionGroups', 'getActionGroups',
'getActionsByGroup' 'getActionsByGroup',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->once())->method('getActionGroups')->willReturn(['123', '456']); $modelMock->expects($this->once())->method('getActionGroups')->willReturn(['123', '456']);
@ -352,7 +352,7 @@ class ConfigurationTest extends d3ModCfgUnitTestCase
$modelMock = $this->getMockBuilder(Configuration::class) $modelMock = $this->getMockBuilder(Configuration::class)
->onlyMethods([ ->onlyMethods([
'getExportGroups', 'getExportGroups',
'getExportsByGroup' 'getExportsByGroup',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->once())->method('getExportGroups')->willReturn(['123', '456']); $modelMock->expects($this->once())->method('getExportGroups')->willReturn(['123', '456']);
@ -452,4 +452,4 @@ class ConfigurationTest extends d3ModCfgUnitTestCase
'set id' => ['456', false], 'set id' => ['456', false],
]; ];
} }
} }

Voir le fichier

@ -35,7 +35,7 @@ class DebugExceptionTest extends d3ModCfgUnitTestCase
{ {
$code = '500'; $code = '500';
$exception = oxNew( Exception::class); $exception = oxNew(Exception::class);
/** @var DebugException|MockObject $modelMock */ /** @var DebugException|MockObject $modelMock */
$modelMock = $this->getMockBuilder(DebugException::class) $modelMock = $this->getMockBuilder(DebugException::class)
@ -74,5 +74,4 @@ class DebugExceptionTest extends d3ModCfgUnitTestCase
) )
); );
} }
}
}

Voir le fichier

@ -35,7 +35,7 @@ class ExportFileExceptionTest extends d3ModCfgUnitTestCase
{ {
$code = '500'; $code = '500';
$exception = oxNew( Exception::class); $exception = oxNew(Exception::class);
/** @var ExportFileException|MockObject $modelMock */ /** @var ExportFileException|MockObject $modelMock */
$modelMock = $this->getMockBuilder(ExportFileException::class) $modelMock = $this->getMockBuilder(ExportFileException::class)
@ -74,5 +74,4 @@ class ExportFileExceptionTest extends d3ModCfgUnitTestCase
) )
); );
} }
}
}

Voir le fichier

@ -38,7 +38,7 @@ class InputUnvalidExceptionTest extends d3ModCfgUnitTestCase
{ {
$code = '500'; $code = '500';
$exception = oxNew( Exception::class); $exception = oxNew(Exception::class);
$invalidField = new Number(null, [ $invalidField = new Number(null, [
'required' => true, 'required' => true,
@ -93,5 +93,4 @@ class InputUnvalidExceptionTest extends d3ModCfgUnitTestCase
) )
); );
} }
}
}

Voir le fichier

@ -35,7 +35,7 @@ class NoSuitableRendererExceptionTest extends d3ModCfgUnitTestCase
{ {
$code = '500'; $code = '500';
$exception = oxNew( Exception::class); $exception = oxNew(Exception::class);
/** @var NoSuitableRendererException|MockObject $modelMock */ /** @var NoSuitableRendererException|MockObject $modelMock */
$modelMock = $this->getMockBuilder(NoSuitableRendererException::class) $modelMock = $this->getMockBuilder(NoSuitableRendererException::class)
@ -74,5 +74,4 @@ class NoSuitableRendererExceptionTest extends d3ModCfgUnitTestCase
) )
); );
} }
}
}

Voir le fichier

@ -37,7 +37,7 @@ class TaskExceptionTest extends d3ModCfgUnitTestCase
{ {
$code = '500'; $code = '500';
$exception = oxNew( Exception::class); $exception = oxNew(Exception::class);
/** @var ExportBase|MockObject $taskMock */ /** @var ExportBase|MockObject $taskMock */
$taskMock = $this->getMockBuilder(d3TestExport::class) $taskMock = $this->getMockBuilder(d3TestExport::class)
@ -82,5 +82,4 @@ class TaskExceptionTest extends d3ModCfgUnitTestCase
) )
); );
} }
}
}

Voir le fichier

@ -36,14 +36,14 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
/** @var d3TestExport */ /** @var d3TestExport */
protected $_oModel; protected $_oModel;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
$this->_oModel = oxNew(d3TestExport::class); $this->_oModel = oxNew(d3TestExport::class);
} }
public function tearDown() : void public function tearDown(): void
{ {
parent::tearDown(); parent::tearDown();
@ -140,7 +140,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
$inputMock = $this->getMockBuilder($inputClass) $inputMock = $this->getMockBuilder($inputClass)
->onlyMethods([ ->onlyMethods([
'setTemplate', 'setTemplate',
'setAttribute' 'setAttribute',
]) ])
->getMock(); ->getMock();
$inputMock->expects($this->atLeastOnce())->method('setTemplate'); $inputMock->expects($this->atLeastOnce())->method('setTemplate');
@ -165,7 +165,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
return [ return [
'Radio' => [Radio::class], 'Radio' => [Radio::class],
'Checkbox' => [Radio::class], 'Checkbox' => [Radio::class],
'Hidden' => [Hidden::class] 'Hidden' => [Hidden::class],
]; ];
} }
@ -183,7 +183,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
$modelMock = $this->getMockBuilder(d3TestExport::class) $modelMock = $this->getMockBuilder(d3TestExport::class)
->onlyMethods([ ->onlyMethods([
'hasFormElements', 'hasFormElements',
'executeExport' 'executeExport',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('hasFormElements')->willReturn(false); $modelMock->expects($this->atLeastOnce())->method('hasFormElements')->willReturn(false);
@ -214,7 +214,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
->onlyMethods([ ->onlyMethods([
'hasFormElements', 'hasFormElements',
'executeExport', 'executeExport',
'getFormElements' 'getFormElements',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('hasFormElements')->willReturn(true); $modelMock->expects($this->atLeastOnce())->method('hasFormElements')->willReturn(true);
@ -256,7 +256,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
return [ return [
'validElements' => [[$validMock, $validMock], false], 'validElements' => [[$validMock, $validMock], false],
'invalidElements' => [[$validMock, $invalidField], true] 'invalidElements' => [[$validMock, $invalidField], true],
]; ];
} }
@ -274,7 +274,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
'startDirectDownload', 'startDirectDownload',
'filterFilename', 'filterFilename',
'trailingslashit', 'trailingslashit',
'createFile' 'createFile',
]) ])
->getMock(); ->getMock();
$fsMock->expects($this->exactly((int) !isset($path)))->method('startDirectDownload')->willReturn(true); $fsMock->expects($this->exactly((int) !isset($path)))->method('startDirectDownload')->willReturn(true);
@ -287,7 +287,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
->onlyMethods([ ->onlyMethods([
'getContent', 'getContent',
'getFileSystem', 'getFileSystem',
'getExportFileName' 'getExportFileName',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('getContent')->willReturn('some content'); $modelMock->expects($this->atLeastOnce())->method('getContent')->willReturn('some content');
@ -371,7 +371,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
/** @var d3TestExport|MockObject $modelMock */ /** @var d3TestExport|MockObject $modelMock */
$modelMock = $this->getMockBuilder(d3TestExport::class) $modelMock = $this->getMockBuilder(d3TestExport::class)
->onlyMethods([ ->onlyMethods([
'getRendererBridge' 'getRendererBridge',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('getRendererBridge')->willReturn($rendererBridgeMock); $modelMock->expects($this->atLeastOnce())->method('getRendererBridge')->willReturn($rendererBridgeMock);
@ -425,7 +425,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
/** @var d3TestExport|MockObject $modelMock */ /** @var d3TestExport|MockObject $modelMock */
$modelMock = $this->getMockBuilder(d3TestExport::class) $modelMock = $this->getMockBuilder(d3TestExport::class)
->onlyMethods([ ->onlyMethods([
'getRenderer' 'getRenderer',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('getRenderer')->with($format)->willReturn($rendererMock); $modelMock->expects($this->atLeastOnce())->method('getRenderer')->with($format)->willReturn($rendererMock);
@ -463,7 +463,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
/** @var d3TestExport|MockObject $modelMock */ /** @var d3TestExport|MockObject $modelMock */
$modelMock = $this->getMockBuilder(d3TestExport::class) $modelMock = $this->getMockBuilder(d3TestExport::class)
->onlyMethods([ ->onlyMethods([
'getRenderer' 'getRenderer',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('getRenderer')->with($format)->willReturn($rendererMock); $modelMock->expects($this->atLeastOnce())->method('getRenderer')->with($format)->willReturn($rendererMock);
@ -490,7 +490,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
/** @var d3TestExport|MockObject $modelMock */ /** @var d3TestExport|MockObject $modelMock */
$modelMock = $this->getMockBuilder(d3TestExport::class) $modelMock = $this->getMockBuilder(d3TestExport::class)
->onlyMethods([ ->onlyMethods([
'getTitle' 'getTitle',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('getTitle')->willReturn('someTitle'); $modelMock->expects($this->atLeastOnce())->method('getTitle')->willReturn('someTitle');
@ -516,7 +516,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
$modelMock = $this->getMockBuilder(d3TestExport::class) $modelMock = $this->getMockBuilder(d3TestExport::class)
->onlyMethods([ ->onlyMethods([
'getExportFilenameBase', 'getExportFilenameBase',
'getFileExtension' 'getFileExtension',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('getExportFilenameBase')->willReturn('base'); $modelMock->expects($this->atLeastOnce())->method('getExportFilenameBase')->willReturn('base');
@ -551,7 +551,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
/** @var d3TestExport|MockObject $modelMock */ /** @var d3TestExport|MockObject $modelMock */
$modelMock = $this->getMockBuilder(d3TestExport::class) $modelMock = $this->getMockBuilder(d3TestExport::class)
->onlyMethods([ ->onlyMethods([
'd3GetDb' 'd3GetDb',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->exactly((int) !$throwsException))->method('d3GetDb')->willReturn($dbMock); $modelMock->expects($this->exactly((int) !$throwsException))->method('d3GetDb')->willReturn($dbMock);
@ -570,13 +570,13 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
[ [
[ [
'field1' => 'content1', 'field1' => 'content1',
'field2' => 'content2' 'field2' => 'content2',
] ],
], ],
[ [
'field1', 'field1',
'field2' 'field2',
] ],
], ],
$result $result
); );
@ -613,7 +613,7 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
->onlyMethods([ ->onlyMethods([
'getQuery', 'getQuery',
'getExportData', 'getExportData',
'renderContent' 'renderContent',
]) ])
->getMock(); ->getMock();
$modelMock->expects($this->atLeastOnce())->method('getQuery')->willReturn(['SELECT 1', ['arg1', 'arg2']]); $modelMock->expects($this->atLeastOnce())->method('getQuery')->willReturn(['SELECT 1', ['arg1', 'arg2']]);
@ -631,4 +631,4 @@ class ExportBaseTest extends d3ModCfgUnitTestCase
) )
); );
} }
} }

Voir le fichier

@ -29,7 +29,7 @@ class CsvTest extends ExportRendererTest
/** @var Csv */ /** @var Csv */
protected $_oModel; protected $_oModel;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -49,7 +49,7 @@ class CsvTest extends ExportRendererTest
$valueList = ['value1', 'value2']; $valueList = ['value1', 'value2'];
/** @var Writer|MockObject $csvMock */ /** @var Writer|MockObject $csvMock */
$csvMockBuilder = $this->getMockBuilder( Writer::class); $csvMockBuilder = $this->getMockBuilder(Writer::class);
$csvMockBuilder->disableOriginalConstructor(); $csvMockBuilder->disableOriginalConstructor();
$onlyMethods = ['__toString', 'insertOne', 'insertAll']; $onlyMethods = ['__toString', 'insertOne', 'insertAll'];
$csvMockBuilder->onlyMethods($onlyMethods); $csvMockBuilder->onlyMethods($onlyMethods);
@ -89,7 +89,7 @@ class CsvTest extends ExportRendererTest
{ {
return [ return [
'exception' => [true], 'exception' => [true],
'no exception' => [false] 'no exception' => [false],
]; ];
} }
@ -174,4 +174,4 @@ class CsvTest extends ExportRendererTest
) )
); );
} }
} }

Voir le fichier

@ -22,7 +22,7 @@ abstract class ExportRendererTest extends d3ModCfgUnitTestCase
/** @var RendererInterface */ /** @var RendererInterface */
protected $_oModel; protected $_oModel;
public function tearDown() : void public function tearDown(): void
{ {
parent::tearDown(); parent::tearDown();
@ -63,4 +63,4 @@ abstract class ExportRendererTest extends d3ModCfgUnitTestCase
) )
); );
} }
} }

Voir le fichier

@ -24,7 +24,7 @@ class JsonTest extends ExportRendererTest
/** @var Json */ /** @var Json */
protected $_oModel; protected $_oModel;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -61,7 +61,7 @@ class JsonTest extends ExportRendererTest
{ {
return [ return [
'valid' => [['value1', 'value2'], false], 'valid' => [['value1', 'value2'], false],
'invalid' => [["text" => "\xB1\x31"], true] // malformed UTF8 chars 'invalid' => [["text" => "\xB1\x31"], true], // malformed UTF8 chars
]; ];
} }
} }

Voir le fichier

@ -25,7 +25,7 @@ class PrettyTest extends ExportRendererTest
/** @var Pretty */ /** @var Pretty */
protected $_oModel; protected $_oModel;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -83,4 +83,4 @@ class PrettyTest extends ExportRendererTest
) )
); );
} }
} }

Voir le fichier

@ -30,7 +30,7 @@ class RendererBridgeTest extends d3ModCfgUnitTestCase
/** @var RendererBridge */ /** @var RendererBridge */
protected $_oModel; protected $_oModel;
public function setUp() : void public function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -122,7 +122,7 @@ class RendererBridgeTest extends d3ModCfgUnitTestCase
[ [
'CSV' => $this->getMockBuilder(Csv::class)->getMock(), 'CSV' => $this->getMockBuilder(Csv::class)->getMock(),
'Pretty' => $this->getMockBuilder(Pretty::class)->getMock(), 'Pretty' => $this->getMockBuilder(Pretty::class)->getMock(),
'JSON' => $this->getMockBuilder(Json::class)->getMock() 'JSON' => $this->getMockBuilder(Json::class)->getMock(),
] ]
); );
@ -146,7 +146,7 @@ class RendererBridgeTest extends d3ModCfgUnitTestCase
{ {
return [ return [
'existing renderer'=> [RendererBridge::FORMAT_JSON, false], 'existing renderer'=> [RendererBridge::FORMAT_JSON, false],
'unknown renderer'=> ['unknownRenderer', true] 'unknown renderer'=> ['unknownRenderer', true],
]; ];
} }
} }