first migrate

This commit is contained in:
Thomas Peterson 2025-12-11 09:47:54 +01:00
parent 75caff77f1
commit a65ecc8d47
136 changed files with 6173 additions and 3418 deletions

View File

@ -10,3 +10,7 @@ symfony-init: ## init Symfony
$(EXECUTE_IN_APPLICATION_CONTAINER) php "/application/src/new/bin/console" importmap:install; $(EXECUTE_IN_APPLICATION_CONTAINER) php "/application/src/new/bin/console" importmap:install;
$(EXECUTE_IN_APPLICATION_CONTAINER) php "/application/src/new/bin/console" asset-map:compile; $(EXECUTE_IN_APPLICATION_CONTAINER) php "/application/src/new/bin/console" asset-map:compile;
$(EXECUTE_IN_APPLICATION_CONTAINER) php "/application/src/new/bin/console" assets:install; $(EXECUTE_IN_APPLICATION_CONTAINER) php "/application/src/new/bin/console" assets:install;
.PHONY: symfony
symfony: ## init Symfony
$(EXECUTE_IN_APPLICATION_CONTAINER) php "/application/src/new/bin/console" ;

View File

@ -25,11 +25,10 @@
"cocur/slugify": "v3.1", "cocur/slugify": "v3.1",
"composer/package-versions-deprecated": "^1.8", "composer/package-versions-deprecated": "^1.8",
"ddeboer/imap": "1.21.*", "ddeboer/imap": "1.21.*",
"doctrine/annotations": "^2",
"doctrine/cache": "^2", "doctrine/cache": "^2",
"doctrine/doctrine-bundle": "^2", "doctrine/doctrine-bundle": "^3",
"doctrine/mongodb-odm-bundle": "^5", "doctrine/mongodb-odm-bundle": "^5",
"doctrine/orm": "^2.7", "doctrine/orm": "^3",
"gabrielbull/ups-api": "dev-master", "gabrielbull/ups-api": "dev-master",
"gesdinet/jwt-refresh-token-bundle": "^1.5", "gesdinet/jwt-refresh-token-bundle": "^1.5",
"gregwar/captcha-bundle": "^2.2", "gregwar/captcha-bundle": "^2.2",
@ -37,12 +36,12 @@
"horstoeko/zugferd": "^1.0", "horstoeko/zugferd": "^1.0",
"incenteev/composer-parameter-handler": "^2.0", "incenteev/composer-parameter-handler": "^2.0",
"jms/serializer-bundle": "5.*", "jms/serializer-bundle": "5.*",
"knplabs/knp-gaufrette-bundle": "0.7.*", "knplabs/knp-gaufrette-bundle": "0.9.*",
"knplabs/knp-menu-bundle": "^3", "knplabs/knp-menu-bundle": "^3",
"knplabs/knp-paginator-bundle": "5.9.*", "knplabs/knp-paginator-bundle": "6.10.*",
"lexik/form-filter-bundle": "^7", "spiriitlabs/form-filter-bundle": "12.0.1",
"lexik/jwt-authentication-bundle": "^3", "lexik/jwt-authentication-bundle": "^3",
"liip/imagine-bundle": "2.9.*", "liip/imagine-bundle": "2.16.*",
"mistic100/randomcolor": "^1.1", "mistic100/randomcolor": "^1.1",
"mobiledetect/mobiledetectlib": "^2.8", "mobiledetect/mobiledetectlib": "^2.8",
"mpdf/mpdf": "dev-qrcode", "mpdf/mpdf": "dev-qrcode",
@ -50,10 +49,9 @@
"nelmio/api-doc-bundle": "^4", "nelmio/api-doc-bundle": "^4",
"nelmio/cors-bundle": "^2.2", "nelmio/cors-bundle": "^2.2",
"nicolab/php-ftp-client": "^1.4", "nicolab/php-ftp-client": "^1.4",
"oneup/uploader-bundle": "^3", "oneup/uploader-bundle": "^5",
"oyejorge/less.php": "~1.5", "oyejorge/less.php": "~1.5",
"paypal/paypal-checkout-sdk": "dev-master", "paypal/paypal-server-sdk": "^2",
"paypal/rest-api-sdk-php": "dev-master",
"phenx/php-font-lib": "^1.0", "phenx/php-font-lib": "^1.0",
"phpoffice/phpspreadsheet": "^1.28", "phpoffice/phpspreadsheet": "^1.28",
"phpseclib/phpseclib": "~3.0", "phpseclib/phpseclib": "~3.0",
@ -65,26 +63,25 @@
"ramsey/uuid": "4.5.1", "ramsey/uuid": "4.5.1",
"sauladam/shipment-tracker": "dev-master", "sauladam/shipment-tracker": "dev-master",
"scssphp/scssphp": "v1.11.1", "scssphp/scssphp": "v1.11.1",
"sensio/framework-extra-bundle": "^6.1",
"sofort/sofortlib-php": "3.3.2", "sofort/sofortlib-php": "3.3.2",
"spatie/array-to-xml": "^3.4", "spatie/array-to-xml": "^3.4",
"symfony/asset": "*", "symfony/asset": "*",
"symfony/asset-mapper": "6.4.*", "symfony/asset-mapper": "7.4.*",
"symfony/console": "*", "symfony/console": "*",
"symfony/dotenv": "*", "symfony/dotenv": "*",
"symfony/expression-language": "*", "symfony/expression-language": "*",
"symfony/flex": "^1.3.1", "symfony/flex": "^2",
"symfony/form": "*", "symfony/form": "*",
"symfony/framework-bundle": "*", "symfony/framework-bundle": "*",
"symfony/http-client": "*", "symfony/http-client": "*",
"symfony/intl": "*", "symfony/intl": "*",
"symfony/lock": "6.4.*", "symfony/lock": "7.4.*",
"symfony/mailer": "*", "symfony/mailer": "*",
"symfony/mime": "*", "symfony/mime": "*",
"symfony/monolog-bundle": "^3.8", "symfony/monolog-bundle": "^4",
"symfony/notifier": "*", "symfony/notifier": "*",
"symfony/process": "*", "symfony/process": "*",
"symfony/property-access": "6.4.4", "symfony/property-access": "7.4.*",
"symfony/property-info": "*", "symfony/property-info": "*",
"symfony/proxy-manager-bridge": "*", "symfony/proxy-manager-bridge": "*",
"symfony/runtime": "*", "symfony/runtime": "*",
@ -199,7 +196,7 @@
"extra": { "extra": {
"symfony": { "symfony": {
"allow-contrib": false, "allow-contrib": false,
"require": "6.4.*" "require": "7.4.*"
}, },
"public-dir": "web/" "public-dir": "web/"
} }

5109
src/new/composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -7,13 +7,11 @@ return [
Knp\Bundle\GaufretteBundle\KnpGaufretteBundle::class => ['all' => true], Knp\Bundle\GaufretteBundle\KnpGaufretteBundle::class => ['all' => true],
Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true], Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true],
Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::class => ['all' => true], Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::class => ['all' => true],
Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle::class => ['all' => true],
Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true], Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],
Oneup\UploaderBundle\OneupUploaderBundle::class => ['all' => true], Oneup\UploaderBundle\OneupUploaderBundle::class => ['all' => true],
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
@ -63,4 +61,5 @@ return [
Symfonycasts\TailwindBundle\SymfonycastsTailwindBundle::class => ['all' => true], Symfonycasts\TailwindBundle\SymfonycastsTailwindBundle::class => ['all' => true],
Symfonycasts\SassBundle\SymfonycastsSassBundle::class => ['all' => true], Symfonycasts\SassBundle\SymfonycastsSassBundle::class => ['all' => true],
Symfony\UX\Vue\VueBundle::class => ['all' => true], Symfony\UX\Vue\VueBundle::class => ['all' => true],
Spiriit\Bundle\FormFilterBundle\SpiriitFormFilterBundle::class => ['all' => true],
]; ];

View File

@ -6,23 +6,20 @@ use PSC\Libraries\DoctrineBundle\ORM\Query\AST\Functions\SimpleFunction;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void { return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurator->extension( $containerConfigurator->extension('doctrine', [
'doctrine',
[
'dbal' => [ 'dbal' => [
'url' => '%env(resolve:DATABASE_URL)%', 'url' => '%env(resolve:DATABASE_URL)%',
'charset' => 'utf8mb4', 'charset' => 'utf8mb4',
'default_table_options' => ['collate' => 'utf8mb4_unicode_ci']], 'default_table_options' => ['collate' => 'utf8mb4_unicode_ci'],
],
'orm' => [ 'orm' => [
'auto_generate_proxy_classes' => true,
'naming_strategy' => 'doctrine.orm.naming_strategy.underscore_number_aware', 'naming_strategy' => 'doctrine.orm.naming_strategy.underscore_number_aware',
'auto_mapping' => true, 'auto_mapping' => true,
'dql' => [ 'dql' => [
'numeric_functions' => [ 'numeric_functions' => [
'month' => SimpleFunction::class 'month' => SimpleFunction::class,
] ],
] ],
] ],
] ]);
);
}; };

View File

@ -5,11 +5,56 @@ declare(strict_types=1);
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void { return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurator->extension('psc_shop_media', ['default_context' => 'default', 'contexts' => ['default' => ['providers' => ['psc.shop.media.provider.image', 'psc.shop.media.provider.file'], 'formats' => ['small' => ['width' => 100, 'quality' => 70], 'big' => ['width' => 500, 'quality' => 70]]]], 'providers' => ['image' => ['thumbnail' => 'psc.shop.media.thumbnail.liip_imagine', 'allowed_extensions' => ['jpg', 'png', 'gif', 'jpeg'], 'allowed_mime_types' => ['image/pjpeg', 'image/jpeg', 'image/png', 'image/x-png', 'image/gif']]], 'cdn' => ['server' => ['path' => '/uploads/media']], 'filesystem' => ['local' => ['directory' => '%kernel.project_dir%/web/uploads/media', 'create' => false]]]); $containerConfigurator->extension('psc_shop_media', [
'default_context' => 'default',
'contexts' => ['default' => [
'providers' => ['psc.shop.media.provider.image', 'psc.shop.media.provider.file'],
'formats' => ['small' => ['width' => 100, 'quality' => 70], 'big' => ['width' => 500, 'quality' => 70]],
]],
'providers' => ['image' => [
'thumbnail' => 'psc.shop.media.thumbnail.liip_imagine',
'allowed_extensions' => ['jpg', 'png', 'gif', 'jpeg'],
'allowed_mime_types' => ['image/pjpeg', 'image/jpeg', 'image/png', 'image/x-png', 'image/gif'],
]],
'cdn' => ['server' => ['path' => '/uploads/media']],
'filesystem' => ['local' => ['directory' => '%kernel.project_dir%/web/uploads/media', 'create' => false]],
]);
$containerConfigurator->extension('knp_gaufrette', ['stream_wrapper' => null, 'adapters' => ['backend_articles' => ['safe_local' => ['directory' => '%kernel.project_dir%/web/uploads/backend_articles', 'create' => true]], 'steplayouter_motiv_guest' => ['local' => ['directory' => '%kernel.project_dir%/web/uploads/steplayouter_motiv_guest', 'create' => true]], 'steplayouter_motiv' => ['local' => ['directory' => '%kernel.project_dir%/web/market/motive/', 'create' => true]]], 'filesystems' => ['backend_articles' => ['adapter' => 'backend_articles', 'alias' => 'backend_articles_filesystem'], 'steplayouter_motiv_guest' => ['adapter' => 'steplayouter_motiv_guest'], 'steplayouter_motiv' => ['adapter' => 'steplayouter_motiv']]]); $containerConfigurator->extension('knp_gaufrette', [
'stream_wrapper' => null,
'adapters' => [
'backend_articles' => ['safe_local' => [
'directory' => '%kernel.project_dir%/web/uploads/backend_articles',
'create' => true,
]],
'steplayouter_motiv_guest' => ['local' => [
'directory' => '%kernel.project_dir%/web/uploads/steplayouter_motiv_guest',
'create' => true,
]],
'steplayouter_motiv' => ['local' => [
'directory' => '%kernel.project_dir%/web/market/motive/',
'create' => true,
]],
],
'filesystems' => [
'backend_articles' => ['adapter' => 'backend_articles', 'alias' => 'backend_articles_filesystem'],
'steplayouter_motiv_guest' => ['adapter' => 'steplayouter_motiv_guest'],
'steplayouter_motiv' => ['adapter' => 'steplayouter_motiv'],
],
]);
$containerConfigurator->extension('knp_paginator', ['page_range' => 5, 'default_options' => ['page_name' => 'page', 'sort_field_name' => 'sort', 'sort_direction_name' => 'direction', 'distinct' => true], 'template' => ['pagination' => '@PSCBackendDashboard/pagination/bootstrap4.html.twig']]); $containerConfigurator->extension('knp_paginator', [
'page_range' => 5,
'default_options' => [
'page_name' => 'page',
'sort_field_name' => 'sort',
'sort_direction_name' => 'direction',
'distinct' => true,
],
'template' => ['pagination' => '@PSCBackendDashboard/pagination/bootstrap4.html.twig'],
]);
$containerConfigurator->extension('lexik_form_filter', ['listeners' => ['doctrine_orm' => true, 'doctrine_dbal' => true, 'doctrine_mongodb' => true]]); $containerConfigurator->extension('spiriit_form_filter', ['listeners' => [
'doctrine_orm' => true,
]]);
}; };

View File

@ -4,6 +4,4 @@ declare(strict_types=1);
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void { return static function (ContainerConfigurator $containerConfigurator): void {};
$containerConfigurator->extension('sensio_framework_extra', ['router' => ['annotations' => false], 'request' => ['converters' => true, 'disable' => ['doctrine.orm', 'datetime']]]);
};

2873
src/new/config/reference.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -5,5 +5,5 @@ declare(strict_types=1);
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
return static function (RoutingConfigurator $routingConfigurator): void { return static function (RoutingConfigurator $routingConfigurator): void {
$routingConfigurator->import('../../src/PSC/Kernel.php', 'annotation'); $routingConfigurator->import('../../src/PSC/Kernel.php', 'attribute');
}; };

