Skip to content

Commit

Permalink
Merge pull request #412 from instride-ch/dpfaffenbauer-patch-1
Browse files Browse the repository at this point in the history
Allow Symfony 7
  • Loading branch information
dpfaffenbauer authored May 27, 2024
2 parents d6668c4 + 76b2847 commit 73b627f
Show file tree
Hide file tree
Showing 17 changed files with 86 additions and 66 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/behat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
name: "${{ matrix.pimcore }}, PHP ${{ matrix.php }}, Deps ${{ matrix.dependencies }}"

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install PHP
uses: shivammathur/setup-php@v2
Expand All @@ -64,7 +64,7 @@ jobs:
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Cache composer dependencies
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
Expand Down Expand Up @@ -98,15 +98,15 @@ jobs:
run: vendor/bin/behat --strict --no-interaction -vvv -f progress --config behat.yml.dist -p default

- name: Upload Behat logs
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
if: failure()
with:
name: "Behat logs (non-JS, PHP ${{ matrix.php }}, Symfony ${{ matrix.pimcore }})"
path: etc/build/
if-no-files-found: ignore

- name: Upload Pimcore logs
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
if: failure()
with:
name: "Pimcore logs (non-JS, PHP ${{ matrix.php }}, Symfony ${{ matrix.pimcore }})"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/static.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
name: "${{ matrix.pimcore }}, PHP ${{ matrix.php }}, Deps ${{ matrix.dependencies }}"

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install PHP
uses: shivammathur/setup-php@v2
Expand All @@ -51,7 +51,7 @@ jobs:
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Cache composer dependencies
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,6 @@ web
public
docker-compose.yaml
test-commands.txt
.docker
.docker
cache
config/pimcore/data-definitions
8 changes: 4 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@
"require": {
"php": ">=8.1",
"ext-json": "*",
"openspout/openspout": "^4.23",
"coreshop/pimcore-bundle": "^4.0",
"coreshop/resource-bundle": "^4.0",
"coreshop/rule-bundle": "^4.0",
"jms/serializer": "^3.17",
"league/csv": "^9.7",
"nyholm/psr7": "^1.5",
"pimcore/admin-ui-classic-bundle": "^1.0",
"openspout/openspout": "^4.23",
"pimcore/admin-ui-classic-bundle": "^1.4",
"pimcore/pimcore": "^11.0",
"psr/http-client-implementation": "^1.0",
"psr/http-factory-implementation": "^1.0",
"symfony/dotenv": "^6.3",
"symfony/http-client": "^6.3"
"symfony/dotenv": "^6.3 | ^7.0",
"symfony/http-client": "^6.3 | ^7.0"
},
"require-dev": {
"roave/security-advisories": "dev-latest",
Expand Down
9 changes: 2 additions & 7 deletions src/DataDefinitionsBundle/Command/ImportAsyncCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,19 +62,14 @@ protected function configure(): void

protected function execute(InputInterface $input, OutputInterface $output)
{
$eventDispatcher = $this->eventDispatcher;

$params = json_decode($input->getOption('params'), true);

if (!isset($params['userId'])) {
$params['userId'] = 0;
}

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

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,6 +18,7 @@

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;
Expand All @@ -28,6 +29,9 @@
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 @@ -38,4 +42,15 @@ 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 @@ -17,6 +17,7 @@
namespace Instride\Bundle\DataDefinitionsBundle\Controller;

use CoreShop\Bundle\ResourceBundle\Controller\ResourceController;
use Instride\Bundle\DataDefinitionsBundle\Repository\DefinitionRepository;
use Pimcore\Model\DataObject;
use Pimcore\Tool;
use Symfony\Component\HttpFoundation\File\UploadedFile;
Expand All @@ -27,6 +28,9 @@
use Instride\Bundle\DataDefinitionsBundle\Model\ExportDefinitionInterface;
use Instride\Bundle\DataDefinitionsBundle\Model\ExportMapping\FromColumn;

/**
* @property DefinitionRepository $repository
*/
class ExportDefinitionController extends AbstractDefinitionController
{
public function getConfigAction(): JsonResponse
Expand Down Expand Up @@ -56,10 +60,10 @@ public function getConfigAction(): JsonResponse

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

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

if ($definition instanceof ExportDefinitionInterface) {

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

if ($id && $definition instanceof ExportDefinitionInterface && $request->files->has('Filedata')) {
$uploadedFile = $request->files->get('Filedata');
Expand Down Expand Up @@ -116,8 +120,8 @@ public function importAction(Request $request): JsonResponse

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

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

use CoreShop\Component\Registry\ServiceRegistryInterface;
use Exception;
use Instride\Bundle\DataDefinitionsBundle\Repository\DefinitionRepository;
use Pimcore\Model\DataObject;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
use Symfony\Component\HttpFoundation\File\UploadedFile;
Expand All @@ -32,6 +33,9 @@
use Instride\Bundle\DataDefinitionsBundle\Service\FieldSelection;
use function is_array;

/**
* @property DefinitionRepository $repository
*/
class ImportDefinitionController extends AbstractDefinitionController
{
public function getConfigAction(): JsonResponse
Expand Down Expand Up @@ -66,7 +70,7 @@ public function getConfigAction(): JsonResponse
public function testDataAction(Request $request): JsonResponse
{
$id = $request->get('id');
$definition = $this->repository->find($id);
$definition = $this->repository->findByName($id);

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

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

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

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

if ($definition instanceof ImportDefinitionInterface) {

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

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

if ($id && $definition instanceof ImportDefinitionInterface && $request->files->has('Filedata')) {
$uploadedFile = $request->files->get('Filedata');
Expand Down Expand Up @@ -249,8 +253,8 @@ public function importAction(Request $request): JsonResponse

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

if ($definition instanceof ImportDefinitionInterface && $name) {
Expand Down
3 changes: 1 addition & 2 deletions src/DataDefinitionsBundle/DataDefinitionsBundle.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
use Pimcore\Bundle\AdminBundle\PimcoreAdminBundle;
use Pimcore\Bundle\SimpleBackendSearchBundle\PimcoreSimpleBackendSearchBundle;
use Pimcore\Extension\Bundle\Installer\InstallerInterface;
use Pimcore\Extension\Bundle\PimcoreBundleInterface;
use Pimcore\HttpKernel\BundleCollection\BundleCollection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Instride\Bundle\DataDefinitionsBundle\DependencyInjection\Compiler\CleanerRegistryCompilerPass;
Expand All @@ -50,7 +49,7 @@ public static function registerDependentBundles(BundleCollection $collection): v

$collection->addBundles([
new PimcoreAdminBundle(),
new PimcoreSimpleBackendSearchBundle()
new PimcoreSimpleBackendSearchBundle(),
]);

$collection->addBundles([
Expand Down
14 changes: 6 additions & 8 deletions src/DataDefinitionsBundle/Form/Type/DefinitionChoiceType.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,20 @@

namespace Instride\Bundle\DataDefinitionsBundle\Form\Type;

use CoreShop\Component\Resource\Repository\RepositoryInterface;
use Instride\Bundle\DataDefinitionsBundle\Model\DataDefinitionInterface;
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
{
private RepositoryInterface $definitionRepository;

public function __construct(RepositoryInterface $definitionRepository)
{
$this->definitionRepository = $definitionRepository;
public function __construct(
private readonly DefinitionRepository $definitionRepository
) {
}

public function buildForm(FormBuilderInterface $builder, array $options): void
Expand All @@ -52,7 +50,7 @@ public function configureOptions(OptionsResolver $resolver): void
}, $this->definitionRepository->findAll());
},
'choice_label' => function ($val) {
$def = $this->definitionRepository->find($val);
$def = $this->definitionRepository->findByName($val);

return $def !== null ? $def->getName() : null;
},
Expand Down
20 changes: 9 additions & 11 deletions src/DataDefinitionsBundle/Interpreter/DefinitionInterpreter.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,23 @@

namespace Instride\Bundle\DataDefinitionsBundle\Interpreter;

use CoreShop\Component\Resource\Repository\RepositoryInterface;
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
{
private RepositoryInterface $definitionRepository;
private ImporterInterface $importer;

public function __construct(RepositoryInterface $definitionRepository, ImporterInterface $importer)
{
$this->definitionRepository = $definitionRepository;
$this->importer = $importer;
public function __construct(
private readonly DefinitionRepository $definitionRepository,
private readonly ImporterInterface $importer
) {
}

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

if (!$subDefinition instanceof ImportDefinitionInterface) {
return null;
Expand Down
2 changes: 1 addition & 1 deletion src/DataDefinitionsBundle/Model/ExportDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class ExportDefinition extends AbstractDataDefinition implements ExportDefinitio
*/
public $fetchUnpublished = false;

public static function getById(string $name)
public static function getById(int $name)
{
return static::getByName($name);
}
Expand Down
6 changes: 3 additions & 3 deletions src/DataDefinitionsBundle/Model/ImportDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,12 @@ class ImportDefinition extends AbstractDataDefinition implements ImportDefinitio
*/
public $persister;

public static function getById(string $name)
public static function getById(int $name)
{
return static::getByName($name);
return static::getByName((string)$name);
}

public static function getByName($id)
public static function getByName(string $id)
{
$definitionEntry = new ImportDefinition();
$definitionEntry->setId((int)$id);
Expand Down
2 changes: 1 addition & 1 deletion src/DataDefinitionsBundle/Model/ImportDefinition/Dao.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public function getByName(string $id = null): void
$this->model->setName($data['id']);
} else {
throw new Model\Exception\NotFoundException(sprintf(
'Thumbnail with ID "%s" does not exist.',
'Import Definition with ID "%s" does not exist.',
$this->model->getName()
));
}
Expand Down
Loading

0 comments on commit 73b627f

Please sign in to comment.