Loading CHANGELOG.md +1 −0 Changes for CHANGELOG.md: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ Changelog - Possibilité de spécifier un data extractor précis pour une source (+ gestion des extractors par un plugin manager). - Migration des lignes de commandes d'import/synchro au format Symfony (lancer `vendor/bin/laminas` pour avoir la liste des commandes). - Configuration : navigation déplacée dans config/unicaen-db-import.global.php.dist pour ne pas imposer le menu du module. - Nouveau filtre de valeur de colonne CallableColumnValueFilter. - [FIX] Logs : ils étaient recherchés dans la connection orm_default alors qu'ils se trouvent dans la connection destination de l'import/synchro. - [FIX] Ajouts de strtolower/strtoupper() faisant défaut. Loading src/UnicaenDbImport/Config/ColumnValueFilterConfigFactoryTrait.php +3 −0 Changes for src/UnicaenDbImport/Config/ColumnValueFilterConfigFactoryTrait.php: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace UnicaenDbImport\Config; use Assert\Assertion; use Assert\AssertionFailedException; use Psr\Container\ContainerInterface; use UnicaenDbImport\Filter\ColumnValue\CallableColumnValueFilter; use UnicaenDbImport\Filter\ColumnValue\ColumnValueFilterInterface; use UnicaenDbImport\Filter\ColumnValue\SameColumnValueFilter; Loading Loading @@ -61,6 +62,8 @@ trait ColumnValueFilterConfigFactoryTrait $filterInstance = $this->getColumnValueFilter($spec[$key], $container); $filterParams = $spec['params'] ?? []; $filterInstance->setParams($filterParams); } elseif (is_callable($spec)) { $filterInstance = new CallableColumnValueFilter(['callable' => $spec]); } elseif (is_string($spec)) { if ($container->has($spec)) { $filterInstance = $container->get($spec); Loading src/UnicaenDbImport/Filter/ColumnValue/CallableColumnValueFilter.php 0 → 100644 +63 −0 Changes for src/UnicaenDbImport/Filter/ColumnValue/CallableColumnValueFilter.php: 63 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace UnicaenDbImport\Filter\ColumnValue; use InvalidArgumentException; class CallableColumnValueFilter extends AbstractColumnValueFilter { private string $sourceColumn; private $callable; public function __toString(): string { return sprintf( "Colonne '%s' = callable('%s')", $this->column, $this->sourceColumn, ); } public function setParams(array $params): void { if (array_key_exists('source_column', $params)) { $this->setSourceColumn($params['source_column']); } if (array_key_exists('callable', $params)) { $this->setCallable($params['callable']); } parent::setParams($params); } public function setSourceColumn(string $sourceColumn): void { $this->sourceColumn = $sourceColumn; } public function setCallable(callable $callable): void { $this->callable = $callable; } public function filter($value): array { if (!is_array($value)) { throw new InvalidArgumentException("Les données reçues ne sont pas un tableau"); } if (!array_key_exists($this->sourceColumn, $value)) { throw new InvalidArgumentException("La colonne suivante est introuvable dans les données reçues : " . $this->column); } $value[$this->column] = $this->applyCallable($value[$this->sourceColumn]); return $value; } protected function applyCallable($sourceColumnValue) { $callable = $this->callable; return $callable($sourceColumnValue); } } No newline at end of file Loading
CHANGELOG.md +1 −0 Changes for CHANGELOG.md: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ Changelog - Possibilité de spécifier un data extractor précis pour une source (+ gestion des extractors par un plugin manager). - Migration des lignes de commandes d'import/synchro au format Symfony (lancer `vendor/bin/laminas` pour avoir la liste des commandes). - Configuration : navigation déplacée dans config/unicaen-db-import.global.php.dist pour ne pas imposer le menu du module. - Nouveau filtre de valeur de colonne CallableColumnValueFilter. - [FIX] Logs : ils étaient recherchés dans la connection orm_default alors qu'ils se trouvent dans la connection destination de l'import/synchro. - [FIX] Ajouts de strtolower/strtoupper() faisant défaut. Loading
src/UnicaenDbImport/Config/ColumnValueFilterConfigFactoryTrait.php +3 −0 Changes for src/UnicaenDbImport/Config/ColumnValueFilterConfigFactoryTrait.php: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace UnicaenDbImport\Config; use Assert\Assertion; use Assert\AssertionFailedException; use Psr\Container\ContainerInterface; use UnicaenDbImport\Filter\ColumnValue\CallableColumnValueFilter; use UnicaenDbImport\Filter\ColumnValue\ColumnValueFilterInterface; use UnicaenDbImport\Filter\ColumnValue\SameColumnValueFilter; Loading Loading @@ -61,6 +62,8 @@ trait ColumnValueFilterConfigFactoryTrait $filterInstance = $this->getColumnValueFilter($spec[$key], $container); $filterParams = $spec['params'] ?? []; $filterInstance->setParams($filterParams); } elseif (is_callable($spec)) { $filterInstance = new CallableColumnValueFilter(['callable' => $spec]); } elseif (is_string($spec)) { if ($container->has($spec)) { $filterInstance = $container->get($spec); Loading
src/UnicaenDbImport/Filter/ColumnValue/CallableColumnValueFilter.php 0 → 100644 +63 −0 Changes for src/UnicaenDbImport/Filter/ColumnValue/CallableColumnValueFilter.php: 63 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace UnicaenDbImport\Filter\ColumnValue; use InvalidArgumentException; class CallableColumnValueFilter extends AbstractColumnValueFilter { private string $sourceColumn; private $callable; public function __toString(): string { return sprintf( "Colonne '%s' = callable('%s')", $this->column, $this->sourceColumn, ); } public function setParams(array $params): void { if (array_key_exists('source_column', $params)) { $this->setSourceColumn($params['source_column']); } if (array_key_exists('callable', $params)) { $this->setCallable($params['callable']); } parent::setParams($params); } public function setSourceColumn(string $sourceColumn): void { $this->sourceColumn = $sourceColumn; } public function setCallable(callable $callable): void { $this->callable = $callable; } public function filter($value): array { if (!is_array($value)) { throw new InvalidArgumentException("Les données reçues ne sont pas un tableau"); } if (!array_key_exists($this->sourceColumn, $value)) { throw new InvalidArgumentException("La colonne suivante est introuvable dans les données reçues : " . $this->column); } $value[$this->column] = $this->applyCallable($value[$this->sourceColumn]); return $value; } protected function applyCallable($sourceColumnValue) { $callable = $this->callable; return $callable($sourceColumnValue); } } No newline at end of file