View File

@ -20,11 +20,11 @@ return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services(); $services = $containerConfigurator->services();
$services->defaults() $services->defaults()->autowire()->autoconfigure();
->autowire()
->autoconfigure();
$services->set('liip_imagine.data.loader.stream.steplayouter_motiv_guest', StreamLoader::class) /* $services
->args([service('liip_imagine'), 'gaufrette://steplayouter_motiv_guest/']) * ->set('liip_imagine.data.loader.stream.steplayouter_motiv_guest', StreamLoader::class)
->tag('liip_imagine.data.loader', ['loader' => 'stream.steplayouter_motiv_guest']); * ->args([service('liip_imagine'), 'gaufrette://steplayouter_motiv_guest/'])->tag('liip_imagine.data.loader', [
* 'loader' => 'stream.steplayouter_motiv_guest',
* ]);*/
}; };

View File

@ -11,17 +11,17 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class IconButtonExtension extends AbstractTypeExtension class IconButtonExtension extends AbstractTypeExtension
{ {
public function buildView(FormView $view, FormInterface $form, array $options) public function buildView(FormView $view, FormInterface $form, array $options): void
{ {
$view->vars['icon_before'] = $options['icon_before'] ? $options['icon_before'] : ''; $view->vars['icon_before'] = $options['icon_before'] ? $options['icon_before'] : '';
$view->vars['icon_after'] = $options['icon_after'] ? $options['icon_after'] : ''; $view->vars['icon_after'] = $options['icon_after'] ? $options['icon_after'] : '';
} }
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver): void
{ {
$resolver->setDefaults([ $resolver->setDefaults([
'icon_before' => null, 'icon_before' => null,
'icon_after' => null 'icon_after' => null,
]); ]);
} }

View File

@ -1,4 +1,4 @@
psc_backend_dashboard: psc_backend_dashboard:
resource: "@PSCBackendDashboardBundle/Controller/" resource: "@PSCBackendDashboardBundle/Controller/"
type: annotation type: attribute
prefix: /backend prefix: /backend

View File

@ -1,4 +1,4 @@
psc_backend_domain: psc_backend_domain:
resource: "@PSCBackendDomainBundle/Controller/Backend" resource: "@PSCBackendDomainBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/domain prefix: /backend/domain

View File

@ -1,6 +1,6 @@
psc_backend_tools: psc_backend_tools:
resource: "@PSCBackendToolsBundle/Controller/Backend" resource: "@PSCBackendToolsBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/tools prefix: /backend/tools

View File

@ -1,4 +1,4 @@
psc_component_api_system: psc_component_api_system:
resource: "@PSCComponentApiBundle/Api" resource: "@PSCComponentApiBundle/Api"
prefix: /api prefix: /api
type: annotation type: attribute

View File

@ -21,28 +21,14 @@ class PrintPdfCommand extends Command
{ {
protected function configure() protected function configure()
{ {
$this $this->setName('component:steplayouter:pdf:print')
->setName('component:steplayouter:pdf:print')
->setDescription('Create Print PDF') ->setDescription('Create Print PDF')
->addArgument( ->addArgument('outputDir', InputArgument::REQUIRED, 'Layouter Id')
'outputDir', ->addArgument('layouterUid', InputArgument::REQUIRED, 'Layouter Id')
InputArgument::REQUIRED, ->addArgument('aliasUid', InputArgument::REQUIRED, 'Alias Id');
'Layouter Id'
)
->addArgument(
'layouterUid',
InputArgument::REQUIRED,
'Layouter Id'
)
->addArgument(
'aliasUid',
InputArgument::REQUIRED,
'Alias Id'
)
;
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$layouter_uuid = $input->getArgument('layouterUid'); $layouter_uuid = $input->getArgument('layouterUid');
$outfilename = $input->getArgument('outputDir'); $outfilename = $input->getArgument('outputDir');
@ -52,5 +38,7 @@ class PrintPdfCommand extends Command
$pdfService = $this->getContainer()->get('psc.component.steplayouter.pdf'); $pdfService = $this->getContainer()->get('psc.component.steplayouter.pdf');
$pdfService->create($outfilename, $layouter_uuid, $aliasUid); $pdfService->create($outfilename, $layouter_uuid, $aliasUid);
return 0;
} }
} }

View File

@ -8,7 +8,7 @@ use Symfony\Component\HttpKernel\Bundle\Bundle;
class PSCLibrariesAutoRegistryBundle extends Bundle class PSCLibrariesAutoRegistryBundle extends Bundle
{ {
public function build(ContainerBuilder $container) public function build(ContainerBuilder $container): void
{ {
parent::build($container); parent::build($container);
$container->addCompilerPass(new AutoRegistryCompilerPass()); $container->addCompilerPass(new AutoRegistryCompilerPass());

View File

@ -1,9 +1,9 @@
psc_shop_account_backend: psc_shop_account_backend:
resource: "@PSCShopAccountBundle/Controller/Backend" resource: "@PSCShopAccountBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/account prefix: /backend/account
psc_shop_account_api: psc_shop_account_api:
resource: "@PSCShopAccountBundle/Api" resource: "@PSCShopAccountBundle/Api"
type: annotation type: attribute
prefix: /api/account prefix: /api/account

View File

@ -1,4 +1,4 @@
psc_shop_basket_api: psc_shop_basket_api:
resource: "@PSCShopBasketBundle/Api" resource: "@PSCShopBasketBundle/Api"
prefix: /api/basket prefix: /api/basket
type: annotation type: attribute

View File

@ -1,10 +1,10 @@
psc_shop_cms_backend: psc_shop_cms_backend:
resource: "@PSCShopCmsBundle/Controller/Backend" resource: "@PSCShopCmsBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/cms prefix: /backend/cms
psc_shop_cms_frontend: psc_shop_cms_frontend:
resource: "@PSCShopCmsBundle/Controller/Frontend" resource: "@PSCShopCmsBundle/Controller/Frontend"
type: annotation type: attribute
prefix: /{_locale}/cms prefix: /{_locale}/cms

View File

@ -1,5 +1,5 @@
psc_shop_communication_backend: psc_shop_communication_backend:
resource: "@PSCShopCommunicationBundle/Controller/Backend" resource: "@PSCShopCommunicationBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/communication prefix: /backend/communication

View File

@ -1,9 +1,9 @@
psc_shop_contact_backend: psc_shop_contact_backend:
resource: "@PSCShopContactBundle/Controller/Backend" resource: "@PSCShopContactBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/contact prefix: /backend/contact
psc_shop_contact_api: psc_shop_contact_api:
resource: "@PSCShopContactBundle/Api" resource: "@PSCShopContactBundle/Api"
type: annotation type: attribute
prefix: /api/contact prefix: /api/contact

View File

@ -9,7 +9,7 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z" /> <path stroke-linecap="round" stroke-linejoin="round" d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z" />
</svg> </svg>
{{ 'customers'|trans }} {{ 'customers'|trans }} <span class="text-gray-500">{{ 'List'|trans }}</span>
</h1> </h1>
</div> </div>
<div class="flex flex-wrap items-center gap-4 justify-end shrink-0 ml-auto"> <div class="flex flex-wrap items-center gap-4 justify-end shrink-0 ml-auto">
@ -93,9 +93,9 @@
<td class="px-2 py-3">{{ contact.city }}</td> <td class="px-2 py-3">{{ contact.city }}</td>
<td class="px-2 py-3"> <td class="px-2 py-3">
{% if contact.virtual == 1 %} {% if contact.virtual == 1 %}
<span class="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-red-100 text-red-800">{{ 'yes'|trans }}</span> <div class="badge-yes">{{ 'yes'|trans }}</div>
{% else %} {% else %}
<span class="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-800">{{ 'no'|trans }}</span> <div class="badge-no">{{ 'no'|trans }}</div>
{% endif %} {% endif %}
</td> </td>
<td class="px-2 py-3"> <td class="px-2 py-3">
@ -106,7 +106,7 @@
{% endfor %} {% endfor %}
</div> </div>
{% else %} {% else %}
<span class="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-800">{{ 'no'|trans }}</span> <div class="badge-no">{{ 'no'|trans }}</div>
{% endif %} {% endif %}
</td> </td>
<td class="px-2 py-3 text-right"> <td class="px-2 py-3 text-right">

View File

@ -1,6 +1,6 @@
psc_shop_create_backend: psc_shop_create_backend:
resource: "@PSCShopCreateBundle/Controller/Backend" resource: "@PSCShopCreateBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/shop/create prefix: /backend/shop/create

View File

@ -13,9 +13,9 @@
namespace PSC\Shop\EntityBundle\Document; namespace PSC\Shop\EntityBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations\Field; use Doctrine\ODM\MongoDB\Mapping\Annotations\Field;
use Doctrine\ODM\MongoDB\Mapping\Annotations\Id; use Doctrine\ODM\MongoDB\Mapping\Annotations\Id;
use Doctrine\ODM\MongoDB\Mapping\Annotations\Document;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
#[Document] #[Document]
@ -54,43 +54,43 @@ class Instance implements UserInterface
protected $smtpUsername; protected $smtpUsername;
#[Field(type: 'string')] #[Field(type: 'string')]
protected ?string $numberPattern; protected null|string $numberPattern;
#[Field(type: 'int')] #[Field(type: 'int')]
protected $numberStart; protected $numberStart;
#[Field(type: 'string')] #[Field(type: 'string')]
protected ?string $offerNumberPattern; protected null|string $offerNumberPattern;
#[Field(type: 'int')] #[Field(type: 'int')]
protected $offerNumberStart; protected $offerNumberStart;
#[Field(type: 'string')] #[Field(type: 'string')]
protected ?string $invoiceNumberPattern = ""; protected null|string $invoiceNumberPattern = '';
#[Field(type: 'int')] #[Field(type: 'int')]
protected $invoiceNumberStart = 0; protected $invoiceNumberStart = 0;
#[Field(type: 'string')] #[Field(type: 'string')]
protected ?string $cancelationNumberPattern = ""; protected null|string $cancelationNumberPattern = '';
#[Field(type: 'int')] #[Field(type: 'int')]
protected $cancelationNumberStart = 0; protected $cancelationNumberStart = 0;
#[Field(type: 'string')] #[Field(type: 'string')]
protected ?string $creditNumberPattern = ""; protected null|string $creditNumberPattern = '';
#[Field(type: 'int')] #[Field(type: 'int')]
protected $creditNumberStart = 0; protected $creditNumberStart = 0;
#[Field(type: 'string')] #[Field(type: 'string')]
protected ?string $parcelInvoiceNumberPattern = ""; protected null|string $parcelInvoiceNumberPattern = '';
#[Field(type: 'int')] #[Field(type: 'int')]
protected $parcelInvoiceNumberStart = 0; protected $parcelInvoiceNumberStart = 0;
#[Field(type: 'string')] #[Field(type: 'string')]
protected ?string $parcelCancelationNumberPattern = ""; protected null|string $parcelCancelationNumberPattern = '';
#[Field(type: 'int')] #[Field(type: 'int')]
protected $parcelCancelationNumberStart = 0; protected $parcelCancelationNumberStart = 0;
@ -140,6 +140,7 @@ class Instance implements UserInterface
*/ */
#[Field(type: 'bool')] #[Field(type: 'bool')]
protected $supportlogin; protected $supportlogin;
/** /**
* @return mixed * @return mixed
*/ */
@ -383,7 +384,7 @@ class Instance implements UserInterface
/** /**
* @return string * @return string
*/ */
public function getOfferNumberPattern(): ?string public function getOfferNumberPattern(): null|string
{ {
return $this->offerNumberPattern; return $this->offerNumberPattern;
} }
@ -391,7 +392,7 @@ class Instance implements UserInterface
/** /**
* @param string $offerNumberPattern * @param string $offerNumberPattern
*/ */
public function setOfferNumberPattern(?string $offerNumberPattern): void public function setOfferNumberPattern(null|string $offerNumberPattern): void
{ {
$this->offerNumberPattern = $offerNumberPattern; $this->offerNumberPattern = $offerNumberPattern;
} }
@ -401,7 +402,7 @@ class Instance implements UserInterface
*/ */
public function getSupporturl(): string public function getSupporturl(): string
{ {
return (string)$this->supporturl; return (string) $this->supporturl;
} }
/** /**
@ -417,7 +418,7 @@ class Instance implements UserInterface
*/ */
public function getSupporttoken(): string public function getSupporttoken(): string
{ {
return (string)$this->supporttoken; return (string) $this->supporttoken;
} }
/** /**
@ -433,7 +434,7 @@ class Instance implements UserInterface
*/ */
public function getMonitoringkey(): string public function getMonitoringkey(): string
{ {
return (string)$this->monitoringkey; return (string) $this->monitoringkey;
} }
/** /**
@ -478,8 +479,8 @@ class Instance implements UserInterface
public function getFormatedSupportUrl() public function getFormatedSupportUrl()
{ {
if ($this->supporturl == "") { if ($this->supporturl == '') {
return ""; return '';
} }
$url = parse_url($this->supporturl); $url = parse_url($this->supporturl);
return $url['scheme'] . '://' . $url['host']; return $url['scheme'] . '://' . $url['host'];
@ -490,7 +491,7 @@ class Instance implements UserInterface
*/ */
public function isMaintenanceMode(): bool public function isMaintenanceMode(): bool
{ {
return (bool)$this->maintenanceMode; return (bool) $this->maintenanceMode;
} }
/** /**
@ -506,13 +507,13 @@ class Instance implements UserInterface
*/ */
public function getMaintenanceText(): string public function getMaintenanceText(): string
{ {
return (string)$this->maintenanceText; return (string) $this->maintenanceText;
} }
/** /**
* @param string $maintenanceText * @param string $maintenanceText
*/ */
public function setMaintenanceText(?string $maintenanceText): void public function setMaintenanceText(null|string $maintenanceText): void
{ {
$this->maintenanceText = $maintenanceText; $this->maintenanceText = $maintenanceText;
} }
@ -522,23 +523,23 @@ class Instance implements UserInterface
*/ */
public function getMaintenanceTitle(): string public function getMaintenanceTitle(): string
{ {
return (string)$this->maintenanceTitle; return (string) $this->maintenanceTitle;
} }
/** /**
* @param string $maintenanceTitle * @param string $maintenanceTitle
*/ */
public function setMaintenanceTitle(?string $maintenanceTitle): void public function setMaintenanceTitle(null|string $maintenanceTitle): void
{ {
$this->maintenanceTitle = $maintenanceTitle; $this->maintenanceTitle = $maintenanceTitle;
} }
public function getInvoiceNumberPattern(): ?string public function getInvoiceNumberPattern(): null|string
{ {
return $this->invoiceNumberPattern; return $this->invoiceNumberPattern;
} }
public function setInvoiceNumberPattern(?string $invoiceNumberPattern): void public function setInvoiceNumberPattern(null|string $invoiceNumberPattern): void
{ {
$this->invoiceNumberPattern = $invoiceNumberPattern; $this->invoiceNumberPattern = $invoiceNumberPattern;
} }
@ -553,12 +554,12 @@ class Instance implements UserInterface
$this->invoiceNumberStart = $invoiceNumberStart; $this->invoiceNumberStart = $invoiceNumberStart;
} }
public function getCancelationNumberPattern(): ?string public function getCancelationNumberPattern(): null|string
{ {
return $this->cancelationNumberPattern; return $this->cancelationNumberPattern;
} }
public function setCancelationNumberPattern(?string $cancelationNumberPattern): void public function setCancelationNumberPattern(null|string $cancelationNumberPattern): void
{ {
$this->cancelationNumberPattern = $cancelationNumberPattern; $this->cancelationNumberPattern = $cancelationNumberPattern;
} }
@ -573,12 +574,12 @@ class Instance implements UserInterface
$this->cancelationNumberStart = $cancelationNumberStart; $this->cancelationNumberStart = $cancelationNumberStart;
} }
public function getCreditNumberPattern(): ?string public function getCreditNumberPattern(): null|string
{ {
return $this->creditNumberPattern; return $this->creditNumberPattern;
} }
public function setCreditNumberPattern(?string $creditNumberPattern): void public function setCreditNumberPattern(null|string $creditNumberPattern): void
{ {
$this->creditNumberPattern = $creditNumberPattern; $this->creditNumberPattern = $creditNumberPattern;
} }
@ -593,12 +594,12 @@ class Instance implements UserInterface
$this->creditNumberStart = $creditNumberStart; $this->creditNumberStart = $creditNumberStart;
} }
public function getParcelInvoiceNumberPattern(): ?string public function getParcelInvoiceNumberPattern(): null|string
{ {
return $this->parcelInvoiceNumberPattern; return $this->parcelInvoiceNumberPattern;
} }
public function setParcelInvoiceNumberPattern(?string $parcelInvoiceNumberPattern): void public function setParcelInvoiceNumberPattern(null|string $parcelInvoiceNumberPattern): void
{ {
$this->parcelInvoiceNumberPattern = $parcelInvoiceNumberPattern; $this->parcelInvoiceNumberPattern = $parcelInvoiceNumberPattern;
} }
@ -613,12 +614,12 @@ class Instance implements UserInterface
$this->parcelInvoiceNumberStart = $parcelInvoiceNumberStart; $this->parcelInvoiceNumberStart = $parcelInvoiceNumberStart;
} }
public function getParcelCancelationNumberPattern(): ?string public function getParcelCancelationNumberPattern(): null|string
{ {
return $this->parcelCancelationNumberPattern; return $this->parcelCancelationNumberPattern;
} }
public function setParcelCancelationNumberPattern(?string $parcelCancelationNumberPattern): void public function setParcelCancelationNumberPattern(null|string $parcelCancelationNumberPattern): void
{ {
$this->parcelCancelationNumberPattern = $parcelCancelationNumberPattern; $this->parcelCancelationNumberPattern = $parcelCancelationNumberPattern;
} }
@ -632,18 +633,18 @@ class Instance implements UserInterface
{ {
$this->parcelCancelationNumberStart = $parcelCancelationNumberStart; $this->parcelCancelationNumberStart = $parcelCancelationNumberStart;
} }
public function getRoles(): array public function getRoles(): array
{ {
return ['ROLE_API']; return ['ROLE_API'];
} }
public function eraseCredentials()
public function eraseCredentials(): void
{ {
} }
public function getUserIdentifier(): string public function getUserIdentifier(): string
{ {
return $this->id; return $this->id;
} }
} }

