Skip to content

Commit

Permalink
Merge pull request #413 from tip-top-b/fixes
Browse files Browse the repository at this point in the history
 Fixes on the current version.
  • Loading branch information
dpfaffenbauer committed Jul 18, 2024
2 parents 678fc00 + 1656082 commit b1b040f
Show file tree
Hide file tree
Showing 25 changed files with 300 additions and 134 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/static.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ jobs:

strategy:
matrix:
php: [ 8.1, 8.2 ]
pimcore: [ ^11.0 ]
php: [ 8.1, 8.2, 8.3 ]
pimcore: [ ^11.1, ^11.2, ^11.3 ]
dependencies: [ highest ]
exclude:
- php: 8.1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

namespace Instride\Bundle\DataDefinitionsBundle\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Yaml\Yaml;

class ConvertExportDefinitionsToYaml extends Command
{

protected function configure(): void
{
$this
->setName('data-definition:configuration:exporter:convert-to-yaml')
->setDescription('Convert export definitions file to YAML files')
->setHelp('This command converts export definitions file to YAML')
->addArgument('file', InputArgument::OPTIONAL, 'Path to the PHP file', 'var/config/exportdefinitions.php');
}

protected function execute(InputInterface $input, OutputInterface $output): int
{
$filePath = $input->getArgument('file');
$data = require $filePath;

foreach ($data as $entry) {

$fileName = $entry['id'] . '.yaml';

$yamlData = [
'data_definitions' => [
'export_definitions' => [
$entry['id'] => $entry
]
]
];

$yaml = Yaml::dump($yamlData, 4, 2, Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK);
file_put_contents("var/config/export-definitions/{$fileName}", $yaml);
}
$output->writeln('YAML export definitions are generated under: var/config/export-definitions');

return Command::SUCCESS;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php

namespace Instride\Bundle\DataDefinitionsBundle\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Yaml\Yaml;

class ConvertImportDefinitionsToYaml extends Command
{

protected function configure(): void
{
$this->setName('data-definition:configuration:importer:convert-to-yaml')
->setDescription('Convert convert import file definitions to YAML files')
->setHelp('This command converts convert import file definitions file to YAML files')
->addArgument('file', InputArgument::OPTIONAL, 'Path to the PHP file', 'var/config/importdefinitions.php');
}

protected function execute(InputInterface $input, OutputInterface $output): int
{
$filePath = $input->getArgument('file');
$data = require $filePath;

foreach ($data as $entry) {

$fileName = $entry['id'] . '.yaml';
$yamlData = [
'data_definitions' => [
'import_definitions' => [
$entry['id'] => $entry
]
]
];

$yaml = Yaml::dump($yamlData, 4, 2, Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK);

file_put_contents("var/config/import-definitions/{$fileName}", $yaml);
}
$output->writeln('YAML import definitions configurations are generated under: var/config/import-definitions');

return Command::SUCCESS;
}
}
7 changes: 5 additions & 2 deletions src/DataDefinitionsBundle/Command/ImportAsyncCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,11 @@ protected function execute(InputInterface $input, OutputInterface $output)
$params['userId'] = 0;
}

$inputDefinition = $input->getOption('definition');
$definition = $this->repository->findByName((string)$inputDefinition);
try {
$definition = $this->repository->find($input->getOption('definition'));
} catch (InvalidArgumentException $e) {
$definition = $this->repository->findByName($input->getOption('definition'));
}

if (!$definition instanceof ImportDefinitionInterface) {
throw new Exception('Import Definition not found');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,14 @@

use CoreShop\Bundle\ResourceBundle\Controller\ResourceController;
use CoreShop\Component\Resource\Model\ResourceInterface;
use Instride\Bundle\DataDefinitionsBundle\Repository\DefinitionRepository;
use Pimcore\Model\DataObject;
use Pimcore\Tool;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Instride\Bundle\DataDefinitionsBundle\Model\ExportDefinitionInterface;
use Instride\Bundle\DataDefinitionsBundle\Model\ExportMapping\FromColumn;

/**
* @property DefinitionRepository $repository
*/
abstract class AbstractDefinitionController extends ResourceController
{
public function getAction(Request $request): JsonResponse
Expand All @@ -42,15 +36,4 @@ public function getAction(Request $request): JsonResponse

return $this->viewHandler->handle(['data' => $resources, 'success' => true], ['group' => 'Detailed']);
}

protected function findOr404(int|string $id): ResourceInterface
{
$model = $this->repository->findByName((string)$id);

if (null === $model || !$model instanceof ResourceInterface) {
throw new NotFoundHttpException(sprintf('The "%s" has not been found', $id));
}

return $model;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ public function getConfigAction(): JsonResponse

public function exportAction(Request $request): Response
{
$id = $request->get('id');
$id = (int)$request->get('id');

if ($id) {
$definition = $this->repository->findByName($id);
$definition = $this->repository->find($id);

if ($definition instanceof ExportDefinitionInterface) {

Expand Down Expand Up @@ -92,14 +92,15 @@ public function exportAction(Request $request): Response
public function importAction(Request $request): JsonResponse
{
$id = (int)$request->get('id');
$definition = $this->repository->findByName($id);
$definition = $this->repository->find($id);

if ($id && $definition instanceof ExportDefinitionInterface && $request->files->has('Filedata')) {
$uploadedFile = $request->files->get('Filedata');

if ($uploadedFile instanceof UploadedFile) {
$jsonContent = file_get_contents($uploadedFile->getPathname());
$data = $this->decodeJson($jsonContent, false);
$data = $this->decodeJson($jsonContent, false,[],false);


$form = $this->resourceFormFactory->create($this->metadata, $definition);
$handledForm = $form->submit($data);
Expand All @@ -120,8 +121,8 @@ public function importAction(Request $request): JsonResponse

public function duplicateAction(Request $request): JsonResponse
{
$id = $request->get('id');
$definition = $this->repository->findByName($id);
$id = (int)$request->get('id');
$definition = $this->repository->find($id);
$name = (string)$request->get('name');

if ($definition instanceof ExportDefinitionInterface && $name) {
Expand All @@ -141,7 +142,7 @@ public function duplicateAction(Request $request): JsonResponse
public function getColumnsAction(Request $request): JsonResponse
{
$id = $request->get('id');
$definition = $this->repository->findByName($id);
$definition = $this->repository->find($id);

if (!$definition instanceof ExportDefinitionInterface || !$definition->getClass()) {
return $this->viewHandler->handle(['success' => false]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public function getConfigAction(): JsonResponse
public function testDataAction(Request $request): JsonResponse
{
$id = $request->get('id');
$definition = $this->repository->findByName($id);
$definition = $this->repository->find($id);

if ($definition instanceof ImportDefinitionInterface) {
try {
Expand All @@ -92,7 +92,7 @@ public function testDataAction(Request $request): JsonResponse
public function getColumnsAction(Request $request): JsonResponse
{
$id = $request->get('id');
$definition = $this->repository->findByName($id);
$definition = $this->repository->find($id);

if ($definition instanceof ImportDefinitionInterface && $definition->getClass()) {
$customFromColumn = new FromColumn();
Expand Down Expand Up @@ -193,10 +193,10 @@ public function getColumnsAction(Request $request): JsonResponse

public function exportAction(Request $request): Response
{
$id = $request->get('id');
$id = (int)$request->get('id');

if ($id) {
$definition = $this->repository->findByName($id);
$definition = $this->repository->find($id);

if ($definition instanceof ImportDefinitionInterface) {

Expand Down Expand Up @@ -224,15 +224,15 @@ public function exportAction(Request $request): Response

public function importAction(Request $request): JsonResponse
{
$id = $request->get('id');
$definition = $this->repository->findByName($id);
$id = (int)$request->get('id');
$definition = $this->repository->find($id);

if ($id && $definition instanceof ImportDefinitionInterface && $request->files->has('Filedata')) {
$uploadedFile = $request->files->get('Filedata');

if ($uploadedFile instanceof UploadedFile) {
$jsonContent = file_get_contents($uploadedFile->getPathname());
$data = $this->decodeJson($jsonContent, false);
$data = $this->decodeJson($jsonContent, false,[],false);

$form = $this->resourceFormFactory->create($this->metadata, $definition);
$handledForm = $form->submit($data);
Expand All @@ -253,8 +253,8 @@ public function importAction(Request $request): JsonResponse

public function duplicateAction(Request $request): JsonResponse
{
$id = $request->get('id');
$definition = $this->repository->findByName($id);
$id = (int)$request->get('id');
$definition = $this->repository->find($id);
$name = (string)$request->get('name');

if ($definition instanceof ImportDefinitionInterface && $name) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public function getConfigTreeBuilder(): TreeBuilder
->normalizeKeys(false)
->prototype('array')
->children()
->integerNode('id')->end()
->scalarNode('name')->end()
->scalarNode('provider')->end()
->scalarNode('class')->end()
Expand Down Expand Up @@ -98,6 +99,7 @@ public function getConfigTreeBuilder(): TreeBuilder
->normalizeKeys(false)
->prototype('array')
->children()
->integerNode('id')->end()
->scalarNode('name')->end()
->scalarNode('fetcher')->end()
->variableNode('fetcherConfig')->end()
Expand Down
5 changes: 3 additions & 2 deletions src/DataDefinitionsBundle/Form/Type/DefinitionChoiceType.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@

namespace Instride\Bundle\DataDefinitionsBundle\Form\Type;

use Instride\Bundle\DataDefinitionsBundle\Model\DataDefinitionInterface;
use CoreShop\Component\Resource\Repository\RepositoryInterface;
use Instride\Bundle\DataDefinitionsBundle\Repository\DefinitionRepository;
use Symfony\Bridge\Doctrine\Form\DataTransformer\CollectionToArrayTransformer;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Instride\Bundle\DataDefinitionsBundle\Model\DataDefinitionInterface;

final class DefinitionChoiceType extends AbstractType
{
Expand All @@ -50,7 +51,7 @@ public function configureOptions(OptionsResolver $resolver): void
}, $this->definitionRepository->findAll());
},
'choice_label' => function ($val) {
$def = $this->definitionRepository->findByName($val);
$def = $this->definitionRepository->find($val);

return $def !== null ? $def->getName() : null;
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@

namespace Instride\Bundle\DataDefinitionsBundle\Interpreter;

use Instride\Bundle\DataDefinitionsBundle\Repository\DefinitionRepository;
use Pimcore\Model\DataObject;
use Instride\Bundle\DataDefinitionsBundle\Context\InterpreterContextInterface;
use Instride\Bundle\DataDefinitionsBundle\Importer\ImporterInterface;
use Instride\Bundle\DataDefinitionsBundle\Model\ImportDefinitionInterface;
use Instride\Bundle\DataDefinitionsBundle\Repository\DefinitionRepository;
use Pimcore\Model\DataObject;

class DefinitionInterpreter implements InterpreterInterface
{
Expand All @@ -30,9 +30,8 @@ public function __construct(
) {
}

public function interpret(InterpreterContextInterface $context): mixed
{
$subDefinition = $this->definitionRepository->findByName($context->getConfiguration()['definition']);
public function interpret(InterpreterContextInterface $context): mixed {
$subDefinition = $this->definitionRepository->find($context->getConfiguration()['definition']);

if (!$subDefinition instanceof ImportDefinitionInterface) {
return null;
Expand Down
6 changes: 3 additions & 3 deletions src/DataDefinitionsBundle/Messenger/ImportRowMessage.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@

class ImportRowMessage
{
private int|string $definitionId;
private int $definitionId;
private array $data;
private array $params;

public function __construct(int|string $definitionId, array $data, array $params)
public function __construct(int $definitionId, array $data, array $params)
{
$this->definitionId = $definitionId;
$this->data = $data;
$this->params = $params;
}

public function getDefinitionId(): int|string
public function getDefinitionId(): int
{
return $this->definitionId;
}
Expand Down
12 changes: 0 additions & 12 deletions src/DataDefinitionsBundle/Model/AbstractDataDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,6 @@ public function getId(): int|string|null
return $this->id;
}

public function setId($id)
{
$this->id = $id;
}

public function getProvider()
{
return $this->provider;
Expand Down Expand Up @@ -131,13 +126,6 @@ public function getName()
return $this->name;
}

public function setName($name)
{
$this->name = $name;

$this->setId($name);
}

public function getMapping()
{
return $this->mapping;
Expand Down
2 changes: 2 additions & 0 deletions src/DataDefinitionsBundle/Model/DataDefinitionInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
interface DataDefinitionInterface extends ResourceInterface
{

public function getId(): int|string|null;

/**
* @param int $id
*/
Expand Down
Loading

0 comments on commit b1b040f

Please sign in to comment.