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" asset-map:compile;
$(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",
"composer/package-versions-deprecated": "^1.8",
"ddeboer/imap": "1.21.*",
"doctrine/annotations": "^2",
"doctrine/cache": "^2",
"doctrine/doctrine-bundle": "^2",
"doctrine/doctrine-bundle": "^3",
"doctrine/mongodb-odm-bundle": "^5",
"doctrine/orm": "^2.7",
"doctrine/orm": "^3",
"gabrielbull/ups-api": "dev-master",
"gesdinet/jwt-refresh-token-bundle": "^1.5",
"gregwar/captcha-bundle": "^2.2",
@ -37,12 +36,12 @@
"horstoeko/zugferd": "^1.0",
"incenteev/composer-parameter-handler": "^2.0",
"jms/serializer-bundle": "5.*",
"knplabs/knp-gaufrette-bundle": "0.7.*",
"knplabs/knp-gaufrette-bundle": "0.9.*",
"knplabs/knp-menu-bundle": "^3",
"knplabs/knp-paginator-bundle": "5.9.*",
"lexik/form-filter-bundle": "^7",
"knplabs/knp-paginator-bundle": "6.10.*",
"spiriitlabs/form-filter-bundle": "12.0.1",
"lexik/jwt-authentication-bundle": "^3",
"liip/imagine-bundle": "2.9.*",
"liip/imagine-bundle": "2.16.*",
"mistic100/randomcolor": "^1.1",
"mobiledetect/mobiledetectlib": "^2.8",
"mpdf/mpdf": "dev-qrcode",
@ -50,10 +49,9 @@
"nelmio/api-doc-bundle": "^4",
"nelmio/cors-bundle": "^2.2",
"nicolab/php-ftp-client": "^1.4",
"oneup/uploader-bundle": "^3",
"oneup/uploader-bundle": "^5",
"oyejorge/less.php": "~1.5",
"paypal/paypal-checkout-sdk": "dev-master",
"paypal/rest-api-sdk-php": "dev-master",
"paypal/paypal-server-sdk": "^2",
"phenx/php-font-lib": "^1.0",
"phpoffice/phpspreadsheet": "^1.28",
"phpseclib/phpseclib": "~3.0",
@ -65,26 +63,25 @@
"ramsey/uuid": "4.5.1",
"sauladam/shipment-tracker": "dev-master",
"scssphp/scssphp": "v1.11.1",
"sensio/framework-extra-bundle": "^6.1",
"sofort/sofortlib-php": "3.3.2",
"spatie/array-to-xml": "^3.4",
"symfony/asset": "*",
"symfony/asset-mapper": "6.4.*",
"symfony/asset-mapper": "7.4.*",
"symfony/console": "*",
"symfony/dotenv": "*",
"symfony/expression-language": "*",
"symfony/flex": "^1.3.1",
"symfony/flex": "^2",
"symfony/form": "*",
"symfony/framework-bundle": "*",
"symfony/http-client": "*",
"symfony/intl": "*",
"symfony/lock": "6.4.*",
"symfony/lock": "7.4.*",
"symfony/mailer": "*",
"symfony/mime": "*",
"symfony/monolog-bundle": "^3.8",
"symfony/monolog-bundle": "^4",
"symfony/notifier": "*",
"symfony/process": "*",
"symfony/property-access": "6.4.4",
"symfony/property-access": "7.4.*",
"symfony/property-info": "*",
"symfony/proxy-manager-bridge": "*",
"symfony/runtime": "*",
@ -199,7 +196,7 @@
"extra": {
"symfony": {
"allow-contrib": false,
"require": "6.4.*"
"require": "7.4.*"
},
"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\MenuBundle\KnpMenuBundle::class => ['all' => true],
Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::class => ['all' => true],
Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle::class => ['all' => true],
Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],
Oneup\UploaderBundle\OneupUploaderBundle::class => ['all' => true],
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::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\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
@ -63,4 +61,5 @@ return [
Symfonycasts\TailwindBundle\SymfonycastsTailwindBundle::class => ['all' => true],
Symfonycasts\SassBundle\SymfonycastsSassBundle::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;
return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurator->extension(
'doctrine',
[
$containerConfigurator->extension('doctrine', [
'dbal' => [
'url' => '%env(resolve:DATABASE_URL)%',
'charset' => 'utf8mb4',
'default_table_options' => ['collate' => 'utf8mb4_unicode_ci']],
'default_table_options' => ['collate' => 'utf8mb4_unicode_ci'],
],
'orm' => [
'auto_generate_proxy_classes' => true,
'naming_strategy' => 'doctrine.orm.naming_strategy.underscore_number_aware',
'auto_mapping' => true,
'dql' => [
'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;
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;
return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurator->extension('sensio_framework_extra', ['router' => ['annotations' => false], 'request' => ['converters' => true, 'disable' => ['doctrine.orm', 'datetime']]]);
};
return static function (ContainerConfigurator $containerConfigurator): void {};

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;
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->defaults()
->autowire()
->autoconfigure();
$services->defaults()->autowire()->autoconfigure();
$services->set('liip_imagine.data.loader.stream.steplayouter_motiv_guest', StreamLoader::class)
->args([service('liip_imagine'), 'gaufrette://steplayouter_motiv_guest/'])
->tag('liip_imagine.data.loader', ['loader' => 'stream.steplayouter_motiv_guest']);
/* $services
* ->set('liip_imagine.data.loader.stream.steplayouter_motiv_guest', StreamLoader::class)
* ->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
{
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_after'] = $options['icon_after'] ? $options['icon_after'] : '';
}
public function configureOptions(OptionsResolver $resolver)
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'icon_before' => null,
'icon_after' => null
'icon_after' => null,
]);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,9 +1,9 @@
psc_shop_contact_backend:
resource: "@PSCShopContactBundle/Controller/Backend"
type: annotation
type: attribute
prefix: /backend/contact
psc_shop_contact_api:
resource: "@PSCShopContactBundle/Api"
type: annotation
type: attribute
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">
<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>
{{ 'customers'|trans }}
{{ 'customers'|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">
@ -93,9 +93,9 @@
<td class="px-2 py-3">{{ contact.city }}</td>
<td class="px-2 py-3">
{% 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 %}
<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 %}
</td>
<td class="px-2 py-3">
@ -106,7 +106,7 @@
{% endfor %}
</div>
{% 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 %}
</td>
<td class="px-2 py-3 text-right">

View File

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

View File

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

View File

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

View File

@ -3,6 +3,7 @@
namespace PSC\Shop\EntityBundle\Generator;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Id\AbstractIdGenerator;
/**
@ -21,4 +22,9 @@ class UuidGenerator extends AbstractIdGenerator
{
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 \InvalidArgumentException when the parameter is a collection
*/
public function transform($entity)
public function transform(mixed $entity): mixed
{
if (empty($entity)) {
return '';
@ -50,7 +50,7 @@ class IdToMediaTransformer implements DataTransformerInterface
if (strlen($entity) > 30) {
return [
'id' => $entity
'id' => $entity,
];
}
@ -63,32 +63,24 @@ class IdToMediaTransformer implements DataTransformerInterface
if ($entity) {
return [
'ent' => $entity,
'id' => $entity->getId()
'id' => $entity->getId(),
];
}
return '';
}
/**
* @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)
public function reverseTransform(mixed $key): mixed
{
if (empty($key)) {
return null;
}
/*if (!is_numeric($key)) {
throw new UnexpectedTypeException($key, 'numeric');
}*/
* throw new UnexpectedTypeException($key, 'numeric');
* }*/
/*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);
//return $entity;

View File

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

View File

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

View File

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

View File

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

View File

@ -2,7 +2,6 @@
namespace PSC\Shop\OrderBundle\Normalizer;
use BadMethodCallException;
use PSC\Shop\OrderBundle\Model\Order\Position\IProductTypeObject;
use PSC\System\PluginBundle\Service\ProductType;
@ -12,7 +11,6 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
class SpecialProductDenormalizer implements DenormalizerInterface, DenormalizerAwareInterface
{
use DenormalizerAwareTrait;
private ProductType $productRegistry;
@ -22,20 +20,30 @@ class SpecialProductDenormalizer implements DenormalizerInterface, DenormalizerA
$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);
}
}
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) {
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;
}
public function getSupportedTypes(null|string $format): array
{
}
}

View File

@ -1,10 +1,10 @@
psc_shop_order_backend:
resource: "@PSCShopOrderBundle/Controller/Backend"
type: annotation
type: attribute
prefix: /backend/order
psc_shop_order_api:
resource: "@PSCShopOrderBundle/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">
<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>
{{'order'|trans}} <span class="text-gray-500">{{'list'|trans}}</span>
{{'order'|trans}} <span class="text-gray-500">{{'List'|trans}}</span>
</h1>
</div>
{% endblock %}

View File

@ -1,14 +1,14 @@
psc_shop_payment_backend:
resource: "@PSCShopPaymentBundle/Controller/Backend"
type: annotation
type: attribute
prefix: /backend/payment
psc_shop_payment_frontend:
resource: "@PSCShopPaymentBundle/Controller/Frontend"
type: annotation
type: attribute
prefix: /payment
psc_shop_payment_api:
resource: "@PSCShopPaymentBundle/Api"
type: annotation
type: attribute
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' %}
{% 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 %}
<div class="header">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h3>
<i class="fa-fw fa fa-credit-card"></i>
{{'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">
<div class="flex flex-col gap-6">
<div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="overflow-x-auto">
<table class="min-w-full text-sm">
<thead class="bg-slate-100 border-t border-stroke">
<tr>
<th>{{ knp_pagination_sortable(pagination, 'Uid'|trans, 'payment.uid') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'active'|trans, 'shipping.enable') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'Pos'|trans, 'payment.pos') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'Name'|trans, 'payment.title') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'cost'|trans, 'payment.kosten') }}</th>
<th></th>
<th class="px-2 py-3 text-left font-medium text-gray-700">{{ 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, 'active'|trans, 'payment.enable') }}</th>
<th class="px-2 py-3 text-left font-medium text-gray-700">{{ 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, 'Name'|trans, 'payment.title') }}</th>
<th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'cost'|trans, 'payment.price') }}</th>
<th class="px-2 py-3 text-right font-medium text-gray-700">Aktionen</th>
</tr>
</thead>
<tbody>
{% for payment in pagination %}
<tr {% if loop.index is odd %}class="color"{% endif %}>
<td>{{ payment.uid }}</td>
<td>{% if payment.enable %}<span class="badge bg-success">{{'yes'|trans}}</span>{% else %}<span
class="badge bg-warning">>{{'no'|trans}}</span>{% endif %}</td>
<td>{{ payment.pos }}</td>
<td>{{ payment.title }}</td>
<td>{{ payment.price|number_format(2, ',', '.') }}€</td>
<td class="text-end">
<a href="{{ path("psc_shop_payment_backend_edit", {uid: payment.uid}) }}"
class="btn btn-info btn-sm"><span class="fa fa-edit"></span></a>
<a href="{{ path("psc_shop_payment_backend_delete", {uid: payment.uid}) }}"
class="btn btn-danger btn-sm"><span class="fa fa-trash"></span></a>
<tr class="border-t border-stroke hover:bg-gray-50">
<td class="px-2 py-3 font-medium">{{ payment.uid }}</td>
<td class="px-2 py-3">
{% if payment.enable %}
<div class="badge-yes">{{'yes'|trans}}</div>
{% else %}
<div class="badge-no">{{'no'|trans}}</div>
{% endif %}
</td>
<td class="px-2 py-3">{{ payment.pos }}</td>
<td class="px-2 py-3">{{ payment.title }}</td>
<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>
</tr>
{% endfor %}
</tbody>
</table>
<div class="navigation">
{{ knp_pagination_render(pagination) }}
</div>
</div>
</div>
<div class="mt-4">
{{ knp_pagination_render(pagination, 'tailwind_pagination.html.twig', {}, {
'sortableTemplate': 'tailwind_sortable.html.twig'
}) }}
</div>
</div>
</div>
{% endblock %}

View File

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

View File

@ -58,8 +58,18 @@ class DoEveryDayCommand extends Command
private Log $logService;
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->eventRegistry = $eventRegistry;
$this->queueRegistry = $queueRegistry;
@ -75,11 +85,10 @@ class DoEveryDayCommand extends Command
protected function configure()
{
$this
->setDescription('Run the Jobs');
$this->setDescription('Run the Jobs');
}
protected function execute(InputInterface $input, OutputInterface $output)
protected function execute(InputInterface $input, OutputInterface $output): int
{
$store = new FlockStore();
$factory = new LockFactory($store);
@ -91,13 +100,11 @@ class DoEveryDayCommand extends Command
$queue->execute();
}
$queues = $this->mongoDb
->getRepository('PSC\Shop\EntityBundle\Document\Queue')
->findBy(
array('eventType' => 'system_plugin_every_day', 'active' => true),
$queues = $this->mongoDb->getRepository('PSC\Shop\EntityBundle\Document\Queue')->findBy(
['eventType' => 'system_plugin_every_day', 'active' => true],
[
'pos' => 'ASC'
]
'pos' => 'ASC',
],
);
/**
@ -108,14 +115,21 @@ class DoEveryDayCommand extends Command
try {
$success = $queueObj->execute(new EveryRun(), $queue);
} 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();
}
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;
}

View File

@ -58,8 +58,18 @@ class DoEveryHourCommand extends Command
private Log $logService;
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->eventRegistry = $eventRegistry;
$this->queueRegistry = $queueRegistry;
@ -75,11 +85,10 @@ class DoEveryHourCommand extends Command
protected function configure()
{
$this
->setDescription('Run the Jobs');
$this->setDescription('Run the Jobs');
}
protected function execute(InputInterface $input, OutputInterface $output)
protected function execute(InputInterface $input, OutputInterface $output): int
{
$store = new FlockStore();
$factory = new LockFactory($store);
@ -91,13 +100,11 @@ class DoEveryHourCommand extends Command
$queue->execute();
}
$queues = $this->mongoDb
->getRepository('PSC\Shop\EntityBundle\Document\Queue')
->findBy(
array('eventType' => 'system_plugin_every_hour', 'active' => true),
$queues = $this->mongoDb->getRepository('PSC\Shop\EntityBundle\Document\Queue')->findBy(
['eventType' => 'system_plugin_every_hour', 'active' => true],
[
'pos' => 'ASC'
]
'pos' => 'ASC',
],
);
/**
@ -108,7 +115,14 @@ class DoEveryHourCommand extends Command
try {
$success = $queueObj->execute(new EveryRun(), $queue);
} 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();
@ -122,6 +136,7 @@ class DoEveryHourCommand extends Command
if ($event instanceof ClearCache) {
$fs = new Filesystem();
//$fs->remove($this->kernel->getCacheDir());
} elseif ($event instanceof InstallPlugin) {
$event->setData($job->getData());
@ -131,11 +146,10 @@ class DoEveryHourCommand extends Command
$plugin = $this->mongoDb
->getRepository(Plugin::class)
->findOneBy(array('id' => (string)$event->getPlugin()));
->findOneBy(['id' => (string) $event->getPlugin()]);
$plugin->setShouldBeInstalled(false);
$this->mongoDb->persist($plugin);
} elseif ($event instanceof DeInstallPlugin) {
$event->setData($job->getData());
$event->setShop($job->getShop());
@ -144,12 +158,11 @@ class DoEveryHourCommand extends Command
$plugin = $this->mongoDb
->getRepository(Plugin::class)
->findOneBy(array('id' => (string)$event->getPlugin()));
->findOneBy(['id' => (string) $event->getPlugin()]);
$plugin->setInstalled(false);
$plugin->setShouldBeDeInstalled(false);
$this->mongoDb->persist($plugin);
} elseif ($event instanceof InternalEvent) {
$event->setData($job->getData());
$event->setShop($job->getShop());
@ -157,20 +170,17 @@ class DoEveryHourCommand extends Command
$event->setData($job->getData());
$event->setShop($job->getShop());
$queues = $this->mongoDb
->getRepository(Queue::class)
->findBy(
array(
$queues = $this->mongoDb->getRepository(Queue::class)->findBy(
[
'shop' => $job->getShop(),
'active' => true,
'eventType' => $job->getEvent()
),
'eventType' => $job->getEvent(),
],
[
'pos' => 'ASC'
]
'pos' => 'ASC',
],
);
/**
* @var Queue $queue
*/
@ -184,20 +194,20 @@ class DoEveryHourCommand extends Command
/**
* @var JobLog $jobLog
*/
$jobLog = $this->mongoDb->getRepository(JobLog::class)->findOneBy(
[
$jobLog = $this->mongoDb
->getRepository(JobLog::class)
->findOneBy([
'job' => $job->getId(),
'queue' => $queue->getId()
]
);
'queue' => $queue->getId(),
]);
if ($jobLog) {
if ($jobLog->getError() == "") {
if ($jobLog->getError() == '') {
continue;
}
$jobLog->incCount();
if ($jobLog->getCount() > 2 && $jobLog->getError() != "") {
if ($jobLog->getCount() > 2 && $jobLog->getError() != '') {
$canBeRemoved = false;
continue;
}
@ -214,7 +224,7 @@ class DoEveryHourCommand extends Command
$canBeRemoved = false;
$jobLog->setError($queueObj->getError());
} else {
$jobLog->setError("");
$jobLog->setError('');
}
$this->mongoDb->persist($jobLog);
$this->mongoDb->flush();
@ -236,12 +246,16 @@ class DoEveryHourCommand extends Command
}
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');
$output->writeln("Successfully ".date('Y-m-d H:i:s'));
$output->writeln('Successfully ' . date('Y-m-d H:i:s'));
return 0;
}

View File

@ -58,8 +58,18 @@ class DoEveryMinuteCommand extends Command
private Log $logService;
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->eventRegistry = $eventRegistry;
$this->queueRegistry = $queueRegistry;
@ -75,11 +85,10 @@ class DoEveryMinuteCommand extends Command
protected function configure()
{
$this
->setDescription('Run the Jobs');
$this->setDescription('Run the Jobs');
}
protected function execute(InputInterface $input, OutputInterface $output)
protected function execute(InputInterface $input, OutputInterface $output): int
{
$store = new FlockStore();
$factory = new LockFactory($store);
@ -91,13 +100,11 @@ class DoEveryMinuteCommand extends Command
$queue->execute();
}
$queues = $this->mongoDb
->getRepository('PSC\Shop\EntityBundle\Document\Queue')
->findBy(
array('eventType' => 'system_plugin_every_run', 'active' => true),
$queues = $this->mongoDb->getRepository('PSC\Shop\EntityBundle\Document\Queue')->findBy(
['eventType' => 'system_plugin_every_run', 'active' => true],
[
'pos' => 'ASC'
]
'pos' => 'ASC',
],
);
/**
@ -108,7 +115,14 @@ class DoEveryMinuteCommand extends Command
try {
$success = $queueObj->execute(new EveryRun(), $queue);
} 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();
@ -122,6 +136,7 @@ class DoEveryMinuteCommand extends Command
if ($event instanceof ClearCache) {
$fs = new Filesystem();
//$fs->remove($this->kernel->getCacheDir());
} elseif ($event instanceof InstallPlugin) {
$event->setData($job->getData());
@ -131,11 +146,10 @@ class DoEveryMinuteCommand extends Command
$plugin = $this->mongoDb
->getRepository(Plugin::class)
->findOneBy(array('id' => (string)$event->getPlugin()));
->findOneBy(['id' => (string) $event->getPlugin()]);
$plugin->setShouldBeInstalled(false);
$this->mongoDb->persist($plugin);
} elseif ($event instanceof DeInstallPlugin) {
$event->setData($job->getData());
$event->setShop($job->getShop());
@ -144,12 +158,11 @@ class DoEveryMinuteCommand extends Command
$plugin = $this->mongoDb
->getRepository(Plugin::class)
->findOneBy(array('id' => (string)$event->getPlugin()));
->findOneBy(['id' => (string) $event->getPlugin()]);
$plugin->setInstalled(false);
$plugin->setShouldBeDeInstalled(false);
$this->mongoDb->persist($plugin);
} elseif ($event instanceof InternalEvent) {
$event->setData($job->getData());
$event->setShop($job->getShop());
@ -157,20 +170,17 @@ class DoEveryMinuteCommand extends Command
$event->setData($job->getData());
$event->setShop($job->getShop());
$queues = $this->mongoDb
->getRepository(Queue::class)
->findBy(
array(
$queues = $this->mongoDb->getRepository(Queue::class)->findBy(
[
'shop' => $job->getShop(),
'active' => true,
'eventType' => $job->getEvent()
),
'eventType' => $job->getEvent(),
],
[
'pos' => 'ASC'
]
'pos' => 'ASC',
],
);
/**
* @var Queue $queue
*/
@ -184,20 +194,20 @@ class DoEveryMinuteCommand extends Command
/**
* @var JobLog $jobLog
*/
$jobLog = $this->mongoDb->getRepository(JobLog::class)->findOneBy(
[
$jobLog = $this->mongoDb
->getRepository(JobLog::class)
->findOneBy([
'job' => $job->getId(),
'queue' => $queue->getId()
]
);
'queue' => $queue->getId(),
]);
if ($jobLog) {
if ($jobLog->getError() == "") {
if ($jobLog->getError() == '') {
continue;
}
$jobLog->incCount();
if ($jobLog->getCount() > 2 && $jobLog->getError() != "") {
if ($jobLog->getCount() > 2 && $jobLog->getError() != '') {
$canBeRemoved = false;
continue;
}
@ -214,7 +224,7 @@ class DoEveryMinuteCommand extends Command
$canBeRemoved = false;
$jobLog->setError($queueObj->getError());
} else {
$jobLog->setError("");
$jobLog->setError('');
}
$this->mongoDb->persist($jobLog);
$this->mongoDb->flush();
@ -236,12 +246,16 @@ class DoEveryMinuteCommand extends Command
}
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');
$output->writeln("Successfully ".date('Y-m-d H:i:s'));
$output->writeln('Successfully ' . date('Y-m-d H:i:s'));
return 0;
}

View File

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

View File

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

View File

@ -23,30 +23,16 @@ use Symfony\Component\HttpFoundation\JsonResponse;
class CreateCommand extends Command
{
protected function configure()
protected function configure(): void
{
$this
->setName('service:shipping:create')
$this->setName('service:shipping:create')
->setDescription('Create Shippment PDF')
->addArgument(
'type',
InputArgument::REQUIRED,
'Typ'
)
->addArgument(
'order',
InputArgument::REQUIRED,
'Auftrag'
)
->addArgument(
'file',
InputArgument::REQUIRED,
'File'
)
;
->addArgument('type', InputArgument::REQUIRED, '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');
$orderUuid = $input->getArgument('order');
@ -63,24 +49,25 @@ class CreateCommand extends Command
$provider = $registry->get($type);
/** @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')
->findOneBy(array('uuid' => $orderUuid));
->findOneBy(['uuid' => $orderUuid]);
/** @var Shop $shopEntity */
$shopEntity = $order->getShop();
/** @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')
->findOneBy(array('uid' => $shopEntity->getUID()));
->findOneBy(['uid' => $shopEntity->getUID()]);
/** @var ShippingGatewaysettings $gwSettings */
$gwSettings = $this->getContainer()->get('doctrine_mongodb')
$gwSettings = $this->getContainer()
->get('doctrine_mongodb')
->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->setShopDoc($shopDoc);
@ -96,5 +83,6 @@ class CreateCommand extends Command
if (isset($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
{
public function build(ContainerBuilder $container)
public function build(ContainerBuilder $container): void
{
$container->addCompilerPass(new ShippingProviderPass());
}

View File

@ -1,14 +1,14 @@
psc_shop_shipping_backend:
resource: "@PSCShopShippingBundle/Controller/Backend"
type: annotation
type: attribute
prefix: /backend/shipping
psc_shop_shipping_service:
resource: "@PSCShopShippingBundle/Controller/Service"
type: annotation
type: attribute
prefix: /service/shipping
psc_shop_shpping_api:
resource: "@PSCShopShippingBundle/Api"
type: annotation
type: attribute
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' %}
{% 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 %}
<div class="header">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h3>
<i class="fa-fw fa fa-envelope"></i>
{{'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">
<div class="flex flex-col gap-6">
<div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="overflow-x-auto">
<table class="min-w-full text-sm">
<thead class="bg-slate-100 border-t border-stroke">
<tr>
<th>{{ knp_pagination_sortable(pagination, 'Uid'|trans, 'shipping.uid') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'active'|trans, 'shipping.enable') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'Pos'|trans, 'shipping.pos') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'Name'|trans, 'shipping.title') }}</th>
<th>{{ knp_pagination_sortable(pagination, 'price'|trans, 'shipping.price') }}</th>
<th>{{'Matrix'|trans}}</th>
<th></th>
<th class="px-2 py-3 text-left font-medium text-gray-700">{{ 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, 'active'|trans, 'shipping.enable') }}</th>
<th class="px-2 py-3 text-left font-medium text-gray-700">{{ 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, 'Name'|trans, 'shipping.title') }}</th>
<th class="px-2 py-3 text-left font-medium text-gray-700">{{ knp_pagination_sortable(pagination, 'price'|trans, 'shipping.price') }}</th>
<th class="px-2 py-3 text-left font-medium text-gray-700">{{'Matrix'|trans}}</th>
<th class="px-2 py-3 text-right font-medium text-gray-700">Aktionen</th>
</tr>
</thead>
<tbody>
{% for shipping in pagination %}
<tr {% if loop.index is odd %}class="color"{% endif %}>
<td>{{ shipping.uid }}</td>
<td>{% if shipping.enable %}<span class="badge bg-success">{{'yes'|trans}}</span>{% else %}<span
class="badge bg-warning">{{'no'|trans}}</span>{% endif %}</td>
<td>{{ shipping.pos }}</td>
<td>{{ shipping.title }}</td>
<td>{{ shipping.price|number_format(2, ',', '.') }}€</td>
<td>{% if shipping.matrix != "" %}<span class="badge bg-success">{{'yes'|trans}}</span>{% else %}<span
class="badge bg-warning">{{'no'|trans}}</span>{% endif %}</td>
<td class="text-end">
<a href="{{ path("psc_shop_shipping_backend_edit", {uid: shipping.uid}) }}"
class="btn btn-info btn-sm"><span class="fa fa-edit"></span></a>
<a href="{{ path("psc_shop_shipping_backend_delete", {uid: shipping.uid}) }}"
class="btn btn-danger btn-sm"><span class="fa fa-trash"></span></a>
<tr class="border-t border-stroke hover:bg-gray-50">
<td class="px-2 py-3 font-medium">{{ shipping.uid }}</td>
<td class="px-2 py-3">
{% if shipping.enable %}
<div class="badge-yes">{{'yes'|trans}}</div>
{% else %}
<div class="badge-no">{{'no'|trans}}</div>
{% endif %}
</td>
<td class="px-2 py-3">{{ shipping.pos }}</td>
<td class="px-2 py-3">{{ shipping.title }}</td>
<td class="px-2 py-3">{{ shipping.price|number_format(2, ',', '.') }}€</td>
<td class="px-2 py-3">
{% 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>
</tr>
{% endfor %}
</tbody>
</table>
<div class="navigation">
{{ knp_pagination_render(pagination) }}
</div>
</div>
</div>
<div class="mt-4">
{{ knp_pagination_render(pagination, 'tailwind_pagination.html.twig', {}, {
'sortableTemplate': 'tailwind_sortable.html.twig'
}) }}
</div>
</div>
</div>
{% endblock %}

View File

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

View File

@ -25,7 +25,7 @@ use Symfony\Component\HttpKernel\Bundle\Bundle;
*/
class PSCShopThemeBundle extends Bundle
{
public function build(ContainerBuilder $container)
public function build(ContainerBuilder $container): void
{
parent::build($container);
$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();
}

View File

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

View File

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

View File

@ -4,21 +4,20 @@ namespace PSC\Shop\UserBundle\Security\ApiKey;
use Doctrine\ODM\MongoDB\DocumentManager;
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\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
class InstanceProvider implements UserProviderInterface
{
public function __construct(private DocumentManager $repository)
{
public function __construct(
private DocumentManager $repository,
) {}
}
public function refreshUser(UserInterface $user)
public function refreshUser(UserInterface $user): UserInterface
{
if (!$user instanceof Instance) {
if (!($user instanceof Instance)) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
}
@ -27,20 +26,18 @@ class InstanceProvider implements UserProviderInterface
return $refreshedUser;
}
public function supportsClass($class)
public function supportsClass(string $class): bool
{
return Instance::class == $class;
}
public function loadUserByIdentifier(string $identifier): UserInterface
{
$instance = $this->repository
->getRepository(\PSC\Shop\EntityBundle\Document\Instance::class)
->findOneBy(['supporttoken' => $identifier]);
if (null === $instance) {
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\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\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
class ShopProvider implements UserProviderInterface
{
public function __construct(private ShopRepository $repository)
{
public function __construct(
private ShopRepository $repository,
) {}
}
public function refreshUser(UserInterface $user)
public function refreshUser(UserInterface $user): UserInterface
{
if (!$user instanceof Shop) {
if (!($user instanceof Shop)) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
}
@ -27,21 +26,16 @@ class ShopProvider implements UserProviderInterface
return $refreshedUser;
}
/**
* {@inheritDoc}
*/
public function supportsClass($class)
public function supportsClass(string $class): bool
{
return Shop::class == $class;
}
public function loadUserByIdentifier(string $identifier): UserInterface
{
$user = $this->repository->getShopByApiKey($identifier);
if (null === $user) {
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
{
public function __construct(private ShopRepository $ShopRepository)
{
}
public function __construct(
private ShopRepository $ShopRepository,
) {}
/**
* {@inheritDoc}
*/
public function supportsClass($class): bool
{
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
{
$accessToken = $this->ShopRepository->findOneBy(['apiKey' => $identifier]);
if (null === $accessToken) {
throw new BadCredentialsException('Invalid credentials.');
@ -47,5 +43,4 @@ class TokenProvider implements UserProviderInterface
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\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\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
class UserProvider implements UserProviderInterface
{
public function __construct(private ContactRepository $repository)
{
public function __construct(
private ContactRepository $repository,
) {}
}
public function refreshUser(UserInterface $user)
public function refreshUser(UserInterface $user): UserInterface
{
if (!$user instanceof Contact) {
if (!($user instanceof Contact)) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
}
@ -27,10 +26,7 @@ class UserProvider implements UserProviderInterface
return $refreshedUser;
}
/**
* {@inheritDoc}
*/
public function supportsClass($class)
public function supportsClass(string $class): bool
{
return Contact::class == $class || is_subclass_of($class, Contact::class);
}

View File

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

View File

@ -2,16 +2,10 @@
namespace PSC\System\PluginBundle\Compiler;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
use Doctrine\ODM\MongoDB\Mapping\Driver\AttributeDriver;
use PSC\System\PluginBundle\Interfaces\Plugin;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
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
{
@ -24,12 +18,20 @@ class PluginCompiler implements CompilerPassInterface
$collection = (new \MongoDB\Client('mongodb://mongodb/'))->psc->Plugin;
}
$plugins = $collection->find(array('installed' => true));
$plugins = $collection->find(['installed' => true]);
/**
* @var Plugin $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) {
var_dump($e->getMessage());

View File

@ -35,7 +35,7 @@ use Symfony\Component\DependencyInjection\Loader;
*/
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 FormPass());

View File

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

View File

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

View File

@ -15,6 +15,7 @@ use Symfony\Component\Yaml\Yaml;
class PluginRouteLoader extends Loader
{
protected $rootDir;
/**
* DynamicRouteLoader constructor.
*
@ -24,16 +25,7 @@ class PluginRouteLoader extends Loader
$this->rootDir = $rootDir;
}
/**
* 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)
public function load(mixed $resource, null|string $type = null): mixed
{
$routes = new RouteCollection();
try {
@ -43,11 +35,14 @@ class PluginRouteLoader extends Loader
$collection = (new \MongoDB\Client('mongodb://mongodb/'))->psc->Plugin;
}
$plugins = $collection->find(array('installed' => true));
$plugins = $collection->find(['installed' => true]);
/** @var Plugin $plugin */
foreach ($plugins as $plugin) {
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);
}
}
@ -60,16 +55,8 @@ class PluginRouteLoader extends Loader
return $routes;
}
/**
* 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)
public function supports(mixed $resource, null|string $type = null): bool
{
return ($type == 'plugin');
return $type == 'plugin';
}
}

View File

@ -13,32 +13,23 @@ class CreateCommand extends Command
{
protected function configure()
{
$this
->setName('application:create')
$this->setName('application:create')
->setDescription('Creates Application MongoDb')
->addArgument(
'uuid',
InputArgument::REQUIRED,
'Uuid für die App'
)
->addArgument(
'server',
InputArgument::REQUIRED,
'Server für die App'
)
;
->addArgument('uuid', 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');
$server = $input->getArgument('server');
$instance = $this->getContainer()->get('doctrine_mongodb')
$instance = $this->getContainer()
->get('doctrine_mongodb')
->getRepository(Instance::class)
->findOneByAppId($uuid);
$str = "Found";
$str = 'Found';
if (!$instance) {
$instance = new Instance();
@ -49,7 +40,7 @@ class CreateCommand extends Command
$dm->persist($instance);
$dm->flush();
$str = "Not Found";
$str = 'Not Found';
} else {
$instance->setSyncServer($server);
@ -59,5 +50,6 @@ class CreateCommand extends Command
}
$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\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Security;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\Security\Core\User\User;
class CopyType extends AbstractType

View File

@ -1,11 +1,11 @@
psc_system_settings_backend:
resource: "@PSCSystemSettingsBundle/Controller/Backend"
type: annotation
type: attribute
prefix: /backend/system/settings
psc_system_settings_api:
resource: "@PSCSystemSettingsBundle/Api"
type: annotation
type: attribute
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">
<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>
Logs
Logs <span class="text-gray-500">{{ 'List'|trans }}</span>
</h1>
</div>
{% endblock %}

View File

@ -26,27 +26,18 @@ class DynamicRouteLoader implements LoaderInterface
$this->shopService = $shopService;
}
/**
* 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)
public function load(mixed $resource, null|string $type = null): mixed
{
$collection = new RouteCollection();
/** @var DynamicPage[] $pages */
//$pages = $this->em->getRepository(DynamicPage::class)->findAll();
/*
foreach ($pages as $page) {
$route = new Route($page->url, ['_controller' => 'AcmeBundle:Dynamic:dynamic', 'templateId' => $page->id]);
$collection->add('_dynamic_id_'.$page->id, $route);
}
*/
/*
* foreach ($pages as $page) {
* $route = new Route($page->url, ['_controller' => 'AcmeBundle:Dynamic:dynamic', 'templateId' => $page->id]);
* $collection->add('_dynamic_id_'.$page->id, $route);
* }
*/
return $collection;
}
@ -58,16 +49,16 @@ class DynamicRouteLoader implements LoaderInterface
*
* @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 Symfony\Component\Security\Core\Security;
use Symfony\Bundle\SecurityBundle\Security;
class Token
{

View File

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

View File

@ -17,27 +17,12 @@
"ddeboer/imap": {
"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": {
"version": "1.10.0"
},
"doctrine/collections": {
"version": "1.6.4"
},
"doctrine/common": {
"version": "2.12.0"
},
"doctrine/dbal": {
"version": "v2.10.1"
},
@ -205,9 +190,6 @@
"league/uri-interfaces": {
"version": "1.1.1"
},
"lexik/form-filter-bundle": {
"version": "v5.0.10"
},
"lexik/jwt-authentication-bundle": {
"version": "2.9999999",
"recipe": {
@ -310,15 +292,6 @@
"oyejorge/less.php": {
"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": {
"version": "1.6.0"
},
@ -507,24 +480,15 @@
"seld/signal-handler": {
"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": {
"version": "1.6.2"
},
"sofort/sofortlib-php": {
"version": "3.3.2"
},
"spiriitlabs/form-filter-bundle": {
"version": "v12.0.1"
},
"squizlabs/php_codesniffer": {
"version": "4.0",
"recipe": {
@ -776,9 +740,6 @@
"symfony/polyfill-mbstring": {
"version": "v1.15.0"
},
"symfony/polyfill-php72": {
"version": "v1.15.0"
},
"symfony/polyfill-php80": {
"version": "v1.17.1"
},
@ -853,9 +814,6 @@
"symfony/string": {
"version": "5.2-dev"
},
"symfony/templating": {
"version": "v4.4.7"
},
"symfony/translation": {
"version": "3.3",
"recipe": {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
plugin_custom_hug_contact_backend:
resource: "@PluginCustomHugContact/Controller/Backend"
type: annotation
type: attribute
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\Security\Core\Authentication\Token\Storage\TokenStorage;
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
{

View File

@ -33,7 +33,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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
{

View File

@ -33,7 +33,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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
{

View File

@ -33,7 +33,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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
{

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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\TemplateVars;
use Symfony\Component\Mailer\MailerInterface;

View File

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

View File

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

View File

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

View File

@ -28,7 +28,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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
{

View File

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

View File

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

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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;
class Export implements QueueInterface, ConfigurableElementInterface

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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;
class Export implements QueueInterface, ConfigurableElementInterface

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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;
class Export implements QueueInterface, ConfigurableElementInterface

View File

@ -32,7 +32,7 @@ use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
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\Shop\QueueBundle\Event\Position\Status\Change;
class Export implements QueueInterface, ConfigurableElementInterface

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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