View File

@ -328,7 +328,7 @@ class Contact implements UserInterface, PasswordAuthenticatedUserInterface, \Ser
* *
* @return void * @return void
*/ */
public function eraseCredentials() public function eraseCredentials(): void
{ {
//$this->setPassword(""); //$this->setPassword("");
} }

View File

@ -3,6 +3,7 @@
namespace PSC\Shop\EntityBundle\Generator; namespace PSC\Shop\EntityBundle\Generator;
use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Id\AbstractIdGenerator; use Doctrine\ORM\Id\AbstractIdGenerator;
/** /**
@ -21,4 +22,9 @@ class UuidGenerator extends AbstractIdGenerator
{ {
return \Ramsey\Uuid\Uuid::uuid4(); return \Ramsey\Uuid\Uuid::uuid4();
} }
public function generateId(EntityManagerInterface $em, null|object $entity): mixed
{
return \Ramsey\Uuid\Uuid::uuid4();
}
} }

View File

@ -42,7 +42,7 @@ class IdToMediaTransformer implements DataTransformerInterface
* @throws UnexpectedTypeException when the argument is not an object * @throws UnexpectedTypeException when the argument is not an object
* @throws \InvalidArgumentException when the parameter is a collection * @throws \InvalidArgumentException when the parameter is a collection
*/ */
public function transform($entity) public function transform(mixed $entity): mixed
{ {
if (empty($entity)) { if (empty($entity)) {
return ''; return '';
@ -50,7 +50,7 @@ class IdToMediaTransformer implements DataTransformerInterface
if (strlen($entity) > 30) { if (strlen($entity) > 30) {
return [ return [
'id' => $entity 'id' => $entity,
]; ];
} }
@ -63,32 +63,24 @@ class IdToMediaTransformer implements DataTransformerInterface
if ($entity) { if ($entity) {
return [ return [
'ent' => $entity, 'ent' => $entity,
'id' => $entity->getId() 'id' => $entity->getId(),
]; ];
} }
return ''; return '';
} }
/** public function reverseTransform(mixed $key): mixed
* @param string $key
*
* @return Media
*
* @throws UnexpectedTypeException when the parameter is not numeric
* @throws TransformationFailedException when the media item cannot be loaded/found
*/
public function reverseTransform($key)
{ {
if (empty($key)) { if (empty($key)) {
return null; return null;
} }
/*if (!is_numeric($key)) { /*if (!is_numeric($key)) {
throw new UnexpectedTypeException($key, 'numeric'); * throw new UnexpectedTypeException($key, 'numeric');
}*/ * }*/
/*if (!($entity = $this->objectManager->getRepository('KunstmaanMediaBundle:Media')->find($key))) { /*if (!($entity = $this->objectManager->getRepository('KunstmaanMediaBundle:Media')->find($key))) {
throw new TransformationFailedException(sprintf('The entity with key "%s" could not be found', $key)); * throw new TransformationFailedException(sprintf('The entity with key "%s" could not be found', $key));
}*/ * }*/
//$this->currentValueContainer->setCurrentValue($entity); //$this->currentValueContainer->setCurrentValue($entity);
//return $entity; //return $entity;

View File

@ -4,9 +4,9 @@ namespace PSC\Shop\MediaBundle\Form\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
/** /**
@ -14,44 +14,31 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
*/ */
class ImageType extends HiddenType class ImageType extends HiddenType
{ {
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
parent::buildForm($builder, $options); parent::buildForm($builder, $options);
} }
/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options) public function buildView(FormView $view, FormInterface $form, array $options)
{ {
parent::buildView($view, $form, $options); parent::buildView($view, $form, $options);
} }
/**
* {@inheritdoc} public function configureOptions(OptionsResolver $resolver): void
*/
public function configureOptions(OptionsResolver $resolver)
{ {
parent::configureOptions($resolver); parent::configureOptions($resolver);
} }
/**
* {@inheritdoc}
*/
public function getParent() public function getParent()
{ {
return HiddenType::class; return HiddenType::class;
} }
/**
* {@inheritdoc}
*/
public function getName(): string public function getName(): string
{ {
return $this->getBlockPrefix(); return $this->getBlockPrefix();
} }
/**
* {@inheritdoc}
*/
public function getBlockPrefix(): string public function getBlockPrefix(): string
{ {
return 'media_image'; return 'media_image';

View File

@ -28,7 +28,7 @@ class PSCShopMediaBundle extends Bundle
/** /**
* @param ContainerBuilder $container A ContainerBuilder instance * @param ContainerBuilder $container A ContainerBuilder instance
*/ */
public function build(ContainerBuilder $container) public function build(ContainerBuilder $container): void
{ {
parent::build($container); parent::build($container);
$container->addCompilerPass(new MediaHandlerCompilerPass()); $container->addCompilerPass(new MediaHandlerCompilerPass());

View File

@ -1,9 +1,9 @@
psc_shop_media_backend: psc_shop_media_backend:
resource: "@PSCShopMediaBundle/Controller/Backend" resource: "@PSCShopMediaBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/media prefix: /backend/media
psc_shop_media_api: psc_shop_media_api:
resource: "@PSCShopMediaBundle/Api" resource: "@PSCShopMediaBundle/Api"
prefix: /api/media prefix: /api/media
type: annotation type: attribute

View File

@ -1,4 +1,4 @@
psc_shop_news_backend: psc_shop_news_backend:
resource: "@PSCShopNewsBundle/Controller/Backend" resource: "@PSCShopNewsBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/news prefix: /backend/news

View File

@ -2,7 +2,6 @@
namespace PSC\Shop\OrderBundle\Normalizer; namespace PSC\Shop\OrderBundle\Normalizer;
use BadMethodCallException; use BadMethodCallException;
use PSC\Shop\OrderBundle\Model\Order\Position\IProductTypeObject; use PSC\Shop\OrderBundle\Model\Order\Position\IProductTypeObject;
use PSC\System\PluginBundle\Service\ProductType; use PSC\System\PluginBundle\Service\ProductType;
@ -12,7 +11,6 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
class SpecialProductDenormalizer implements DenormalizerInterface, DenormalizerAwareInterface class SpecialProductDenormalizer implements DenormalizerInterface, DenormalizerAwareInterface
{ {
use DenormalizerAwareTrait; use DenormalizerAwareTrait;
private ProductType $productRegistry; private ProductType $productRegistry;
@ -22,20 +20,30 @@ class SpecialProductDenormalizer implements DenormalizerInterface, DenormalizerA
$this->productRegistry = $productRegistry; $this->productRegistry = $productRegistry;
} }
public function denormalize(mixed $data, string $type, string $format = null, array $context = []) public function denormalize(mixed $data, string $type, null|string $format = null, array $context = []): mixed
{ {
if($type = $this->productRegistry->getProductType($data['typ'])->getProductTypeObject()) { if ($type = $this->productRegistry->getProductType($data['typ'])->getProductTypeObject()) {
return $this->denormalizer->denormalize($data, $type::class, $format, $context); return $this->denormalizer->denormalize($data, $type::class, $format, $context);
} }
} }
public function supportsDenormalization(mixed $data, string $type, string $format = null): bool public function supportsDenormalization(
{ mixed $data,
string $type,
null|string $format = null,
array $context = [],
): bool {
if (null === $this->denormalizer) { if (null === $this->denormalizer) {
throw new BadMethodCallException(sprintf('The nested denormalizer needs to be set to allow "%s()" to be used.', __METHOD__)); throw new BadMethodCallException(sprintf(
'The nested denormalizer needs to be set to allow "%s()" to be used.',
__METHOD__,
));
} }
return $type == IProductTypeObject::class; return $type == IProductTypeObject::class;
} }
public function getSupportedTypes(null|string $format): array
{
}
} }

View File

@ -1,10 +1,10 @@
psc_shop_order_backend: psc_shop_order_backend:
resource: "@PSCShopOrderBundle/Controller/Backend" resource: "@PSCShopOrderBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/order prefix: /backend/order
psc_shop_order_api: psc_shop_order_api:
resource: "@PSCShopOrderBundle/Api" resource: "@PSCShopOrderBundle/Api"
prefix: /api prefix: /api
type: annotation type: attribute

View File

@ -8,7 +8,7 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 00-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 00-16.536-1.84M7.5 14.25L5.106 5.272M6 20.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm12.75 0a.75.75 0 11-1.5 0 .75.75 0 011.5 0z" /> <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 00-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 00-16.536-1.84M7.5 14.25L5.106 5.272M6 20.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm12.75 0a.75.75 0 11-1.5 0 .75.75 0 011.5 0z" />
</svg> </svg>
{{'order'|trans}} <span class="text-gray-500">{{'list'|trans}}</span> {{'order'|trans}} <span class="text-gray-500">{{'List'|trans}}</span>
</h1> </h1>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,14 +1,14 @@
psc_shop_payment_backend: psc_shop_payment_backend:
resource: "@PSCShopPaymentBundle/Controller/Backend" resource: "@PSCShopPaymentBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/payment prefix: /backend/payment
psc_shop_payment_frontend: psc_shop_payment_frontend:
resource: "@PSCShopPaymentBundle/Controller/Frontend" resource: "@PSCShopPaymentBundle/Controller/Frontend"
type: annotation type: attribute
prefix: /payment prefix: /payment
psc_shop_payment_api: psc_shop_payment_api:
resource: "@PSCShopPaymentBundle/Api" resource: "@PSCShopPaymentBundle/Api"
type: annotation type: attribute
prefix: /api/payment prefix: /api/payment

View File

@ -1,59 +1,81 @@
{% extends 'backend_base.html.twig' %} {% extends 'backend_tailwind_base.html.twig' %}
{% trans_default_domain 'core_payment_list' %} {% trans_default_domain 'core_payment_list' %}
{% block header %}
<div class="flex flex-wrap items-center gap-4 justify-between w-full">
<div>
<h1 class="text-psc text-2xl font-medium flex flex-row gap-1">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5z" />
</svg>
{{'paymentmethods'|trans}} <span class="text-gray-500">{{'List'|trans}}</span>
</h1>
</div>
<div class="flex flex-wrap items-center gap-4 justify-end shrink-0 ml-auto">
<a href="{{ path("psc_shop_payment_backend_create") }}" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-sm px-4 text-sm text-white shadow-lg bg-psc-500 hover:bg-psc-600 hover:ring-2 hover:ring-psc-500 hover:ring-offset-2 min-h-[2.25rem]">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="button-icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15" />
</svg>
{{'Addpaymentmethod'|trans}}
</a>
</div>
</div>
{% endblock %}
{% block body %} {% block body %}
<div class="header"> <div class="flex flex-col gap-6">
<div class="row"> <div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <div class="overflow-x-auto">
<h3> <table class="min-w-full text-sm">
<i class="fa-fw fa fa-credit-card"></i> <thead class="bg-slate-100 border-t border-stroke">
{{'paymentmethods'|trans}} <span>>
{{'List'|trans}} </span>
</h3>
</div>
</div>
</div>
<div class="body">
<div class="panel">
<div class="body">
<a class="btn btn-info btn-sm" href="{{ path("psc_shop_payment_backend_create") }}">{{'Addpaymentmethod'|trans}}</a>
</div>
</div>
<div class="panel">
<div class="body">
<table class="table">
<thead class="thead-dark">
<tr> <tr>
<th>{{ knp_pagination_sortable(pagination, 'Uid'|trans, 'payment.uid') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'Uid'|trans, 'payment.uid') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'active'|trans, 'shipping.enable') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'active'|trans, 'payment.enable') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'Pos'|trans, 'payment.pos') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'Pos'|trans, 'payment.pos') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'Name'|trans, 'payment.title') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'Name'|trans, 'payment.title') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'cost'|trans, 'payment.kosten') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'cost'|trans, 'payment.price') }}</th>
<th></th> <th class="px-2 py-3 text-right font-medium text-gray-700">Aktionen</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for payment in pagination %} {% for payment in pagination %}
<tr {% if loop.index is odd %}class="color"{% endif %}> <tr class="border-t border-stroke hover:bg-gray-50">
<td>{{ payment.uid }}</td> <td class="px-2 py-3 font-medium">{{ payment.uid }}</td>
<td>{% if payment.enable %}<span class="badge bg-success">{{'yes'|trans}}</span>{% else %}<span <td class="px-2 py-3">
class="badge bg-warning">>{{'no'|trans}}</span>{% endif %}</td> {% if payment.enable %}
<td>{{ payment.pos }}</td> <div class="badge-yes">{{'yes'|trans}}</div>
<td>{{ payment.title }}</td> {% else %}
<td>{{ payment.price|number_format(2, ',', '.') }}€</td> <div class="badge-no">{{'no'|trans}}</div>
<td class="text-end"> {% endif %}
<a href="{{ path("psc_shop_payment_backend_edit", {uid: payment.uid}) }}" </td>
class="btn btn-info btn-sm"><span class="fa fa-edit"></span></a> <td class="px-2 py-3">{{ payment.pos }}</td>
<a href="{{ path("psc_shop_payment_backend_delete", {uid: payment.uid}) }}" <td class="px-2 py-3">{{ payment.title }}</td>
class="btn btn-danger btn-sm"><span class="fa fa-trash"></span></a> <td class="px-2 py-3">{{ payment.price|number_format(2, ',', '.') }}€</td>
<td class="px-2 py-3 text-right">
<div class="flex flex-row gap-2 justify-end">
<a href="{{ path("psc_shop_payment_backend_edit", {uid: payment.uid}) }}" class="">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10" />
</svg>
</a>
<a href="{{ path("psc_shop_payment_backend_delete", {uid: payment.uid}) }}" class="">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" />
</svg>
</a>
</div>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
<div class="navigation"> </div>
{{ knp_pagination_render(pagination) }}
</div> <div class="mt-4">
</div> {{ knp_pagination_render(pagination, 'tailwind_pagination.html.twig', {}, {
'sortableTemplate': 'tailwind_sortable.html.twig'
}) }}
</div> </div>
</div> </div>
</div>
{% endblock %} {% endblock %}

View File

@ -1,17 +1,17 @@
psc_shop_products_frontend: psc_shop_products_frontend:
resource: "@PSCShopProductBundle/Controller/Frontend/Product" resource: "@PSCShopProductBundle/Controller/Frontend/Product"
type: annotation type: attribute
prefix: /product prefix: /product
psc_shop_products_backend: psc_shop_products_backend:
resource: "@PSCShopProductBundle/Controller/Backend/Product" resource: "@PSCShopProductBundle/Controller/Backend/Product"
type: annotation type: attribute
prefix: /backend/product prefix: /backend/product
psc_shop_products_api: psc_shop_products_api:
resource: "@PSCShopProductBundle/Api" resource: "@PSCShopProductBundle/Api"
prefix: /api prefix: /api
type: annotation type: attribute
psc_shop_productgroup_backend: psc_shop_productgroup_backend:
resource: "@PSCShopProductBundle/Controller/Backend/Productgroup" resource: "@PSCShopProductBundle/Controller/Backend/Productgroup"
type: annotation type: attribute
prefix: /backend/productgroup prefix: /backend/productgroup

View File

@ -58,8 +58,18 @@ class DoEveryDayCommand extends Command
private Log $logService; private Log $logService;
private iterable $internalQueues; private iterable $internalQueues;
public function __construct(#[TaggedIterator('psc.queues.internal')] iterable $internalQueues, EntityManagerInterface $entityManager, Manager $eventManager, Registry $eventRegistry, \PSC\Shop\QueueBundle\Service\Queue\Registry $queueRegistry, DocumentManager $documentManager, KernelInterface $kernel, Log $logService, private readonly \Symfony\Component\DependencyInjection\ContainerInterface $containerService) public function __construct(
{ #[TaggedIterator('psc.queues.internal')]
iterable $internalQueues,
EntityManagerInterface $entityManager,
Manager $eventManager,
Registry $eventRegistry,
\PSC\Shop\QueueBundle\Service\Queue\Registry $queueRegistry,
DocumentManager $documentManager,
KernelInterface $kernel,
Log $logService,
private readonly \Symfony\Component\DependencyInjection\ContainerInterface $containerService,
) {
$this->eventManager = $eventManager; $this->eventManager = $eventManager;
$this->eventRegistry = $eventRegistry; $this->eventRegistry = $eventRegistry;
$this->queueRegistry = $queueRegistry; $this->queueRegistry = $queueRegistry;
@ -75,11 +85,10 @@ class DoEveryDayCommand extends Command
protected function configure() protected function configure()
{ {
$this $this->setDescription('Run the Jobs');
->setDescription('Run the Jobs');
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$store = new FlockStore(); $store = new FlockStore();
$factory = new LockFactory($store); $factory = new LockFactory($store);
@ -91,13 +100,11 @@ class DoEveryDayCommand extends Command
$queue->execute(); $queue->execute();
} }
$queues = $this->mongoDb $queues = $this->mongoDb->getRepository('PSC\Shop\EntityBundle\Document\Queue')->findBy(
->getRepository('PSC\Shop\EntityBundle\Document\Queue') ['eventType' => 'system_plugin_every_day', 'active' => true],
->findBy(
array('eventType' => 'system_plugin_every_day', 'active' => true),
[ [
'pos' => 'ASC' 'pos' => 'ASC',
] ],
); );
/** /**
@ -108,14 +115,21 @@ class DoEveryDayCommand extends Command
try { try {
$success = $queueObj->execute(new EveryRun(), $queue); $success = $queueObj->execute(new EveryRun(), $queue);
} catch (\Exception $exception) { } catch (\Exception $exception) {
$this->logService->createLogEntry(new Shop(), LogEntry::ERROR, "Cron", "", $exception->getMessage(), []); $this->logService->createLogEntry(
new Shop(),
LogEntry::ERROR,
'Cron',
'',
$exception->getMessage(),
[],
);
} }
} }
$this->eventManager->clearManager(); $this->eventManager->clearManager();
} }
date_default_timezone_set('Europe/Berlin'); date_default_timezone_set('Europe/Berlin');
$output->writeln("Successfully ".date('Y-m-d H:i:s')); $output->writeln('Successfully ' . date('Y-m-d H:i:s'));
return 0; return 0;
} }

View File

@ -58,8 +58,18 @@ class DoEveryHourCommand extends Command
private Log $logService; private Log $logService;
private iterable $internalQueues; private iterable $internalQueues;
public function __construct(#[TaggedIterator('psc.queues.internal')] iterable $internalQueues, EntityManagerInterface $entityManager, Manager $eventManager, Registry $eventRegistry, \PSC\Shop\QueueBundle\Service\Queue\Registry $queueRegistry, DocumentManager $documentManager, KernelInterface $kernel, Log $logService, private readonly \Symfony\Component\DependencyInjection\ContainerInterface $containerService) public function __construct(
{ #[TaggedIterator('psc.queues.internal')]
iterable $internalQueues,
EntityManagerInterface $entityManager,
Manager $eventManager,
Registry $eventRegistry,
\PSC\Shop\QueueBundle\Service\Queue\Registry $queueRegistry,
DocumentManager $documentManager,
KernelInterface $kernel,
Log $logService,
private readonly \Symfony\Component\DependencyInjection\ContainerInterface $containerService,
) {
$this->eventManager = $eventManager; $this->eventManager = $eventManager;
$this->eventRegistry = $eventRegistry; $this->eventRegistry = $eventRegistry;
$this->queueRegistry = $queueRegistry; $this->queueRegistry = $queueRegistry;
@ -75,11 +85,10 @@ class DoEveryHourCommand extends Command
protected function configure() protected function configure()
{ {
$this $this->setDescription('Run the Jobs');
->setDescription('Run the Jobs');
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$store = new FlockStore(); $store = new FlockStore();
$factory = new LockFactory($store); $factory = new LockFactory($store);
@ -91,13 +100,11 @@ class DoEveryHourCommand extends Command
$queue->execute(); $queue->execute();
} }
$queues = $this->mongoDb $queues = $this->mongoDb->getRepository('PSC\Shop\EntityBundle\Document\Queue')->findBy(
->getRepository('PSC\Shop\EntityBundle\Document\Queue') ['eventType' => 'system_plugin_every_hour', 'active' => true],
->findBy(
array('eventType' => 'system_plugin_every_hour', 'active' => true),
[ [
'pos' => 'ASC' 'pos' => 'ASC',
] ],
); );
/** /**
@ -108,7 +115,14 @@ class DoEveryHourCommand extends Command
try { try {
$success = $queueObj->execute(new EveryRun(), $queue); $success = $queueObj->execute(new EveryRun(), $queue);
} catch (\Exception $exception) { } catch (\Exception $exception) {
$this->logService->createLogEntry(new Shop(), LogEntry::ERROR, "Cron", "", $exception->getMessage(), []); $this->logService->createLogEntry(
new Shop(),
LogEntry::ERROR,
'Cron',
'',
$exception->getMessage(),
[],
);
} }
} }
$this->eventManager->clearManager(); $this->eventManager->clearManager();
@ -122,6 +136,7 @@ class DoEveryHourCommand extends Command
if ($event instanceof ClearCache) { if ($event instanceof ClearCache) {
$fs = new Filesystem(); $fs = new Filesystem();
//$fs->remove($this->kernel->getCacheDir()); //$fs->remove($this->kernel->getCacheDir());
} elseif ($event instanceof InstallPlugin) { } elseif ($event instanceof InstallPlugin) {
$event->setData($job->getData()); $event->setData($job->getData());
@ -131,11 +146,10 @@ class DoEveryHourCommand extends Command
$plugin = $this->mongoDb $plugin = $this->mongoDb
->getRepository(Plugin::class) ->getRepository(Plugin::class)
->findOneBy(array('id' => (string)$event->getPlugin())); ->findOneBy(['id' => (string) $event->getPlugin()]);
$plugin->setShouldBeInstalled(false); $plugin->setShouldBeInstalled(false);
$this->mongoDb->persist($plugin); $this->mongoDb->persist($plugin);
} elseif ($event instanceof DeInstallPlugin) { } elseif ($event instanceof DeInstallPlugin) {
$event->setData($job->getData()); $event->setData($job->getData());
$event->setShop($job->getShop()); $event->setShop($job->getShop());
@ -144,12 +158,11 @@ class DoEveryHourCommand extends Command
$plugin = $this->mongoDb $plugin = $this->mongoDb
->getRepository(Plugin::class) ->getRepository(Plugin::class)
->findOneBy(array('id' => (string)$event->getPlugin())); ->findOneBy(['id' => (string) $event->getPlugin()]);
$plugin->setInstalled(false); $plugin->setInstalled(false);
$plugin->setShouldBeDeInstalled(false); $plugin->setShouldBeDeInstalled(false);
$this->mongoDb->persist($plugin); $this->mongoDb->persist($plugin);
} elseif ($event instanceof InternalEvent) { } elseif ($event instanceof InternalEvent) {
$event->setData($job->getData()); $event->setData($job->getData());
$event->setShop($job->getShop()); $event->setShop($job->getShop());
@ -157,20 +170,17 @@ class DoEveryHourCommand extends Command
$event->setData($job->getData()); $event->setData($job->getData());
$event->setShop($job->getShop()); $event->setShop($job->getShop());
$queues = $this->mongoDb $queues = $this->mongoDb->getRepository(Queue::class)->findBy(
->getRepository(Queue::class) [
->findBy(
array(
'shop' => $job->getShop(), 'shop' => $job->getShop(),
'active' => true, 'active' => true,
'eventType' => $job->getEvent() 'eventType' => $job->getEvent(),
), ],
[ [
'pos' => 'ASC' 'pos' => 'ASC',
] ],
); );
/** /**
* @var Queue $queue * @var Queue $queue
*/ */
@ -184,20 +194,20 @@ class DoEveryHourCommand extends Command
/** /**
* @var JobLog $jobLog * @var JobLog $jobLog
*/ */
$jobLog = $this->mongoDb->getRepository(JobLog::class)->findOneBy( $jobLog = $this->mongoDb
[ ->getRepository(JobLog::class)
->findOneBy([
'job' => $job->getId(), 'job' => $job->getId(),
'queue' => $queue->getId() 'queue' => $queue->getId(),
] ]);
);
if ($jobLog) { if ($jobLog) {
if ($jobLog->getError() == "") { if ($jobLog->getError() == '') {
continue; continue;
} }
$jobLog->incCount(); $jobLog->incCount();
if ($jobLog->getCount() > 2 && $jobLog->getError() != "") { if ($jobLog->getCount() > 2 && $jobLog->getError() != '') {
$canBeRemoved = false; $canBeRemoved = false;
continue; continue;
} }
@ -214,7 +224,7 @@ class DoEveryHourCommand extends Command
$canBeRemoved = false; $canBeRemoved = false;
$jobLog->setError($queueObj->getError()); $jobLog->setError($queueObj->getError());
} else { } else {
$jobLog->setError(""); $jobLog->setError('');
} }
$this->mongoDb->persist($jobLog); $this->mongoDb->persist($jobLog);
$this->mongoDb->flush(); $this->mongoDb->flush();
@ -236,12 +246,16 @@ class DoEveryHourCommand extends Command
} }
if (count($this->eventManager->getAll()) == 0) { if (count($this->eventManager->getAll()) == 0) {
$this->mongoDb->createQueryBuilder(JobLog::class)->remove()->getQuery()->execute(); $this->mongoDb
->createQueryBuilder(JobLog::class)
->remove()
->getQuery()
->execute();
} }
} }
date_default_timezone_set('Europe/Berlin'); date_default_timezone_set('Europe/Berlin');
$output->writeln("Successfully ".date('Y-m-d H:i:s')); $output->writeln('Successfully ' . date('Y-m-d H:i:s'));
return 0; return 0;
} }

View File

@ -58,8 +58,18 @@ class DoEveryMinuteCommand extends Command
private Log $logService; private Log $logService;
private iterable $internalQueues; private iterable $internalQueues;
public function __construct(#[TaggedIterator('psc.queues.internal')] iterable $internalQueues, EntityManagerInterface $entityManager, Manager $eventManager, Registry $eventRegistry, \PSC\Shop\QueueBundle\Service\Queue\Registry $queueRegistry, DocumentManager $documentManager, KernelInterface $kernel, Log $logService, private readonly \Symfony\Component\DependencyInjection\ContainerInterface $containerService) public function __construct(
{ #[TaggedIterator('psc.queues.internal')]
iterable $internalQueues,
EntityManagerInterface $entityManager,
Manager $eventManager,
Registry $eventRegistry,
\PSC\Shop\QueueBundle\Service\Queue\Registry $queueRegistry,
DocumentManager $documentManager,
KernelInterface $kernel,
Log $logService,
private readonly \Symfony\Component\DependencyInjection\ContainerInterface $containerService,
) {
$this->eventManager = $eventManager; $this->eventManager = $eventManager;
$this->eventRegistry = $eventRegistry; $this->eventRegistry = $eventRegistry;
$this->queueRegistry = $queueRegistry; $this->queueRegistry = $queueRegistry;
@ -75,11 +85,10 @@ class DoEveryMinuteCommand extends Command
protected function configure() protected function configure()
{ {
$this $this->setDescription('Run the Jobs');
->setDescription('Run the Jobs');
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$store = new FlockStore(); $store = new FlockStore();
$factory = new LockFactory($store); $factory = new LockFactory($store);
@ -91,13 +100,11 @@ class DoEveryMinuteCommand extends Command
$queue->execute(); $queue->execute();
} }
$queues = $this->mongoDb $queues = $this->mongoDb->getRepository('PSC\Shop\EntityBundle\Document\Queue')->findBy(
->getRepository('PSC\Shop\EntityBundle\Document\Queue') ['eventType' => 'system_plugin_every_run', 'active' => true],
->findBy(
array('eventType' => 'system_plugin_every_run', 'active' => true),
[ [
'pos' => 'ASC' 'pos' => 'ASC',
] ],
); );
/** /**
@ -108,7 +115,14 @@ class DoEveryMinuteCommand extends Command
try { try {
$success = $queueObj->execute(new EveryRun(), $queue); $success = $queueObj->execute(new EveryRun(), $queue);
} catch (\Exception $exception) { } catch (\Exception $exception) {
$this->logService->createLogEntry(new Shop(), LogEntry::ERROR, "Cron", "", $exception->getMessage(), []); $this->logService->createLogEntry(
new Shop(),
LogEntry::ERROR,
'Cron',
'',
$exception->getMessage(),
[],
);
} }
} }
$this->eventManager->clearManager(); $this->eventManager->clearManager();
@ -122,6 +136,7 @@ class DoEveryMinuteCommand extends Command
if ($event instanceof ClearCache) { if ($event instanceof ClearCache) {
$fs = new Filesystem(); $fs = new Filesystem();
//$fs->remove($this->kernel->getCacheDir()); //$fs->remove($this->kernel->getCacheDir());
} elseif ($event instanceof InstallPlugin) { } elseif ($event instanceof InstallPlugin) {
$event->setData($job->getData()); $event->setData($job->getData());
@ -131,11 +146,10 @@ class DoEveryMinuteCommand extends Command
$plugin = $this->mongoDb $plugin = $this->mongoDb
->getRepository(Plugin::class) ->getRepository(Plugin::class)
->findOneBy(array('id' => (string)$event->getPlugin())); ->findOneBy(['id' => (string) $event->getPlugin()]);
$plugin->setShouldBeInstalled(false); $plugin->setShouldBeInstalled(false);
$this->mongoDb->persist($plugin); $this->mongoDb->persist($plugin);
} elseif ($event instanceof DeInstallPlugin) { } elseif ($event instanceof DeInstallPlugin) {
$event->setData($job->getData()); $event->setData($job->getData());
$event->setShop($job->getShop()); $event->setShop($job->getShop());
@ -144,12 +158,11 @@ class DoEveryMinuteCommand extends Command
$plugin = $this->mongoDb $plugin = $this->mongoDb
->getRepository(Plugin::class) ->getRepository(Plugin::class)
->findOneBy(array('id' => (string)$event->getPlugin())); ->findOneBy(['id' => (string) $event->getPlugin()]);
$plugin->setInstalled(false); $plugin->setInstalled(false);
$plugin->setShouldBeDeInstalled(false); $plugin->setShouldBeDeInstalled(false);
$this->mongoDb->persist($plugin); $this->mongoDb->persist($plugin);
} elseif ($event instanceof InternalEvent) { } elseif ($event instanceof InternalEvent) {
$event->setData($job->getData()); $event->setData($job->getData());
$event->setShop($job->getShop()); $event->setShop($job->getShop());
@ -157,20 +170,17 @@ class DoEveryMinuteCommand extends Command
$event->setData($job->getData()); $event->setData($job->getData());
$event->setShop($job->getShop()); $event->setShop($job->getShop());
$queues = $this->mongoDb $queues = $this->mongoDb->getRepository(Queue::class)->findBy(
->getRepository(Queue::class) [
->findBy(
array(
'shop' => $job->getShop(), 'shop' => $job->getShop(),
'active' => true, 'active' => true,
'eventType' => $job->getEvent() 'eventType' => $job->getEvent(),
), ],
[ [
'pos' => 'ASC' 'pos' => 'ASC',
] ],
); );
/** /**
* @var Queue $queue * @var Queue $queue
*/ */
@ -184,20 +194,20 @@ class DoEveryMinuteCommand extends Command
/** /**
* @var JobLog $jobLog * @var JobLog $jobLog
*/ */
$jobLog = $this->mongoDb->getRepository(JobLog::class)->findOneBy( $jobLog = $this->mongoDb
[ ->getRepository(JobLog::class)
->findOneBy([
'job' => $job->getId(), 'job' => $job->getId(),
'queue' => $queue->getId() 'queue' => $queue->getId(),
] ]);
);
if ($jobLog) { if ($jobLog) {
if ($jobLog->getError() == "") { if ($jobLog->getError() == '') {
continue; continue;
} }
$jobLog->incCount(); $jobLog->incCount();
if ($jobLog->getCount() > 2 && $jobLog->getError() != "") { if ($jobLog->getCount() > 2 && $jobLog->getError() != '') {
$canBeRemoved = false; $canBeRemoved = false;
continue; continue;
} }
@ -214,7 +224,7 @@ class DoEveryMinuteCommand extends Command
$canBeRemoved = false; $canBeRemoved = false;
$jobLog->setError($queueObj->getError()); $jobLog->setError($queueObj->getError());
} else { } else {
$jobLog->setError(""); $jobLog->setError('');
} }
$this->mongoDb->persist($jobLog); $this->mongoDb->persist($jobLog);
$this->mongoDb->flush(); $this->mongoDb->flush();
@ -236,12 +246,16 @@ class DoEveryMinuteCommand extends Command
} }
if (count($this->eventManager->getAll()) == 0) { if (count($this->eventManager->getAll()) == 0) {
$this->mongoDb->createQueryBuilder(JobLog::class)->remove()->getQuery()->execute(); $this->mongoDb
->createQueryBuilder(JobLog::class)
->remove()
->getQuery()
->execute();
} }
} }
date_default_timezone_set('Europe/Berlin'); date_default_timezone_set('Europe/Berlin');
$output->writeln("Successfully ".date('Y-m-d H:i:s')); $output->writeln('Successfully ' . date('Y-m-d H:i:s'));
return 0; return 0;
} }

View File

@ -1,5 +1,5 @@
psc_shop_queue_backend: psc_shop_queue_backend:
resource: "@PSCShopQueueBundle/Controller/Backend" resource: "@PSCShopQueueBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/queue prefix: /backend/queue

View File

@ -1,14 +1,14 @@
psc_shop_settings_json: psc_shop_settings_json:
resource: "@PSCShopSettingsBundle/Controller/Json" resource: "@PSCShopSettingsBundle/Controller/Json"
type: annotation type: attribute
prefix: / prefix: /
psc_shop_settings_backend: psc_shop_settings_backend:
resource: "@PSCShopSettingsBundle/Controller/Backend" resource: "@PSCShopSettingsBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/shop/settings prefix: /backend/shop/settings
psc_shop_settings_country_api: psc_shop_settings_country_api:
resource: "@PSCShopSettingsBundle/Api" resource: "@PSCShopSettingsBundle/Api"
prefix: /api prefix: /api
type: annotation type: attribute

View File

@ -23,30 +23,16 @@ use Symfony\Component\HttpFoundation\JsonResponse;
class CreateCommand extends Command class CreateCommand extends Command
{ {
protected function configure() protected function configure(): void
{ {
$this $this->setName('service:shipping:create')
->setName('service:shipping:create')
->setDescription('Create Shippment PDF') ->setDescription('Create Shippment PDF')
->addArgument( ->addArgument('type', InputArgument::REQUIRED, 'Typ')
'type', ->addArgument('order', InputArgument::REQUIRED, 'Auftrag')
InputArgument::REQUIRED, ->addArgument('file', InputArgument::REQUIRED, 'File');
'Typ'
)
->addArgument(
'order',
InputArgument::REQUIRED,
'Auftrag'
)
->addArgument(
'file',
InputArgument::REQUIRED,
'File'
)
;
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$type = $input->getArgument('type'); $type = $input->getArgument('type');
$orderUuid = $input->getArgument('order'); $orderUuid = $input->getArgument('order');
@ -63,24 +49,25 @@ class CreateCommand extends Command
$provider = $registry->get($type); $provider = $registry->get($type);
/** @var Order $order */ /** @var Order $order */
$order = $this->getContainer()->get('doctrine.orm.entity_manager') $order = $this->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('PSC\Shop\EntityBundle\Entity\Order') ->getRepository('PSC\Shop\EntityBundle\Entity\Order')
->findOneBy(array('uuid' => $orderUuid)); ->findOneBy(['uuid' => $orderUuid]);
/** @var Shop $shopEntity */ /** @var Shop $shopEntity */
$shopEntity = $order->getShop(); $shopEntity = $order->getShop();
/** @var \PSC\Shop\EntityBundle\Document\Shop $shopDoc */ /** @var \PSC\Shop\EntityBundle\Document\Shop $shopDoc */
$shopDoc = $this->getContainer()->get('doctrine_mongodb') $shopDoc = $this->getContainer()
->get('doctrine_mongodb')
->getRepository('PSC\Shop\EntityBundle\Document\Shop') ->getRepository('PSC\Shop\EntityBundle\Document\Shop')
->findOneBy(array('uid' => $shopEntity->getUID())); ->findOneBy(['uid' => $shopEntity->getUID()]);
/** @var ShippingGatewaysettings $gwSettings */ /** @var ShippingGatewaysettings $gwSettings */
$gwSettings = $this->getContainer()->get('doctrine_mongodb') $gwSettings = $this->getContainer()
->get('doctrine_mongodb')
->getRepository('PSC\Shop\ShippingBundle\Document\ShippingGatewaySettings') ->getRepository('PSC\Shop\ShippingBundle\Document\ShippingGatewaySettings')
->findOneBy(array('shop' => (string)$shopEntity->getId(), 'gatewayType' => $type)); ->findOneBy(['shop' => (string) $shopEntity->getId(), 'gatewayType' => $type]);
$provider->setShopEntity($shopEntity); $provider->setShopEntity($shopEntity);
$provider->setShopDoc($shopDoc); $provider->setShopDoc($shopDoc);
@ -96,5 +83,6 @@ class CreateCommand extends Command
if (isset($data['image'])) { if (isset($data['image'])) {
file_put_contents($file, base64_decode($data['image'])); file_put_contents($file, base64_decode($data['image']));
} }
return 0;
} }
} }

View File

@ -24,7 +24,7 @@ use Symfony\Component\HttpKernel\Bundle\Bundle;
*/ */
class PSCShopShippingBundle extends Bundle class PSCShopShippingBundle extends Bundle
{ {
public function build(ContainerBuilder $container) public function build(ContainerBuilder $container): void
{ {
$container->addCompilerPass(new ShippingProviderPass()); $container->addCompilerPass(new ShippingProviderPass());
} }

View File

@ -1,14 +1,14 @@
psc_shop_shipping_backend: psc_shop_shipping_backend:
resource: "@PSCShopShippingBundle/Controller/Backend" resource: "@PSCShopShippingBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/shipping prefix: /backend/shipping
psc_shop_shipping_service: psc_shop_shipping_service:
resource: "@PSCShopShippingBundle/Controller/Service" resource: "@PSCShopShippingBundle/Controller/Service"
type: annotation type: attribute
prefix: /service/shipping prefix: /service/shipping
psc_shop_shpping_api: psc_shop_shpping_api:
resource: "@PSCShopShippingBundle/Api" resource: "@PSCShopShippingBundle/Api"
type: annotation type: attribute
prefix: /api/shipping prefix: /api/shipping

View File

@ -1,62 +1,89 @@
{% extends 'backend_base.html.twig' %} {% extends 'backend_tailwind_base.html.twig' %}
{% trans_default_domain 'core_shipping_list' %} {% trans_default_domain 'core_shipping_list' %}
{% block header %}
<div class="flex flex-wrap items-center gap-4 justify-between w-full">
<div>
<h1 class="text-psc text-2xl font-medium flex flex-row gap-1">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8">
<path stroke-linecap="round" stroke-linejoin="round" d="M8.25 18.75a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m3 0h6m-9 0H3.375a1.125 1.125 0 01-1.125-1.125V14.25m17.25 4.5a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m3 0h1.125c.621 0 1.129-.504 1.09-1.124a17.902 17.902 0 00-3.213-9.193 2.056 2.056 0 00-1.58-.86H14.25M16.5 18.75h-2.25m0-11.177v-.958c0-.568-.422-1.048-.987-1.106a48.554 48.554 0 00-10.026 0 1.106 1.106 0 00-.987 1.106v7.635m12-6.677v6.677m0 4.5v-4.5m0 0h-12" />
</svg>
{{'shippingmethods'|trans}} <span class="text-gray-500">{{'List'|trans}}</span>
</h1>
</div>
<div class="flex flex-wrap items-center gap-4 justify-end shrink-0 ml-auto">
<a href="{{ path("psc_shop_shipping_backend_create") }}" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-sm px-4 text-sm text-white shadow-lg bg-psc-500 hover:bg-psc-600 hover:ring-2 hover:ring-psc-500 hover:ring-offset-2 min-h-[2.25rem]">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="button-icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15" />
</svg>
{{'Addshippingmethod'|trans}}
</a>
</div>
</div>
{% endblock %}
{% block body %} {% block body %}
<div class="header"> <div class="flex flex-col gap-6">
<div class="row"> <div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <div class="overflow-x-auto">
<h3> <table class="min-w-full text-sm">
<i class="fa-fw fa fa-envelope"></i> <thead class="bg-slate-100 border-t border-stroke">
{{'shippingmethods'|trans}} <span>>
{{'List'|trans}} </span>
</h3>
</div>
</div>
</div>
<div class="body">
<div class="panel">
<div class="body">
<a class="btn btn-info btn-sm" href="{{ path("psc_shop_shipping_backend_create") }}">{{'Addshippingmethod'|trans}}</a>
</div>
</div>
<div class="panel">
<div class="body">
<table class="table">
<thead class="thead-dark">
<tr> <tr>
<th>{{ knp_pagination_sortable(pagination, 'Uid'|trans, 'shipping.uid') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'Uid'|trans, 'shipping.uid') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'active'|trans, 'shipping.enable') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'active'|trans, 'shipping.enable') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'Pos'|trans, 'shipping.pos') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'Pos'|trans, 'shipping.pos') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'Name'|trans, 'shipping.title') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'Name'|trans, 'shipping.title') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'price'|trans, 'shipping.price') }}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'price'|trans, 'shipping.price') }}</th>
<th>{{'Matrix'|trans}}</th> <th class="px-2 py-3 text-left font-medium text-gray-700">{{'Matrix'|trans}}</th>
<th></th> <th class="px-2 py-3 text-right font-medium text-gray-700">Aktionen</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for shipping in pagination %} {% for shipping in pagination %}
<tr {% if loop.index is odd %}class="color"{% endif %}> <tr class="border-t border-stroke hover:bg-gray-50">
<td>{{ shipping.uid }}</td> <td class="px-2 py-3 font-medium">{{ shipping.uid }}</td>
<td>{% if shipping.enable %}<span class="badge bg-success">{{'yes'|trans}}</span>{% else %}<span <td class="px-2 py-3">
class="badge bg-warning">{{'no'|trans}}</span>{% endif %}</td> {% if shipping.enable %}
<td>{{ shipping.pos }}</td> <div class="badge-yes">{{'yes'|trans}}</div>
<td>{{ shipping.title }}</td> {% else %}
<td>{{ shipping.price|number_format(2, ',', '.') }}€</td> <div class="badge-no">{{'no'|trans}}</div>
<td>{% if shipping.matrix != "" %}<span class="badge bg-success">{{'yes'|trans}}</span>{% else %}<span {% endif %}
class="badge bg-warning">{{'no'|trans}}</span>{% endif %}</td> </td>
<td class="text-end"> <td class="px-2 py-3">{{ shipping.pos }}</td>
<a href="{{ path("psc_shop_shipping_backend_edit", {uid: shipping.uid}) }}" <td class="px-2 py-3">{{ shipping.title }}</td>
class="btn btn-info btn-sm"><span class="fa fa-edit"></span></a> <td class="px-2 py-3">{{ shipping.price|number_format(2, ',', '.') }}€</td>
<a href="{{ path("psc_shop_shipping_backend_delete", {uid: shipping.uid}) }}" <td class="px-2 py-3">
class="btn btn-danger btn-sm"><span class="fa fa-trash"></span></a> {% if shipping.matrix != "" %}
<div class="badge-yes">{{'yes'|trans}}</div>
{% else %}
<div class="badge-no">{{'no'|trans}}</div>
{% endif %}
</td>
<td class="px-2 py-3 text-right">
<div class="flex flex-row gap-2 justify-end">
<a href="{{ path("psc_shop_shipping_backend_edit", {uid: shipping.uid}) }}" class="">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10" />
</svg>
</a>
<a href="{{ path("psc_shop_shipping_backend_delete", {uid: shipping.uid}) }}" class="">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" />
</svg>
</a>
</div>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
<div class="navigation"> </div>
{{ knp_pagination_render(pagination) }}
</div> <div class="mt-4">
</div> {{ knp_pagination_render(pagination, 'tailwind_pagination.html.twig', {}, {
'sortableTemplate': 'tailwind_sortable.html.twig'
}) }}
</div> </div>
</div> </div>
</div>
{% endblock %} {% endblock %}

View File

@ -26,8 +26,7 @@ use Symfony\Component\Config\Definition\ConfigurationInterface;
*/ */
class Configuration implements ConfigurationInterface class Configuration implements ConfigurationInterface
{ {
public function getConfigTreeBuilder(): TreeBuilder
public function getConfigTreeBuilder()
{ {
$treeBuilder = new TreeBuilder('psc_shop_theme'); $treeBuilder = new TreeBuilder('psc_shop_theme');
return $treeBuilder; return $treeBuilder;

View File

@ -25,7 +25,7 @@ use Symfony\Component\HttpKernel\Bundle\Bundle;
*/ */
class PSCShopThemeBundle extends Bundle class PSCShopThemeBundle extends Bundle
{ {
public function build(ContainerBuilder $container) public function build(ContainerBuilder $container): void
{ {
parent::build($container); parent::build($container);
$ext = $this->getContainerExtension(); $ext = $this->getContainerExtension();
@ -51,7 +51,7 @@ class PSCShopThemeBundle extends Bundle
} }
} }
public function boot() public function boot(): void
{ {
$this->container->get('psc.shop.theme.source_initializer')->initialize(); $this->container->get('psc.shop.theme.source_initializer')->initialize();
} }

View File

@ -1,4 +1,4 @@
psc_shop_theme_backend: psc_shop_theme_backend:
resource: "@PSCShopThemeBundle/Controller/Backend" resource: "@PSCShopThemeBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/theme prefix: /backend/theme

View File

@ -30,7 +30,7 @@ class PSCShopUserBundle extends Bundle
* *
* @param ContainerBuilder $container Container * @param ContainerBuilder $container Container
*/ */
public function build(ContainerBuilder $container) public function build(ContainerBuilder $container): void
{ {
parent::build($container); parent::build($container);
} }

View File

@ -4,21 +4,20 @@ namespace PSC\Shop\UserBundle\Security\ApiKey;
use Doctrine\ODM\MongoDB\DocumentManager; use Doctrine\ODM\MongoDB\DocumentManager;
use PSC\Shop\EntityBundle\Document\Instance; use PSC\Shop\EntityBundle\Document\Instance;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
class InstanceProvider implements UserProviderInterface class InstanceProvider implements UserProviderInterface
{ {
public function __construct(private DocumentManager $repository) public function __construct(
{ private DocumentManager $repository,
) {}
} public function refreshUser(UserInterface $user): UserInterface
public function refreshUser(UserInterface $user)
{ {
if (!$user instanceof Instance) { if (!($user instanceof Instance)) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user))); throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
} }
@ -27,20 +26,18 @@ class InstanceProvider implements UserProviderInterface
return $refreshedUser; return $refreshedUser;
} }
public function supportsClass($class) public function supportsClass(string $class): bool
{ {
return Instance::class == $class; return Instance::class == $class;
} }
public function loadUserByIdentifier(string $identifier): UserInterface public function loadUserByIdentifier(string $identifier): UserInterface
{ {
$instance = $this->repository $instance = $this->repository
->getRepository(\PSC\Shop\EntityBundle\Document\Instance::class) ->getRepository(\PSC\Shop\EntityBundle\Document\Instance::class)
->findOneBy(['supporttoken' => $identifier]); ->findOneBy(['supporttoken' => $identifier]);
if (null === $instance) { if (null === $instance) {
throw new UserNotFoundException(sprintf('Instance "%s" not found.', $identifier)); throw new UserNotFoundException(sprintf('Instance "%s" not found.', $identifier));
} }

View File

@ -4,21 +4,20 @@ namespace PSC\Shop\UserBundle\Security\ApiKey;
use PSC\Shop\EntityBundle\Entity\Shop; use PSC\Shop\EntityBundle\Entity\Shop;
use PSC\Shop\EntityBundle\Repository\ShopRepository; use PSC\Shop\EntityBundle\Repository\ShopRepository;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
class ShopProvider implements UserProviderInterface class ShopProvider implements UserProviderInterface
{ {
public function __construct(private ShopRepository $repository) public function __construct(
{ private ShopRepository $repository,
) {}
} public function refreshUser(UserInterface $user): UserInterface
public function refreshUser(UserInterface $user)
{ {
if (!$user instanceof Shop) { if (!($user instanceof Shop)) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user))); throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
} }
@ -27,21 +26,16 @@ class ShopProvider implements UserProviderInterface
return $refreshedUser; return $refreshedUser;
} }
/** public function supportsClass(string $class): bool
* {@inheritDoc}
*/
public function supportsClass($class)
{ {
return Shop::class == $class; return Shop::class == $class;
} }
public function loadUserByIdentifier(string $identifier): UserInterface public function loadUserByIdentifier(string $identifier): UserInterface
{ {
$user = $this->repository->getShopByApiKey($identifier); $user = $this->repository->getShopByApiKey($identifier);
if (null === $user) { if (null === $user) {
throw new UserNotFoundException(sprintf('User "%s" not found.', $identifier)); throw new UserNotFoundException(sprintf('User "%s" not found.', $identifier));
} }

View File

@ -21,25 +21,21 @@ use Symfony\Component\Security\Core\User\UserProviderInterface;
class TokenProvider implements UserProviderInterface class TokenProvider implements UserProviderInterface
{ {
public function __construct(private ShopRepository $ShopRepository) public function __construct(
{ private ShopRepository $ShopRepository,
} ) {}
/**
* {@inheritDoc}
*/
public function supportsClass($class): bool public function supportsClass($class): bool
{ {
return $class === $this->class || is_subclass_of($class, $this->class); return $class === $this->class || is_subclass_of($class, $this->class);
} }
public function refreshUser(UserInterface $user) public function refreshUser(UserInterface $user): UserInterface
{ {
} }
public function loadUserByIdentifier(string $identifier): UserInterface public function loadUserByIdentifier(string $identifier): UserInterface
{ {
$accessToken = $this->ShopRepository->findOneBy(['apiKey' => $identifier]); $accessToken = $this->ShopRepository->findOneBy(['apiKey' => $identifier]);
if (null === $accessToken) { if (null === $accessToken) {
throw new BadCredentialsException('Invalid credentials.'); throw new BadCredentialsException('Invalid credentials.');
@ -47,5 +43,4 @@ class TokenProvider implements UserProviderInterface
return new ApiUser($identifier); return new ApiUser($identifier);
} }
} }

View File

@ -4,21 +4,20 @@ namespace PSC\Shop\UserBundle\Security\User;
use PSC\Shop\ContactBundle\Repository\ContactRepository; use PSC\Shop\ContactBundle\Repository\ContactRepository;
use PSC\Shop\EntityBundle\Entity\Contact; use PSC\Shop\EntityBundle\Entity\Contact;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
class UserProvider implements UserProviderInterface class UserProvider implements UserProviderInterface
{ {
public function __construct(private ContactRepository $repository) public function __construct(
{ private ContactRepository $repository,
) {}
} public function refreshUser(UserInterface $user): UserInterface
public function refreshUser(UserInterface $user)
{ {
if (!$user instanceof Contact) { if (!($user instanceof Contact)) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user))); throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
} }
@ -27,10 +26,7 @@ class UserProvider implements UserProviderInterface
return $refreshedUser; return $refreshedUser;
} }
/** public function supportsClass(string $class): bool
* {@inheritDoc}
*/
public function supportsClass($class)
{ {
return Contact::class == $class || is_subclass_of($class, Contact::class); return Contact::class == $class || is_subclass_of($class, Contact::class);
} }

View File

@ -1,4 +1,4 @@
psc_shop_voucher_backend: psc_shop_voucher_backend:
resource: "@PSCShopVoucherBundle/Controller/Backend" resource: "@PSCShopVoucherBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/voucher prefix: /backend/voucher

View File

@ -2,16 +2,10 @@
namespace PSC\System\PluginBundle\Compiler; namespace PSC\System\PluginBundle\Compiler;
use Doctrine\Common\Annotations\AnnotationReader; use Doctrine\ODM\MongoDB\Mapping\Driver\AttributeDriver;
use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
use PSC\System\PluginBundle\Interfaces\Plugin; use PSC\System\PluginBundle\Interfaces\Plugin;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Loader;
class PluginCompiler implements CompilerPassInterface class PluginCompiler implements CompilerPassInterface
{ {
@ -24,12 +18,20 @@ class PluginCompiler implements CompilerPassInterface
$collection = (new \MongoDB\Client('mongodb://mongodb/'))->psc->Plugin; $collection = (new \MongoDB\Client('mongodb://mongodb/'))->psc->Plugin;
} }
$plugins = $collection->find(array('installed' => true)); $plugins = $collection->find(['installed' => true]);
/** /**
* @var Plugin $plugin * @var Plugin $plugin
*/ */
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
$container->get('doctrine_mongodb.odm.default_metadata_driver')->addDriver(new AnnotationDriver(new AnnotationReader(), $container->getParameter('kernel.project_dir') . '/var/plugins/' . $plugin['path'] . '/Document'), $plugin['path']); $container->get('doctrine_mongodb.odm.default_metadata_driver')->addDriver(
new AttributeDriver(
$container->getParameter('kernel.project_dir') .
'/var/plugins/' .
$plugin['path'] .
'/Document'
),
$plugin['path'],
);
} }
} catch (\Exception $e) { } catch (\Exception $e) {
var_dump($e->getMessage()); var_dump($e->getMessage());

View File

@ -35,7 +35,7 @@ use Symfony\Component\DependencyInjection\Loader;
*/ */
class PSCSystemPluginBundle extends Bundle class PSCSystemPluginBundle extends Bundle
{ {
public function build(ContainerBuilder $container) public function build(ContainerBuilder $container): void
{ {
$container->addCompilerPass(new PluginCompiler(), PassConfig::TYPE_BEFORE_OPTIMIZATION); $container->addCompilerPass(new PluginCompiler(), PassConfig::TYPE_BEFORE_OPTIMIZATION);
$container->addCompilerPass(new FormPass()); $container->addCompilerPass(new FormPass());

View File

@ -20,7 +20,7 @@ use Symfony\Component\HttpKernel\Bundle\BundleInterface;
class Base implements BundleInterface class Base implements BundleInterface
{ {
protected $path; protected $path;
protected $namespace ; protected $namespace;
protected $name; protected $name;
protected $defaultInstall = false; protected $defaultInstall = false;
@ -54,7 +54,7 @@ class Base implements BundleInterface
return $this->path; return $this->path;
} }
public function boot() public function boot(): void
{ {
} }
@ -76,24 +76,24 @@ class Base implements BundleInterface
} }
} }
public function getContainerExtension(): ?\Symfony\Component\DependencyInjection\Extension\ExtensionInterface public function getContainerExtension(): null|\Symfony\Component\DependencyInjection\Extension\ExtensionInterface
{ {
return null; return null;
} }
public function build(ContainerBuilder $container) public function build(ContainerBuilder $container): void
{ {
} }
/** /**
* Shutdowns the Bundle. * Shutdowns the Bundle.
*/ */
public function shutdown() public function shutdown(): void
{ {
// TODO: Implement shutdown() method. // TODO: Implement shutdown() method.
} }
public function setContainer(ContainerInterface $container = null) public function setContainer(null|ContainerInterface $container = null): void
{ {
// TODO: Implement setContainer() method. // TODO: Implement setContainer() method.
} }
@ -106,11 +106,13 @@ class Base implements BundleInterface
return $this->defaultInstall; return $this->defaultInstall;
} }
public function getInstallClass(): string { public function getInstallClass(): string
{
return ''; return '';
} }
public function getDeInstallClass(): string { public function getDeInstallClass(): string
{
return ''; return '';
} }
} }

View File

@ -1,4 +1,4 @@
psc_system_plugin_backend: psc_system_plugin_backend:
resource: "@PSCSystemPluginBundle/Controller/Backend" resource: "@PSCSystemPluginBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/plugin prefix: /backend/plugin

View File

@ -15,6 +15,7 @@ use Symfony\Component\Yaml\Yaml;
class PluginRouteLoader extends Loader class PluginRouteLoader extends Loader
{ {
protected $rootDir; protected $rootDir;
/** /**
* DynamicRouteLoader constructor. * DynamicRouteLoader constructor.
* *
@ -24,16 +25,7 @@ class PluginRouteLoader extends Loader
$this->rootDir = $rootDir; $this->rootDir = $rootDir;
} }
/** public function load(mixed $resource, null|string $type = null): mixed
* Loads a resource.
*
* @param mixed $resource The resource
* @param string|null $type The resource type or null if unknown
*
* @return RouteCollection
* @throws \Exception If something went wrong
*/
public function load($resource, $type = null)
{ {
$routes = new RouteCollection(); $routes = new RouteCollection();
try { try {
@ -43,11 +35,14 @@ class PluginRouteLoader extends Loader
$collection = (new \MongoDB\Client('mongodb://mongodb/'))->psc->Plugin; $collection = (new \MongoDB\Client('mongodb://mongodb/'))->psc->Plugin;
} }
$plugins = $collection->find(array('installed' => true)); $plugins = $collection->find(['installed' => true]);
/** @var Plugin $plugin */ /** @var Plugin $plugin */
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
if (file_exists($this->rootDir . '/var/plugins/' . $plugin['path'] . '/Resources/config/routing.yml')) { if (file_exists($this->rootDir . '/var/plugins/' . $plugin['path'] . '/Resources/config/routing.yml')) {
$importedRoutes = $this->import($this->rootDir . '/var/plugins/' . $plugin['path'] . '/Resources/config/routing.yml', 'yaml'); $importedRoutes = $this->import(
$this->rootDir . '/var/plugins/' . $plugin['path'] . '/Resources/config/routing.yml',
'yaml',
);
$routes->addCollection($importedRoutes); $routes->addCollection($importedRoutes);
} }
} }
@ -60,16 +55,8 @@ class PluginRouteLoader extends Loader
return $routes; return $routes;
} }
/** public function supports(mixed $resource, null|string $type = null): bool
* Returns whether this class supports the given resource.
*
* @param mixed $resource A resource
* @param string|null $type The resource type or null if unknown
*
* @return bool True if this class supports the given resource, false otherwise
*/
public function supports($resource, $type = null)
{ {
return ($type == 'plugin'); return $type == 'plugin';
} }
} }

View File

@ -13,32 +13,23 @@ class CreateCommand extends Command
{ {
protected function configure() protected function configure()
{ {
$this $this->setName('application:create')
->setName('application:create')
->setDescription('Creates Application MongoDb') ->setDescription('Creates Application MongoDb')
->addArgument( ->addArgument('uuid', InputArgument::REQUIRED, 'Uuid für die App')
'uuid', ->addArgument('server', InputArgument::REQUIRED, 'Server für die App');
InputArgument::REQUIRED,
'Uuid für die App'
)
->addArgument(
'server',
InputArgument::REQUIRED,
'Server für die App'
)
;
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$uuid = $input->getArgument('uuid'); $uuid = $input->getArgument('uuid');
$server = $input->getArgument('server'); $server = $input->getArgument('server');
$instance = $this->getContainer()->get('doctrine_mongodb') $instance = $this->getContainer()
->get('doctrine_mongodb')
->getRepository(Instance::class) ->getRepository(Instance::class)
->findOneByAppId($uuid); ->findOneByAppId($uuid);
$str = "Found"; $str = 'Found';
if (!$instance) { if (!$instance) {
$instance = new Instance(); $instance = new Instance();
@ -49,7 +40,7 @@ class CreateCommand extends Command
$dm->persist($instance); $dm->persist($instance);
$dm->flush(); $dm->flush();
$str = "Not Found"; $str = 'Not Found';
} else { } else {
$instance->setSyncServer($server); $instance->setSyncServer($server);
@ -59,5 +50,6 @@ class CreateCommand extends Command
} }
$output->writeln($str); $output->writeln($str);
return 0;
} }
} }

View File

@ -1,85 +0,0 @@
<?php
namespace PSC\System\SettingsBundle\Command;
use GuzzleHttp\Client;
use PSC\Shop\EntityBundle\Entity\Domain;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class SyncCommand extends Command
{
protected function configure()
{
$this
->setName('application:settings:sync')
->setDescription('Syncs Ftp')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$instances = $this->getContainer()->get('doctrine_mongodb')
->getRepository(Instance::class)
->findAll();
$client = new Client();
foreach ($instances as $instance) {
$response = $client->post(
$instance->getSyncServer() . '/index.php/json/get/ftp',
array(
'form_params' => array(
'uuid' => $instance->getAppId()
)
)
);
$data = json_decode($response->getBody(), true);
var_dump($data);
if (
isset($data['success']) && $data['success']
&& isset($data['found']) && $data['found']
) {
if (isset($data['ftp'])) {
$instance->setFtpUsername($data['ftp']['username']);
$instance->setFtpPassword($data['ftp']['password']);
}
$dm = $this->getContainer()->get('doctrine_mongodb')->getManager();
$dm->persist($instance);
$dm->flush();
$domains = $this->getContainer()->get('doctrine.orm.entity_manager')
->getRepository('PSC\Shop\EntityBundle\Entity\Domain')->findAll();
$temp = array();
/** @var Domain $domain */
foreach ($domains as $domain) {
$temp[] = array('name' => strtolower($domain->getHost()), 'letsEncrypt' => $domain->isLetsEncrypt());
}
var_dump($temp);
var_dump($instance->getAppId());
$response = $client->put($instance->getSyncServer() . '/index.php/json/push/domains', array(
'json' => array(
'uuid' => $instance->getAppId(),
'data' => $temp
)
));
var_dump($response->getBody()->getContents());
}
}
$output->writeln("Successfully");
}
}

View File

@ -22,7 +22,7 @@ use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\Security\Core\User\User; use Symfony\Component\Security\Core\User\User;
class CopyType extends AbstractType class CopyType extends AbstractType

View File

@ -1,11 +1,11 @@
psc_system_settings_backend: psc_system_settings_backend:
resource: "@PSCSystemSettingsBundle/Controller/Backend" resource: "@PSCSystemSettingsBundle/Controller/Backend"
type: annotation type: attribute
prefix: /backend/system/settings prefix: /backend/system/settings
psc_system_settings_api: psc_system_settings_api:
resource: "@PSCSystemSettingsBundle/Api" resource: "@PSCSystemSettingsBundle/Api"
type: annotation type: attribute
prefix: /api/system prefix: /api/system

View File

@ -6,7 +6,7 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8">
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 010 3.75H5.625a1.875 1.875 0 010-3.75z" /> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 010 3.75H5.625a1.875 1.875 0 010-3.75z" />
</svg> </svg>
Logs Logs <span class="text-gray-500">{{ 'List'|trans }}</span>
</h1> </h1>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -26,27 +26,18 @@ class DynamicRouteLoader implements LoaderInterface
$this->shopService = $shopService; $this->shopService = $shopService;
} }
/** public function load(mixed $resource, null|string $type = null): mixed
* Loads a resource.
*
* @param mixed $resource The resource
* @param string|null $type The resource type or null if unknown
*
* @return RouteCollection
* @throws \Exception If something went wrong
*/
public function load($resource, $type = null)
{ {
$collection = new RouteCollection(); $collection = new RouteCollection();
/** @var DynamicPage[] $pages */ /** @var DynamicPage[] $pages */
//$pages = $this->em->getRepository(DynamicPage::class)->findAll(); //$pages = $this->em->getRepository(DynamicPage::class)->findAll();
/* /*
foreach ($pages as $page) { * foreach ($pages as $page) {
$route = new Route($page->url, ['_controller' => 'AcmeBundle:Dynamic:dynamic', 'templateId' => $page->id]); * $route = new Route($page->url, ['_controller' => 'AcmeBundle:Dynamic:dynamic', 'templateId' => $page->id]);
$collection->add('_dynamic_id_'.$page->id, $route); * $collection->add('_dynamic_id_'.$page->id, $route);
} * }
*/ */
return $collection; return $collection;
} }
@ -58,16 +49,16 @@ class DynamicRouteLoader implements LoaderInterface
* *
* @return bool True if this class supports the given resource, false otherwise * @return bool True if this class supports the given resource, false otherwise
*/ */
public function supports($resource, $type = null) public function supports(mixed $resource, null|string $type = null): bool
{ {
return ($type == 'dynamic'); return $type == 'dynamic';
} }
public function getResolver() public function getResolver(): LoaderResolverInterface
{ {
} }
public function setResolver(LoaderResolverInterface $resolver) public function setResolver(LoaderResolverInterface $resolver): void
{ {
} }
} }

View File

@ -4,7 +4,7 @@ namespace PSC\System\SettingsBundle\Service;
use Lexik\Bundle\JWTAuthenticationBundle\Services\JWTTokenManagerInterface; use Lexik\Bundle\JWTAuthenticationBundle\Services\JWTTokenManagerInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
class Token class Token
{ {

View File

@ -1,4 +1,4 @@
psc_system_update: psc_system_update:
resource: "@PSCSystemUpdateBundle/Controller" resource: "@PSCSystemUpdateBundle/Controller"
type: annotation type: attribute
prefix: /backend/update prefix: /backend/update

View File

@ -17,27 +17,12 @@
"ddeboer/imap": { "ddeboer/imap": {
"version": "dev-master" "version": "dev-master"
}, },
"doctrine/annotations": {
"version": "1.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "1.0",
"ref": "a2759dd6123694c8d901d0ec80006e044c2e6457"
},
"files": [
"config/routes/annotations.yaml"
]
},
"doctrine/cache": { "doctrine/cache": {
"version": "1.10.0" "version": "1.10.0"
}, },
"doctrine/collections": { "doctrine/collections": {
"version": "1.6.4" "version": "1.6.4"
}, },
"doctrine/common": {
"version": "2.12.0"
},
"doctrine/dbal": { "doctrine/dbal": {
"version": "v2.10.1" "version": "v2.10.1"
}, },
@ -205,9 +190,6 @@
"league/uri-interfaces": { "league/uri-interfaces": {
"version": "1.1.1" "version": "1.1.1"
}, },
"lexik/form-filter-bundle": {
"version": "v5.0.10"
},
"lexik/jwt-authentication-bundle": { "lexik/jwt-authentication-bundle": {
"version": "2.9999999", "version": "2.9999999",
"recipe": { "recipe": {
@ -310,15 +292,6 @@
"oyejorge/less.php": { "oyejorge/less.php": {
"version": "v1.7.0.14" "version": "v1.7.0.14"
}, },
"paypal/paypal-checkout-sdk": {
"version": "dev-master"
},
"paypal/paypalhttp": {
"version": "1.0.0"
},
"paypal/rest-api-sdk-php": {
"version": "dev-master"
},
"payum/core": { "payum/core": {
"version": "1.6.0" "version": "1.6.0"
}, },
@ -507,24 +480,15 @@
"seld/signal-handler": { "seld/signal-handler": {
"version": "1.2.0" "version": "1.2.0"
}, },
"sensio/framework-extra-bundle": {
"version": "5.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "5.2",
"ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b"
},
"files": [
"config/packages/sensio_framework_extra.yaml"
]
},
"setasign/fpdi": { "setasign/fpdi": {
"version": "1.6.2" "version": "1.6.2"
}, },
"sofort/sofortlib-php": { "sofort/sofortlib-php": {
"version": "3.3.2" "version": "3.3.2"
}, },
"spiriitlabs/form-filter-bundle": {
"version": "v12.0.1"
},
"squizlabs/php_codesniffer": { "squizlabs/php_codesniffer": {
"version": "4.0", "version": "4.0",
"recipe": { "recipe": {
@ -776,9 +740,6 @@
"symfony/polyfill-mbstring": { "symfony/polyfill-mbstring": {
"version": "v1.15.0" "version": "v1.15.0"
}, },
"symfony/polyfill-php72": {
"version": "v1.15.0"
},
"symfony/polyfill-php80": { "symfony/polyfill-php80": {
"version": "v1.17.1" "version": "v1.17.1"
}, },
@ -853,9 +814,6 @@
"symfony/string": { "symfony/string": {
"version": "5.2-dev" "version": "5.2-dev"
}, },
"symfony/templating": {
"version": "v4.4.7"
},
"symfony/translation": { "symfony/translation": {
"version": "3.3", "version": "3.3",
"recipe": { "recipe": {

View File

@ -1,4 +1,4 @@
plugin_custom_ahrweiler_contact_backend: plugin_custom_ahrweiler_contact_backend:
resource: "@PluginCustomAhrweilerContact/Controller/Backend" resource: "@PluginCustomAhrweilerContact/Controller/Backend"
type: annotation type: attribute
prefix: /backend/plugin/custom/ahrweiler/contact prefix: /backend/plugin/custom/ahrweiler/contact

View File

@ -1,4 +1,4 @@
plugin_custom_albertbauer_contact_backend: plugin_custom_albertbauer_contact_backend:
resource: "@PluginCustomAlbertbauerContact/Controller/Backend" resource: "@PluginCustomAlbertbauerContact/Controller/Backend"
type: annotation type: attribute
prefix: /backend/plugin/custom/albertbauer/contact prefix: /backend/plugin/custom/albertbauer/contact

View File

@ -1,4 +1,4 @@
psc_plugin_useredit: psc_plugin_useredit:
resource: "@PluginCustomAlbertbauerUseredit/Controller" resource: "@PluginCustomAlbertbauerUseredit/Controller"
type: annotation type: attribute
prefix: / prefix: /

View File

@ -1,4 +1,4 @@
psc_plugin_custom_Weber: psc_plugin_custom_Weber:
resource: "@PluginCustomBUWOrderimport/Controller" resource: "@PluginCustomBUWOrderimport/Controller"
type: annotation type: attribute
prefix: /plugin/custom/buw prefix: /plugin/custom/buw

View File

@ -1,4 +1,4 @@
psc_plugin_register: psc_plugin_register:
resource: "@PluginCustomGrafikerRegister/Controller" resource: "@PluginCustomGrafikerRegister/Controller"
type: annotation type: attribute
prefix: / prefix: /

View File

@ -1,4 +1,4 @@
psc_plugin_custom_huelswitt: psc_plugin_custom_huelswitt:
resource: "@PluginCustomHuelswittOrderimport/Controller" resource: "@PluginCustomHuelswittOrderimport/Controller"
type: annotation type: attribute
prefix: /plugin/custom/huelswitt prefix: /plugin/custom/huelswitt

View File

@ -1,4 +1,4 @@
plugin_custom_hug_contact_backend: plugin_custom_hug_contact_backend:
resource: "@PluginCustomHugContact/Controller/Backend" resource: "@PluginCustomHugContact/Controller/Backend"
type: annotation type: attribute
prefix: /backend/plugin/custom/hug/contact prefix: /backend/plugin/custom/hug/contact

View File

@ -33,7 +33,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
class Import implements QueueInterface, ConfigurableElementInterface class Import implements QueueInterface, ConfigurableElementInterface
{ {

View File

@ -33,7 +33,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
class Import implements QueueInterface, ConfigurableElementInterface class Import implements QueueInterface, ConfigurableElementInterface
{ {

View File

@ -33,7 +33,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
class Import implements QueueInterface, ConfigurableElementInterface class Import implements QueueInterface, ConfigurableElementInterface
{ {

View File

@ -33,7 +33,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
class Import implements QueueInterface, ConfigurableElementInterface class Import implements QueueInterface, ConfigurableElementInterface
{ {

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
use PSC\System\SettingsBundle\Service\Log; use PSC\System\SettingsBundle\Service\Log;
use PSC\System\SettingsBundle\Service\TemplateVars; use PSC\System\SettingsBundle\Service\TemplateVars;
use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mailer\MailerInterface;

View File

@ -1,4 +1,4 @@
plugin_custom_krueger_erlkonten: plugin_custom_krueger_erlkonten:
resource: "@PluginCustomKruegerErlkonten/Controller" resource: "@PluginCustomKruegerErlkonten/Controller"
type: annotation type: attribute
prefix: /plugin/custom/krueger prefix: /plugin/custom/krueger

View File

@ -1,4 +1,4 @@
plugin_custom_kdv_checkout: plugin_custom_kdv_checkout:
resource: "@PluginCustomKruegerKDVcheckout/Controller" resource: "@PluginCustomKruegerKDVcheckout/Controller"
type: annotation type: attribute
prefix: /plugin/custom prefix: /plugin/custom

View File

@ -1,4 +1,4 @@
plugin_custom_kdv_wingame: plugin_custom_kdv_wingame:
resource: "@PluginCustomKruegerKDVwingame/Controller" resource: "@PluginCustomKruegerKDVwingame/Controller"
type: annotation type: attribute
prefix: /plugin/custom prefix: /plugin/custom

View File

@ -28,7 +28,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
class Import implements QueueInterface, ConfigurableElementInterface class Import implements QueueInterface, ConfigurableElementInterface
{ {

View File

@ -1,4 +1,4 @@
plugin_custom_krueger_lieferschein: plugin_custom_krueger_lieferschein:
resource: "@PluginCustomKruegerLieferschein/Controller" resource: "@PluginCustomKruegerLieferschein/Controller"
type: annotation type: attribute
prefix: /plugin/custom/krueger prefix: /plugin/custom/krueger

View File

@ -1,4 +1,4 @@
plugin_custom_aeb_aebdata: plugin_custom_aeb_aebdata:
resource: "@PluginCustomKruegerLivesearch/Controller" resource: "@PluginCustomKruegerLivesearch/Controller"
type: annotation type: attribute
prefix: /plugin/custom/krueger prefix: /plugin/custom/krueger

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
use PSC\System\SettingsBundle\Service\Log; use PSC\System\SettingsBundle\Service\Log;
class Export implements QueueInterface, ConfigurableElementInterface class Export implements QueueInterface, ConfigurableElementInterface

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
use PSC\System\SettingsBundle\Service\Log; use PSC\System\SettingsBundle\Service\Log;
class Export implements QueueInterface, ConfigurableElementInterface class Export implements QueueInterface, ConfigurableElementInterface

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
use PSC\System\SettingsBundle\Service\Log; use PSC\System\SettingsBundle\Service\Log;
class Export implements QueueInterface, ConfigurableElementInterface class Export implements QueueInterface, ConfigurableElementInterface

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security;
use PSC\System\SettingsBundle\Service\Log; use PSC\System\SettingsBundle\Service\Log;
use PSC\Shop\QueueBundle\Event\Position\Status\Change; use PSC\Shop\QueueBundle\Event\Position\Status\Change;
class Export implements QueueInterface, ConfigurableElementInterface class Export implements QueueInterface, ConfigurableElementInterface

View File

@ -1,4 +1,4 @@
plugin_custom_krueger_megalithguestuser: plugin_custom_krueger_megalithguestuser:
resource: "@PluginCustomKruegerMegalithguestuser/Controller" resource: "@PluginCustomKruegerMegalithguestuser/Controller"
type: annotation type: attribute
prefix: /plugin/custom/krueger prefix: /plugin/custom/krueger

View File

@ -1,4 +1,4 @@
plugin_custom_krueger_megalithuser: plugin_custom_krueger_megalithuser:
resource: "@PluginCustomKruegerMegalithuser/Controller" resource: "@PluginCustomKruegerMegalithuser/Controller"
type: annotation type: attribute
prefix: /plugin/custom/krueger prefix: /plugin/custom/krueger

View File

@ -1,4 +1,4 @@
plugin_custom_krueger_userlk: plugin_custom_krueger_userlk:
resource: "@PluginCustomKruegerUserlk/Controller" resource: "@PluginCustomKruegerUserlk/Controller"
type: annotation type: attribute
prefix: /plugin/custom/krueger prefix: /plugin/custom/krueger

View File

@ -1,4 +1,4 @@
psc_plugin_useredit: psc_plugin_useredit:
resource: "@PluginCustomMDVIUseredit/Controller" resource: "@PluginCustomMDVIUseredit/Controller"
type: annotation type: attribute
prefix: / prefix: /

View File

@ -1,4 +1,4 @@
plugin_custom_maincontor_reselleradmin: plugin_custom_maincontor_reselleradmin:
resource: "@PluginCustomMaincontorReselleradmin/Controller" resource: "@PluginCustomMaincontorReselleradmin/Controller"
type: annotation type: attribute
prefix: /plugin/custom/maincontor prefix: /plugin/custom/maincontor

View File

@ -1,4 +1,4 @@
plugin_custom_mundfein_contact_backend: plugin_custom_mundfein_contact_backend:
resource: "@PluginCustomMundfeinContact/Controller/Backend" resource: "@PluginCustomMundfeinContact/Controller/Backend"
type: annotation type: attribute
prefix: /backend/plugin/custom/mundfein/contact prefix: /backend/plugin/custom/mundfein/contact

View File

@ -1,4 +1,4 @@
psc_plugin_custom_nowedruck: psc_plugin_custom_nowedruck:
resource: "@PluginCustomNoweDruckTpApi/Controller" resource: "@PluginCustomNoweDruckTpApi/Controller"
type: annotation type: attribute
prefix: /plugin/custom/nowedruck prefix: /plugin/custom/nowedruck

View File

@ -1,14 +1,14 @@
plugin_custom_psc_collectlayouter_backend: plugin_custom_psc_collectlayouter_backend:
resource: "@PluginCustomPSCCollectLayouter/Controller/Backend" resource: "@PluginCustomPSCCollectLayouter/Controller/Backend"
type: annotation type: attribute
prefix: /backend/plugin/custom/psc/collectlayouter prefix: /backend/plugin/custom/psc/collectlayouter
plugin_custom_psc_collectlayouter_frontend: plugin_custom_psc_collectlayouter_frontend:
resource: "@PluginCustomPSCCollectLayouter/Controller/Frontend" resource: "@PluginCustomPSCCollectLayouter/Controller/Frontend"
type: annotation type: attribute
prefix: /plugin/custom/psc/collectlayouter/frontend prefix: /plugin/custom/psc/collectlayouter/frontend
plugin_custom_psc_collectlayouter_api: plugin_custom_psc_collectlayouter_api:
resource: "@PluginCustomPSCCollectLayouter/Api" resource: "@PluginCustomPSCCollectLayouter/Api"
type: annotation type: attribute
prefix: /api/plugin/custom/psc/collectlayouter prefix: /api/plugin/custom/psc/collectlayouter

Some files were not shown because too many files have changed in this diff Show More