diff --git a/.env.dist b/.env.dist index 5695a3fd050..42b9988580d 100644 --- a/.env.dist +++ b/.env.dist @@ -23,13 +23,9 @@ DATABASE_URL=sqlite:///var/eccube.db DATABASE_SERVER_VERSION=3 ###< doctrine/doctrine-bundle ### -###> symfony/swiftmailer-bundle ### -# For Gmail as a transport, use: "gmail://username:password@localhost" -# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode=" -# For a debug SMTP server, use: "smtp://mailcatcher:1025" -# Delivery is disabled by default via "null://localhost" -MAILER_URL=null://localhost -###< symfony/swiftmailer-bundle ### +###> symfony/mailer ### +MAILER_DSN=null://null +###< symfony/mailer ### ###> APPLICATION CONFIG ### # EC-CUBE Configs. The default value is defined in app/config/packages/eccube.yaml. @@ -55,4 +51,4 @@ MAILER_URL=null://localhost #ECCUBE_2FA_COOKIE_NAME=eccube_2fa #ECCUBE_2FA_EXPIRE=14 -###< APPLICATION CONFIG ### +###< APPLICATION CONFIG ### \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index acb07cc9919..0e9b5f1273b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -72,7 +72,7 @@ jobs: bin/console eccube:composer:require "ec-cube/gmc" - name: revert to config platform.php - run: composer config platform.php 7.3.0 + run: composer config platform.php 7.4.0 - name: Pre Install Plugins env: diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index e9c3f7a665f..d89fb661856 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -110,7 +110,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} - MAILER_URL: 'smtp://127.0.0.1:1025' + MAILER_DSN: 'smtp://127.0.0.1:1025' ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' run: php -S 127.0.0.1:8000 codeception/router.php & @@ -119,7 +119,7 @@ jobs: APP_ENV: ${{ matrix.app_env }} DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} - MAILER_URL: 'smtp://127.0.0.1:1025' + MAILER_DSN: 'smtp://127.0.0.1:1025' ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' GROUP: ${{ matrix.group }} SYMFONY_DEPRECATIONS_HELPER: weak diff --git a/.github/workflows/plugin-test.yml b/.github/workflows/plugin-test.yml index 72543d23d88..8582e6fd8c2 100644 --- a/.github/workflows/plugin-test.yml +++ b/.github/workflows/plugin-test.yml @@ -134,6 +134,13 @@ jobs: if [[ ! -d ${PWD}/repos ]]; then mkdir -p ${PWD}/repos ; fi docker run -d --rm -v ${PWD}/repos:/repos -e MOCK_REPO_DIR=/repos -p 8080:8080 eccube/mock-package-api:composer2 + ## XXX Symfony5.4 に対応するためには trikoder/oauth2-bundle "v3.x-dev@dev" に依存する必要がある + ## XXX 依存する Bundle を先に require して, Symfony Flex が Bundle を二重定義してしまう問題を回避する + - run: | + sed -e 's/"minimum-stability": "stable",/"minimum-stability": "dev",/g' -i composer.json + composer require nyholm/psr7 "^1.5" + composer require ajgarlag/psr-http-message-bundle "^1.2" + - name: Codeception env: APP_ENV: ${{ matrix.app_env }} diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 96455004151..7c7d367c9c3 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-18.04 ] - php: [ '7.3', '7.4' ] + php: [ '7.4', '8.0', '8.1' ] db: [ mysql, pgsql, sqlite3 ] include: - db: mysql @@ -76,6 +76,7 @@ jobs: - name: Setup EC-CUBE env: + APP_ENV: 'test' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} run: | @@ -83,6 +84,13 @@ jobs: bin/console doctrine:schema:create bin/console eccube:fixtures:load + - name: PHPUnit + env: + APP_ENV: 'test' + DATABASE_URL: ${{ matrix.database_url }} + DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + MAILER_URL: 'smtp://127.0.0.11025' + run: bin/phpunit --exclude-group cache-clear,cache-clear-install,update-schema-doctrine,plugin-service - name: PHPUnit env: APP_ENV: 'test' @@ -90,7 +98,6 @@ jobs: DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} MAILER_URL: 'smtp://127.0.0.11025' run: | - bin/phpunit --exclude-group cache-clear,cache-clear-install,update-schema-doctrine bin/phpunit --group cache-clear bin/phpunit --group cache-clear-install bin/phpunit --group update-schema-doctrine --exclude-group update-schema-doctrine-install @@ -101,3 +108,19 @@ jobs: bin/phpunit --group update-schema-doctrine-install --filter=testDisablePluginWithNoProxy bin/phpunit --group update-schema-doctrine-install --filter=testDisablePluginWithProxy bin/phpunit --group update-schema-doctrine-install --filter=testCreateEntityAndTrait + ## XXX MySQL で Syntax error or access violation: 1305 SAVEPOINT DOCTRINE2_SAVEPOINT_3 does not exist が + ## 発生するため \DAMA\DoctrineTestBundle\PHPUnit\PHPUnitListener を削除する + ## see https://github.com/dmaicher/doctrine-test-bundle/issues/58#issuecomment-391081408 + - run: sed -e '/DoctrineTestBundle/d' phpunit.xml.dist > phpunit.xml + if: ${{ matrix.db == 'mysql' }} + - name: PHPUnit + env: + APP_ENV: 'test' + DATABASE_URL: ${{ matrix.database_url }} + DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + MAILER_URL: 'smtp://127.0.0.11025' + run: | + rm -r app/Plugin/* + git checkout app/Plugin + rm -r var/cache + bin/phpunit --group plugin-service diff --git a/.gitignore b/.gitignore index 40847b95770..2b2772f3873 100644 --- a/.gitignore +++ b/.gitignore @@ -50,7 +50,3 @@ node_modules .php_cs .php_cs.cache ###< friendsofphp/php-cs-fixer ### - -###> symfony/web-server-bundle ### -.web-server-pid -###< symfony/web-server-bundle ### diff --git a/app/DoctrineMigrations/Version20190821081036.php b/app/DoctrineMigrations/Version20190821081036.php index e672f0d5db5..3d89b085355 100644 --- a/app/DoctrineMigrations/Version20190821081036.php +++ b/app/DoctrineMigrations/Version20190821081036.php @@ -32,7 +32,7 @@ public function up(Schema $schema): void return; } - $taxRateExists = $this->connection->fetchColumn("SELECT COUNT(*) FROM dtb_csv WHERE csv_type_id = 1 AND entity_name = ? AND field_name = 'TaxRule' AND reference_field_name = 'tax_rate'", ['Eccube\\\\Entity\\\\ProductClass']); + $taxRateExists = $this->connection->fetchOne("SELECT COUNT(*) FROM dtb_csv WHERE csv_type_id = 1 AND entity_name = ? AND field_name = 'TaxRule' AND reference_field_name = 'tax_rate'", ['Eccube\\\\Entity\\\\ProductClass']); if ($taxRateExists == 0) { $this->addSql("INSERT INTO dtb_csv (csv_type_id, creator_id, entity_name, field_name, reference_field_name, disp_name, sort_no, enabled, create_date, update_date, discriminator_type) VALUES (1, null , ?, 'TaxRule', 'tax_rate', '税率', 31, false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP,'csv')", ['Eccube\\\\Entity\\\\ProductClass']); } diff --git a/app/DoctrineMigrations/Version20201127000000.php b/app/DoctrineMigrations/Version20201127000000.php index fd5f8ebf01c..19e9c60cec6 100644 --- a/app/DoctrineMigrations/Version20201127000000.php +++ b/app/DoctrineMigrations/Version20201127000000.php @@ -25,12 +25,12 @@ final class Version20201127000000 extends AbstractMigration { public function up(Schema $schema): void { - $count = $this->connection->fetchColumn("SELECT COUNT(*) FROM dtb_page WHERE url = 'entry_confirm'"); + $count = $this->connection->fetchOne("SELECT COUNT(*) FROM dtb_page WHERE url = 'entry_confirm'"); if ($count > 0) { return; } - $pageId = $this->connection->fetchColumn('SELECT MAX(id) FROM dtb_page'); - $sortNo = $this->connection->fetchColumn('SELECT MAX(sort_no) FROM dtb_page_layout'); + $pageId = $this->connection->fetchOne('SELECT MAX(id) FROM dtb_page'); + $sortNo = $this->connection->fetchOne('SELECT MAX(sort_no) FROM dtb_page_layout'); $pageId++; $this->addSql("INSERT INTO dtb_page ( diff --git a/app/DoctrineMigrations/Version20201218044542.php b/app/DoctrineMigrations/Version20201218044542.php index 3c9fb1dc66d..56e8168b513 100644 --- a/app/DoctrineMigrations/Version20201218044542.php +++ b/app/DoctrineMigrations/Version20201218044542.php @@ -25,10 +25,10 @@ final class Version20201218044542 extends AbstractMigration { public function up(Schema $schema): void { - $pointExists = $this->connection->fetchColumn("SELECT COUNT(*) FROM dtb_csv WHERE csv_type_id = 2 AND field_name = 'point'"); + $pointExists = $this->connection->fetchOne("SELECT COUNT(*) FROM dtb_csv WHERE csv_type_id = 2 AND field_name = 'point'"); if ($pointExists == 0) { - $sortNo = $this->connection->fetchColumn('SELECT MAX(sort_no) + 1 FROM dtb_csv WHERE csv_type_id = 2'); + $sortNo = $this->connection->fetchOne('SELECT MAX(sort_no) + 1 FROM dtb_csv WHERE csv_type_id = 2'); $this->addSql("INSERT INTO dtb_csv ( csv_type_id, creator_id, entity_name, field_name, disp_name, sort_no, enabled, create_date, update_date, discriminator_type ) VALUES ( diff --git a/app/DoctrineMigrations/Version20210316120000.php b/app/DoctrineMigrations/Version20210316120000.php index abec0517893..9f15b9a6117 100644 --- a/app/DoctrineMigrations/Version20210316120000.php +++ b/app/DoctrineMigrations/Version20210316120000.php @@ -13,13 +13,13 @@ final class Version20210316120000 extends AbstractMigration public function up(Schema $schema): void { // データ存在チェック - $count = $this->connection->fetchColumn("SELECT COUNT(*) FROM dtb_block WHERE block_name = 'カレンダー'"); + $count = $this->connection->fetchOne("SELECT COUNT(*) FROM dtb_block WHERE block_name = 'カレンダー'"); if ($count > 0) { return; } // idを取得する - $id = $this->connection->fetchColumn('SELECT MAX(id) FROM dtb_block'); + $id = $this->connection->fetchOne('SELECT MAX(id) FROM dtb_block'); $id++; $this->addSql("INSERT INTO dtb_block (id, block_name, file_name, use_controller, deletable, create_date, update_date, device_type_id, discriminator_type) VALUES ($id, 'カレンダー', 'calendar', true, false, '2021-03-16 12:00:00', '2021-03-16 12:00:00', 10, 'block')"); diff --git a/app/DoctrineMigrations/Version20210319122142.php b/app/DoctrineMigrations/Version20210319122142.php index 90a320c2d22..552191f5310 100644 --- a/app/DoctrineMigrations/Version20210319122142.php +++ b/app/DoctrineMigrations/Version20210319122142.php @@ -32,15 +32,15 @@ public function up(Schema $schema): void LoginHistoryStatus::SUCCESS => $lang === 'en' ? 'Success' : '成功', ]; - $sortNo = $this->connection->fetchColumn('SELECT MAX(sort_no) + 1 FROM mtb_login_history_status'); + $sortNo = $this->connection->fetchOne('SELECT MAX(sort_no) + 1 FROM mtb_login_history_status'); if (is_null($sortNo)) { $sortNo = 0; } foreach ($statuses as $id => $name) { - $statusExists = $this->connection->fetchColumn( + $statusExists = $this->connection->fetchOne( 'SELECT COUNT(*) FROM mtb_login_history_status WHERE id = :id', - [':id' => $id] + ['id' => $id] ); if ($statusExists == 0) { diff --git a/app/DoctrineMigrations/Version20210412073123.php b/app/DoctrineMigrations/Version20210412073123.php index 68691054850..2681c625da7 100644 --- a/app/DoctrineMigrations/Version20210412073123.php +++ b/app/DoctrineMigrations/Version20210412073123.php @@ -28,7 +28,7 @@ final class Version20210412073123 extends AbstractMigration public function up(Schema $schema): void { if ($schema->hasTable('plg_admin_record_config')) { - $denyHostsPlugin = $this->connection->fetchColumn('select admin_deny_hosts FROM plg_admin_record_config') ?: ''; + $denyHostsPlugin = $this->connection->fetchOne('select admin_deny_hosts FROM plg_admin_record_config') ?: ''; $denyHostsPlugin = array_filter(\explode("\n", StringUtil::convertLineFeed($denyHostsPlugin)), function ($str) { return StringUtil::isNotBlank($str); }); diff --git a/app/config/eccube/bundles.php b/app/config/eccube/bundles.php index 283e9d347e5..87d01da5996 100644 --- a/app/config/eccube/bundles.php +++ b/app/config/eccube/bundles.php @@ -14,20 +14,17 @@ return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], - Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle::class => ['all' => true], Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], - Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['all' => true], Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], - Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true], Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true, 'install' => true], - Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true, 'install' => true], Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true, 'install' => true], - DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true], Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], - SunCat\MobileDetectBundle\MobileDetectBundle::class => ['all' => true], Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::class => ['all' => true], Exercise\HTMLPurifierBundle\ExerciseHTMLPurifierBundle::class => ['all' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true], + Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], ]; diff --git a/app/config/eccube/packages/dev/doctrine.yaml b/app/config/eccube/packages/dev/doctrine.yaml index 52f421b4a65..313b8ec097c 100644 --- a/app/config/eccube/packages/dev/doctrine.yaml +++ b/app/config/eccube/packages/dev/doctrine.yaml @@ -2,4 +2,4 @@ # https://symfony.com/doc/master/bundles/DoctrineBundle/configuration.html doctrine: orm: - result_cache_driver: array + result_cache_driver: ~ diff --git a/app/config/eccube/packages/dev/swiftmailer.yaml b/app/config/eccube/packages/dev/swiftmailer.yaml deleted file mode 100644 index 5c36456a826..00000000000 --- a/app/config/eccube/packages/dev/swiftmailer.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# See https://symfony.com/doc/current/email/dev_environment.html -swiftmailer: - # send all emails to a specific address - #delivery_addresses: ['me@example.com'] diff --git a/app/config/eccube/packages/doctrine_migrations.yaml b/app/config/eccube/packages/doctrine_migrations.yaml index 7fcb36d30a0..f965e816329 100644 --- a/app/config/eccube/packages/doctrine_migrations.yaml +++ b/app/config/eccube/packages/doctrine_migrations.yaml @@ -1,4 +1,6 @@ doctrine_migrations: - dir_name: "%kernel.project_dir%/app/DoctrineMigrations" - namespace: DoctrineMigrations - organize_migrations: false + migrations_paths: + # namespace is arbitrary but should be different from App\Migrations + # as migrations classes should NOT be autoloaded + 'DoctrineMigrations': '%kernel.project_dir%/app/DoctrineMigrations' + enable_profiler: '%kernel.debug%' diff --git a/app/config/eccube/packages/eccube.yaml b/app/config/eccube/packages/eccube.yaml index fc903ec4ccb..057fde6622e 100644 --- a/app/config/eccube/packages/eccube.yaml +++ b/app/config/eccube/packages/eccube.yaml @@ -4,23 +4,23 @@ parameters: env(ECCUBE_USER_DATA_ROUTE): 'user_data' env(ECCUBE_ADMIN_ALLOW_HOSTS): '[]' env(ECCUBE_ADMIN_DENY_HOSTS): '[]' - env(ECCUBE_FORCE_SSL): false + env(ECCUBE_FORCE_SSL): '0' env(ECCUBE_TEMPLATE_CODE): 'default' env(ECCUBE_AUTH_MAGIC): '' env(ECCUBE_COOKIE_NAME): 'eccube' env(ECCUBE_COOKIE_PATH): '/' - env(ECCUBE_COOKIE_LIFETIME): 0 - env(ECCUBE_GC_MAXLIFETIME): 1440 + env(ECCUBE_COOKIE_LIFETIME): '0' + env(ECCUBE_GC_MAXLIFETIME): '1440' env(ECCUBE_PACKAGE_API_URL): 'https://package-api-c2.ec-cube.net' env(ECCUBE_OWNERS_STORE_URL): 'https://www.ec-cube.net' env(ECCUBE_MAINTENANCE_FILE_PATH): '%kernel.project_dir%/.maintenance' - env(ECCUBE_2FA_ENABLED): true + env(ECCUBE_2FA_ENABLED): '1' env(ECCUBE_2FA_COOKIE_NAME): 'eccube_2fa' - env(ECCUBE_2FA_EXPIRE): 14 + env(ECCUBE_2FA_EXPIRE): '14' # EC-CUBE parameter eccube_database_url: '%env(DATABASE_URL)%' - eccube_mailer_url: '%env(MAILER_URL)%' + eccube_mailer_dsn: '%env(MAILER_DSN)%' eccube_admin_route: '%env(ECCUBE_ADMIN_ROUTE)%' eccube_user_data_route: '%env(ECCUBE_USER_DATA_ROUTE)%' eccube_admin_allow_hosts: '%env(json:ECCUBE_ADMIN_ALLOW_HOSTS)%' diff --git a/app/config/eccube/packages/framework.yaml b/app/config/eccube/packages/framework.yaml index 6145711bcc8..e74e7735d96 100644 --- a/app/config/eccube/packages/framework.yaml +++ b/app/config/eccube/packages/framework.yaml @@ -49,4 +49,4 @@ framework: # See https://symfony.com/doc/current/reference/configuration/framework.html#ide ide: ~ validation: { enable_annotations: true } - templating: { engines: ['twig'] } + # templating: { engines: ['twig'] } diff --git a/app/config/eccube/packages/mailer.yaml b/app/config/eccube/packages/mailer.yaml new file mode 100644 index 00000000000..b05be494e13 --- /dev/null +++ b/app/config/eccube/packages/mailer.yaml @@ -0,0 +1,5 @@ +parameters: + env(MAILER_DSN): '' +framework: + mailer: + dsn: '%env(MAILER_DSN)%' diff --git a/app/config/eccube/packages/order_state_machine.php b/app/config/eccube/packages/order_state_machine.php index 3f13bcd7996..b3a7c46822b 100644 --- a/app/config/eccube/packages/order_state_machine.php +++ b/app/config/eccube/packages/order_state_machine.php @@ -19,13 +19,12 @@ 'order' => [ 'type' => 'state_machine', 'marking_store' => [ - 'type' => 'single_state', - 'arguments' => 'status', + 'type' => 'method' ], 'supports' => [ OrderStateMachineContext::class, ], - 'initial_place' => (string) Status::NEW, + 'initial_marking' => (string) Status::NEW, 'places' => [ (string) Status::NEW, (string) Status::CANCEL, diff --git a/app/config/eccube/packages/swiftmailer.yaml b/app/config/eccube/packages/swiftmailer.yaml deleted file mode 100644 index 70d76b70dbb..00000000000 --- a/app/config/eccube/packages/swiftmailer.yaml +++ /dev/null @@ -1,5 +0,0 @@ -parameters: - env(MAILER_URL): '' -swiftmailer: - url: '%env(MAILER_URL)%' - spool: { type: 'memory' } diff --git a/app/config/eccube/packages/test/doctrine.yaml b/app/config/eccube/packages/test/doctrine.yaml index 52f421b4a65..313b8ec097c 100644 --- a/app/config/eccube/packages/test/doctrine.yaml +++ b/app/config/eccube/packages/test/doctrine.yaml @@ -2,4 +2,4 @@ # https://symfony.com/doc/master/bundles/DoctrineBundle/configuration.html doctrine: orm: - result_cache_driver: array + result_cache_driver: ~ diff --git a/app/config/eccube/packages/test/swiftmailer.yaml b/app/config/eccube/packages/test/swiftmailer.yaml deleted file mode 100644 index f43807805e0..00000000000 --- a/app/config/eccube/packages/test/swiftmailer.yaml +++ /dev/null @@ -1,2 +0,0 @@ -swiftmailer: - disable_delivery: true diff --git a/app/config/eccube/packages/twig_extensions.yaml b/app/config/eccube/packages/twig_extensions.yaml index 50840691d51..3ab3be512b3 100644 --- a/app/config/eccube/packages/twig_extensions.yaml +++ b/app/config/eccube/packages/twig_extensions.yaml @@ -6,5 +6,5 @@ services: #Twig\Extensions\ArrayExtension: ~ #Twig\Extensions\DateExtension: ~ - Twig\Extensions\IntlExtension: ~ + # Twig\Extensions\IntlExtension: ~ #Twig\Extensions\TextExtension: ~ diff --git a/app/config/eccube/routes.yaml b/app/config/eccube/routes.yaml index 071f74be27c..e33de9cc922 100644 --- a/app/config/eccube/routes.yaml +++ b/app/config/eccube/routes.yaml @@ -1,8 +1,8 @@ controllers: - resource: ../../src/Eccube/Controller/ + resource: ../../../src/Eccube/Controller type: annotation customize_controllers: - resource: ../../app/Customize/Controller/ + resource: ../../../app/Customize/Controller type: annotation # prefix: /{_locale} diff --git a/app/config/eccube/routes/dev/twig.yaml b/app/config/eccube/routes/dev/twig.yaml index a61972bff17..bb3750c2df6 100644 --- a/app/config/eccube/routes/dev/twig.yaml +++ b/app/config/eccube/routes/dev/twig.yaml @@ -1,3 +1,3 @@ -_errors: - resource: '@TwigBundle/Resources/config/routing/errors.xml' - prefix: /_error +# _errors: + # resource: '@TwigBundle/Resources/config/routing/errors.xml' + # prefix: /_error diff --git a/app/config/eccube/routes/install/twig.yaml b/app/config/eccube/routes/install/twig.yaml index a61972bff17..d28559ee37b 100644 --- a/app/config/eccube/routes/install/twig.yaml +++ b/app/config/eccube/routes/install/twig.yaml @@ -1,3 +1,3 @@ -_errors: - resource: '@TwigBundle/Resources/config/routing/errors.xml' - prefix: /_error +# _errors: +# resource: '@TwigBundle/Resources/config/routing/errors.xml' +# prefix: /_error diff --git a/app/config/eccube/routes_install.yaml b/app/config/eccube/routes_install.yaml index 920cb2e4333..5b33ca46abb 100644 --- a/app/config/eccube/routes_install.yaml +++ b/app/config/eccube/routes_install.yaml @@ -1,3 +1,3 @@ controllers: - resource: ../../src/Eccube/Controller/Install/ - type: annotation \ No newline at end of file + resource: ../../../src/Eccube/Controller/Install/ + type: annotation diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index f2be963c492..06934ceb0a1 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -29,10 +29,6 @@ services: $orderPurchaseFlow: '@eccube.purchase.flow.order' $_orderStateMachine: '@state_machine.order' - event_dispatcher: - class: Eccube\Event\EventDispatcherWrapper - public: true - # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name Eccube\: @@ -100,7 +96,7 @@ services: tags: ['controller.service_arguments'] twig.extension.stringloader: - class: Twig_Extension_StringLoader + class: Twig\Extension\StringLoaderExtension tags: ['twig.extension'] eccube.collector.core: @@ -169,7 +165,7 @@ services: Monolog\Processor\IntrospectionProcessor: arguments: - - '!php/const:Monolog\Logger::DEBUG' + - 100 # Logger::DEBUG = 100 - ['Eccube\\Log', 'Psr\\Log'] tags: - { name: monolog.processor } @@ -206,7 +202,7 @@ services: Eccube\DependencyInjection\Facade\AnnotationReaderFacade: public: true - SunCat\MobileDetectBundle\DeviceDetector\MobileDetector: + Detection\MobileDetect: tags: - { name: mobile_detect.mobile_detector.default } - { name: mobile_detect.mobile_detector } diff --git a/bin/console b/bin/console index 4988d92f098..6ce7a0fc920 100755 --- a/bin/console +++ b/bin/console @@ -1,11 +1,11 @@ #!/usr/bin/env php load(__DIR__.'/../.env'); + (Dotenv::createUnsafeMutable(__DIR__.'/../'))->load(); } else { - (new Dotenv())->load(__DIR__.'/../.env.install'); + (Dotenv::createUnsafeMutable(__DIR__.'/../', '.env.install'))->load(); } } diff --git a/bin/phpunit b/bin/phpunit index abe53ac7554..c4ff9278462 100755 --- a/bin/phpunit +++ b/bin/phpunit @@ -5,12 +5,6 @@ if (!file_exists(dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-php echo "Unable to find the `simple-phpunit` script in `vendor/symfony/phpunit-bridge/bin/`.\n"; exit(1); } -if (false === getenv('SYMFONY_PHPUNIT_VERSION')) { - putenv('SYMFONY_PHPUNIT_VERSION=8.3'); -} -if (false === getenv('SYMFONY_PHPUNIT_REMOVE')) { - putenv('SYMFONY_PHPUNIT_REMOVE=symfony/yaml'); -} if (false === getenv('SYMFONY_PHPUNIT_DIR')) { putenv('SYMFONY_PHPUNIT_DIR='.__DIR__.'/.phpunit'); } diff --git a/codeception/_data/plugins/Boomerang-1.0.0.tgz b/codeception/_data/plugins/Boomerang-1.0.0.tgz index 5eb3e364cfb..5ad97220b8a 100644 Binary files a/codeception/_data/plugins/Boomerang-1.0.0.tgz and b/codeception/_data/plugins/Boomerang-1.0.0.tgz differ diff --git a/codeception/_data/plugins/Bundle-1.0.0.tgz b/codeception/_data/plugins/Bundle-1.0.0.tgz index a4409486070..7e7b2d0305d 100644 Binary files a/codeception/_data/plugins/Bundle-1.0.0.tgz and b/codeception/_data/plugins/Bundle-1.0.0.tgz differ diff --git a/codeception/_data/plugins/Bundle-1.0.1.tgz b/codeception/_data/plugins/Bundle-1.0.1.tgz index 2f66eb3793c..6c932546aa5 100644 Binary files a/codeception/_data/plugins/Bundle-1.0.1.tgz and b/codeception/_data/plugins/Bundle-1.0.1.tgz differ diff --git a/codeception/_data/plugins/Emperor-1.0.0.tgz b/codeception/_data/plugins/Emperor-1.0.0.tgz index 48952a0472e..b40fbe2acbb 100644 Binary files a/codeception/_data/plugins/Emperor-1.0.0.tgz and b/codeception/_data/plugins/Emperor-1.0.0.tgz differ diff --git a/codeception/_data/plugins/Emperor-1.0.1.tgz b/codeception/_data/plugins/Emperor-1.0.1.tgz index 19963a2329c..8b15322d3cb 100644 Binary files a/codeception/_data/plugins/Emperor-1.0.1.tgz and b/codeception/_data/plugins/Emperor-1.0.1.tgz differ diff --git a/codeception/_data/plugins/Horizon-1.0.0.tgz b/codeception/_data/plugins/Horizon-1.0.0.tgz index 6b83e667f1c..7be753cbc77 100644 Binary files a/codeception/_data/plugins/Horizon-1.0.0.tgz and b/codeception/_data/plugins/Horizon-1.0.0.tgz differ diff --git a/codeception/_data/plugins/Horizon-1.0.1.tgz b/codeception/_data/plugins/Horizon-1.0.1.tgz index 93bce4af4fc..29fbde87ac0 100644 Binary files a/codeception/_data/plugins/Horizon-1.0.1.tgz and b/codeception/_data/plugins/Horizon-1.0.1.tgz differ diff --git a/codeception/_support/Page/AbstractPage.php b/codeception/_support/Page/AbstractPage.php index f450c0a8c12..bfc334621cb 100644 --- a/codeception/_support/Page/AbstractPage.php +++ b/codeception/_support/Page/AbstractPage.php @@ -35,7 +35,7 @@ public function __construct(\AcceptanceTester $I) */ protected function goPage($url, $pageTitle = '') { - $this->tester->amOnPage('/'.$url); + $this->tester->amOnPage($url); return $this; } diff --git a/codeception/_support/Page/Admin/CustomerEditPage.php b/codeception/_support/Page/Admin/CustomerEditPage.php index 9046c7f0c9e..f39e7e5245b 100644 --- a/codeception/_support/Page/Admin/CustomerEditPage.php +++ b/codeception/_support/Page/Admin/CustomerEditPage.php @@ -111,14 +111,14 @@ public function 入力_電話番号($value) public function 入力_パスワード($value) { - $this->tester->fillField(['id' => 'admin_customer_password_first'], $value); + $this->tester->fillField(['id' => 'admin_customer_plain_password_first'], $value); return $this; } public function 入力_パスワード確認($value) { - $this->tester->fillField(['id' => 'admin_customer_password_second'], $value); + $this->tester->fillField(['id' => 'admin_customer_plain_password_second'], $value); return $this; } diff --git a/codeception/_support/Page/Front/EntryPage.php b/codeception/_support/Page/Front/EntryPage.php index 043a4bdecbc..fe5ff567135 100644 --- a/codeception/_support/Page/Front/EntryPage.php +++ b/codeception/_support/Page/Front/EntryPage.php @@ -45,12 +45,12 @@ public function 新規会員登録($form = []) 'entry[phone_number]' => '1234567890', 'entry[email][first]' => $email, 'entry[email][second]' => $email, - 'entry[password][first]' => 'password', - 'entry[password][second]' => 'password', + 'entry[plain_password][first]' => 'password', + 'entry[plain_password][second]' => 'password', 'entry[user_policy_check]' => '1', ]; $this->tester->submitForm(['css' => '.ec-layoutRole__main form'], $form, ['css' => 'button.ec-blockBtn--action']); - $this->tester->see($form['entry[email][first]']); + $this->tester->seeInField(['id' => 'entry_email_first'], $form['entry[email][first]']); $this->tester->click('.ec-registerRole form button.ec-blockBtn--action'); return $this; diff --git a/codeception/_support/Page/Front/ProductDetailPage.php b/codeception/_support/Page/Front/ProductDetailPage.php index ad3e3ab26c5..68ea9a76ad7 100644 --- a/codeception/_support/Page/Front/ProductDetailPage.php +++ b/codeception/_support/Page/Front/ProductDetailPage.php @@ -30,7 +30,7 @@ public static function go($I, $id) { $page = new self($I); - return $page->goPage('products/detail/'.$id); + return $page->goPage('/products/detail/'.$id); } public function カテゴリ選択($categories) diff --git a/codeception/_support/Page/Front/TopPage.php b/codeception/_support/Page/Front/TopPage.php index 4f5465139e1..35f11372050 100644 --- a/codeception/_support/Page/Front/TopPage.php +++ b/codeception/_support/Page/Front/TopPage.php @@ -22,7 +22,7 @@ public static function go(\AcceptanceTester $I) { $page = new self($I); - return $page->goPage(''); + return $page->goPage('/'); } public function 新着情報選択($rowNum) diff --git a/codeception/_support/Page/Install/InstallPage.php b/codeception/_support/Page/Install/InstallPage.php index ebb6eea9e32..7cb43b14478 100644 --- a/codeception/_support/Page/Install/InstallPage.php +++ b/codeception/_support/Page/Install/InstallPage.php @@ -25,7 +25,7 @@ public static function go(\AcceptanceTester $I) { $page = new self($I); - return $page->goPage(''); + return $page->goPage('/'); } public function step1_次へボタンをクリック() diff --git a/codeception/acceptance/EA03ProductCest.php b/codeception/acceptance/EA03ProductCest.php index 14565f13c21..7dc112cc4e6 100644 --- a/codeception/acceptance/EA03ProductCest.php +++ b/codeception/acceptance/EA03ProductCest.php @@ -166,9 +166,9 @@ public function product_CSV出力項目設定(AcceptanceTester $I) $csvHeader = ProductManagePage::go($I) ->CSVダウンロード() ->CSVヘッダ取得(); - $I->assertContains('商品ID', $csvHeader); - $I->assertContains('ショップ用メモ欄', $csvHeader); - $I->assertContains('フリーエリア', $csvHeader); + $I->assertStringContainsString('商品ID', $csvHeader); + $I->assertStringContainsString('ショップ用メモ欄', $csvHeader); + $I->assertStringContainsString('フリーエリア', $csvHeader); // 一部項目を出力対象から解除 CsvSettingsPage::go($I) @@ -181,9 +181,9 @@ public function product_CSV出力項目設定(AcceptanceTester $I) $csvHeader = ProductManagePage::go($I) ->CSVダウンロード() ->CSVヘッダ取得(); - $I->assertContains('商品ID', $csvHeader); - $I->assertNotContains('ショップ用メモ欄', $csvHeader); - $I->assertNotContains('フリーエリア', $csvHeader); + $I->assertStringContainsString('商品ID', $csvHeader); + $I->assertStringNotContainsString('ショップ用メモ欄', $csvHeader); + $I->assertStringNotContainsString('フリーエリア', $csvHeader); } public function product_一覧でのソート(AcceptanceTester $I) diff --git a/codeception/acceptance/EA04OrderCest.php b/codeception/acceptance/EA04OrderCest.php index d7d0c3104b0..3cae67a5ca3 100644 --- a/codeception/acceptance/EA04OrderCest.php +++ b/codeception/acceptance/EA04OrderCest.php @@ -283,7 +283,7 @@ public function order_受注メール通知(AcceptanceTester $I) ->一覧_メール通知(1); $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); $I->seeInLastEmailSubjectTo('admin@example.com', '[EC-CUBE SHOP] 商品出荷のお知らせ'); @@ -304,7 +304,7 @@ public function order_一括メール通知(AcceptanceTester $I) ->一括メール送信(); $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(10); } @@ -523,7 +523,7 @@ public function order_個別出荷済みステータス変更(AcceptanceTester $ $I->wait(5); $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); $I->seeInLastEmailSubjectTo('admin@example.com', '[EC-CUBE SHOP] 商品出荷のお知らせ'); diff --git a/codeception/acceptance/EA05CustomerCest.php b/codeception/acceptance/EA05CustomerCest.php index eb9032377d2..206140e684f 100644 --- a/codeception/acceptance/EA05CustomerCest.php +++ b/codeception/acceptance/EA05CustomerCest.php @@ -279,7 +279,7 @@ public function customer_仮会員メール再送(AcceptanceTester $I) $I->wait(5); $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$customer->getEmail(), $BaseInfo->getEmail01()] as $email) { diff --git a/codeception/acceptance/EA07BasicinfoCest.php b/codeception/acceptance/EA07BasicinfoCest.php index d7e018d8257..3661b1c96d1 100644 --- a/codeception/acceptance/EA07BasicinfoCest.php +++ b/codeception/acceptance/EA07BasicinfoCest.php @@ -356,7 +356,7 @@ public function basicinfo_ポイント設定_有効(AcceptanceTester $I) CustomerManagePage::go($I) ->検索($customer->getEmail()) ->一覧_編集(1); - $I->seeInField(CustomerManagePage::$ポイント, $customerPoint); + $I->seeInField(CustomerManagePage::$ポイント, (string)$customerPoint); $I->expect('マイベージにて、ポイントが付与されていること'); MyPage::go($I); @@ -394,13 +394,13 @@ public function basicinfo_ポイント設定_有効(AcceptanceTester $I) ->検索($customer->getEmail()) ->一覧_編集(1); $I->see($expected_discount, OrderEditPage::$ポイント値引き額); - $I->seeInField(OrderEditPage::$利用ポイント, $expected_point); + $I->seeInField(OrderEditPage::$利用ポイント, (string)$expected_point); $I->expect('管理画面・会員管理にて、ポイントが減少していること'); CustomerManagePage::go($I) ->検索($customer->getEmail()) ->一覧_編集(1); - $I->seeInField(CustomerManagePage::$ポイント, $customerPoint); + $I->seeInField(CustomerManagePage::$ポイント, (string)$customerPoint); $I->amGoingTo('マイベージ 注文詳細にて、利用ポイントが計算されていること'); MyPage::go($I)->注文履歴詳細(0); @@ -790,8 +790,8 @@ public function basicinfo_CSV出力項目(AcceptanceTester $I) $I->wait(10); $csv = $I->getLastDownloadFile('/^order_\d{14}\.csv$/'); $csvHeader = mb_convert_encoding(file($csv)[0], 'UTF-8', 'SJIS-win'); - $I->assertContains('注文ID', $csvHeader); - $I->assertNotContains('誕生日', $csvHeader); + $I->assertStringContainsString('注文ID', $csvHeader); + $I->assertStringNotContainsString('誕生日', $csvHeader); } /** diff --git a/codeception/acceptance/EA10PluginCest.php b/codeception/acceptance/EA10PluginCest.php index 70291909fb7..7ac867acb44 100644 --- a/codeception/acceptance/EA10PluginCest.php +++ b/codeception/acceptance/EA10PluginCest.php @@ -557,7 +557,7 @@ public function columnNotExists() public function traitExists() { foreach ($this->traits as $trait => $target) { - $this->I->assertContains($trait, file_get_contents($this->config['kernel.project_dir'].'/app/proxy/entity/'.$target.'.php'), 'Traitがあるはず '.$trait); + $this->I->assertStringContainsString($trait, file_get_contents($this->config['kernel.project_dir'].'/app/proxy/entity/'.$target.'.php'), 'Traitがあるはず '.$trait); } } @@ -566,7 +566,7 @@ public function traitNotExists() foreach ($this->traits as $trait => $target) { $file = $this->config['kernel.project_dir'].'/app/proxy/entity/'.$target.'.php'; if (file_exists($file)) { - $this->I->assertNotContains($trait, file_get_contents($file), 'Traitがないはず '.$trait); + $this->I->assertStringNotContainsString($trait, file_get_contents($file), 'Traitがないはず '.$trait); } else { $this->I->assertTrue(true, 'Traitがないはず'); } diff --git a/codeception/acceptance/EF01TopCest.php b/codeception/acceptance/EF01TopCest.php index 6dbd29b55b6..f11471d99d5 100644 --- a/codeception/acceptance/EF01TopCest.php +++ b/codeception/acceptance/EF01TopCest.php @@ -107,7 +107,7 @@ public function topページ_新着情報(AcceptanceTester $I) $I->wait(1); // 押下された新着情報のセクションが広がり、詳細情報、リンクが表示される - $I->assertContains('コメント1', $topPage->新着情報詳細(1)); + $I->assertStringContainsString('コメント1', $topPage->新着情報詳細(1)); // 「詳しくはこちら」リンクを押下する $topPage->新着情報リンククリック(1); diff --git a/codeception/acceptance/EF02ProductCest.php b/codeception/acceptance/EF02ProductCest.php index 84b3a16b329..eae7ce96bb1 100644 --- a/codeception/acceptance/EF02ProductCest.php +++ b/codeception/acceptance/EF02ProductCest.php @@ -187,13 +187,13 @@ public function product_商品詳細カート1(AcceptanceTester $I) $productPage->カートに入れる(4); $I->wait(5); - $I->assertContains('カートに追加しました。', $productPage->カートに追加()); + $I->assertStringContainsString('カートに追加しました。', $productPage->カートに追加()); $cartPage = $productPage->カートへ進む(); // 入力された個数分が、カート画面の対象商品に追加されている。 - $I->assertContains('チェリーアイスサンド', $cartPage->商品名(1)); - $I->assertContains('4', $cartPage->商品数量(1)); + $I->assertStringContainsString('チェリーアイスサンド', $cartPage->商品名(1)); + $I->assertStringContainsString('4', $cartPage->商品数量(1)); // カートを空に $cartPage->商品削除(1); @@ -213,13 +213,13 @@ public function product_商品詳細カート2(AcceptanceTester $I) $productPage->カートに入れる(6); $I->wait(5); - $I->assertContains('「チェリーアイスサンド」は販売制限しております。一度に販売制限数を超える購入はできません。', $productPage->カートに追加()); + $I->assertStringContainsString('「チェリーアイスサンド」は販売制限しております。一度に販売制限数を超える購入はできません。', $productPage->カートに追加()); $cartPage = $productPage->カートへ進む(); // 入力された個数分が、カート画面の対象商品に追加されている。 - $I->assertContains('チェリーアイスサンド', $cartPage->商品名(1)); - $I->assertContains('5', $cartPage->商品数量(1)); + $I->assertStringContainsString('チェリーアイスサンド', $cartPage->商品名(1)); + $I->assertStringContainsString('5', $cartPage->商品数量(1)); // カートを空に $cartPage->商品削除(1); @@ -239,13 +239,13 @@ public function product_商品詳細カート3(AcceptanceTester $I) $productPage->カートに入れる(12); $I->wait(5); - $I->assertContains('「チェリーアイスサンド」は販売制限しております。一度に販売制限数を超える購入はできません。', $productPage->カートに追加()); + $I->assertStringContainsString('「チェリーアイスサンド」は販売制限しております。一度に販売制限数を超える購入はできません。', $productPage->カートに追加()); $cartPage = $productPage->カートへ進む(); // 入力された個数分が、カート画面の対象商品に追加されている。 - $I->assertContains('チェリーアイスサンド', $cartPage->商品名(1)); - $I->assertContains('5', $cartPage->商品数量(1)); + $I->assertStringContainsString('チェリーアイスサンド', $cartPage->商品名(1)); + $I->assertStringContainsString('5', $cartPage->商品数量(1)); // カートを空に $cartPage->商品削除(1); @@ -266,13 +266,13 @@ public function product_商品詳細カート4(AcceptanceTester $I) $I->wait(5); - $I->assertContains('カートに追加しました。', $productPage->カートに追加()); + $I->assertStringContainsString('カートに追加しました。', $productPage->カートに追加()); $cartPage = $productPage->カートへ進む(); // 入力された個数分が、カート画面の対象商品に追加されている。 - $I->assertContains('彩のジェラートCUBE', $cartPage->商品名(1)); - $I->assertContains('1', $cartPage->商品数量(1)); + $I->assertStringContainsString('彩のジェラートCUBE', $cartPage->商品名(1)); + $I->assertStringContainsString('1', $cartPage->商品数量(1)); // カートを空に $cartPage->商品削除(1); @@ -292,13 +292,13 @@ public function product_商品詳細カート5(AcceptanceTester $I) $I->wait(5); - $I->assertContains('「彩のジェラートCUBE - チョコ - 16mm × 16mm」は販売制限しております。一度に販売制限数を超える購入はできません。', $productPage->カートに追加()); + $I->assertStringContainsString('「彩のジェラートCUBE - チョコ - 16mm × 16mm」は販売制限しております。一度に販売制限数を超える購入はできません。', $productPage->カートに追加()); $cartPage = $productPage->カートへ進む(); // 入力された個数分が、カート画面の対象商品に追加されている。 - $I->assertContains('彩のジェラートCUBE', $cartPage->商品名(1)); - $I->assertContains('2', $cartPage->商品数量(1)); + $I->assertStringContainsString('彩のジェラートCUBE', $cartPage->商品名(1)); + $I->assertStringContainsString('2', $cartPage->商品数量(1)); // カートを空に $cartPage->商品削除(1); @@ -318,13 +318,13 @@ public function product_商品詳細カート6(AcceptanceTester $I) $I->wait(5); - $I->assertContains('「彩のジェラートCUBE - チョコ - 16mm × 16mm」は販売制限しております。一度に販売制限数を超える購入はできません。', $productPage->カートに追加()); + $I->assertStringContainsString('「彩のジェラートCUBE - チョコ - 16mm × 16mm」は販売制限しております。一度に販売制限数を超える購入はできません。', $productPage->カートに追加()); $cartPage = $productPage->カートへ進む(); // 入力された個数分が、カート画面の対象商品に追加されている。 - $I->assertContains('彩のジェラートCUBE', $cartPage->商品名(1)); - $I->assertContains('2', $cartPage->商品数量(1)); + $I->assertStringContainsString('彩のジェラートCUBE', $cartPage->商品名(1)); + $I->assertStringContainsString('2', $cartPage->商品数量(1)); // カートを空に $cartPage->商品削除(1); @@ -341,13 +341,13 @@ public function product_商品詳細カート7(AcceptanceTester $I) $productPage->カートに入れる(4); $I->wait(1); - $I->assertContains('「チェリーアイスサンド」の在庫が不足しております。一度に在庫数を超える購入はできません。', $productPage->カートに追加()); + $I->assertStringContainsString('「チェリーアイスサンド」の在庫が不足しております。一度に在庫数を超える購入はできません。', $productPage->カートに追加()); $cartPage = $productPage->カートへ進む(); // 在庫数分が、カート画面の対象商品に追加されている。 - $I->assertContains('チェリーアイスサンド', $cartPage->商品名(1)); - $I->assertContains('3', $cartPage->商品数量(1)); + $I->assertStringContainsString('チェリーアイスサンド', $cartPage->商品名(1)); + $I->assertStringContainsString('3', $cartPage->商品数量(1)); // カートを空に $cartPage->商品削除(1); diff --git a/codeception/acceptance/EF03OrderCest.php b/codeception/acceptance/EF03OrderCest.php index ffa40bd5d2e..c1c68b117d2 100644 --- a/codeception/acceptance/EF03OrderCest.php +++ b/codeception/acceptance/EF03OrderCest.php @@ -71,9 +71,9 @@ public function order_一覧からカートに入れる(AcceptanceTester $I) ->カートへ進む(); $I->assertEquals(1, $CartPage->明細数()); - $I->assertContains('彩のジェラートCUBE', $CartPage->商品名(1)); - $I->assertContains('チョコ', $CartPage->商品名(1)); - $I->assertContains('16mm × 16mm', $CartPage->商品名(1)); + $I->assertStringContainsString('彩のジェラートCUBE', $CartPage->商品名(1)); + $I->assertStringContainsString('チョコ', $CartPage->商品名(1)); + $I->assertStringContainsString('16mm × 16mm', $CartPage->商品名(1)); $I->assertEquals(1, $CartPage->商品数量(1)); } @@ -171,7 +171,7 @@ public function order_ログインユーザ購入(AcceptanceTester $I) // メール確認 $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$customer->getEmail(), $BaseInfo->getEmail01()] as $email) { // TODO 注文した商品の内容もチェックしたい @@ -240,7 +240,7 @@ public function order_ゲスト購入(AcceptanceTester $I) // 確認 $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$new_email, $BaseInfo->getEmail01()] as $email) { // TODO 注文した商品の内容もチェックしたい @@ -325,7 +325,7 @@ public function order_ゲスト購入情報変更(AcceptanceTester $I) ShoppingConfirmPage::at($I)->注文する(); $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$new_email, $BaseInfo->getEmail01()] as $email) { // TODO 注文した商品の内容もチェックしたい @@ -390,7 +390,7 @@ public function order_ログインしてカートをマージ(AcceptanceTester $ // メール確認 $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$customer->getEmail(), $BaseInfo->getEmail01()] as $email) { $I->seeInLastEmailSubjectTo($email, 'ご注文ありがとうございます'); @@ -534,7 +534,7 @@ public function order_ログインユーザ購入複数配送(AcceptanceTester $ // メール確認 $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$customer->getEmail(), $BaseInfo->getEmail01()] as $email) { $I->seeInLastEmailSubjectTo($email, 'ご注文ありがとうございます'); @@ -743,7 +743,7 @@ public function order_購入確認画面からカートに戻る(AcceptanceTeste // メール確認 $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$customer->getEmail(), $BaseInfo->getEmail01()] as $email) { $I->seeInLastEmailSubjectTo($email, 'ご注文ありがとうございます'); @@ -905,7 +905,7 @@ public function order_購入確認画面からカートに戻るWithお届け先 // メール確認 $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$customer->getEmail(), $BaseInfo->getEmail01()] as $email) { $I->seeInLastEmailSubjectTo($email, 'ご注文ありがとうございます'); @@ -1017,7 +1017,7 @@ public function order_複数ブラウザ_片方でログインしてカートに ->カートへ進む(); $I->assertEquals(1, $CartPage->明細数()); - $I->assertContains('チェリーアイスサンド', $CartPage->商品名(1)); + $I->assertStringContainsString('チェリーアイスサンド', $CartPage->商品名(1)); /* * ブラウザ2で未ログインのまま別の商品を入れる @@ -1028,7 +1028,7 @@ public function order_複数ブラウザ_片方でログインしてカートに ->カートへ進む(); $I->assertEquals(1, $CartPage->明細数()); - $I->assertContains('彩のジェラートCUBE', $CartPage->商品名(1)); + $I->assertStringContainsString('彩のジェラートCUBE', $CartPage->商品名(1)); /* * ブラウザ2でログインするとブラウザ1のカートとマージされている diff --git a/codeception/acceptance/EF04CustomerCest.php b/codeception/acceptance/EF04CustomerCest.php index f9e492fdbbe..aa12403f300 100644 --- a/codeception/acceptance/EF04CustomerCest.php +++ b/codeception/acceptance/EF04CustomerCest.php @@ -44,8 +44,8 @@ public function customer_会員登録正常(AcceptanceTester $I) 'entry[phone_number]' => '111-111-111', 'entry[email][first]' => $new_email, 'entry[email][second]' => $new_email, - 'entry[password][first]' => 'password', - 'entry[password][second]' => 'password', + 'entry[plain_password][first]' => 'password', + 'entry[plain_password][second]' => 'password', 'entry[job]' => ['value' => '1'], 'entry[user_policy_check]' => '1', ]; @@ -67,7 +67,7 @@ public function customer_会員登録正常(AcceptanceTester $I) $I->click('.ec-registerRole form button.ec-blockBtn--action'); $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$new_email, $BaseInfo->getEmail01()] as $email) { $I->seeInLastEmailSubjectTo($email, '会員登録のご確認'); @@ -88,7 +88,7 @@ public function customer_会員登録正常(AcceptanceTester $I) $I->see('新規会員登録(完了)', 'div.ec-pageHeader h1'); $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$new_email, $BaseInfo->getEmail01()] as $email) { $I->seeInLastEmailSubjectTo($email, '会員登録が完了しました。'); @@ -122,8 +122,8 @@ public function customer_会員登録異常1(AcceptanceTester $I) 'entry[phone_number]' => '111-111-111', 'entry[email][first]' => $customer->getEmail(), // 会員登録済みのメールアドレスを入力する 'entry[email][second]' => $customer->getEmail(), - 'entry[password][first]' => 'password', - 'entry[password][second]' => 'password', + 'entry[plain_password][first]' => 'password', + 'entry[plain_password][second]' => 'password', ], ['css' => 'button.ec-blockBtn--action']); // 入力した会員情報を確認する。 @@ -152,8 +152,8 @@ public function customer_会員登録異常2(AcceptanceTester $I) 'entry[phone_number]' => '111-111-111', 'entry[email][first]' => $new_email, 'entry[email][second]' => $new_email, - 'entry[password][first]' => 'password', - 'entry[password][second]' => 'password', + 'entry[plain_password][first]' => 'password', + 'entry[plain_password][second]' => 'password', ], ['css' => 'button.ec-blockBtn--action']); // 入力した会員情報を確認する。 @@ -194,8 +194,8 @@ public function customer_会員登録戻る(AcceptanceTester $I) 'entry[phone_number]' => '111-111-111', 'entry[email][first]' => $new_email, 'entry[email][second]' => $new_email, - 'entry[password][first]' => 'password', - 'entry[password][second]' => 'password', + 'entry[plain_password][first]' => 'password', + 'entry[plain_password][second]' => 'password', 'entry[job]' => ['value' => '1'], 'entry[user_policy_check]' => '1', ]; diff --git a/codeception/acceptance/EF05MypageCest.php b/codeception/acceptance/EF05MypageCest.php index 58030db46c3..913d0311531 100644 --- a/codeception/acceptance/EF05MypageCest.php +++ b/codeception/acceptance/EF05MypageCest.php @@ -153,8 +153,8 @@ public function mypage_会員情報編集(AcceptanceTester $I) 'entry[phone_number]' => '111-111-111', 'entry[email][first]' => $new_email, 'entry[email][second]' => $new_email, - 'entry[password][first]' => 'password', - 'entry[password][second]' => 'password', + 'entry[plain_password][first]' => 'password', + 'entry[plain_password][second]' => 'password', ]; $findPluginByCode = Fixtures::get('findPluginByCode'); diff --git a/codeception/acceptance/EF06OtherCest.php b/codeception/acceptance/EF06OtherCest.php index 81a66128da3..a24233b9879 100644 --- a/codeception/acceptance/EF06OtherCest.php +++ b/codeception/acceptance/EF06OtherCest.php @@ -97,7 +97,9 @@ public function other_パスワード再発行(AcceptanceTester $I) $I->seeEmailCount(1); $I->seeInLastEmailSubjectTo($customer->getEmail(), 'パスワード変更のご確認'); - $url = $I->grabFromLastEmailTo($customer->getEmail(), '@/forgot/reset/(.*)@'); + $messageBody = $I->lastMessage()->getSourceQuotedPrintableDecoded(); + preg_match('@/forgot/reset(.*)@', $messageBody, $matches); + $url = $matches[0]; $I->resetEmails(); $I->amOnPage($url); @@ -210,7 +212,7 @@ public function other_お問い合わせ1(AcceptanceTester $I) // メールチェック $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$new_email, $BaseInfo->getEmail01()] as $email) { $I->seeInLastEmailSubjectTo($email, 'お問い合わせを受け付けました'); @@ -255,7 +257,7 @@ public function other_お問い合わせ2(AcceptanceTester $I) 'contact[name][name01]' => '姓', 'contact[name][name02]' => '名', 'contact[postal_code]' => '5300001', - 'contact[address][pref]' => 27, + 'contact[address][pref]' => '27', 'contact[address][addr01]' => '大阪市北区梅田', 'contact[phone_number]' => '111111111', 'contact[contents]' => 'お問い合わせ内容の送信', @@ -271,7 +273,7 @@ public function other_お問い合わせ2(AcceptanceTester $I) // メールチェック $message = $I->lastMessage(); - $I->assertCount(2, $message['recipients'], 'Bcc で管理者にも送信するので宛先アドレスは2つ'); + $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ'); $I->seeEmailCount(1); foreach ([$new_email, $BaseInfo->getEmail01()] as $email) { $I->seeInLastEmailSubjectTo($email, 'お問い合わせを受け付けました'); diff --git a/codeception/acceptance/_bootstrap.php b/codeception/acceptance/_bootstrap.php index e5036bf8e43..281b68da905 100644 --- a/codeception/acceptance/_bootstrap.php +++ b/codeception/acceptance/_bootstrap.php @@ -27,11 +27,10 @@ * よってCodeceptionの設定によってコントロールされず、テスト後もデータベース内にこのデータは残る * データの件数によって、作成するかどうか判定される */ -if (file_exists($config['eccube_path'].'/vendor/autoload.php')) { - require_once $config['eccube_path'].'/vendor/autoload.php'; -} +require_once __DIR__.'/../../vendor/autoload.php'; + if (file_exists(__DIR__.'/../../.env')) { - (new \Dotenv\Dotenv(__DIR__.'/../../'))->overload(); + (\Dotenv\Dotenv::createUnsafeMutable(__DIR__.'/../../'))->load(); } $kernel = new Kernel('test', false); $kernel->boot(); diff --git a/composer.json b/composer.json index 2fdb32fdbda..0471325f240 100644 --- a/composer.json +++ b/composer.json @@ -12,114 +12,105 @@ }, "minimum-stability": "stable", "require": { - "php": "^7.3", + "php": "^7.4 || ^8.0", "ext-intl": "*", "ext-mbstring": "*", "composer/ca-bundle": "^1.1", "composer/composer": "^2.0", "doctrine/annotations": "^1.6", - "doctrine/cache": "^1.7", + "doctrine/cache": "^2.0", "doctrine/collections": "^1.5", - "doctrine/common": "^2.9", + "doctrine/common": "^3.0", "doctrine/data-fixtures": "^1.3", - "doctrine/dbal": "^2.9", - "doctrine/doctrine-bundle": "^1.9", - "doctrine/doctrine-cache-bundle": "^1.3", + "doctrine/dbal": "^3.3", + "doctrine/doctrine-bundle": "^2.0", "doctrine/doctrine-fixtures-bundle": "^3.0", - "doctrine/doctrine-migrations-bundle": "^1.3", - "doctrine/inflector": "^1.3", + "doctrine/doctrine-migrations-bundle": "^3.1", + "doctrine/inflector": "^2.0", "doctrine/instantiator": "^1.1", "doctrine/lexer": "^1.0", - "doctrine/migrations": "^1.8", - "doctrine/orm": "^2.6", + "doctrine/orm": "^2.11", "easycorp/easy-log-handler": "^1.0", "ec-cube/plugin-installer": "^2.0", "egulias/email-validator": "^2.1", "exercise/htmlpurifier-bundle": "^3.1", - "friendsofphp/php-cs-fixer": "^2.16", - "guzzlehttp/guzzle": "^6.3", - "knplabs/knp-paginator-bundle": "^2.7", + "friendsofphp/php-cs-fixer": "^3.8", + "guzzlehttp/guzzle": "^7.4", + "knplabs/knp-paginator-bundle": "^5.8", "mobiledetect/mobiledetectlib": "^2.8", - "monolog/monolog": "^1.23", - "nesbot/carbon": "^1.22", - "pimple/pimple": "^1.1", + "monolog/monolog": "^2.5", + "nesbot/carbon": "^2", "psr/cache": "^1.0", "psr/container": "^1.0", "psr/http-message": "^1.0", "psr/log": "^1.0", "psr/simple-cache": "^1.0", "robthree/twofactorauth": "^1.8", - "sensio/framework-extra-bundle": "^5.5", + "sensio/framework-extra-bundle": "^6.2", "setasign/fpdi": "^2.2", "setasign/fpdi-tcpdf": "^2.2", "skorp/detect-incompatible-samesite-useragents": "^1.0", - "suncat/mobile-detect-bundle": "^1.1", - "swiftmailer/swiftmailer": "^6.1", - "symfony/asset": "^4.4", - "symfony/cache": "^4.4", - "symfony/config": "^4.4", - "symfony/console": "^4.4", - "symfony/css-selector": "^4.4", - "symfony/debug": "^4.4", - "symfony/debug-bundle": "^4.4", - "symfony/dependency-injection": "^4.4", - "symfony/doctrine-bridge": "^4.4", - "symfony/dom-crawler": "^4.4", - "symfony/dotenv": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/expression-language": "^4.4", - "symfony/filesystem": "^4.4", - "symfony/finder": "^4.4", + "symfony/asset": "^5.4", + "symfony/cache": "^5.4", + "symfony/config": "^5.4", + "symfony/console": "^5.4", + "symfony/css-selector": "^5.4", + "symfony/debug-bundle": "^5.4", + "symfony/dependency-injection": "^5.4", + "symfony/doctrine-bridge": "^5.4", + "symfony/dom-crawler": "^5.4", + "symfony/dotenv": "^5.4", + "symfony/event-dispatcher": "^5.4", + "symfony/expression-language": "^5.4", + "symfony/filesystem": "^5.4", + "symfony/finder": "^5.4", "symfony/flex": "^1.0", - "symfony/form": "^4.4", - "symfony/framework-bundle": "^4.4", - "symfony/http-foundation": "^4.4", - "symfony/http-kernel": "^4.4", - "symfony/inflector": "^4.4", - "symfony/intl": "^4.4", + "symfony/form": "^5.4", + "symfony/framework-bundle": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/inflector": "^5.4", + "symfony/intl": "^5.4", + "symfony/mailer": "^5.4", "symfony/maker-bundle": "^1.0", - "symfony/monolog-bridge": "^4.4", + "symfony/monolog-bridge": "^5.4", "symfony/monolog-bundle": "^3.1", - "symfony/options-resolver": "^4.4", - "symfony/process": "^4.4", - "symfony/property-access": "^4.4", - "symfony/proxy-manager-bridge": "^4.4", - "symfony/routing": "^4.4", - "symfony/security": "^4.4", - "symfony/security-bundle": "^4.4", - "symfony/serializer": "^4.4", - "symfony/stopwatch": "^4.4", - "symfony/swiftmailer-bundle": "^3.1", - "symfony/templating": "^4.4", - "symfony/translation": "^4.4", - "symfony/twig-bridge": "^4.4", - "symfony/twig-bundle": "^4.4", - "symfony/validator": "^4.4", - "symfony/var-dumper": "^4.4", - "symfony/web-profiler-bundle": "^4.4", - "symfony/web-server-bundle": "^4.4", - "symfony/workflow": "^4.4", - "symfony/yaml": "^4.4", + "symfony/options-resolver": "^5.4", + "symfony/process": "^5.4", + "symfony/property-access": "^5.4", + "symfony/proxy-manager-bridge": "^5.4", + "symfony/routing": "^5.4", + "symfony/security-bundle": "^5.4", + "symfony/serializer": "^5.4", + "symfony/stopwatch": "^5.4", + "symfony/templating": "^5.4", + "symfony/translation": "^5.4", + "symfony/twig-bridge": "^5.4", + "symfony/twig-bundle": "^5.4", + "symfony/validator": "^5.4", + "symfony/var-dumper": "^5.4", + "symfony/web-profiler-bundle": "^5.4", + "symfony/workflow": "^5.4", + "symfony/yaml": "^5.4", "tecnickcom/tcpdf": "^6.2", - "twig/extensions": "^1.5", - "twig/twig": "^2.4", - "vlucas/phpdotenv": "v2.4.0" + "twig/extra-bundle": "^3.3", + "twig/intl-extra": "^3.3", + "twig/twig": "^2.15", + "vlucas/phpdotenv": "v5.4" }, "require-dev": { - "bheller/images-generator": "^1.0", - "captbaritone/mailcatcher-codeception-module": "^1.2", + "captbaritone/mailcatcher-codeception-module": "^2.4", "codeception/codeception": "^4.1", "codeception/module-asserts": "^1.3", "codeception/module-phpbrowser": "^1.0", "codeception/module-rest": "^1.3", "codeception/module-webdriver": "^1.2", - "dama/doctrine-test-bundle": "^5.0", - "fzaninotto/faker": "^1.7", + "dama/doctrine-test-bundle": "^6.6", + "fakerphp/faker": "^1.16", "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "< 8.0", - "symfony/browser-kit": "^4.4", - "symfony/phpunit-bridge": "^4.4" + "phpstan/phpstan": "^1.7", + "symfony/browser-kit": "^5.4", + "symfony/phpunit-bridge": "^5.4" }, "autoload": { "files": [ @@ -173,8 +164,7 @@ }, "conflict": { "symfony/symfony": "*", - "easycorp/easy-log-handler": "1.0.4|1.0.5", - "doctrine/inflector": "^1.4" + "easycorp/easy-log-handler": "1.0.4|1.0.5" }, "extra": { "symfony": { @@ -189,7 +179,7 @@ }, "config": { "platform": { - "php": "7.3.0" + "php": "7.4.0" }, "preferred-install": { "*": "dist" diff --git a/composer.lock b/composer.lock index 557ccb2e494..32b30615718 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "47b9fd2648ebc1072161bebcd923086b", + "content-hash": "00ba2149f4afb427ed9129a766b56cfe", "packages": [ { "name": "composer/ca-bundle", @@ -84,39 +84,45 @@ }, { "name": "composer/composer", - "version": "2.2.12", + "version": "2.3.5", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "ba61e768b410736efe61df01b61f1ec44f51474f" + "reference": "50c47b1f907cfcdb8f072b88164d22b527557ae1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/ba61e768b410736efe61df01b61f1ec44f51474f", - "reference": "ba61e768b410736efe61df01b61f1ec44f51474f", + "url": "https://api.github.com/repos/composer/composer/zipball/50c47b1f907cfcdb8f072b88164d22b527557ae1", + "reference": "50c47b1f907cfcdb8f072b88164d22b527557ae1", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", "composer/metadata-minifier": "^1.0", - "composer/pcre": "^1.0", + "composer/pcre": "^2 || ^3", "composer/semver": "^3.0", "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^2.0 || ^3.0", + "composer/xdebug-handler": "^2.0.2 || ^3.0.3", "justinrainbow/json-schema": "^5.2.11", - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0 || ^2.0", - "react/promise": "^1.2 || ^2.7", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "react/promise": "^2.8", "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", - "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", - "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", - "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" + "seld/phar-utils": "^1.2", + "symfony/console": "^5.4.1 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/polyfill-php73": "^1.24", + "symfony/polyfill-php80": "^1.24", + "symfony/process": "^5.4 || ^6.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1", + "phpstan/phpstan-symfony": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -129,7 +135,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.2-dev" + "dev-main": "2.3-dev" } }, "autoload": { @@ -163,7 +169,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.2.12" + "source": "https://github.com/composer/composer/tree/2.3.5" }, "funding": [ { @@ -179,7 +185,7 @@ "type": "tidelift" } ], - "time": "2022-04-13T14:42:25+00:00" + "time": "2022-04-13T14:43:00+00:00" }, { "name": "composer/metadata-minifier", @@ -250,105 +256,32 @@ ], "time": "2021-04-07T13:37:33+00:00" }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.4", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b174585d1fe49ceed21928a945138948cb394600" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600", - "reference": "b174585d1fe49ceed21928a945138948cb394600", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-09-13T08:41:34+00:00" - }, { "name": "composer/pcre", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5" + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -376,7 +309,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.1" + "source": "https://github.com/composer/pcre/tree/3.0.0" }, "funding": [ { @@ -392,7 +325,7 @@ "type": "tidelift" } ], - "time": "2022-01-21T20:24:37+00:00" + "time": "2022-02-25T20:21:48+00:00" }, { "name": "composer/semver", @@ -557,27 +490,27 @@ }, { "name": "composer/xdebug-handler", - "version": "2.0.5", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "composer/pcre": "^1", - "php": "^5.3.2 || ^7.0 || ^8.0", + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { @@ -603,7 +536,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.5" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, "funding": [ { @@ -619,7 +552,7 @@ "type": "tidelift" } ], - "time": "2022-02-24T20:20:32+00:00" + "time": "2022-02-25T21:32:43+00:00" }, { "name": "doctrine/annotations", @@ -695,16 +628,16 @@ }, { "name": "doctrine/cache", - "version": "1.12.1", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8" + "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8", + "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce", + "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce", "shasum": "" }, "require": { @@ -774,7 +707,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.12.1" + "source": "https://github.com/doctrine/cache/tree/2.1.1" }, "funding": [ { @@ -790,7 +723,7 @@ "type": "tidelift" } ], - "time": "2021-07-17T14:39:21+00:00" + "time": "2021-07-17T14:49:29+00:00" }, { "name": "doctrine/collections", @@ -863,43 +796,32 @@ }, { "name": "doctrine/common", - "version": "2.13.3", + "version": "3.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f" + "reference": "295082d3750987065912816a9d536c2df735f637" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f", + "url": "https://api.github.com/repos/doctrine/common/zipball/295082d3750987065912816a9d536c2df735f637", + "reference": "295082d3750987065912816a9d536c2df735f637", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.3.3", - "doctrine/reflection": "^1.0", + "doctrine/persistence": "^2.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpunit/phpunit": "^7.0", + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5" + "symfony/phpunit-bridge": "^4.0.5", + "vimeo/psalm": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\": "lib/Doctrine/Common" @@ -935,7 +857,7 @@ "email": "ocramius@gmail.com" } ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", "homepage": "https://www.doctrine-project.org/projects/common.html", "keywords": [ "common", @@ -944,7 +866,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/2.13.x" + "source": "https://github.com/doctrine/common/tree/3.2.2" }, "funding": [ { @@ -960,20 +882,20 @@ "type": "tidelift" } ], - "time": "2020-06-05T16:46:05+00:00" + "time": "2022-02-02T09:15:57+00:00" }, { "name": "doctrine/data-fixtures", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "f18adf13f6c81c67a88360dca359ad474523f8e3" + "reference": "51c1890e8c5467c421c7cab4579f059ebf720278" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f18adf13f6c81c67a88360dca359ad474523f8e3", - "reference": "f18adf13f6c81c67a88360dca359ad474523f8e3", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/51c1890e8c5467c421c7cab4579f059ebf720278", + "reference": "51c1890e8c5467c421c7cab4579f059ebf720278", "shasum": "" }, "require": { @@ -982,15 +904,20 @@ "php": "^7.2 || ^8.0" }, "conflict": { + "doctrine/dbal": "<2.13", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { "doctrine/coding-standard": "^9.0", - "doctrine/dbal": "^2.5.4 || ^3.0", + "doctrine/dbal": "^2.13 || ^3.0", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", "doctrine/orm": "^2.7.0", "ext-sqlite3": "*", - "phpunit/phpunit": "^8.0" + "jangregor/phpstan-prophecy": "^0.8.1", + "phpstan/phpstan": "^0.12.99", + "phpunit/phpunit": "^8.0", + "symfony/cache": "^5.0 || ^6.0", + "vimeo/psalm": "^4.10" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -1015,13 +942,13 @@ } ], "description": "Data Fixtures for all Doctrine Object Managers", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "database" ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.5.1" + "source": "https://github.com/doctrine/data-fixtures/tree/1.5.2" }, "funding": [ { @@ -1037,39 +964,42 @@ "type": "tidelift" } ], - "time": "2021-09-20T21:51:43+00:00" + "time": "2022-01-20T17:10:56+00:00" }, { "name": "doctrine/dbal", - "version": "2.13.7", + "version": "3.3.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "6e22f6012b42d7932674857989fcf184e9e9b1c3" + "reference": "719663b15983278227669c8595151586a2ff3327" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/6e22f6012b42d7932674857989fcf184e9e9b1c3", - "reference": "6e22f6012b42d7932674857989fcf184e9e9b1c3", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/719663b15983278227669c8595151586a2ff3327", + "reference": "719663b15983278227669c8595151586a2ff3327", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3", "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "php": "^7.3 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { "doctrine/coding-standard": "9.0.0", "jetbrains/phpstorm-stubs": "2021.1", - "phpstan/phpstan": "1.3.0", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.11", + "phpstan/phpstan": "1.5.3", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "9.5.16", "psalm/plugin-phpunit": "0.16.1", "squizlabs/php_codesniffer": "3.6.2", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.16.1" + "symfony/cache": "^5.2|^6.0", + "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0", + "vimeo/psalm": "4.22.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -1080,7 +1010,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1123,14 +1053,13 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.7" + "source": "https://github.com/doctrine/dbal/tree/3.3.5" }, "funding": [ { @@ -1146,7 +1075,7 @@ "type": "tidelift" } ], - "time": "2022-01-06T09:08:04+00:00" + "time": "2022-04-05T09:50:18+00:00" }, { "name": "doctrine/deprecations", @@ -1193,61 +1122,63 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "1.12.13", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "85460b85edd8f61a16ad311e7ffc5d255d3c937c" + "reference": "53cf797feda995299629bed081ffb51776f36e9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/85460b85edd8f61a16ad311e7ffc5d255d3c937c", - "reference": "85460b85edd8f61a16ad311e7ffc5d255d3c937c", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/53cf797feda995299629bed081ffb51776f36e9f", + "reference": "53cf797feda995299629bed081ffb51776f36e9f", "shasum": "" }, "require": { - "doctrine/dbal": "^2.5.12|^3.0", - "doctrine/doctrine-cache-bundle": "~1.2", - "doctrine/persistence": "^1.3.3", - "jdorn/sql-formatter": "^1.2.16", + "doctrine/annotations": "^1", + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/dbal": "^2.13.1|^3.3.2", + "doctrine/persistence": "^2.2", + "doctrine/sql-formatter": "^1.0.1", "php": "^7.1 || ^8.0", - "symfony/cache": "^3.4.30|^4.3.3", - "symfony/config": "^3.4.30|^4.3.3", - "symfony/console": "^3.4.30|^4.3.3", - "symfony/dependency-injection": "^3.4.30|^4.3.3", - "symfony/doctrine-bridge": "^3.4.30|^4.3.3", - "symfony/framework-bundle": "^3.4.30|^4.3.3", - "symfony/service-contracts": "^1.1.1|^2.0" + "symfony/cache": "^4.3.3|^5.0|^6.0", + "symfony/config": "^4.4.3|^5.0|^6.0", + "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/dependency-injection": "^4.4.18|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", + "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/service-contracts": "^1.1.1|^2.0|^3" }, "conflict": { - "doctrine/orm": "<2.6", + "doctrine/orm": "<2.10|>=3.0", "twig/twig": "<1.34|>=2.0,<2.4" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "doctrine/orm": "^2.6", - "ocramius/proxy-manager": "^2.1", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^7.5", - "symfony/phpunit-bridge": "^4.2", - "symfony/property-info": "^3.4.30|^4.3.3", - "symfony/proxy-manager-bridge": "^3.4|^4|^5", - "symfony/twig-bridge": "^3.4|^4.1", - "symfony/validator": "^3.4.30|^4.3.3", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3", - "symfony/yaml": "^3.4.30|^4.3.3", - "twig/twig": "^1.34|^2.12" + "doctrine/coding-standard": "^9.0", + "doctrine/orm": "^2.10 || ^3.0", + "friendsofphp/proxy-manager-lts": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", + "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-symfony": "^3", + "psr/log": "^1.1.4|^2.0|^3.0", + "symfony/phpunit-bridge": "^5.2|^6.0", + "symfony/property-info": "^4.3.3|^5.0|^6.0", + "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", + "symfony/security-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", + "twig/twig": "^1.34|^2.12|^3.0", + "vimeo/psalm": "^4.7" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "ext-pdo": "*", "symfony/web-profiler-bundle": "To use the data collector." }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Bundle\\DoctrineBundle\\": "" @@ -1268,15 +1199,15 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" + "homepage": "https://www.doctrine-project.org/" } ], "description": "Symfony DoctrineBundle", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "database", "dbal", @@ -1285,7 +1216,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/1.12.13" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.6.2" }, "funding": [ { @@ -1301,103 +1232,7 @@ "type": "tidelift" } ], - "time": "2020-11-14T13:38:44+00:00" - }, - { - "name": "doctrine/doctrine-cache-bundle", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineCacheBundle.git", - "reference": "6bee2f9b339847e8a984427353670bad4e7bdccb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/6bee2f9b339847e8a984427353670bad4e7bdccb", - "reference": "6bee2f9b339847e8a984427353670bad4e7bdccb", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.4.2", - "doctrine/inflector": "^1.0", - "php": "^7.1", - "symfony/doctrine-bridge": "^3.4|^4.0" - }, - "require-dev": { - "instaclick/coding-standard": "~1.1", - "instaclick/object-calisthenics-sniffs": "dev-master", - "instaclick/symfony2-coding-standard": "dev-remaster", - "phpunit/phpunit": "^7.0", - "predis/predis": "~0.8", - "satooshi/php-coveralls": "^1.0", - "squizlabs/php_codesniffer": "~1.5", - "symfony/console": "^3.4|^4.0", - "symfony/finder": "^3.4|^4.0", - "symfony/framework-bundle": "^3.4|^4.0", - "symfony/phpunit-bridge": "^3.4|^4.0", - "symfony/security-acl": "^2.8", - "symfony/validator": "^3.4|^4.0", - "symfony/yaml": "^3.4|^4.0" - }, - "suggest": { - "symfony/security-acl": "For using this bundle to cache ACLs" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Fabio B. Silva", - "email": "fabio.bat.silva@gmail.com" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@hotmail.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" - } - ], - "description": "Symfony Bundle for Doctrine Cache", - "homepage": "https://www.doctrine-project.org", - "keywords": [ - "cache", - "caching" - ], - "support": { - "issues": "https://github.com/doctrine/DoctrineCacheBundle/issues", - "source": "https://github.com/doctrine/DoctrineCacheBundle/tree/1.4.0" - }, - "abandoned": true, - "time": "2019-11-29T11:22:01+00:00" + "time": "2022-04-07T09:18:26+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -1484,37 +1319,43 @@ }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "v1.3.2", + "version": "3.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce" + "reference": "3393f411ba25ade21969c33f2053220044854d01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce", - "reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/3393f411ba25ade21969c33f2053220044854d01", + "reference": "3393f411ba25ade21969c33f2053220044854d01", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0", - "doctrine/migrations": "^1.1", - "php": ">=5.4.0", - "symfony/framework-bundle": "~2.7|~3.3|~4.0" + "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/migrations": "^3.2", + "php": "^7.2|^8.0", + "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^7.4" + "doctrine/coding-standard": "^8.0", + "doctrine/orm": "^2.6", + "doctrine/persistence": "^1.3||^2.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^8.0|^9.0", + "vimeo/psalm": "^4.11" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Bundle\\MigrationsBundle\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1522,20 +1363,20 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" + "homepage": "https://www.doctrine-project.org" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DoctrineMigrationsBundle", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "dbal", "migrations", @@ -1543,9 +1384,23 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/1.3" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.2" }, - "time": "2018-12-03T11:55:33+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-migrations-bundle", + "type": "tidelift" + } + ], + "time": "2022-02-01T18:08:07+00:00" }, { "name": "doctrine/event-manager", @@ -1643,33 +1498,33 @@ }, { "name": "doctrine/inflector", - "version": "1.3.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "doctrine/coding-standard": "^8.2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.10" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -1698,45 +1553,66 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ "inflection", - "pluralize", - "singularize", - "string" + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/1.3.1" + "source": "https://github.com/doctrine/inflector/tree/2.0.4" }, - "time": "2019-10-30T19:59:35+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:16:43+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -1763,7 +1639,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -1779,20 +1655,20 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { @@ -1800,7 +1676,7 @@ }, "require-dev": { "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", + "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "vimeo/psalm": "^4.11" }, @@ -1839,7 +1715,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.2" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { @@ -1855,39 +1731,52 @@ "type": "tidelift" } ], - "time": "2022-01-12T08:27:12+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { "name": "doctrine/migrations", - "version": "v1.8.1", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6" + "reference": "5713b45c933122e509d9b31c767b420c3dfed399" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6", - "reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/5713b45c933122e509d9b31c767b420c3dfed399", + "reference": "5713b45c933122e509d9b31c767b420c3dfed399", "shasum": "" }, "require": { - "doctrine/dbal": "~2.6", - "ocramius/proxy-manager": "^1.0|^2.0", - "php": "^7.1", - "symfony/console": "~3.3|^4.0" + "composer-runtime-api": "^2", + "doctrine/dbal": "^3.3", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.0", + "friendsofphp/proxy-manager-lts": "^1.0", + "php": "^7.4 || ^8.0", + "psr/log": "^1.1.3 || ^2 || ^3", + "symfony/console": "^4.4.16 || ^5.4 || ^6.0", + "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "doctrine/orm": "~2.5", - "jdorn/sql-formatter": "~1.1", - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "~7.0", - "squizlabs/php_codesniffer": "^3.0", - "symfony/yaml": "~3.3|^4.0" + "doctrine/coding-standard": "^9", + "doctrine/orm": "^2.6", + "doctrine/persistence": "^2.0", + "doctrine/sql-formatter": "^1.0", + "ergebnis/composer-normalize": "^2.9", + "ext-pdo_sqlite": "*", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.1", + "phpunit/phpunit": "^9.4", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/process": "^4.4 || ^5.4 || ^6.0", + "symfony/yaml": "^4.4 || ^5.4 || ^6.0" }, "suggest": { - "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", "symfony/yaml": "Allows the use of yaml for migration configuration files." }, "bin": [ @@ -1895,13 +1784,13 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "v1.8.x-dev" + "composer-normalize": { + "indent-size": 4, + "indent-style": "space" } }, "autoload": { "psr-4": { - "Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations", "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" } }, @@ -1923,67 +1812,88 @@ "email": "contact@mikesimonson.com" } ], - "description": "Database Schema migrations using Doctrine DBAL", + "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", "homepage": "https://www.doctrine-project.org/projects/migrations.html", "keywords": [ "database", + "dbal", "migrations" ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/1.8" + "source": "https://github.com/doctrine/migrations/tree/3.5.0" }, - "time": "2018-06-06T21:00:30+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", + "type": "tidelift" + } + ], + "time": "2022-04-04T20:24:11+00:00" }, { "name": "doctrine/orm", - "version": "2.7.5", + "version": "2.11.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "01187c9260cd085529ddd1273665217cae659640" + "reference": "9c351e044478135aec1755e2c0c0493a4b6309db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/01187c9260cd085529ddd1273665217cae659640", - "reference": "01187c9260cd085529ddd1273665217cae659640", + "url": "https://api.github.com/repos/doctrine/orm/zipball/9c351e044478135aec1755e2c0c0493a4b6309db", + "reference": "9c351e044478135aec1755e2c0c0493a4b6309db", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.11.1", - "doctrine/cache": "^1.9.1", + "composer-runtime-api": "^2", + "doctrine/cache": "^1.12.1 || ^2.1.1", "doctrine/collections": "^1.5", - "doctrine/common": "^2.11 || ^3.0", - "doctrine/dbal": "^2.9.3", + "doctrine/common": "^3.0.3", + "doctrine/dbal": "^2.13.1 || ^3.2", + "doctrine/deprecations": "^0.5.3", "doctrine/event-manager": "^1.1", - "doctrine/inflector": "^1.0", + "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3", "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.3.3 || ^2.0", - "ext-pdo": "*", - "php": "^7.1", - "symfony/console": "^3.0|^4.0|^5.0" + "doctrine/persistence": "^2.2", + "ext-ctype": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3", + "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0", + "symfony/polyfill-php72": "^1.23", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "doctrine/annotations": "<1.13 || >= 2.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.12.18", - "phpunit/phpunit": "^8.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "vimeo/psalm": "^3.11" + "doctrine/annotations": "^1.13", + "doctrine/coding-standard": "^9.0", + "phpbench/phpbench": "^0.16.10 || ^1.0", + "phpstan/phpstan": "1.4.6", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "squizlabs/php_codesniffer": "3.6.2", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", + "vimeo/psalm": "4.22.0" }, "suggest": { + "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, "bin": [ "bin/doctrine" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\ORM\\": "lib/Doctrine/ORM" @@ -2023,51 +1933,51 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.7.5" + "source": "https://github.com/doctrine/orm/tree/2.11.2" }, - "time": "2020-12-03T08:52:14+00:00" + "time": "2022-03-09T15:23:58+00:00" }, { "name": "doctrine/persistence", - "version": "1.3.8", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288" + "reference": "f8776dd9a0bdcd838812951a75f4ada72065a82a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/f8776dd9a0bdcd838812951a75f4ada72065a82a", + "reference": "f8776dd9a0bdcd838812951a75f4ada72065a82a", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", + "doctrine/cache": "^1.11 || ^2.0", "doctrine/collections": "^1.0", + "doctrine/deprecations": "^0.5.3", "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.2", - "php": "^7.1 || ^8.0" + "php": "^7.1 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/common": "<2.10@dev" + "doctrine/annotations": "<1.0 || >=2.0", + "doctrine/common": "<2.10" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^3.11" + "composer/package-versions-deprecated": "^1.11", + "doctrine/annotations": "^1.0", + "doctrine/coding-standard": "^9.0", + "doctrine/common": "^3.0", + "phpstan/phpstan": "~1.4.10 || 1.5.0", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "vimeo/psalm": "4.22.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + "Doctrine\\Common\\": "src/Common", + "Doctrine\\Persistence\\": "src/Persistence" } }, "notification-url": "https://packagist.org/downloads/", @@ -2111,62 +2021,37 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/1.3.x" + "source": "https://github.com/doctrine/persistence/tree/2.5.0" }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", - "type": "tidelift" - } - ], - "time": "2020-06-20T12:56:16+00:00" + "time": "2022-04-06T14:59:40+00:00" }, { - "name": "doctrine/reflection", - "version": "1.2.2", + "name": "doctrine/sql-formatter", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/doctrine/reflection.git", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" + "url": "https://github.com/doctrine/sql-formatter.git", + "reference": "20c39c2de286a9d3262cc8ed282a4ae60e265894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/20c39c2de286a9d3262cc8ed282a4ae60e265894", + "reference": "20c39c2de286a9d3262cc8ed282a4ae60e265894", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "ext-tokenizer": "*", "php": "^7.1 || ^8.0" }, - "conflict": { - "doctrine/common": "<2.9" - }, "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.2.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0 || ^0.12.20", - "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", - "phpunit/phpunit": "^7.5 || ^9.1.5" + "bamarni/composer-bin-plugin": "^1.4" }, + "bin": [ + "bin/sql-formatter" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\SqlFormatter\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2175,42 +2060,22 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "http://jeremydorn.com/" } ], - "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", - "homepage": "https://www.doctrine-project.org/projects/reflection.html", + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/doctrine/sql-formatter/", "keywords": [ - "reflection", - "static" + "highlight", + "sql" ], "support": { - "issues": "https://github.com/doctrine/reflection/issues", - "source": "https://github.com/doctrine/reflection/tree/1.2.2" + "issues": "https://github.com/doctrine/sql-formatter/issues", + "source": "https://github.com/doctrine/sql-formatter/tree/1.1.2" }, - "abandoned": "roave/better-reflection", - "time": "2020-10-27T21:46:55+00:00" + "time": "2021-11-05T11:11:14+00:00" }, { "name": "easycorp/easy-log-handler", @@ -2452,12 +2317,12 @@ }, "type": "library", "autoload": { - "psr-0": { - "HTMLPurifier": "library/" - }, "files": [ "library/HTMLPurifier.composer.php" ], + "psr-0": { + "HTMLPurifier": "library/" + }, "exclude-from-classmap": [ "/library/HTMLPurifier/Language/" ] @@ -2486,85 +2351,65 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.19.3", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "75ac86f33fab4714ea5a39a396784d83ae3b5ed8" + "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/75ac86f33fab4714ea5a39a396784d83ae3b5ed8", - "reference": "75ac86f33fab4714ea5a39a396784d83ae3b5ed8", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", + "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", "shasum": "" }, "require": { - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.2 || ^2.0", - "doctrine/annotations": "^1.2", + "composer/semver": "^3.2", + "composer/xdebug-handler": "^3.0.3", + "doctrine/annotations": "^1.13", "ext-json": "*", "ext-tokenizer": "*", - "php": "^5.6 || ^7.0 || ^8.0", - "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.4.43 || ^4.1.6 || ^5.0", - "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", - "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", - "symfony/finder": "^3.0 || ^4.0 || ^5.0", - "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", - "symfony/polyfill-php70": "^1.0", - "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0 || ^4.0 || ^5.0", - "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" - }, - "require-dev": { - "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.4", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4.2", - "php-cs-fixer/accessible-object": "^1.0", + "php": "^7.4 || ^8.0", + "php-cs-fixer/diff": "^2.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/options-resolver": "^5.4 || ^6.0", + "symfony/polyfill-mbstring": "^1.23", + "symfony/polyfill-php80": "^1.25", + "symfony/polyfill-php81": "^1.25", + "symfony/process": "^5.4 || ^6.0", + "symfony/stopwatch": "^5.4 || ^6.0" + }, + "require-dev": { + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^1.5", + "mikey179/vfsstream": "^1.6.10", + "php-coveralls/php-coveralls": "^2.5.2", + "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.13 || ^9.5", + "phpspec/prophecy": "^1.15", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", "phpunitgoodpractices/polyfill": "^1.5", "phpunitgoodpractices/traits": "^1.9.1", - "sanmai/phpunit-legacy-adapter": "^6.4 || ^8.2.1", - "symfony/phpunit-bridge": "^5.2.1", - "symfony/yaml": "^3.0 || ^4.0 || ^5.0" + "symfony/phpunit-bridge": "^6.0", + "symfony/yaml": "^5.4 || ^6.0" }, "suggest": { "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters.", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", - "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + "ext-mbstring": "For handling non-UTF8 characters." }, "bin": [ "php-cs-fixer" ], "type": "application", - "extra": { - "branch-alias": { - "dev-master": "2.19-dev" - } - }, "autoload": { "psr-4": { "PhpCsFixer\\": "src/" - }, - "classmap": [ - "tests/Test/AbstractFixerTestCase.php", - "tests/Test/AbstractIntegrationCaseFactory.php", - "tests/Test/AbstractIntegrationTestCase.php", - "tests/Test/Assert/AssertTokensTrait.php", - "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php", - "tests/Test/IntegrationCaseFactoryInterface.php", - "tests/Test/InternalIntegrationCaseFactory.php", - "tests/Test/IsIdenticalConstraint.php", - "tests/Test/TokensWithObservedTransformers.php", - "tests/TestCase.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2583,7 +2428,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.3" + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.8.0" }, "funding": [ { @@ -2591,20 +2436,20 @@ "type": "github" } ], - "time": "2021-11-15T17:17:55+00:00" + "time": "2022-03-18T17:20:59+00:00" }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.5", + "version": "v1.0.7", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" + "reference": "c828ced1f932094ab79e4120a106a666565e4d9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/c828ced1f932094ab79e4120a106a666565e4d9c", + "reference": "c828ced1f932094ab79e4120a106a666565e4d9c", "shasum": "" }, "require": { @@ -2621,7 +2466,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.2|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0" }, "type": "library", "extra": { @@ -2643,7 +2488,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" + "homepage": "https://ocramius.github.io/" }, { "name": "Nicolas Grekas", @@ -2661,7 +2506,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.5" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.7" }, "funding": [ { @@ -2673,41 +2518,111 @@ "type": "tidelift" } ], - "time": "2021-05-22T16:11:15+00:00" + "time": "2022-03-02T09:29:19+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "0690bde05318336c7221785f2a932467f98b64ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", + "reference": "0690bde05318336c7221785f2a932467f98b64ca", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "phpoption/phpoption": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2021-11-21T21:41:47+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "6.5.6", + "version": "7.4.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "f092dd734083473658de3ee4bef093ed77d2689c" + "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f092dd734083473658de3ee4bef093ed77d2689c", - "reference": "f092dd734083473658de3ee4bef093ed77d2689c", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4", + "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5-dev" + "dev-master": "7.4-dev" } }, "autoload": { @@ -2760,19 +2675,20 @@ } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5.6" + "source": "https://github.com/guzzle/guzzle/tree/7.4.2" }, "funding": [ { @@ -2788,7 +2704,7 @@ "type": "tidelift" } ], - "time": "2022-05-25T13:19:12+00:00" + "time": "2022-03-20T14:16:28+00:00" }, { "name": "guzzlehttp/promises", @@ -2876,29 +2792,32 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.8.5", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268" + "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268", - "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", + "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.4.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.8 || ^9.3.10" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -2906,13 +2825,10 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "2.2-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Psr7\\": "src/" } @@ -2951,6 +2867,11 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -2966,7 +2887,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.5" + "source": "https://github.com/guzzle/psr7/tree/2.2.1" }, "funding": [ { @@ -2982,61 +2903,7 @@ "type": "tidelift" } ], - "time": "2022-03-20T21:51:18+00:00" - }, - { - "name": "jdorn/sql-formatter", - "version": "v1.2.17", - "source": { - "type": "git", - "url": "https://github.com/jdorn/sql-formatter.git", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "lib" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Dorn", - "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" - } - ], - "description": "a PHP SQL highlighting library", - "homepage": "https://github.com/jdorn/sql-formatter/", - "keywords": [ - "highlight", - "sql" - ], - "support": { - "issues": "https://github.com/jdorn/sql-formatter/issues", - "source": "https://github.com/jdorn/sql-formatter/tree/master" - }, - "time": "2014-01-12T16:20:24+00:00" + "time": "2022-03-20T21:55:58+00:00" }, { "name": "justinrainbow/json-schema", @@ -3110,43 +2977,58 @@ }, { "name": "knplabs/knp-components", - "version": "v1.3.10", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/knp-components.git", - "reference": "fc1755ba2b77f83a3d3c99e21f3026ba2a1429be" + "reference": "755b0d10902a7db5dc654e9af86a7dcb9c7c5b7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/knp-components/zipball/fc1755ba2b77f83a3d3c99e21f3026ba2a1429be", - "reference": "fc1755ba2b77f83a3d3c99e21f3026ba2a1429be", + "url": "https://api.github.com/repos/KnpLabs/knp-components/zipball/755b0d10902a7db5dc654e9af86a7dcb9c7c5b7d", + "reference": "755b0d10902a7db5dc654e9af86a7dcb9c7c5b7d", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.4 || ^8.0", + "symfony/event-dispatcher-contracts": "^2.0 || ^3.0", + "symfony/http-foundation": "^4.4 || ^5.4 || ^6.0" + }, + "conflict": { + "doctrine/dbal": "<2.10" }, "require-dev": { - "doctrine/mongodb-odm": "~1.0@beta", - "doctrine/orm": "~2.4", - "doctrine/phpcr-odm": "~1.2", - "jackalope/jackalope-doctrine-dbal": "~1.2", - "phpunit/phpunit": "~4.2", - "ruflin/elastica": "~1.0", - "symfony/event-dispatcher": "~2.5", - "symfony/property-access": ">=2.3" + "doctrine/mongodb-odm": "^2.0", + "doctrine/orm": "^2.7", + "doctrine/phpcr-odm": "^1.2", + "ext-pdo_sqlite": "*", + "jackalope/jackalope-doctrine-dbal": "^1.2", + "phpunit/phpunit": "^9.5", + "propel/propel1": "^1.7", + "ruflin/elastica": "^7.0", + "solarium/solarium": "^6.0", + "symfony/http-kernel": "^4.4 || ^5.4 || ^6.0", + "symfony/property-access": "^4.4 || ^5.4 || ^6.0" }, "suggest": { + "doctrine/common": "to allow usage pagination with Doctrine ArrayCollection", + "doctrine/mongodb-odm": "to allow usage pagination with Doctrine ODM MongoDB", + "doctrine/orm": "to allow usage pagination with Doctrine ORM", + "doctrine/phpcr-odm": "to allow usage pagination with Doctrine ODM PHPCR", + "propel/propel1": "to allow usage pagination with Propel ORM", + "ruflin/elastica": "to allow usage pagination with ElasticSearch Client", + "solarium/solarium": "to allow usage pagination with Solarium Client", "symfony/property-access": "To allow sorting arrays" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { - "psr-0": { - "Knp\\Component": "src" + "psr-4": { + "Knp\\Component\\": "src/Knp/Component" } }, "notification-url": "https://packagist.org/downloads/", @@ -3156,11 +3038,11 @@ "authors": [ { "name": "KnpLabs Team", - "homepage": "http://knplabs.com" + "homepage": "https://knplabs.com" }, { "name": "Symfony Community", - "homepage": "http://github.com/KnpLabs/knp-components/contributors" + "homepage": "https://github.com/KnpLabs/knp-components/contributors" } ], "description": "Knplabs component library", @@ -3174,43 +3056,51 @@ ], "support": { "issues": "https://github.com/KnpLabs/knp-components/issues", - "source": "https://github.com/KnpLabs/knp-components/tree/master" + "source": "https://github.com/KnpLabs/knp-components/tree/v3.5.0" }, - "time": "2018-09-11T07:54:48+00:00" + "time": "2021-12-11T12:45:19+00:00" }, { "name": "knplabs/knp-paginator-bundle", - "version": "v2.8.0", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpPaginatorBundle.git", - "reference": "f4ece5b347121b9fe13166264f197f90252d4bd2" + "reference": "216b9d5708001788321916c5b7632da9fb9ef6ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpPaginatorBundle/zipball/f4ece5b347121b9fe13166264f197f90252d4bd2", - "reference": "f4ece5b347121b9fe13166264f197f90252d4bd2", + "url": "https://api.github.com/repos/KnpLabs/KnpPaginatorBundle/zipball/216b9d5708001788321916c5b7632da9fb9ef6ca", + "reference": "216b9d5708001788321916c5b7632da9fb9ef6ca", "shasum": "" }, "require": { - "knplabs/knp-components": "~1.2", - "php": ">=5.3.3", - "symfony/framework-bundle": "~2.7|~3.0|~4.0", - "twig/twig": "~1.12|~2" + "knplabs/knp-components": "^2.4 || ^3.0", + "php": "^7.3 || ^8.0", + "symfony/config": "^4.4 || ^5.3 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.3 || ^6.0", + "symfony/event-dispatcher": "^4.4 || ^5.3 || ^6.0", + "symfony/http-foundation": "^4.4 || ^5.3 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.3 || ^6.0", + "symfony/routing": "^4.4 || ^5.3 || ^6.0", + "symfony/translation": "^4.4 || ^5.3 || ^6.0", + "twig/twig": "^2.0 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "~4.8.35|~5.4.3|~6.4", - "symfony/expression-language": "~2.7|~3.0|~4.0" + "phpstan/phpstan": "^0.12.93", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/expression-language": "^4.4 || ^5.3 || ^6.0", + "symfony/templating": "^4.4 || ^5.3 || ^6.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.8.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "Knp\\Bundle\\PaginatorBundle\\": "" + "Knp\\Bundle\\PaginatorBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3240,118 +3130,45 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpPaginatorBundle/issues", - "source": "https://github.com/KnpLabs/KnpPaginatorBundle/tree/master" - }, - "time": "2018-05-16T12:15:58+00:00" - }, - { - "name": "kylekatarnls/update-helper", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/kylekatarnls/update-helper.git", - "reference": "429be50660ed8a196e0798e5939760f168ec8ce9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/429be50660ed8a196e0798e5939760f168ec8ce9", - "reference": "429be50660ed8a196e0798e5939760f168ec8ce9", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "php": ">=5.3.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "composer/composer": "2.0.x-dev || ^2.0.0-dev", - "phpunit/phpunit": ">=4.8.35 <6.0" - }, - "type": "composer-plugin", - "extra": { - "class": "UpdateHelper\\ComposerPlugin" - }, - "autoload": { - "psr-0": { - "UpdateHelper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kyle", - "email": "kylekatarnls@gmail.com" - } - ], - "description": "Update helper", - "support": { - "issues": "https://github.com/kylekatarnls/update-helper/issues", - "source": "https://github.com/kylekatarnls/update-helper/tree/1.2.1" + "source": "https://github.com/KnpLabs/KnpPaginatorBundle/tree/v5.8.0" }, - "funding": [ - { - "url": "https://github.com/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2020-04-07T20:44:10+00:00" + "time": "2021-10-30T08:27:46+00:00" }, { "name": "laminas/laminas-code", - "version": "3.4.1", + "version": "4.5.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766" + "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/1cb8f203389ab1482bf89c0e70a04849bacd7766", - "reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^2.6 || ^3.0", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.1" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" - }, - "replace": { - "zendframework/zend-code": "self.version" + "php": ">=7.4, <8.2" }, "require-dev": { - "doctrine/annotations": "^1.7", + "doctrine/annotations": "^1.13.2", "ext-phar": "*", - "laminas/laminas-coding-standard": "^1.0", - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "phpunit/phpunit": "^7.5.16 || ^8.4" + "laminas/laminas-coding-standard": "^2.3.0", + "laminas/laminas-stdlib": "^3.6.1", + "phpunit/phpunit": "^9.5.10", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.13.1" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", "laminas/laminas-stdlib": "Laminas\\Stdlib component" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev", - "dev-develop": "3.5.x-dev", - "dev-dev-4.0": "4.0.x-dev" - } - }, "autoload": { + "files": [ + "polyfill/ReflectionEnumPolyfill.php" + ], "psr-4": { "Laminas\\Code\\": "src/" } @@ -3364,7 +3181,8 @@ "homepage": "https://laminas.dev", "keywords": [ "code", - "laminas" + "laminas", + "laminasframework" ], "support": { "chat": "https://laminas.dev/chat", @@ -3374,148 +3192,26 @@ "rss": "https://github.com/laminas/laminas-code/releases.atom", "source": "https://github.com/laminas/laminas-code" }, - "time": "2019-12-31T16:28:24+00:00" - }, - { - "name": "laminas/laminas-eventmanager", - "version": "3.4.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "a93fd278c97b2d41ebbce5ba048a24e3e6f580ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/a93fd278c97b2d41ebbce5ba048a24e3e6f580ba", - "reference": "a93fd278c97b2d41ebbce5ba048a24e3e6f580ba", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-eventmanager": "*" - }, - "require-dev": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-stdlib": "^3.6", - "phpbench/phpbench": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5" - }, - "suggest": { - "container-interop/container-interop": "^1.1, to use the lazy listeners feature", - "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\EventManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Trigger and listen to events within a PHP application", - "homepage": "https://laminas.dev", - "keywords": [ - "event", - "eventmanager", - "events", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-eventmanager/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-eventmanager/issues", - "rss": "https://github.com/laminas/laminas-eventmanager/releases.atom", - "source": "https://github.com/laminas/laminas-eventmanager" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-07T22:35:32+00:00" - }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "88bf037259869891afce6504cacc4f8a07b24d0f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/88bf037259869891afce6504cacc4f8a07b24d0f", - "reference": "88bf037259869891afce6504cacc4f8a07b24d0f", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.6" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, "funding": [ { "url": "https://funding.communitybridge.org/projects/laminas-project", "type": "community_bridge" } ], - "time": "2021-12-21T14:34:37+00:00" + "time": "2021-12-19T18:06:55+00:00" }, { "name": "mobiledetect/mobiledetectlib", - "version": "2.8.37", + "version": "2.8.39", "source": { "type": "git", "url": "https://github.com/serbanghita/Mobile-Detect.git", - "reference": "9841e3c46f5bd0739b53aed8ac677fa712943df7" + "reference": "0fd6753003fc870f6e229bae869cc1337c99bc45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/9841e3c46f5bd0739b53aed8ac677fa712943df7", - "reference": "9841e3c46f5bd0739b53aed8ac677fa712943df7", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/0fd6753003fc870f6e229bae869cc1337c99bc45", + "reference": "0fd6753003fc870f6e229bae869cc1337c99bc45", "shasum": "" }, "require": { @@ -3526,12 +3222,12 @@ }, "type": "library", "autoload": { - "classmap": [ - "Mobile_Detect.php" - ], "psr-0": { "Detection": "namespaced/" - } + }, + "classmap": [ + "Mobile_Detect.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3556,63 +3252,70 @@ ], "support": { "issues": "https://github.com/serbanghita/Mobile-Detect/issues", - "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.37" + "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.39" }, - "funding": [ - { - "url": "https://github.com/serbanghita", - "type": "github" - } - ], - "time": "2021-02-19T21:22:57+00:00" + "time": "2022-02-17T19:24:25+00:00" }, { "name": "monolog/monolog", - "version": "1.26.1", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + "reference": "4192345e260f1d51b365536199744b987e160edc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4192345e260f1d51b365536199744b987e160edc", + "reference": "4192345e260f1d51b365536199744b987e160edc", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", + "phpspec/prophecy": "^1.6.1", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": ">=0.90@dev", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -3626,11 +3329,11 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", @@ -3638,7 +3341,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + "source": "https://github.com/Seldaek/monolog/tree/2.5.0" }, "funding": [ { @@ -3650,47 +3353,63 @@ "type": "tidelift" } ], - "time": "2021-05-28T08:32:12+00:00" + "time": "2022-04-08T15:43:54+00:00" }, { "name": "nesbot/carbon", - "version": "1.39.1", + "version": "2.57.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33" + "reference": "4a54375c21eea4811dbd1149fe6b246517554e78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4be0c005164249208ce1b5ca633cd57bdd42ff33", - "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4a54375c21eea4811dbd1149fe6b246517554e78", + "reference": "4a54375c21eea4811dbd1149fe6b246517554e78", "shasum": "" }, "require": { - "kylekatarnls/update-helper": "^1.1", - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { - "composer/composer": "^1.2", - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "^4.8.35 || ^5.7" + "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.54 || ^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.14", + "squizlabs/php_codesniffer": "^3.4" }, "bin": [ - "bin/upgrade-carbon" + "bin/carbon" ], "type": "library", "extra": { - "update-helper": "Carbon\\Upgrade", + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { "psr-4": { - "": "src/" + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3701,21 +3420,36 @@ { "name": "Brian Nesbitt", "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" } ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", "keywords": [ "date", "datetime", "time" ], "support": { + "docs": "https://carbon.nesbot.com/docs", "issues": "https://github.com/briannesbitt/Carbon/issues", "source": "https://github.com/briannesbitt/Carbon" }, - "time": "2019-10-14T05:51:36+00:00" + "funding": [ + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2022-02-13T18:13:33+00:00" }, { "name": "nikic/php-parser", @@ -3775,16 +3509,16 @@ }, { "name": "php-cs-fixer/diff", - "version": "v1.3.1", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759" + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759", - "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", "shasum": "" }, "require": { @@ -3812,71 +3546,89 @@ { "name": "Kore Nordmann", "email": "mail@kore-nordmann.de" - }, - { - "name": "SpacePossum" } ], - "description": "sebastian/diff v2 backport support for PHP5.6", + "description": "sebastian/diff v3 backport support for PHP 5.6+", "homepage": "https://github.com/PHP-CS-Fixer", "keywords": [ "diff" ], "support": { "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v1.3.1" + "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" }, - "time": "2020-10-14T08:39:05+00:00" + "time": "2020-10-14T08:32:19+00:00" }, { - "name": "pimple/pimple", - "version": "v1.1.1", + "name": "phpoption/phpoption", + "version": "1.8.1", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", - "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.8-dev" } }, "autoload": { - "psr-0": { - "Pimple": "lib/" + "psr-4": { + "PhpOption\\": "src/PhpOption/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], - "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", - "homepage": "http://pimple.sensiolabs.org", + "description": "Option Type for PHP", "keywords": [ - "container", - "dependency injection" + "language", + "option", + "php", + "type" ], "support": { - "issues": "https://github.com/silexphp/Pimple/issues", - "source": "https://github.com/silexphp/Pimple/tree/v1.1.1" + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" }, - "time": "2013-11-22T08:30:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2021-12-04T23:24:31+00:00" }, { "name": "psr/cache", @@ -3929,20 +3681,20 @@ }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -3971,26 +3723,26 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { - "name": "psr/http-message", - "version": "1.0.1", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", "extra": { @@ -4000,7 +3752,7 @@ }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Psr\\EventDispatcher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4013,47 +3765,45 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Standard interfaces for event handling.", "keywords": [ - "http", - "http-message", + "events", "psr", - "psr-7", - "request", - "response" + "psr-14" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { - "name": "psr/log", - "version": "1.1.4", + "name": "psr/http-client", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4063,37 +3813,39 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "log", + "http", + "http-client", "psr", - "psr-3" + "psr-18" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/http-client/tree/master" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2020-06-29T06:28:15+00:00" }, { - "name": "psr/simple-cache", + "name": "psr/http-factory", "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.0.0", + "psr/http-message": "^1.0" }, "type": "library", "extra": { @@ -4103,7 +3855,7 @@ }, "autoload": { "psr-4": { - "Psr\\SimpleCache\\": "src/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4116,45 +3868,49 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interfaces for simple caching", + "description": "Common interfaces for PSR-7 HTTP message factories", "keywords": [ - "cache", - "caching", + "factory", + "http", + "message", "psr", - "psr-16", - "simple-cache" + "psr-17", + "psr-7", + "request", + "response" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/master" }, - "time": "2017-10-23T01:57:42+00:00" + "time": "2019-04-30T12:38:16+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "files": [ - "src/getallheaders.php" - ] + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4162,16 +3918,169 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "A polyfill for getallheaders.", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "source": "https://github.com/php-fig/http-message/tree/master" }, - "time": "2019-03-08T08:55:37+00:00" + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" }, { "name": "react/promise", @@ -4251,16 +4160,16 @@ }, { "name": "robthree/twofactorauth", - "version": "1.8.1", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/RobThree/TwoFactorAuth.git", - "reference": "5afcb45282f1c75562a48d479ecd1732c9bdb11b" + "reference": "65681de5a324eae05140ac58b08648a60212afc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/RobThree/TwoFactorAuth/zipball/5afcb45282f1c75562a48d479ecd1732c9bdb11b", - "reference": "5afcb45282f1c75562a48d479ecd1732c9bdb11b", + "url": "https://api.github.com/repos/RobThree/TwoFactorAuth/zipball/65681de5a324eae05140ac58b08648a60212afc0", + "reference": "65681de5a324eae05140ac58b08648a60212afc0", "shasum": "" }, "require": { @@ -4317,7 +4226,7 @@ "type": "github" } ], - "time": "2021-10-20T12:19:55+00:00" + "time": "2022-03-22T16:11:07+00:00" }, { "name": "seld/jsonlint", @@ -4433,25 +4342,25 @@ }, { "name": "sensio/framework-extra-bundle", - "version": "v5.6.1", + "version": "v6.2.6", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "430d14c01836b77c28092883d195a43ce413ee32" + "reference": "6bd976c99ef3f78e31c9490a10ba6dd8901076eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/430d14c01836b77c28092883d195a43ce413ee32", - "reference": "430d14c01836b77c28092883d195a43ce413ee32", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/6bd976c99ef3f78e31c9490a10ba6dd8901076eb", + "reference": "6bd976c99ef3f78e31c9490a10ba6dd8901076eb", "shasum": "" }, "require": { "doctrine/annotations": "^1.0", "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" }, "conflict": { "doctrine/doctrine-cache-bundle": "<1.3.1", @@ -4461,25 +4370,23 @@ "doctrine/dbal": "^2.10|^3.0", "doctrine/doctrine-bundle": "^1.11|^2.0", "doctrine/orm": "^2.5", - "nyholm/psr7": "^1.1", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/doctrine-bridge": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/monolog-bridge": "^4.0|^5.0", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/doctrine-bridge": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/monolog-bridge": "^4.0|^5.0|^6.0", "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9", - "symfony/psr-http-message-bridge": "^1.1", - "symfony/security-bundle": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "symfony/security-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/twig": "^1.34|^2.4|^3.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "5.6.x-dev" + "dev-master": "6.1.x-dev" } }, "autoload": { @@ -4507,9 +4414,9 @@ ], "support": { "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v5.6.1" + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.6" }, - "time": "2020-08-25T19:10:18+00:00" + "time": "2022-01-14T11:51:13+00:00" }, { "name": "setasign/fpdi", @@ -4674,168 +4581,32 @@ }, "time": "2021-06-25T07:29:16+00:00" }, - { - "name": "suncat/mobile-detect-bundle", - "version": "v1.1.1", - "target-dir": "SunCat/MobileDetectBundle", - "source": { - "type": "git", - "url": "https://github.com/suncat2000/MobileDetectBundle.git", - "reference": "06007fec624587fd90e8963b796fc84fff64d4d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/suncat2000/MobileDetectBundle/zipball/06007fec624587fd90e8963b796fc84fff64d4d8", - "reference": "06007fec624587fd90e8963b796fc84fff64d4d8", - "shasum": "" - }, - "require": { - "mobiledetect/mobiledetectlib": "~2.8", - "php": ">=5.5.9", - "symfony/framework-bundle": "~2.7|~3.3|~4.0", - "twig/twig": "~1.26|~2.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.3|^6.0", - "satooshi/php-coveralls": "^2.0.0", - "symfony/phpunit-bridge": "~2.7|~3.3|~4.0" - }, - "type": "symfony-bundle", - "autoload": { - "psr-0": { - "SunCat\\MobileDetectBundle": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nikolay Ivlev", - "email": "nikolay.kotovsky@gmail.com" - }, - { - "name": "Henri Vesala", - "email": "henri.vesala@gmail.com" - }, - { - "name": "netmikey", - "homepage": "https://github.com/netmikey" - } - ], - "description": "Symfony2/3/4 bundle for detect mobile devices, managing mobile view types, redirect to mobile version.", - "homepage": "https://github.com/suncat2000/MobileDetectBundle", - "keywords": [ - "mobile", - "mobile detect", - "mobile redirect", - "mobile view managing", - "symfony mobile" - ], - "support": { - "issues": "https://github.com/suncat2000/MobileDetectBundle/issues", - "source": "https://github.com/suncat2000/MobileDetectBundle/tree/master" - }, - "time": "2018-05-02T10:20:57+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.3.0", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.0|^3.1", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.4" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "support": { - "issues": "https://github.com/swiftmailer/swiftmailer/issues", - "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", - "type": "tidelift" - } - ], - "abandoned": "symfony/mailer", - "time": "2021-10-18T15:26:12+00:00" - }, { "name": "symfony/asset", - "version": "v4.4.27", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "1910a978dbe03503d9ee72408e2fef7c4041d97d" + "reference": "4affdca3da5f380caa27a338269b36ac288b3981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/1910a978dbe03503d9ee72408e2fef7c4041d97d", - "reference": "1910a978dbe03503d9ee72408e2fef7c4041d97d", + "url": "https://api.github.com/repos/symfony/asset/zipball/4affdca3da5f380caa27a338269b36ac288b3981", + "reference": "4affdca3da5f380caa27a338269b36ac288b3981", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, + "conflict": { + "symfony/http-foundation": "<5.3" + }, "require-dev": { - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/http-foundation": "" @@ -4866,7 +4637,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v4.4.27" + "source": "https://github.com/symfony/asset/tree/v5.4.7" }, "funding": [ { @@ -4882,36 +4653,37 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:19:41+00:00" + "time": "2022-03-18T16:00:30+00:00" }, { "name": "symfony/cache", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "1caa6c63f0ebf3022b88263a2b90260cff33f6dc" + "reference": "ba06841ed293fcaf79a592f59fdaba471f7c756c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/1caa6c63f0ebf3022b88263a2b90260cff33f6dc", - "reference": "1caa6c63f0ebf3022b88263a2b90260cff33f6dc", + "url": "https://api.github.com/repos/symfony/cache/zipball/ba06841ed293fcaf79a592f59fdaba471f7c756c", + "reference": "ba06841ed293fcaf79a592f59fdaba471f7c756c", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/cache": "^1.0|^2.0", - "psr/log": "^1|^2|^3", + "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^1.1.7|^2", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.2|^5.0" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "conflict": { - "doctrine/dbal": "<2.7", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4|>=5.0", + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", "symfony/var-dumper": "<4.4" }, "provide": { @@ -4922,14 +4694,15 @@ "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.7|^3.0", + "doctrine/dbal": "^2.13.1|^3.0", "predis/predis": "^1.1", "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.1|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -4961,7 +4734,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v4.4.36" + "source": "https://github.com/symfony/cache/tree/v5.4.7" }, "funding": [ { @@ -4977,20 +4750,20 @@ "type": "tidelift" } ], - "time": "2021-12-28T10:59:50+00:00" + "time": "2022-03-22T15:31:03+00:00" }, { "name": "symfony/cache-contracts", - "version": "v2.5.0", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2" + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ac2e168102a2e06a2624f0379bde94cd5854ced2", - "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", "shasum": "" }, "require": { @@ -5040,7 +4813,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.1" }, "funding": [ { @@ -5056,38 +4829,39 @@ "type": "tidelift" } ], - "time": "2021-08-17T14:20:01+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/config", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "03218ffbd5faeda5e6a97f9109acebf7973ff385" + "reference": "05624c386afa1b4ccc1357463d830fade8d9d404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/03218ffbd5faeda5e6a97f9109acebf7973ff385", - "reference": "03218ffbd5faeda5e6a97f9109acebf7973ff385", + "url": "https://api.github.com/repos/symfony/config/zipball/05624c386afa1b4ccc1357463d830fade8d9d404", + "reference": "05624c386afa1b4ccc1357463d830fade8d9d404", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/filesystem": "^3.4|^4.0|^5.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", "symfony/polyfill-php81": "^1.22" }, "conflict": { - "symfony/finder": "<3.4" + "symfony/finder": "<4.4" }, "require-dev": { - "symfony/event-dispatcher": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/messenger": "^4.1|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -5118,7 +4892,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v4.4.36" + "source": "https://github.com/symfony/config/tree/v5.4.7" }, "funding": [ { @@ -5134,47 +4908,50 @@ "type": "tidelift" } ], - "time": "2021-12-12T15:06:47+00:00" + "time": "2022-03-21T13:42:03+00:00" }, { "name": "symfony/console", - "version": "v4.4.40", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "bdcc66f3140421038f495e5b50e3ca6ffa14c773" + "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/bdcc66f3140421038f495e5b50e3ca6ffa14c773", - "reference": "bdcc66f3140421038f495e5b50e3ca6ffa14c773", + "url": "https://api.github.com/repos/symfony/console/zipball/900275254f0a1a2afff1ab0e11abd5587a10e1d6", + "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -5207,8 +4984,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/console/tree/v4.4.40" + "source": "https://github.com/symfony/console/tree/v5.4.7" }, "funding": [ { @@ -5224,24 +5007,24 @@ "type": "tidelift" } ], - "time": "2022-03-26T22:12:04+00:00" + "time": "2022-03-31T17:09:19+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.27", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6" + "reference": "b0a190285cd95cb019237851205b8140ef6e368e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6", - "reference": "5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", + "reference": "b0a190285cd95cb019237851205b8140ef6e368e", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -5274,75 +5057,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.27" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-07-21T12:19:41+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.36", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "346e1507eeb3f566dcc7a116fefaa407ee84691b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/346e1507eeb3f566dcc7a116fefaa407ee84691b", - "reference": "346e1507eeb3f566dcc7a116fefaa407ee84691b", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.36" + "source": "https://github.com/symfony/css-selector/tree/v5.4.3" }, "funding": [ { @@ -5358,38 +5073,38 @@ "type": "tidelift" } ], - "time": "2021-11-29T08:40:48+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/debug-bundle", - "version": "v4.4.36", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "94d96888b6b572cbdb10b4fde9dc0d15c259b88f" + "reference": "6f508169752ed2c0d0d8a6641c4cca39a8f1dfcb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/94d96888b6b572cbdb10b4fde9dc0d15c259b88f", - "reference": "94d96888b6b572cbdb10b4fde9dc0d15c259b88f", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/6f508169752ed2c0d0d8a6641c4cca39a8f1dfcb", + "reference": "6f508169752ed2c0d0d8a6641c4cca39a8f1dfcb", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/http-kernel": "^3.4|^4.0|^5.0", + "php": ">=7.2.5", + "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.1.1|^5.0" + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4" + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.2" }, "require-dev": { - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/web-profiler-bundle": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/web-profiler-bundle": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/config": "For service container configuration", @@ -5421,7 +5136,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v4.4.36" + "source": "https://github.com/symfony/debug-bundle/tree/v5.4.3" }, "funding": [ { @@ -5437,42 +5152,45 @@ "type": "tidelift" } ], - "time": "2021-12-11T09:46:05+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "24e802b4973d3a60c01fd77bdaac8a66944202e1" + "reference": "35588b2afb08ea3a142d62fefdcad4cb09be06ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/24e802b4973d3a60c01fd77bdaac8a66944202e1", - "reference": "24e802b4973d3a60c01fd77bdaac8a66944202e1", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/35588b2afb08ea3a142d62fefdcad4cb09be06ed", + "reference": "35588b2afb08ea3a142d62fefdcad4cb09be06ed", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0", + "php": ">=7.2.5", + "psr/container": "^1.1.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" + "ext-psr": "<1.1|>=2", + "symfony/config": "<5.3", + "symfony/finder": "<4.4", + "symfony/proxy-manager-bridge": "<4.4", + "symfony/yaml": "<4.4.26" }, "provide": { "psr/container-implementation": "1.0", "symfony/service-implementation": "1.0|2.0" }, "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4.26|^5.0|^6.0" }, "suggest": { "symfony/config": "", @@ -5507,7 +5225,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v4.4.36" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.7" }, "funding": [ { @@ -5523,7 +5241,7 @@ "type": "tidelift" } ], - "time": "2021-12-29T10:03:29+00:00" + "time": "2022-03-08T15:43:06+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5594,61 +5312,68 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "5fa7d1d10879f0028aec98a24a9a649377fe0a5b" + "reference": "8293adcd47c2a3195cfa5f511feebb12832c47b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/5fa7d1d10879f0028aec98a24a9a649377fe0a5b", - "reference": "5fa7d1d10879f0028aec98a24a9a649377fe0a5b", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/8293adcd47c2a3195cfa5f511feebb12832c47b4", + "reference": "8293adcd47c2a3195cfa5f511feebb12832c47b4", "shasum": "" }, "require": { "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^1.3|^2", - "php": ">=7.1.3", + "doctrine/persistence": "^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/dbal": "<2.7", + "doctrine/dbal": "<2.13.1", "doctrine/lexer": "<1.1", - "doctrine/orm": "<2.6.3", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/form": "<4.4", - "symfony/http-kernel": "<4.3.7", - "symfony/messenger": "<4.3", + "doctrine/orm": "<2.7.4", + "phpunit/phpunit": "<5.4.3", + "symfony/cache": "<5.4", + "symfony/dependency-injection": "<4.4", + "symfony/form": "<5.1", + "symfony/http-kernel": "<5", + "symfony/messenger": "<4.4", + "symfony/property-info": "<5", "symfony/proxy-manager-bridge": "<4.4.19", - "symfony/security-core": "<4.4", - "symfony/validator": "<4.4.2|<5.0.2,>=5.0" + "symfony/security-bundle": "<5", + "symfony/security-core": "<5.3", + "symfony/validator": "<5.2" }, "require-dev": { - "composer/package-versions-deprecated": "^1.8", "doctrine/annotations": "^1.10.4", "doctrine/collections": "~1.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.7|^3.0", - "doctrine/orm": "^2.6.3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4.11|^5.0.11", - "symfony/http-kernel": "^4.3.7", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/proxy-manager-bridge": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/validator": "^4.4.2|^5.0.2", - "symfony/var-dumper": "^3.4|^4.0|^5.0" + "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/orm": "^2.7.4", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/doctrine-messenger": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.1.3|^6.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.0|^6.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.3|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^5.2|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "doctrine/data-fixtures": "", @@ -5684,7 +5409,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v4.4.36" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.7" }, "funding": [ { @@ -5700,24 +5425,25 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:17:20+00:00" + "time": "2022-04-01T08:40:14+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.36", + "version": "v5.4.6", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "42de12bee3b5e594977209bcdf58ec4fef8dde39" + "reference": "c0bda97480d96337bd3866026159a8b358665457" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/42de12bee3b5e594977209bcdf58ec4fef8dde39", - "reference": "42de12bee3b5e594977209bcdf58ec4fef8dde39", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c0bda97480d96337bd3866026159a8b358665457", + "reference": "c0bda97480d96337bd3866026159a8b358665457", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -5727,7 +5453,7 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -5758,7 +5484,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.36" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.6" }, "funding": [ { @@ -5774,27 +5500,29 @@ "type": "tidelift" } ], - "time": "2021-12-28T14:48:02+00:00" + "time": "2022-03-02T12:42:23+00:00" }, { "name": "symfony/dotenv", - "version": "v4.4.36", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "15a389dd8d1764565543ca063db2857940d3f00d" + "reference": "83a2310904a4f5d4f42526227b5a578ac82232a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/15a389dd8d1764565543ca063db2857940d3f00d", - "reference": "15a389dd8d1764565543ca063db2857940d3f00d", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/83a2310904a4f5d4f42526227b5a578ac82232a9", + "reference": "83a2310904a4f5d4f42526227b5a578ac82232a9", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3" }, "require-dev": { - "symfony/process": "^3.4.2|^4.0|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -5827,7 +5555,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v4.4.36" + "source": "https://github.com/symfony/dotenv/tree/v5.4.5" }, "funding": [ { @@ -5843,32 +5571,35 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:17:20+00:00" + "time": "2022-02-15T17:04:12+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "1fa841189eae3d59c7a29c3751fd9ed8ab65ca5c" + "reference": "060bc01856a1846e3e4385261bc9ed11a1dd7b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/1fa841189eae3d59c7a29c3751fd9ed8ab65ca5c", - "reference": "1fa841189eae3d59c7a29c3751fd9ed8ab65ca5c", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/060bc01856a1846e3e4385261bc9ed11a1dd7b6a", + "reference": "060bc01856a1846e3e4385261bc9ed11a1dd7b6a", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -5895,7 +5626,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.36" + "source": "https://github.com/symfony/error-handler/tree/v5.4.7" }, "funding": [ { @@ -5911,43 +5642,44 @@ "type": "tidelift" } ], - "time": "2021-12-01T13:25:30+00:00" + "time": "2022-03-18T16:21:29+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.34", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8" + "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dec8a9f58d20df252b9cd89f1c6c1530f747685d", + "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -5979,7 +5711,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.34" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.3" }, "funding": [ { @@ -5995,33 +5727,33 @@ "type": "tidelift" } ], - "time": "2021-11-15T14:42:25+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.11", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c" + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6058,7 +5790,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.11" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.1" }, "funding": [ { @@ -6074,26 +5806,26 @@ "type": "tidelift" } ], - "time": "2021-03-23T15:25:38+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/expression-language", - "version": "v4.4.34", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "6331d834d364cce857e5a83368ce19141d5147bd" + "reference": "2ab2550b48ee6e88137f69967a5ded0852741549" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/6331d834d364cce857e5a83368ce19141d5147bd", - "reference": "6331d834d364cce857e5a83368ce19141d5147bd", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/2ab2550b48ee6e88137f69967a5ded0852741549", + "reference": "2ab2550b48ee6e88137f69967a5ded0852741549", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2" + "php": ">=7.2.5", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "type": "library", "autoload": { @@ -6121,7 +5853,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v4.4.34" + "source": "https://github.com/symfony/expression-language/tree/v5.4.7" }, "funding": [ { @@ -6137,25 +5869,26 @@ "type": "tidelift" } ], - "time": "2021-11-16T18:00:05+00:00" + "time": "2022-03-31T17:09:19+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.39", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35" + "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/72a5b35fecaa670b13954e6eaf414acbe2a67b35", - "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3a4442138d80c9f7b600fb297534ac718b61d37f", + "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -6184,7 +5917,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v4.4.39" + "source": "https://github.com/symfony/filesystem/tree/v5.4.7" }, "funding": [ { @@ -6200,24 +5933,25 @@ "type": "tidelift" } ], - "time": "2022-02-25T10:38:15+00:00" + "time": "2022-04-01T12:33:59+00:00" }, { "name": "symfony/finder", - "version": "v4.4.37", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "b17d76d7ed179f017aad646e858c90a2771af15d" + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/b17d76d7ed179f017aad646e858c90a2771af15d", - "reference": "b17d76d7ed179f017aad646e858c90a2771af15d", + "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -6246,7 +5980,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.37" + "source": "https://github.com/symfony/finder/tree/v5.4.3" }, "funding": [ { @@ -6262,20 +5996,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2022-01-26T16:34:36+00:00" }, { "name": "symfony/flex", - "version": "v1.17.6", + "version": "v1.18.5", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "7a79135e1dc66b30042b4d968ecba0908f9374bc" + "reference": "10e438f53a972439675dc720706f0cd5c0ed94f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/7a79135e1dc66b30042b4d968ecba0908f9374bc", - "reference": "7a79135e1dc66b30042b4d968ecba0908f9374bc", + "url": "https://api.github.com/repos/symfony/flex/zipball/10e438f53a972439675dc720706f0cd5c0ed94f1", + "reference": "10e438f53a972439675dc720706f0cd5c0ed94f1", "shasum": "" }, "require": { @@ -6311,7 +6045,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.17.6" + "source": "https://github.com/symfony/flex/tree/v1.18.5" }, "funding": [ { @@ -6327,56 +6061,61 @@ "type": "tidelift" } ], - "time": "2021-11-29T15:39:37+00:00" + "time": "2022-02-16T17:26:46+00:00" }, { "name": "symfony/form", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "384c0be0f33d2b166b2188194aaf57b0f1c54f77" + "reference": "75267931833e98f82bc39fb20f54251b7516680b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/384c0be0f33d2b166b2188194aaf57b0f1c54f77", - "reference": "384c0be0f33d2b166b2188194aaf57b0f1c54f77", + "url": "https://api.github.com/repos/symfony/form/zipball/75267931833e98f82bc39fb20f54251b7516680b", + "reference": "75267931833e98f82bc39fb20f54251b7516680b", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher": "^4.3", - "symfony/intl": "^4.4|^5.0", - "symfony/options-resolver": "~4.3|^5.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/options-resolver": "^5.1|^6.0", "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^3.4.40|^4.4.8|^5.0.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.23", + "symfony/property-access": "^5.0.8|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<4.3", - "symfony/dependency-injection": "<3.4", - "symfony/doctrine-bridge": "<3.4", - "symfony/framework-bundle": "<3.4", + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<4.4", + "symfony/error-handler": "<4.4.5", + "symfony/framework-bundle": "<4.4", "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": "<4.2", - "symfony/twig-bridge": "<3.4.5|<4.0.5,>=4.0" + "symfony/translation": "<4.4", + "symfony/translation-contracts": "<1.1.7", + "symfony/twig-bridge": "<4.4" }, "require-dev": { "doctrine/collections": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^4.3|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/validator": "^4.4.17|^5.1.9", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^4.4.17|^5.1.9|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/security-csrf": "For protecting forms against CSRF attacks.", @@ -6409,7 +6148,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v4.4.36" + "source": "https://github.com/symfony/form/tree/v5.4.7" }, "funding": [ { @@ -6425,99 +6164,104 @@ "type": "tidelift" } ], - "time": "2021-12-13T12:41:27+00:00" + "time": "2022-03-13T20:07:29+00:00" }, { "name": "symfony/framework-bundle", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "c2d12e37719fc066739e579c09dd1772e7db6d5a" + "reference": "7520f553c7a7721652c1b7ac95c09dae62a1676e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c2d12e37719fc066739e579c09dd1772e7db6d5a", - "reference": "c2d12e37719fc066739e579c09dd1772e7db6d5a", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/7520f553c7a7721652c1b7ac95c09dae62a1676e", + "reference": "7520f553c7a7721652c1b7ac95c09dae62a1676e", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4.11|~5.0.11|^5.1.3", - "symfony/dependency-injection": "^4.4.1|^5.0.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/cache": "^5.2|^6.0", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^5.4.5|^6.0.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.4|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4.12|^5.1.4" + "symfony/polyfill-php81": "^1.22", + "symfony/routing": "^5.3|^6.0" }, "conflict": { + "doctrine/annotations": "<1.13.1", + "doctrine/cache": "<1.11", "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.4", - "symfony/browser-kit": "<4.3", - "symfony/console": "<4.4.21", - "symfony/dom-crawler": "<4.3", - "symfony/dotenv": "<4.3.6", - "symfony/form": "<4.3.5", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "phpunit/phpunit": "<5.4.3", + "symfony/asset": "<5.3", + "symfony/console": "<5.2.5", + "symfony/dom-crawler": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/form": "<5.2", "symfony/http-client": "<4.4", "symfony/lock": "<4.4", - "symfony/mailer": "<4.4", - "symfony/messenger": "<4.4", + "symfony/mailer": "<5.2", + "symfony/messenger": "<5.4", "symfony/mime": "<4.4", - "symfony/property-info": "<3.4", - "symfony/security-bundle": "<4.4", - "symfony/serializer": "<4.4", - "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.4", - "symfony/twig-bridge": "<4.1.1", + "symfony/property-access": "<5.3", + "symfony/property-info": "<4.4", + "symfony/security-csrf": "<5.3", + "symfony/serializer": "<5.2", + "symfony/service-contracts": ">=3.0", + "symfony/stopwatch": "<4.4", + "symfony/translation": "<5.3", + "symfony/twig-bridge": "<4.4", "symfony/twig-bundle": "<4.4", - "symfony/validator": "<4.4", + "symfony/validator": "<5.2", "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<4.3.6" + "symfony/workflow": "<5.2" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", + "doctrine/annotations": "^1.13.1", + "doctrine/cache": "^1.11|^2.0", "doctrine/persistence": "^1.3|^2.0", - "paragonie/sodium_compat": "^1.8", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.4.21|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7", - "symfony/dotenv": "^4.3.6|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.3.5|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", + "symfony/asset": "^5.3|^6.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", + "symfony/dotenv": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.2|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/mailer": "^5.2|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/notifier": "^5.4|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/security-core": "^3.4|^4.4|^5.2", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3.6|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-info": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/string": "^5.0|^6.0", + "symfony/translation": "^5.3|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.2|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.10|^3.0" }, "suggest": { "ext-apcu": "For best performance of the system caches", @@ -6555,85 +6299,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v4.4.36" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-12-11T11:50:57+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ec82e57b5b714dbb69300d348bd840b345e24166" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ec82e57b5b714dbb69300d348bd840b345e24166", - "reference": "ec82e57b5b714dbb69300d348bd840b345e24166", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.7" }, "funding": [ { @@ -6649,31 +6315,36 @@ "type": "tidelift" } ], - "time": "2021-11-03T09:24:47+00:00" + "time": "2022-04-01T06:09:41+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.36", + "version": "v5.4.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "0948e99457615ddb05380adde3584484ffd951d4" + "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0948e99457615ddb05380adde3584484ffd951d4", - "reference": "0948e99457615ddb05380adde3584484ffd951d4", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/34e89bc147633c0f9dd6caaaf56da3b806a21465", + "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" }, "type": "library", "autoload": { @@ -6701,7 +6372,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.36" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.6" }, "funding": [ { @@ -6717,61 +6388,69 @@ "type": "tidelift" } ], - "time": "2021-12-27T18:40:22+00:00" + "time": "2022-03-05T21:03:43+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "dfb65dcad12ef433d45ad1c97f632cd52c7faa68" + "reference": "509243b9b3656db966284c45dffce9316c1ecc5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/dfb65dcad12ef433d45ad1c97f632cd52c7faa68", - "reference": "dfb65dcad12ef433d45ad1c97f632cd52c7faa68", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/509243b9b3656db966284c45dffce9316c1ecc5c", + "reference": "509243b9b3656db966284c45dffce9316c1ecc5c", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "symfony/browser-kit": "", @@ -6805,7 +6484,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.36" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.7" }, "funding": [ { @@ -6821,26 +6500,27 @@ "type": "tidelift" } ], - "time": "2021-12-29T12:48:41+00:00" + "time": "2022-04-02T06:04:20+00:00" }, { "name": "symfony/inflector", - "version": "v4.4.34", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/inflector.git", - "reference": "cbbde60aa3aa2e7ea51830fd590b6151615c57bc" + "reference": "6157dac05bbd287d341b82d67a549fdf468f86d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/cbbde60aa3aa2e7ea51830fd590b6151615c57bc", - "reference": "cbbde60aa3aa2e7ea51830fd590b6151615c57bc", + "url": "https://api.github.com/repos/symfony/inflector/zipball/6157dac05bbd287d341b82d67a549fdf468f86d1", + "reference": "6157dac05bbd287d341b82d67a549fdf468f86d1", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/string": "^5.3.10|^6.0" }, "type": "library", "autoload": { @@ -6876,7 +6556,7 @@ "words" ], "support": { - "source": "https://github.com/symfony/inflector/tree/v4.4.34" + "source": "https://github.com/symfony/inflector/tree/v5.4.3" }, "funding": [ { @@ -6893,35 +6573,35 @@ } ], "abandoned": "EnglishInflector from the String component", - "time": "2021-10-29T15:39:54+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/intl", - "version": "v4.4.36", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "5a7fa2fab0f25b24c5cd0b8fd09f9dcb0dac8e40" + "reference": "47a1413da15ff840d7c419fa704d32caba3276ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/5a7fa2fab0f25b24c5cd0b8fd09f9dcb0dac8e40", - "reference": "5a7fa2fab0f25b24c5cd0b8fd09f9dcb0dac8e40", + "url": "https://api.github.com/repos/symfony/intl/zipball/47a1413da15ff840d7c419fa704d32caba3276ac", + "reference": "47a1413da15ff840d7c419fa704d32caba3276ac", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-intl-icu": "~1.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/filesystem": "^3.4|^4.0|^5.0" - }, - "suggest": { - "ext-intl": "to use the component with locales other than \"en\"" + "symfony/filesystem": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Intl\\": "" }, @@ -6965,7 +6645,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v4.4.36" + "source": "https://github.com/symfony/intl/tree/v5.4.5" }, "funding": [ { @@ -6981,34 +6661,110 @@ "type": "tidelift" } ], - "time": "2021-11-25T16:40:00+00:00" + "time": "2022-02-25T13:55:17+00:00" }, { - "name": "symfony/maker-bundle", - "version": "v1.36.4", + "name": "symfony/mailer", + "version": "v5.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/maker-bundle.git", - "reference": "716eee9c8b10b33e682df1b7d80b9061887e9691" + "url": "https://github.com/symfony/mailer.git", + "reference": "c6e7aa958cb2884d68562264f421ffea59cdad41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/716eee9c8b10b33e682df1b7d80b9061887e9691", - "reference": "716eee9c8b10b33e682df1b7d80b9061887e9691", + "url": "https://api.github.com/repos/symfony/mailer/zipball/c6e7aa958cb2884d68562264f421ffea59cdad41", + "reference": "c6e7aa958cb2884d68562264f421ffea59cdad41", "shasum": "" }, "require": { - "doctrine/inflector": "^1.2|^2.0", - "nikic/php-parser": "^4.11", - "php": ">=7.1.3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" + "egulias/email-validator": "^2.1.10|^3", + "php": ">=7.2.5", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2.6|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3" + }, + "conflict": { + "symfony/http-kernel": "<4.4" + }, + "require-dev": { + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/messenger": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v5.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-27T17:10:22+00:00" + }, + { + "name": "symfony/maker-bundle", + "version": "v1.38.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "143024ab0e426285d3d9b7f6a3ce51e12a9d8ec5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/143024ab0e426285d3d9b7f6a3ce51e12a9d8ec5", + "reference": "143024ab0e426285d3d9b7f6a3ce51e12a9d8ec5", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.2|^2.0", + "nikic/php-parser": "^4.11", + "php": ">=7.1.3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.2|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" }, "require-dev": { "composer/semver": "^3.0", @@ -7053,7 +6809,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.36.4" + "source": "https://github.com/symfony/maker-bundle/tree/v1.38.0" }, "funding": [ { @@ -7069,20 +6825,20 @@ "type": "tidelift" } ], - "time": "2021-12-01T00:27:38+00:00" + "time": "2022-02-24T21:06:51+00:00" }, { "name": "symfony/mime", - "version": "v5.4.2", + "version": "v5.4.8", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d" + "reference": "af49bc163ec3272f677bde3bc44c0d766c1fd662" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/1bfd938cf9562822c05c4d00e8f92134d3c8e42d", - "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d", + "url": "https://api.github.com/repos/symfony/mime/zipball/af49bc163ec3272f677bde3bc44c0d766c1fd662", + "reference": "af49bc163ec3272f677bde3bc44c0d766c1fd662", "shasum": "" }, "require": { @@ -7136,7 +6892,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.2" + "source": "https://github.com/symfony/mime/tree/v5.4.8" }, "funding": [ { @@ -7152,38 +6908,42 @@ "type": "tidelift" } ], - "time": "2021-12-28T17:15:56+00:00" + "time": "2022-04-12T15:48:08+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v4.4.27", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "9882c03d4c237d77ba5b2845639700653dcd9a84" + "reference": "4b56e17c443e7092895477f047f2a70f324f984c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/9882c03d4c237d77ba5b2845639700653dcd9a84", - "reference": "9882c03d4c237d77ba5b2845639700653dcd9a84", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/4b56e17c443e7092895477f047f2a70f324f984c", + "reference": "4b56e17c443e7092895477f047f2a70f324f984c", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1", - "php": ">=7.1.3", - "symfony/http-kernel": "^4.3", + "monolog/monolog": "^1.25.1|^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "symfony/console": "<3.4", - "symfony/http-foundation": "<3.4" + "symfony/console": "<4.4", + "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/security-core": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^3.4|^4.0|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mailer": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", @@ -7216,7 +6976,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.27" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.3" }, "funding": [ { @@ -7232,7 +6992,7 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:41:52+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/monolog-bundle", @@ -7317,20 +7077,22 @@ }, { "name": "symfony/options-resolver", - "version": "v4.4.30", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "fa0b12a3a47ed25749d47d6b4f61412fd5ca1554" + "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/fa0b12a3a47ed25749d47d6b4f61412fd5ca1554", - "reference": "fa0b12a3a47ed25749d47d6b4f61412fd5ca1554", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8", + "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -7364,7 +7126,80 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v4.4.30" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/password-hasher", + "version": "v5.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/password-hasher.git", + "reference": "b5ed59c4536d8386cd37bb86df2b7bd5fbbd46d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/b5ed59c4536d8386cd37bb86df2b7bd5fbbd46d4", + "reference": "b5ed59c4536d8386cd37bb86df2b7bd5fbbd46d4", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/security-core": "<5.3" + }, + "require-dev": { + "symfony/console": "^5", + "symfony/security-core": "^5.3|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PasswordHasher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides password hashing utilities", + "homepage": "https://symfony.com", + "keywords": [ + "hashing", + "password" + ], + "support": { + "source": "https://github.com/symfony/password-hasher/tree/v5.4.3" }, "funding": [ { @@ -7380,7 +7215,7 @@ "type": "tidelift" } ], - "time": "2021-08-04T20:31:23+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/polyfill-ctype", @@ -7465,27 +7300,24 @@ "time": "2021-10-20T20:35:02+00:00" }, { - "name": "symfony/polyfill-iconv", - "version": "v1.24.0", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", "shasum": "" }, "require": { "php": ">=7.1" }, - "provide": { - "ext-iconv": "*" - }, "suggest": { - "ext-iconv": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { @@ -7498,12 +7330,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7519,17 +7351,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Iconv extension", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "iconv", + "grapheme", + "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" }, "funding": [ { @@ -7545,11 +7378,11 @@ "type": "tidelift" } ], - "time": "2022-01-04T09:04:05+00:00" + "time": "2021-11-23T21:10:46+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.24.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", @@ -7616,7 +7449,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.25.0" }, "funding": [ { @@ -7888,74 +7721,6 @@ ], "time": "2021-11-30T18:21:41+00:00" }, - { - "name": "symfony/polyfill-php70", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, { "name": "symfony/polyfill-php72", "version": "v1.25.0", @@ -8196,7 +7961,7 @@ }, { "name": "symfony/polyfill-php81", - "version": "v1.24.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", @@ -8222,12 +7987,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -8255,7 +8020,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" }, "funding": [ { @@ -8275,20 +8040,20 @@ }, { "name": "symfony/process", - "version": "v4.4.40", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "54e9d763759268e07eb13b921d8631fc2816206f" + "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/54e9d763759268e07eb13b921d8631fc2816206f", - "reference": "54e9d763759268e07eb13b921d8631fc2816206f", + "url": "https://api.github.com/repos/symfony/process/zipball/38a44b2517b470a436e1c944bf9b9ba3961137fb", + "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -8317,7 +8082,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.40" + "source": "https://github.com/symfony/process/tree/v5.4.7" }, "funding": [ { @@ -8333,29 +8098,30 @@ "type": "tidelift" } ], - "time": "2022-03-18T16:18:39+00:00" + "time": "2022-03-18T16:18:52+00:00" }, { "name": "symfony/property-access", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "21c6c7a887e5b514c3decaa42d406a1f9ed92641" + "reference": "57196a19211baa36087e6fc06254d3b39ff0f369" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/21c6c7a887e5b514c3decaa42d406a1f9ed92641", - "reference": "21c6c7a887e5b514c3decaa42d406a1f9ed92641", + "url": "https://api.github.com/repos/symfony/property-access/zipball/57196a19211baa36087e6fc06254d3b39ff0f369", + "reference": "57196a19211baa36087e6fc06254d3b39ff0f369", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/property-info": "^5.2|^6.0" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0" }, "suggest": { "psr/cache-implementation": "To cache access methods." @@ -8397,7 +8163,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.36" + "source": "https://github.com/symfony/property-access/tree/v5.4.7" }, "funding": [ { @@ -8413,35 +8179,51 @@ "type": "tidelift" } ], - "time": "2021-12-11T14:17:37+00:00" + "time": "2022-03-31T17:09:19+00:00" }, { - "name": "symfony/proxy-manager-bridge", - "version": "v4.4.36", + "name": "symfony/property-info", + "version": "v5.4.7", "source": { "type": "git", - "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "24abdc45251f76b55ed4d487714aeb91bf06228f" + "url": "https://github.com/symfony/property-info.git", + "reference": "0fc07795712972b9792f203d0fe0e77c26c3281d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/24abdc45251f76b55ed4d487714aeb91bf06228f", - "reference": "24abdc45251f76b55ed4d487714aeb91bf06228f", + "url": "https://api.github.com/repos/symfony/property-info/zipball/0fc07795712972b9792f203d0fe0e77c26c3281d", + "reference": "0fc07795712972b9792f203d0fe0e77c26c3281d", "shasum": "" }, "require": { - "friendsofphp/proxy-manager-lts": "^1.0.2", - "php": ">=7.1.3", - "symfony/dependency-injection": "^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" }, "require-dev": { - "symfony/config": "^3.4|^4.0|^5.0" + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "suggest": { + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" + }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bridge\\ProxyManager\\": "" + "Symfony\\Component\\PropertyInfo\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8453,22 +8235,30 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides integration for ProxyManager with various Symfony components", + "description": "Extracts information about PHP class' properties using metadata of popular sources", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v4.4.36" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v5.4.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", "type": "custom" }, { @@ -8480,51 +8270,35 @@ "type": "tidelift" } ], - "time": "2021-12-22T13:28:19+00:00" + "time": "2022-03-30T13:40:48+00:00" }, { - "name": "symfony/routing", - "version": "v4.4.34", + "name": "symfony/proxy-manager-bridge", + "version": "v5.4.6", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366" + "url": "https://github.com/symfony/proxy-manager-bridge.git", + "reference": "e6936de1cc8f4e6e3b2264aef186ca21695aee8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", - "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/e6936de1cc8f4e6e3b2264aef186ca21695aee8e", + "reference": "e6936de1cc8f4e6e3b2264aef186ca21695aee8e", "shasum": "" }, "require": { - "php": ">=7.1.3", + "friendsofphp/proxy-manager-lts": "^1.0.2", + "php": ">=7.2.5", + "symfony/dependency-injection": "^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, - "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "psr/log": "^1|^2|^3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0" }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", + "type": "symfony-bridge", "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" + "Symfony\\Bridge\\ProxyManager\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8544,16 +8318,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.34" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.4.6" }, "funding": [ { @@ -8569,71 +8337,55 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2022-03-02T12:42:23+00:00" }, { - "name": "symfony/security", - "version": "v4.4.36", + "name": "symfony/routing", + "version": "v5.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/security.git", - "reference": "922246c833700acd412ecf167abe4291eff03957" + "url": "https://github.com/symfony/routing.git", + "reference": "44b29c7a94e867ccde1da604792f11a469958981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/922246c833700acd412ecf167abe4291eff03957", - "reference": "922246c833700acd412ecf167abe4291eff03957", + "url": "https://api.github.com/repos/symfony/routing/zipball/44b29c7a94e867ccde1da604792f11a469958981", + "reference": "44b29c7a94e867ccde1da604792f11a469958981", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1|^2", - "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", - "symfony/http-kernel": "^4.4", - "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/event-dispatcher": ">=5", - "symfony/ldap": "<4.4" - }, - "replace": { - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version" + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "psr/container": "^1.0|^2.0", + "doctrine/annotations": "^1.12", "psr/log": "^1|^2|^3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/ldap": "^4.4|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^3.4.31|^4.3.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/expression-language": "For using the expression voter", - "symfony/form": "", - "symfony/ldap": "For using the LDAP user and authentication providers", - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/validator": "For using the user password constraint" + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\": "" + "Symfony\\Component\\Routing\\": "" }, "exclude-from-classmap": [ - "/Core/Tests/", - "/Csrf/Tests/", - "/Guard/Tests/", - "/Http/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8650,10 +8402,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a complete security system for your web application", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], "support": { - "source": "https://github.com/symfony/security/tree/v4.4.36" + "source": "https://github.com/symfony/routing/tree/v5.4.3" }, "funding": [ { @@ -8669,59 +8427,65 @@ "type": "tidelift" } ], - "time": "2021-12-23T16:49:24+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/security-bundle", - "version": "v4.4.36", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "ea53c7fc357a330e7d865ed1bf2d3583f462e3f5" + "reference": "d6ae2f605fa8e4e0860c1a6574271af2bb4ba16c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/ea53c7fc357a330e7d865ed1bf2d3583f462e3f5", - "reference": "ea53c7fc357a330e7d865ed1bf2d3583f462e3f5", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/d6ae2f605fa8e4e0860c1a6574271af2bb4ba16c", + "reference": "d6ae2f605fa8e4e0860c1a6574271af2bb4ba16c", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4", - "symfony/security-csrf": "^4.2|^5.0", - "symfony/security-guard": "^4.2|^5.0", - "symfony/security-http": "^4.4.5" + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-guard": "^5.3", + "symfony/security-http": "^5.4|^6.0" }, "conflict": { - "symfony/browser-kit": "<4.2", - "symfony/console": "<3.4", + "symfony/browser-kit": "<4.4", + "symfony/console": "<4.4", "symfony/framework-bundle": "<4.4", - "symfony/ldap": "<4.4", + "symfony/ldap": "<5.1", "symfony/twig-bundle": "<4.4" }, "require-dev": { "doctrine/annotations": "^1.10.4", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.2|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/twig-bridge": "^3.4|^4.0|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0", + "symfony/ldap": "^5.3|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "type": "symfony-bundle", "autoload": { @@ -8749,7 +8513,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v4.4.36" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.5" }, "funding": [ { @@ -8765,62 +8529,61 @@ "type": "tidelift" } ], - "time": "2021-11-25T16:40:00+00:00" + "time": "2022-02-18T16:06:09+00:00" }, { - "name": "symfony/serializer", - "version": "v4.4.36", + "name": "symfony/security-core", + "version": "v5.4.7", "source": { "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "46809cc4694007c09b3134d6da76e508d8b72e46" + "url": "https://github.com/symfony/security-core.git", + "reference": "8d622c29dd018a5fb4a3994c9eeae2e9dfe68e96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/46809cc4694007c09b3134d6da76e508d8b72e46", - "reference": "46809cc4694007c09b3134d6da76e508d8b72e46", + "url": "https://api.github.com/repos/symfony/security-core/zipball/8d622c29dd018a5fb4a3994c9eeae2e9dfe68e96", + "reference": "8d622c29dd018a5fb4a3994c9eeae2e9dfe68e96", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^1.1|^2|^3", + "symfony/password-hasher": "^5.3|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2|^3" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4", - "symfony/property-access": "<3.4", - "symfony/property-info": "<3.4", - "symfony/yaml": "<3.4" + "symfony/event-dispatcher": "<4.4", + "symfony/http-foundation": "<5.3", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.4", + "symfony/validator": "<5.2" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4.36|^5.3.13", - "symfony/property-info": "^3.4.13|~4.0|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/ldap": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.2|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping.", - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/yaml": "For using the default YAML mapping loader." + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Serializer\\": "" + "Symfony\\Component\\Security\\Core\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8840,10 +8603,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v4.4.36" + "source": "https://github.com/symfony/security-core/tree/v5.4.7" }, "funding": [ { @@ -8859,47 +8622,44 @@ "type": "tidelift" } ], - "time": "2021-11-28T13:57:19+00:00" + "time": "2022-03-24T01:02:22+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.5.1", + "name": "symfony/security-csrf", + "version": "v5.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "57c1c252ca756289c2b61327e08fb10be3936956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/57c1c252ca756289c2b61327e08fb10be3936956", + "reference": "57c1c252ca756289c2b61327e08fb10be3936956", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4|^5.0|^6.0" }, "conflict": { - "ext-psr": "<1.1|>=2" + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/http-foundation": "^5.3|^6.0" }, "suggest": { - "symfony/service-implementation": "" + "symfony/http-foundation": "For using the class SessionTokenStorage." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8907,26 +8667,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to writing services", + "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/security-csrf/tree/v5.4.3" }, "funding": [ { @@ -8942,30 +8694,35 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "symfony/stopwatch", - "version": "v4.4.27", + "name": "symfony/security-guard", + "version": "v5.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "c85d997af06a58ba83e2d2538e335b894c24523d" + "url": "https://github.com/symfony/security-guard.git", + "reference": "3d68d9f8e162f6655eb0a0237b9f333a82a19da9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/c85d997af06a58ba83e2d2538e335b894c24523d", - "reference": "c85d997af06a58ba83e2d2538e335b894c24523d", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/3d68d9f8e162f6655eb0a0237b9f333a82a19da9", + "reference": "3d68d9f8e162f6655eb0a0237b9f333a82a19da9", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/service-contracts": "^1.0|^2" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15", + "symfony/security-core": "^5.0", + "symfony/security-http": "^5.3" + }, + "require-dev": { + "psr/log": "^1|^2|^3" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" + "Symfony\\Component\\Security\\Guard\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8985,10 +8742,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a way to profile code", + "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v4.4.27" + "source": "https://github.com/symfony/security-guard/tree/v5.4.3" }, "funding": [ { @@ -9004,47 +8761,53 @@ "type": "tidelift" } ], - "time": "2021-07-10T08:41:57+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "symfony/swiftmailer-bundle", - "version": "v3.5.3", + "name": "symfony/security-http", + "version": "v5.4.5", "source": { "type": "git", - "url": "https://github.com/symfony/swiftmailer-bundle.git", - "reference": "fa7d78cbdf0a16a4da126c465f25f6547ad69cf6" + "url": "https://github.com/symfony/security-http.git", + "reference": "53d572f06fc438faae3713cc97d186d941919748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/fa7d78cbdf0a16a4da126c465f25f6547ad69cf6", - "reference": "fa7d78cbdf0a16a4da126c465f25f6547ad69cf6", + "url": "https://api.github.com/repos/symfony/security-http/zipball/53d572f06fc438faae3713cc97d186d941919748", + "reference": "53d572f06fc438faae3713cc97d186d941919748", "shasum": "" }, "require": { - "php": ">=7.1", - "swiftmailer/swiftmailer": "^6.1.3", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4|^6.0" }, "conflict": { - "twig/twig": "<1.41|>=2.0,<2.10" + "symfony/event-dispatcher": "<4.3", + "symfony/security-bundle": "<5.3", + "symfony/security-csrf": "<4.4" }, "require-dev": { - "symfony/console": "^4.4|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/phpunit-bridge": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "psr/log": "^1|^2|^3", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0" }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - } + "suggest": { + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\SwiftmailerBundle\\": "" + "Symfony\\Component\\Security\\Http\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9061,14 +8824,13 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony SwiftmailerBundle", - "homepage": "http://symfony.com", + "description": "Symfony Security Component - HTTP Integration", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/symfony/swiftmailer-bundle/issues", - "source": "https://github.com/symfony/swiftmailer-bundle/tree/v3.5.3" + "source": "https://github.com/symfony/security-http/tree/v5.4.5" }, "funding": [ { @@ -9084,36 +8846,71 @@ "type": "tidelift" } ], - "time": "2021-12-02T16:23:52+00:00" + "time": "2022-02-17T20:21:36+00:00" }, { - "name": "symfony/templating", - "version": "v4.4.36", + "name": "symfony/serializer", + "version": "v5.4.7", "source": { "type": "git", - "url": "https://github.com/symfony/templating.git", - "reference": "844e42e39125da6df59d66a72b6557877fbba1b2" + "url": "https://github.com/symfony/serializer.git", + "reference": "d1bc37090edabada161b6490d1be14e8cb4891d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/templating/zipball/844e42e39125da6df59d66a72b6557877fbba1b2", - "reference": "844e42e39125da6df59d66a72b6557877fbba1b2", + "url": "https://api.github.com/repos/symfony/serializer/zipball/d1bc37090edabada161b6490d1be14e8cb4891d4", + "reference": "d1bc37090edabada161b6490d1be14e8cb4891d4", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.3.13", + "symfony/uid": "<5.3", + "symfony/yaml": "<4.4" }, "require-dev": { - "psr/log": "^1|^2|^3" + "doctrine/annotations": "^1.12", + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.3.13|^6.0", + "symfony/uid": "^5.3|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "psr/log-implementation": "For using debug logging in loaders" + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", + "symfony/yaml": "For using the default YAML mapping loader." }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Templating\\": "" + "Symfony\\Component\\Serializer\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9133,10 +8930,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides all the tools needed to build any kind of template system", + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/templating/tree/v4.4.36" + "source": "https://github.com/symfony/serializer/tree/v5.4.7" }, "funding": [ { @@ -9152,61 +8949,47 @@ "type": "tidelift" } ], - "time": "2021-11-25T16:40:00+00:00" + "time": "2022-03-24T17:11:08+00:00" }, { - "name": "symfony/translation", - "version": "v4.4.34", + "name": "symfony/service-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "26d330720627b234803595ecfc0191eeabc65190" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/26d330720627b234803595ecfc0191eeabc65190", - "reference": "26d330720627b234803595ecfc0191eeabc65190", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "ext-psr": "<1.1|>=2" }, "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/service-implementation": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9214,18 +8997,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to internationalize your application", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.34" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" }, "funding": [ { @@ -9241,20 +9032,333 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v5.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/service-contracts": "^1|^2|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v5.4.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-02-18T16:06:09+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", + "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/templating", + "version": "v5.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/templating.git", + "reference": "b530c7c560b46b5cf792c0cc2095856f60b3b6d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/templating/zipball/b530c7c560b46b5cf792c0cc2095856f60b3b6d0", + "reference": "b530c7c560b46b5cf792c0cc2095856f60b3b6d0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "require-dev": { + "psr/log": "^1|^2|^3" + }, + "suggest": { + "psr/log-implementation": "For using debug logging in loaders" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Templating\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides all the tools needed to build any kind of template system", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/templating/tree/v5.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "e1eb790575202ee3ac2659f55b93b05853726f8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/e1eb790575202ee3ac2659f55b93b05853726f8e", + "reference": "e1eb790575202ee3ac2659f55b93b05853726f8e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/console": "<5.3", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.3" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v5.4.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-24T17:09:09+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.0", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" + "reference": "1211df0afa701e45a04253110e959d4af4ef0f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1211df0afa701e45a04253110e959d4af4ef0f07", + "reference": "1211df0afa701e45a04253110e959d4af4ef0f07", "shasum": "" }, "require": { @@ -9303,7 +9407,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.1" }, "funding": [ { @@ -9319,60 +9423,65 @@ "type": "tidelift" } ], - "time": "2021-08-17T14:20:01+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/twig-bridge", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "9ca8db38f34058b4e94fb540a18dca1a9cd77111" + "reference": "b43e9bdb57a39ffffb4c44a7ef0a47d338e9f1da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9ca8db38f34058b4e94fb540a18dca1a9cd77111", - "reference": "9ca8db38f34058b4e94fb540a18dca1a9cd77111", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/b43e9bdb57a39ffffb4c44a7ef0a47d338e9f1da", + "reference": "b43e9bdb57a39ffffb4c44a7ef0a47d338e9f1da", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/console": "<3.4", - "symfony/form": "<4.4", - "symfony/http-foundation": "<4.3", - "symfony/translation": "<4.2", - "symfony/workflow": "<4.3" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<5.3", + "symfony/form": "<5.3", + "symfony/http-foundation": "<5.3", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<5.2", + "symfony/workflow": "<5.2" }, "require-dev": { + "doctrine/annotations": "^1.12", "egulias/email-validator": "^2.1.10|^3", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4.17", - "symfony/http-foundation": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^4.3|^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/console": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^5.3|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^3.0|^4.0|^5.0", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2.1|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-http": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.2|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.2|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" @@ -9388,7 +9497,6 @@ "symfony/security-csrf": "For using the CsrfExtension", "symfony/security-http": "For using the LogoutUrlExtension", "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/templating": "For using the TwigEngine", "symfony/translation": "For using the TranslationExtension", "symfony/var-dumper": "For using the DumpExtension", "symfony/web-link": "For using the WebLinkExtension", @@ -9420,7 +9528,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v4.4.36" + "source": "https://github.com/symfony/twig-bridge/tree/v5.4.7" }, "funding": [ { @@ -9436,51 +9544,52 @@ "type": "tidelift" } ], - "time": "2021-11-25T16:40:00+00:00" + "time": "2022-04-01T06:09:41+00:00" }, { "name": "symfony/twig-bundle", - "version": "v4.4.36", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "3f6dd82ad6707dc647dd8d8e01c0931a4378c1ff" + "reference": "45ae3ee8155f93042a1033b166a7a3ed57b96a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/3f6dd82ad6707dc647dd8d8e01c0931a4378c1ff", - "reference": "3f6dd82ad6707dc647dd8d8e01c0931a4378c1ff", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/45ae3ee8155f93042a1033b166a7a3ed57b96a92", + "reference": "45ae3ee8155f93042a1033b166a7a3ed57b96a92", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/http-foundation": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/twig-bridge": "^5.3|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/dependency-injection": "<4.1", - "symfony/framework-bundle": "<4.4", - "symfony/translation": "<4.2" + "symfony/dependency-injection": "<5.3", + "symfony/framework-bundle": "<5.0", + "symfony/service-contracts": ">=3.0", + "symfony/translation": "<5.0" }, "require-dev": { "doctrine/annotations": "^1.10.4", "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.2.5|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/form": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/web-link": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.0|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -9508,7 +9617,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v4.4.36" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.3" }, "funding": [ { @@ -9524,63 +9633,70 @@ "type": "tidelift" } ], - "time": "2021-11-25T16:40:00+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/validator", - "version": "v4.4.36", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "dba84cf8f0f26bdf76057235b3cdc881c476a282" + "reference": "f6402ff65e23b7a701d6938809c6451a8a125a8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/dba84cf8f0f26bdf76057235b3cdc881c476a282", - "reference": "dba84cf8f0f26bdf76057235b3cdc881c476a282", + "url": "https://api.github.com/repos/symfony/validator/zipball/f6402ff65e23b7a701d6938809c6451a8a125a8b", + "reference": "f6402ff65e23b7a701d6938809c6451a8a125a8b", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.22", + "symfony/translation-contracts": "^1.1|^2|^3" }, "conflict": { + "doctrine/annotations": "<1.13", + "doctrine/cache": "<1.11", "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<4.4", + "symfony/expression-language": "<5.1", "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": ">=5.0", - "symfony/yaml": "<3.4" + "symfony/intl": "<4.4", + "symfony/property-info": "<5.3", + "symfony/translation": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", + "doctrine/annotations": "^1.13", + "doctrine/cache": "^1.11|^2.0", "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/http-foundation": "^4.1|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.3|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^5.1|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader.", "egulias/email-validator": "Strict (RFC compliant) email validation", "psr/cache-implementation": "For using the mapping cache.", "symfony/config": "", - "symfony/expression-language": "For using the Expression validator", + "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", "symfony/http-foundation": "", "symfony/intl": "", "symfony/property-access": "For accessing properties within comparison constraints", @@ -9614,7 +9730,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.36" + "source": "https://github.com/symfony/validator/tree/v5.4.7" }, "funding": [ { @@ -9630,37 +9746,37 @@ "type": "tidelift" } ], - "time": "2021-12-20T09:31:34+00:00" + "time": "2022-03-31T17:09:19+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.36", + "version": "v5.4.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "02685c62fcbc4262235cc72a54fbd45ab719ce3c" + "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/02685c62fcbc4262235cc72a54fbd45ab719ce3c", - "reference": "02685c62fcbc4262235cc72a54fbd45ab719ce3c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/294e9da6e2e0dd404e983daa5aa74253d92c05d0", + "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", @@ -9703,7 +9819,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.36" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.6" }, "funding": [ { @@ -9719,20 +9835,20 @@ "type": "tidelift" } ], - "time": "2021-12-29T09:28:53+00:00" + "time": "2022-03-02T12:42:23+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.4.2", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "2360c8525815b8535caac27cbc1994e2fa8644ba" + "reference": "7eacaa588c9b27f2738575adb4a8457a80d9c807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2360c8525815b8535caac27cbc1994e2fa8644ba", - "reference": "2360c8525815b8535caac27cbc1994e2fa8644ba", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/7eacaa588c9b27f2738575adb4a8457a80d9c807", + "reference": "7eacaa588c9b27f2738575adb4a8457a80d9c807", "shasum": "" }, "require": { @@ -9776,7 +9892,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.2" + "source": "https://github.com/symfony/var-exporter/tree/v5.4.7" }, "funding": [ { @@ -9792,42 +9908,43 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:58:21+00:00" + "time": "2022-03-31T17:09:19+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v4.4.31", + "version": "v5.4.6", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "24227617a4ddbdf78f8ab12ce2b76dfb54a7d851" + "reference": "1497b1d22c2807a77563439f8ec489407a989d59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/24227617a4ddbdf78f8ab12ce2b76dfb54a7d851", - "reference": "24227617a4ddbdf78f8ab12ce2b76dfb54a7d851", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/1497b1d22c2807a77563439f8ec489407a989d59", + "reference": "1497b1d22c2807a77563439f8ec489407a989d59", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/config": "^4.2|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.3|^5.0", - "symfony/twig-bundle": "^4.2|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/form": "<4.3", - "symfony/messenger": "<4.2" + "symfony/dependency-injection": "<5.2", + "symfony/form": "<4.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<4.4" }, "require-dev": { - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.3|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -9855,79 +9972,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v4.4.31" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-09-16T11:24:03+00:00" - }, - { - "name": "symfony/web-server-bundle", - "version": "v4.4.27", - "source": { - "type": "git", - "url": "https://github.com/symfony/web-server-bundle.git", - "reference": "c283d46b40b1c9dee20771433a19fa7f4a9bb97a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/c283d46b40b1c9dee20771433a19fa7f4a9bb97a", - "reference": "c283d46b40b1c9dee20771433a19fa7f4a9bb97a", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/process": "^3.4.2|^4.0.2|^5.0" - }, - "suggest": { - "symfony/expression-language": "For using the filter option of the log server.", - "symfony/monolog-bridge": "For using the log server." - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Symfony\\Bundle\\WebServerBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides commands for running applications using the PHP built-in web server", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/web-server-bundle/tree/v4.4.27" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.6" }, "funding": [ { @@ -9943,37 +9988,36 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:19:41+00:00" + "time": "2022-02-28T15:47:42+00:00" }, { "name": "symfony/workflow", - "version": "v4.4.27", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/workflow.git", - "reference": "53b6200838be1c60314a2cfb623d4e91edc92256" + "reference": "5bf479092b9b4c25fd8eb5416146ffa8de4a5393" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/workflow/zipball/53b6200838be1c60314a2cfb623d4e91edc92256", - "reference": "53b6200838be1c60314a2cfb623d4e91edc92256", + "url": "https://api.github.com/repos/symfony/workflow/zipball/5bf479092b9b4c25fd8eb5416146ffa8de4a5393", + "reference": "5bf479092b9b4c25fd8eb5416146ffa8de4a5393", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/property-access": "^3.4|^4.3|^5.0" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/security-core": ">=5" + "symfony/event-dispatcher": "<4.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/security-core": "^3.4|^4.0", - "symfony/validator": "^3.4|^4.0|^5.0" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -10010,7 +10054,7 @@ "workflow" ], "support": { - "source": "https://github.com/symfony/workflow/tree/v4.4.27" + "source": "https://github.com/symfony/workflow/tree/v5.4.3" }, "funding": [ { @@ -10026,35 +10070,39 @@ "type": "tidelift" } ], - "time": "2021-07-21T08:35:38+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.36", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a19f7c44ba665fa9d9d415cc4493361381b93f9b" + "reference": "e80f87d2c9495966768310fc531b487ce64237a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a19f7c44ba665fa9d9d415cc4493361381b93f9b", - "reference": "a19f7c44ba665fa9d9d415cc4493361381b93f9b", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", + "reference": "e80f87d2c9495966768310fc531b487ce64237a2", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "autoload": { "psr-4": { @@ -10081,7 +10129,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.36" + "source": "https://github.com/symfony/yaml/tree/v5.4.3" }, "funding": [ { @@ -10097,7 +10145,7 @@ "type": "tidelift" } ], - "time": "2021-11-25T16:40:00+00:00" + "time": "2022-01-26T16:32:32+00:00" }, { "name": "tecnickcom/tcpdf", @@ -10172,42 +10220,119 @@ "time": "2021-12-31T08:39:24+00:00" }, { - "name": "twig/extensions", - "version": "v1.5.4", + "name": "twig/extra-bundle", + "version": "v3.3.8", + "source": { + "type": "git", + "url": "https://github.com/twigphp/twig-extra-bundle.git", + "reference": "2e58256b0e9fe52f30149347c0547e4633304765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/2e58256b0e9fe52f30149347c0547e4633304765", + "reference": "2e58256b0e9fe52f30149347c0547e4633304765", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/framework-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "twig/twig": "^2.7|^3.0" + }, + "require-dev": { + "league/commonmark": "^1.0|^2.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "twig/cache-extra": "^3.0", + "twig/cssinliner-extra": "^2.12|^3.0", + "twig/html-extra": "^2.12|^3.0", + "twig/inky-extra": "^2.12|^3.0", + "twig/intl-extra": "^2.12|^3.0", + "twig/markdown-extra": "^2.12|^3.0", + "twig/string-extra": "^2.12|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\Extra\\TwigExtraBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Symfony bundle for extra Twig extensions", + "homepage": "https://twig.symfony.com", + "keywords": [ + "bundle", + "extra", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.3.8" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2022-01-04T13:58:53+00:00" + }, + { + "name": "twig/intl-extra", + "version": "v3.3.5", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig-extensions.git", - "reference": "57873c8b0c1be51caa47df2cdb824490beb16202" + "url": "https://github.com/twigphp/intl-extra.git", + "reference": "8dca6f4c5a00cdd3c43b6bd080f50d32aca33a84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202", - "reference": "57873c8b0c1be51caa47df2cdb824490beb16202", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/8dca6f4c5a00cdd3c43b6bd080f50d32aca33a84", + "reference": "8dca6f4c5a00cdd3c43b6bd080f50d32aca33a84", "shasum": "" }, "require": { - "twig/twig": "^1.27|^2.0" + "php": ">=7.1.3", + "symfony/intl": "^4.4|^5.0|^6.0", + "twig/twig": "^2.7|^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^3.4", - "symfony/translation": "^2.7|^3.4" - }, - "suggest": { - "symfony/translation": "Allow the time_diff output to be translated" + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5-dev" + "dev-master": "3.2-dev" } }, "autoload": { - "psr-0": { - "Twig_Extensions_": "lib/" - }, "psr-4": { - "Twig\\Extensions\\": "src/" - } + "Twig\\Extra\\Intl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10216,33 +10341,44 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" } ], - "description": "Common additional features for Twig that do not directly belong in core", + "description": "A Twig extension for Intl", + "homepage": "https://twig.symfony.com", "keywords": [ - "i18n", - "text" + "intl", + "twig" ], "support": { - "issues": "https://github.com/twigphp/Twig-extensions/issues", - "source": "https://github.com/twigphp/Twig-extensions/tree/master" + "source": "https://github.com/twigphp/intl-extra/tree/v3.3.5" }, - "abandoned": true, - "time": "2018-12-05T18:34:18+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2022-01-02T10:02:25+00:00" }, { "name": "twig/twig", - "version": "v2.14.11", + "version": "v2.15.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "66baa66f29ee30e487e05f1679903e36eb01d727" + "reference": "3b7cedb2f736899a7dbd0ba3d6da335a015f5cc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/66baa66f29ee30e487e05f1679903e36eb01d727", - "reference": "66baa66f29ee30e487e05f1679903e36eb01d727", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/3b7cedb2f736899a7dbd0ba3d6da335a015f5cc4", + "reference": "3b7cedb2f736899a7dbd0ba3d6da335a015f5cc4", "shasum": "" }, "require": { @@ -10258,7 +10394,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.14-dev" + "dev-master": "2.15-dev" } }, "autoload": { @@ -10297,7 +10433,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.14.11" + "source": "https://github.com/twigphp/Twig/tree/v2.15.1" }, "funding": [ { @@ -10309,32 +10445,43 @@ "type": "tidelift" } ], - "time": "2022-02-04T06:57:25+00:00" + "time": "2022-05-17T05:46:24+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v2.4.0", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c" + "reference": "d4394d044ed69a8f244f3445bcedf8a0d7fe2403" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/d4394d044ed69a8f244f3445bcedf8a0d7fe2403", + "reference": "d4394d044ed69a8f244f3445bcedf8a0d7fe2403", "shasum": "" }, "require": { - "php": ">=5.3.9" + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "5.4-dev" } }, "autoload": { @@ -10344,13 +10491,16 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause-Attribution" + "BSD-3-Clause" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk" + }, { "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" + "email": "vance@vancelucas.com" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -10361,9 +10511,19 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/master" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.0" }, - "time": "2016-09-01T10:05:43+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2021-11-10T01:08:39+00:00" } ], "packages-dev": [ @@ -10431,108 +10591,72 @@ "time": "2021-10-12T13:05:09+00:00" }, { - "name": "bheller/images-generator", - "version": "1.0.1", + "name": "captbaritone/mailcatcher-codeception-module", + "version": "2.4.0", "source": { "type": "git", - "url": "https://github.com/bruceheller/images-generator.git", - "reference": "50b61fe1dcf1b72b6a830debec4db22afd1e8ee1" + "url": "https://github.com/captbaritone/codeception-mailcatcher-module.git", + "reference": "7dad8c3bb672e9e0517f9109a4d64278b3ca3dca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bruceheller/images-generator/zipball/50b61fe1dcf1b72b6a830debec4db22afd1e8ee1", - "reference": "50b61fe1dcf1b72b6a830debec4db22afd1e8ee1", + "url": "https://api.github.com/repos/captbaritone/codeception-mailcatcher-module/zipball/7dad8c3bb672e9e0517f9109a4d64278b3ca3dca", + "reference": "7dad8c3bb672e9e0517f9109a4d64278b3ca3dca", "shasum": "" }, "require": { - "fzaninotto/faker": "~1.4", - "php": ">=5.3.0" + "codeception/codeception": "^2.2 || ^3.0 || ^4.0", + "ext-json": "*", + "guzzlehttp/guzzle": "^6.0 || ^7.0", + "php": "^7.3 || ^8.0", + "zbateson/mail-mime-parser": "^1.2" }, "require-dev": { - "phpunit/phpunit": "*", - "squizlabs/php_codesniffer": "2.*" + "codeception/module-asserts": "^1.1", + "phpmailer/phpmailer": "^6.1.6" + }, + "suggest": { + "codeception/module-asserts": "Required if using Codeception >= 4.0" }, "type": "library", "autoload": { "psr-4": { - "bheller\\ImagesGenerator\\": "src" + "Codeception\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Bruce Heller", - "email": "bheller@bheller.com", - "homepage": "http://www.bheller.com" - } - ], - "description": "Generator of placeholder images for Faker", - "homepage": "https://github.com/bruceheller/images-generator", - "keywords": [ - "data", - "faker", - "fixtures", - "images-generator", - "imagesgenerator" - ], - "support": { - "issues": "https://github.com/bruceheller/images-generator/issues", - "source": "https://github.com/bruceheller/images-generator/tree/1.0.1" - }, - "time": "2016-03-03T08:40:48+00:00" - }, - { - "name": "captbaritone/mailcatcher-codeception-module", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/captbaritone/codeception-mailcatcher-module.git", - "reference": "75ba9aa803d81780ee7e9b5c36bb5b8f9139d972" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/captbaritone/codeception-mailcatcher-module/zipball/75ba9aa803d81780ee7e9b5c36bb5b8f9139d972", - "reference": "75ba9aa803d81780ee7e9b5c36bb5b8f9139d972", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Codeception\\Module\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", "authors": [ { "name": "Jordan Eldredge", "email": "jordan@jordaneldredge.com" + }, + { + "name": "James King", + "email": "james@jamesking.dev" } ], "description": "Test emails in your Codeception acceptance tests", "support": { "issues": "https://github.com/captbaritone/codeception-mailcatcher-module/issues", - "source": "https://github.com/captbaritone/codeception-mailcatcher-module/tree/master" + "source": "https://github.com/captbaritone/codeception-mailcatcher-module/tree/2.4.0" }, - "time": "2016-08-16T21:35:06+00:00" + "time": "2022-03-17T10:54:34+00:00" }, { "name": "codeception/codeception", - "version": "4.1.28", + "version": "4.1.31", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "e9bc22a3819f9d356068c0e372193ebcc9b06014" + "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/e9bc22a3819f9d356068c0e372193ebcc9b06014", - "reference": "e9bc22a3819f9d356068c0e372193ebcc9b06014", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/15524571ae0686a7facc2eb1f40f600e5bbce9e5", + "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5", "shasum": "" }, "require": { @@ -10579,13 +10703,13 @@ "branch-alias": [] }, "autoload": { + "files": [ + "functions.php" + ], "psr-4": { "Codeception\\": "src/Codeception", "Codeception\\Extension\\": "ext" - }, - "files": [ - "functions.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10609,7 +10733,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.28" + "source": "https://github.com/Codeception/Codeception/tree/4.1.31" }, "funding": [ { @@ -10617,7 +10741,7 @@ "type": "open_collective" } ], - "time": "2022-01-05T16:41:25+00:00" + "time": "2022-03-13T17:07:08+00:00" }, { "name": "codeception/lib-asserts", @@ -10962,26 +11086,25 @@ }, { "name": "codeception/phpunit-wrapper", - "version": "7.8.2", + "version": "9.0.7", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "cafed18048826790c527843f9b85e8cc79b866f1" + "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/cafed18048826790c527843f9b85e8cc79b866f1", - "reference": "cafed18048826790c527843f9b85e8cc79b866f1", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7d6b1a5ea4ed28d010e5d36b993db813eb49710b", + "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b", "shasum": "" }, "require": { - "phpunit/php-code-coverage": "^6.0", - "phpunit/phpunit": "7.5.*", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0" + "php": ">=7.2", + "phpunit/phpunit": "^9.0" }, "require-dev": { "codeception/specify": "*", + "consolidation/robo": "^3.0.0-alpha3", "vlucas/phpdotenv": "^3.0" }, "type": "library", @@ -10998,32 +11121,38 @@ { "name": "Davert", "email": "davert.php@resend.cc" + }, + { + "name": "Naktibalda" } ], "description": "PHPUnit classes used by Codeception", "support": { "issues": "https://github.com/Codeception/phpunit-wrapper/issues", - "source": "https://github.com/Codeception/phpunit-wrapper/tree/7.8.2" + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.7" }, - "time": "2020-12-28T14:00:26+00:00" + "time": "2022-01-26T14:43:10+00:00" }, { "name": "codeception/stub", - "version": "3.0.0", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "eea518711d736eab838c1274593c4568ec06b23d" + "reference": "18a148dacd293fc7b044042f5aa63a82b08bff5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/eea518711d736eab838c1274593c4568ec06b23d", - "reference": "eea518711d736eab838c1274593c4568ec06b23d", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/18a148dacd293fc7b044042f5aa63a82b08bff5d", + "reference": "18a148dacd293fc7b044042f5aa63a82b08bff5d", "shasum": "" }, "require": { - "codeception/phpunit-wrapper": "^6.6.1 | ^7.7.1 | ^8.0.3", - "phpunit/phpunit": ">=6.5 <9.0" + "php": "^7.4 | ^8.0", + "phpunit/phpunit": "^8.4 | ^9.0 | ^10.0 | 10.0.x-dev" + }, + "require-dev": { + "consolidation/robo": "^3.0" }, "type": "library", "autoload": { @@ -11038,39 +11167,46 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/master" + "source": "https://github.com/Codeception/Stub/tree/4.0.2" }, - "time": "2019-08-10T16:20:53+00:00" + "time": "2022-01-31T19:25:15+00:00" }, { "name": "dama/doctrine-test-bundle", - "version": "v5.0.5", + "version": "v6.7.5", "source": { "type": "git", "url": "https://github.com/dmaicher/doctrine-test-bundle.git", - "reference": "a60b0712f4659eab710c49783713b4b43e3c3149" + "reference": "af6f8e8c56fcfdf2ae039b97607883961a14af9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/a60b0712f4659eab710c49783713b4b43e3c3149", - "reference": "a60b0712f4659eab710c49783713b4b43e3c3149", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/af6f8e8c56fcfdf2ae039b97607883961a14af9c", + "reference": "af6f8e8c56fcfdf2ae039b97607883961a14af9c", "shasum": "" }, "require": { - "doctrine/dbal": "^2.9,>=2.9.3", - "doctrine/doctrine-bundle": "~1.4|~2.0", - "php": "^7.1", - "symfony/framework-bundle": "~3.4|~4.0" + "doctrine/dbal": "^2.9.3 || ^3.0", + "doctrine/doctrine-bundle": "^1.11 || ^2.0", + "ext-json": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.3 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.3 || ^6.0" }, "require-dev": { - "phpunit/phpunit": "~7.0|~8.0", - "symfony/phpunit-bridge": "^4.3", - "symfony/yaml": "~2.8|~3.0|~4.0" + "behat/behat": "^3.0", + "doctrine/cache": "^1.12", + "phpstan/phpstan": "^1.2", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "symfony/phpunit-bridge": "^5.3 || ^6.0", + "symfony/process": "^4.4 || ^5.3 || ^6.0", + "symfony/yaml": "^4.4 || ^5.3 || ^6.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "5.1.x-dev" + "dev-master": "6.x-dev" } }, "autoload": { @@ -11090,47 +11226,57 @@ ], "description": "Symfony bundle to isolate doctrine database tests and improve test performance", "keywords": [ - "Symfony 3", - "Symfony 4", "doctrine", "isolation", "performance", "symfony", - "symfony 2", "tests" ], "support": { "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", - "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v5.0.5" + "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v6.7.5" }, - "time": "2019-11-25T10:12:28+00:00" + "time": "2022-02-08T16:00:51+00:00" }, { - "name": "fzaninotto/faker", - "version": "v1.9.2", + "name": "fakerphp/faker", + "version": "v1.19.0", "source": { "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e" + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^2.9.2" + "symfony/phpunit-bridge": "^4.4 || ^5.2" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-main": "v1.19-dev" } }, "autoload": { @@ -11154,11 +11300,10 @@ "fixtures" ], "support": { - "issues": "https://github.com/fzaninotto/Faker/issues", - "source": "https://github.com/fzaninotto/Faker/tree/v1.9.2" + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" }, - "abandoned": true, - "time": "2020-12-11T09:56:16+00:00" + "time": "2022-02-02T17:38:57+00:00" }, { "name": "mikey179/vfsstream", @@ -11213,37 +11358,38 @@ }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11259,7 +11405,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -11267,32 +11413,33 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -11324,26 +11471,26 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2018-07-08T19:23:20+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -11375,9 +11522,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/master" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2018-07-08T19:19:57+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "php-webdriver/webdriver", @@ -11418,12 +11565,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "Facebook\\WebDriver\\": "lib/" - }, "files": [ "lib/Exception/TimeoutException.php" - ] + ], + "psr-4": { + "Facebook\\WebDriver\\": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11556,16 +11703,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { @@ -11600,9 +11747,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" }, - "time": "2022-01-04T19:58:01+00:00" + "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", @@ -11673,20 +11820,20 @@ }, { "name": "phpstan/phpstan", - "version": "0.12.99", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" + "reference": "c602f80d66ba425943b0f4aaa27010c822dd8f87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c602f80d66ba425943b0f4aaa27010c822dd8f87", + "reference": "c602f80d66ba425943b0f4aaa27010c822dd8f87", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -11696,11 +11843,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -11713,7 +11855,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.99" + "source": "https://github.com/phpstan/phpstan/tree/1.7.2" }, "funding": [ { @@ -11733,44 +11875,48 @@ "type": "tidelift" } ], - "time": "2021-09-12T20:09:55+00:00" + "time": "2022-05-26T12:59:20+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "6.1.4", + "version": "9.2.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.1", - "phpunit/php-file-iterator": "^2.0", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.1 || ^4.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.6.0" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -11798,34 +11944,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" }, - "time": "2018-10-31T16:06:48+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-07T09:28:20+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -11852,7 +12004,70 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" }, "funding": [ { @@ -11860,26 +12075,93 @@ "type": "github" } ], - "time": "2021-12-02T12:42:26+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { "name": "phpunit/php-text-template", - "version": "1.2.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } }, - "type": "library", "autoload": { "classmap": [ "src/" @@ -11896,44 +12178,88 @@ "role": "lead" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "template" + "timer" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, - "time": "2015-06-21T13:50:34+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" }, { - "name": "phpunit/php-timer", - "version": "2.1.3", + "name": "phpunit/phpunit", + "version": "9.5.20", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", "shasum": "" }, "require": { - "php": ">=7.1" + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" }, + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "9.5-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -11949,48 +12275,53 @@ "role": "lead" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "timer" + "phpunit", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" }, "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-11-30T08:20:02+00:00" + "time": "2022-04-01T12:37:26+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "3.1.3", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", - "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -12005,17 +12336,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, "funding": [ { @@ -12023,66 +12352,32 @@ "type": "github" } ], - "abandoned": true, - "time": "2021-07-26T12:15:06+00:00" + "time": "2020-09-28T06:08:49+00:00" }, { - "name": "phpunit/phpunit", - "version": "7.5.20", + "name": "sebastian/code-unit", + "version": "1.0.8", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "^1.7", - "phar-io/manifest": "^1.0.2", - "phar-io/version": "^2.0", - "php": "^7.1", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.7", - "phpunit/php-file-iterator": "^2.0.1", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0", - "sebastian/environment": "^4.0", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpunit/phpunit-mock-objects": "*" + "php": ">=7.3" }, "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0" + "phpunit/phpunit": "^9.3" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "7.5-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -12101,43 +12396,44 @@ "role": "lead" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" }, - "time": "2020-01-08T08:45:45+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -12159,7 +12455,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -12167,34 +12463,34 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.3", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": ">=7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -12233,7 +12529,64 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" }, "funding": [ { @@ -12241,33 +12594,33 @@ "type": "github" } ], - "time": "2020-11-30T08:04:30+00:00" + "time": "2020-10-26T15:52:27+00:00" }, { "name": "sebastian/diff", - "version": "3.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -12299,7 +12652,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -12307,27 +12660,27 @@ "type": "github" } ], - "time": "2020-11-30T07:59:04+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -12335,7 +12688,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -12362,7 +12715,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -12370,34 +12723,34 @@ "type": "github" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.4", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", - "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -12432,14 +12785,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -12447,27 +12800,30 @@ "type": "github" } ], - "time": "2021-11-11T13:51:24+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-dom": "*", + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -12475,7 +12831,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -12500,36 +12856,99 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-14T08:28:10+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, - "time": "2017-04-27T15:39:26+00:00" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.4", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -12551,7 +12970,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -12559,32 +12978,32 @@ "type": "github" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -12606,7 +13025,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -12614,32 +13033,95 @@ "type": "github" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -12655,21 +13137,13 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -12677,29 +13151,32 @@ "type": "github" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { - "name": "sebastian/resource-operations", - "version": "2.0.2", + "name": "sebastian/type", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -12714,14 +13191,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" }, "funding": [ { @@ -12729,29 +13207,29 @@ "type": "github" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2022-03-15T09:54:48+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -12774,9 +13252,15 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/master" + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, - "time": "2016-10-03T07:35:21+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { "name": "softcreatr/jsonpath", @@ -12845,28 +13329,28 @@ }, { "name": "symfony/browser-kit", - "version": "v4.4.27", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b" + "reference": "18e73179c6a33d520de1b644941eba108dd811ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", - "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/18e73179c6a33d520de1b644941eba108dd811ad", + "reference": "18e73179c6a33d520de1b644941eba108dd811ad", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "php": ">=7.2.5", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/mime": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/process": "" @@ -12897,7 +13381,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v4.4.27" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.3" }, "funding": [ { @@ -12913,30 +13397,31 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:19:41+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v4.4.34", + "version": "v5.4.7", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "cb7b39854cb0950cc898c5b9bf6974e1c68564c2" + "reference": "31977d36f253607e1fc4e1fb54df18bd9f1e4348" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cb7b39854cb0950cc898c5b9bf6974e1c68564c2", - "reference": "cb7b39854cb0950cc898c5b9bf6974e1c68564c2", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/31977d36f253607e1fc4e1fb54df18bd9f1e4348", + "reference": "31977d36f253607e1fc4e1fb54df18bd9f1e4348", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": ">=7.1.3", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2" + "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0" + "symfony/error-handler": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" @@ -12979,7 +13464,90 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.34" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-06T11:25:32+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0" }, "funding": [ { @@ -12995,7 +13563,7 @@ "type": "tidelift" } ], - "time": "2021-11-09T20:46:07+00:00" + "time": "2022-01-04T09:04:05+00:00" }, { "name": "theseer/tokenizer", @@ -13104,6 +13672,206 @@ "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, "time": "2021-03-09T10:59:23+00:00" + }, + { + "name": "zbateson/mail-mime-parser", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/zbateson/mail-mime-parser.git", + "reference": "244b70963945293b5225da2553239a06987d1a11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/244b70963945293b5225da2553239a06987d1a11", + "reference": "244b70963945293b5225da2553239a06987d1a11", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.7.0|^2.0", + "php": ">=5.4", + "zbateson/mb-wrapper": "^1.0.1", + "zbateson/stream-decorators": "^1.0.6" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6.0", + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" + }, + "suggest": { + "ext-iconv": "For best support/performance", + "ext-mbstring": "For best support/performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\MailMimeParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + }, + { + "name": "Contributors", + "homepage": "https://github.com/zbateson/mail-mime-parser/graphs/contributors" + } + ], + "description": "MIME email message parser", + "homepage": "https://mail-mime-parser.org", + "keywords": [ + "MimeMailParser", + "email", + "mail", + "mailparse", + "mime", + "mimeparse", + "parser", + "php-imap" + ], + "support": { + "docs": "https://mail-mime-parser.org/#usage-guide", + "issues": "https://github.com/zbateson/mail-mime-parser/issues", + "source": "https://github.com/zbateson/mail-mime-parser" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2021-11-06T00:47:49+00:00" + }, + { + "name": "zbateson/mb-wrapper", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/zbateson/mb-wrapper.git", + "reference": "bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498", + "reference": "bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "symfony/polyfill-iconv": "^1.9", + "symfony/polyfill-mbstring": "^1.9" + }, + "require-dev": { + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" + }, + "suggest": { + "ext-iconv": "For best support/performance", + "ext-mbstring": "For best support/performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\MbWrapper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + } + ], + "description": "Wrapper for mbstring with fallback to iconv for encoding conversion and string manipulation", + "keywords": [ + "charset", + "encoding", + "http", + "iconv", + "mail", + "mb", + "mb_convert_encoding", + "mbstring", + "mime", + "multibyte", + "string" + ], + "support": { + "issues": "https://github.com/zbateson/mb-wrapper/issues", + "source": "https://github.com/zbateson/mb-wrapper/tree/1.1.1" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2021-11-22T21:59:45+00:00" + }, + { + "name": "zbateson/stream-decorators", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/zbateson/stream-decorators.git", + "reference": "3403c4323bd1cd15fe54348b031b26b064c706af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/3403c4323bd1cd15fe54348b031b26b064c706af", + "reference": "3403c4323bd1cd15fe54348b031b26b064c706af", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.7.0|^2.0", + "php": ">=5.4", + "zbateson/mb-wrapper": "^1.0.0" + }, + "require-dev": { + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\StreamDecorators\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + } + ], + "description": "PHP psr7 stream decorators for mime message part streams", + "keywords": [ + "base64", + "charset", + "decorators", + "mail", + "mime", + "psr7", + "quoted-printable", + "stream", + "uuencode" + ], + "support": { + "issues": "https://github.com/zbateson/stream-decorators/issues", + "source": "https://github.com/zbateson/stream-decorators/tree/1.0.6" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2021-07-08T19:01:59+00:00" } ], "aliases": [], @@ -13112,13 +13880,13 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.3", + "php": "^7.4 || ^8.0", "ext-intl": "*", "ext-mbstring": "*" }, "platform-dev": [], "platform-overrides": { - "php": "7.3.0" + "php": "7.4.0" }, "plugin-api-version": "2.3.0" } diff --git a/docker-compose.yml b/docker-compose.yml index cacdd309ea1..5dbb574741c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,7 +39,7 @@ services: APP_DEBUG: 1 DATABASE_URL: "sqlite:///var/eccube.db" DATABASE_SERVER_VERSION: 3 - MAILER_URL: "smtp://mailcatcher:1025" + MAILER_DSN: "smtp://mailcatcher:1025" ECCUBE_AUTH_MAGIC: "" # TRUSTED_HOSTS: '^127.0.0.1$$,^localhost$$' # ECCUBE_LOCALE: "ja" diff --git a/index.php b/index.php index 0adcd1df2da..bd1bb0cba9f 100644 --- a/index.php +++ b/index.php @@ -25,13 +25,13 @@ } if (file_exists(__DIR__.'/.env')) { - (new Dotenv(__DIR__))->overload(); + (Dotenv::createUnsafeMutable(__DIR__))->load(); if (strpos(getenv('DATABASE_URL'), 'sqlite') !== false && !extension_loaded('pdo_sqlite')) { - (new Dotenv(__DIR__, '.env.install'))->overload(); + (Dotenv::createUnsafeMutable(__DIR__, '.env.install'))->load(); } } else { - (new Dotenv(__DIR__, '.env.install'))->overload(); + (Dotenv::createUnsafeMutable(__DIR__, '.env.install'))->load(); } } error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED); diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 8b9b71bfd1d..213da6dad2a 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,6 +1,2 @@ parameters: level: 1 - ignoreErrors: - - - message: "#^Function twig_localized_date_filter not found\\.$#" - path: src/Eccube/Twig/Extension/IntlExtension.php diff --git a/phpunit.xml.dist b/phpunit.xml.dist index e84c405c979..70fdfa5ee71 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,40 +1,49 @@ - + + - - - - - - + + + + + + - tests/ + tests - - - ./src/ - - ./src/Eccube/Resource - ./src/Eccube/Command - - - + + + src + + + ./src/Eccube/Resource + ./src/Eccube/Command + + + + + diff --git a/src/Eccube/Command/GenerateDummyDataCommand.php b/src/Eccube/Command/GenerateDummyDataCommand.php index 0feb2e980f8..7de0a7e2eda 100644 --- a/src/Eccube/Command/GenerateDummyDataCommand.php +++ b/src/Eccube/Command/GenerateDummyDataCommand.php @@ -63,7 +63,6 @@ protected function configure() ->setDescription('Dummy data generator') ->addOption('with-locale', null, InputOption::VALUE_REQUIRED, 'Set to the locale.', 'ja_JP') ->addOption('without-image', null, InputOption::VALUE_NONE, 'Do not generate images.') - ->addOption('with-image', null, InputOption::VALUE_REQUIRED, 'Generate image type of cats or notnull', 'cats') ->addOption('products', null, InputOption::VALUE_REQUIRED, 'Number of Products.', 100) ->addOption('orders', null, InputOption::VALUE_REQUIRED, 'Number of Orders.', 10) ->addOption('customers', null, InputOption::VALUE_REQUIRED, 'Number of Customers.', 100) @@ -85,7 +84,6 @@ protected function configure() protected function execute(InputInterface $input, OutputInterface $output) { $locale = $input->getOption('with-locale'); - $imageType = $input->getOption('with-image'); $notImage = $input->getOption('without-image'); $numberOfProducts = $input->getOption('products'); $numberOfOrder = $input->getOption('orders'); @@ -120,7 +118,7 @@ protected function execute(InputInterface $input, OutputInterface $output) // @see https://github.com/fzaninotto/Faker/issues/1125#issuecomment-268676186 gc_collect_cycles(); - $Product = $this->generator->createProduct(null, 3, $notImage ? null : $imageType); + $Product = $this->generator->createProduct(null, 3, $notImage); switch ($output->getVerbosity()) { case OutputInterface::VERBOSITY_QUIET: break; diff --git a/src/Eccube/Command/GenerateProxyCommand.php b/src/Eccube/Command/GenerateProxyCommand.php index e057b977468..47ee7983aa8 100644 --- a/src/Eccube/Command/GenerateProxyCommand.php +++ b/src/Eccube/Command/GenerateProxyCommand.php @@ -15,11 +15,12 @@ use Doctrine\Common\Annotations\AnnotationRegistry; use Eccube\Service\EntityProxyService; -use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; +use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; -class GenerateProxyCommand extends ContainerAwareCommand +class GenerateProxyCommand extends Command { protected static $defaultName = 'eccube:generate:proxies'; @@ -28,10 +29,16 @@ class GenerateProxyCommand extends ContainerAwareCommand */ private $entityProxyService; - public function __construct(EntityProxyService $entityProxyService) + /** + * @var ContainerInterface + */ + private $container; + + public function __construct(EntityProxyService $entityProxyService, ContainerInterface $container) { parent::__construct(); $this->entityProxyService = $entityProxyService; + $this->container = $container; } protected function configure() @@ -45,11 +52,10 @@ protected function execute(InputInterface $input, OutputInterface $output) // アノテーションを読み込めるように設定. AnnotationRegistry::registerAutoloadNamespace('Eccube\Annotation', __DIR__.'/../../../src'); - $container = $this->getContainer(); - $projectDir = $container->getParameter('kernel.project_dir'); + $projectDir = $this->container->getParameter('kernel.project_dir'); $includeDirs = [$projectDir.'/app/Customize/Entity']; - $enabledPlugins = $container->getParameter('eccube.plugins.enabled'); + $enabledPlugins = $this->container->getParameter('eccube.plugins.enabled'); foreach ($enabledPlugins as $code) { if (file_exists($projectDir.'/app/Plugin/'.$code.'/Entity')) { $includeDirs[] = $projectDir.'/app/Plugin/'.$code.'/Entity'; diff --git a/src/Eccube/Command/InstallerCommand.php b/src/Eccube/Command/InstallerCommand.php index b936d3f9dbd..213c0f33fd1 100644 --- a/src/Eccube/Command/InstallerCommand.php +++ b/src/Eccube/Command/InstallerCommand.php @@ -58,7 +58,7 @@ public function __construct(ContainerInterface $container) public $appDebug; public $databaseUrl; public $serverVersion; - public $mailerUrl; + public $mailerDsn; public $authMagic; public $adminRoute; public $templateCode; @@ -74,7 +74,7 @@ private function getEnvParameters() 'APP_DEBUG' => $this->appDebug, 'DATABASE_URL' => $this->databaseUrl, 'DATABASE_SERVER_VERSION' => $this->serverVersion, - 'MAILER_URL' => $this->mailerUrl, + 'MAILER_DSN' => $this->mailerDsn, 'ECCUBE_AUTH_MAGIC' => $this->authMagic, 'ECCUBE_ADMIN_ROUTE' => $this->adminRoute, 'ECCUBE_TEMPLATE_CODE' => $this->templateCode, @@ -119,7 +119,7 @@ protected function interact(InputInterface $input, OutputInterface $output) ' $ export APP_DEBUG=0', ' $ export DATABASE_URL=database_url', ' $ export DATABASE_SERVER_VERSION=server_version', - ' $ export MAILER_URL=mailer_url', + ' $ export MAILER_DSN=mailer_dsn', ' $ export ECCUBE_AUTH_MAGIC=auth_magic', ' ... and more', ' $ php bin/console eccube:install --no-interaction', @@ -141,12 +141,12 @@ protected function interact(InputInterface $input, OutputInterface $output) // DATABASE_SERVER_VERSION $this->envFileUpdater->serverVersion = $this->getDatabaseServerVersion($databaseUrl); - // MAILER_URL - $mailerUrl = $this->container->getParameter('eccube_mailer_url'); - if (empty($mailerUrl)) { - $mailerUrl = 'null://localhost'; + // MAILER_DSN + $mailerDsn = $this->container->getParameter('eccube_mailer_dsn'); + if (empty($mailerDsn)) { + $mailerDsn = 'null://null'; } - $this->envFileUpdater->mailerUrl = $this->io->ask('Mailer Url', $mailerUrl); + $this->envFileUpdater->mailerDsn = $this->io->ask('Mailer Dsn', $mailerDsn); // ECCUBE_AUTH_MAGIC $authMagic = $this->container->getParameter('eccube_auth_magic'); @@ -216,7 +216,7 @@ protected function execute(InputInterface $input, OutputInterface $output) if ($input->isInteractive()) { $envDir = $this->container->getParameter('kernel.project_dir'); if (file_exists($envDir.'/.env')) { - (new Dotenv($envDir))->overload(); + (Dotenv::createUnsafeMutable($envDir))->load(); } } @@ -224,28 +224,32 @@ protected function execute(InputInterface $input, OutputInterface $output) // 更新後の値が取得できないため, getenv()を使用する. $databaseUrl = getenv('DATABASE_URL'); $databaseName = $this->getDatabaseName($databaseUrl); - $ifNotExists = $databaseName === 'sqlite' ? '' : ' --if-not-exists'; + + $databaseCreate = ['doctrine:database:create']; + if ($databaseName !== 'sqlite') { + $databaseCreate[] = '--if-not-exists'; + } // データベース作成, スキーマ作成, 初期データの投入を行う. $commands = [ - 'doctrine:database:create'.$ifNotExists, - 'doctrine:schema:drop --force', - 'doctrine:schema:create', - 'eccube:fixtures:load', - 'cache:clear --no-warmup', + $databaseCreate, + ['doctrine:schema:drop', '--force'], + ['doctrine:schema:create'], + ['eccube:fixtures:load'], + ['cache:clear', '--no-warmup'], ]; // コンテナを再ロードするため別プロセスで実行する. foreach ($commands as $command) { try { - $this->io->text(sprintf('Run %s...', $command)); - $process = new Process('bin/console '.$command); + $this->io->text(sprintf('Run %s...', implode(' ', $command))); + $process = new Process(array_merge(['bin/console'], $command)); $process->mustRun(); $this->io->text($process->getOutput()); } catch (ProcessFailedException $e) { $this->io->error($e->getMessage()); - return; + return 1; } } @@ -291,7 +295,7 @@ protected function getDatabaseServerVersion($databaseUrl) $sql = 'SHOW server_version'; } $stmt = $conn->executeQuery($sql); - $version = $stmt->fetchColumn(); + $version = $stmt->fetchOne(); if ($platform === 'postgresql') { preg_match('/\A([\d+\.]+)/', $version, $matches); diff --git a/src/Eccube/Command/LoadDataFixturesEccubeCommand.php b/src/Eccube/Command/LoadDataFixturesEccubeCommand.php index 0e06f6b07e2..5750c266016 100644 --- a/src/Eccube/Command/LoadDataFixturesEccubeCommand.php +++ b/src/Eccube/Command/LoadDataFixturesEccubeCommand.php @@ -14,6 +14,7 @@ namespace Eccube\Command; use Doctrine\Bundle\DoctrineBundle\Command\DoctrineCommand; +use Doctrine\Persistence\ManagerRegistry; use Eccube\Common\EccubeConfig; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -29,9 +30,9 @@ class LoadDataFixturesEccubeCommand extends DoctrineCommand */ protected $container; - public function __construct(ContainerInterface $container) + public function __construct(ManagerRegistry $registry, ContainerInterface $container) { - parent::__construct(); + parent::__construct($registry); $this->container = $container; } @@ -74,7 +75,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $conn = $em->getConnection(); $member_id = ('postgresql' === $conn->getDatabasePlatform()->getName()) - ? $conn->fetchColumn("select nextval('dtb_member_id_seq')") + ? $conn->fetchOne("select nextval('dtb_member_id_seq')") : null; $conn->insert('dtb_member', [ @@ -92,15 +93,15 @@ protected function execute(InputInterface $input, OutputInterface $output) 'department' => 'EC-CUBE SHOP', 'discriminator_type' => 'member', ], [ - 'update_date' => \Doctrine\DBAL\Types\Type::DATETIME, - 'create_date' => \Doctrine\DBAL\Types\Type::DATETIME, + 'update_date' => \Doctrine\DBAL\Types\Types::DATETIMETZ_MUTABLE, + 'create_date' => \Doctrine\DBAL\Types\Types::DATETIMETZ_MUTABLE, ]); $shop_name = env('ECCUBE_SHOP_NAME', 'EC-CUBE SHOP'); $admin_mail = env('ECCUBE_ADMIN_MAIL', 'admin@example.com'); $id = ('postgresql' === $conn->getDatabasePlatform()->getName()) - ? $conn->fetchColumn("select nextval('dtb_base_info_id_seq')") + ? $conn->fetchOne("select nextval('dtb_base_info_id_seq')") : null; $conn->insert('dtb_base_info', [ @@ -113,7 +114,7 @@ protected function execute(InputInterface $input, OutputInterface $output) 'update_date' => new \DateTime(), 'discriminator_type' => 'baseinfo', ], [ - 'update_date' => \Doctrine\DBAL\Types\Type::DATETIME, + 'update_date' => \Doctrine\DBAL\Types\Types::DATETIMETZ_MUTABLE, ]); $faviconPath = '/assets/img/common/favicon.ico'; diff --git a/src/Eccube/Command/PluginCommandTrait.php b/src/Eccube/Command/PluginCommandTrait.php index 47818b6b444..65bf2f7502e 100644 --- a/src/Eccube/Command/PluginCommandTrait.php +++ b/src/Eccube/Command/PluginCommandTrait.php @@ -51,10 +51,10 @@ public function setPluginRepository(PluginRepository $pluginRepository) protected function clearCache(SymfonyStyle $io) { - $command = 'cache:clear --no-warmup'; + $command = ['bin/console', 'cache:clear', '--no-warmup']; try { - $io->text(sprintf('Run %s...', $command)); - $process = new Process('bin/console '.$command); + $io->text(sprintf('Run %s...', implode(' ', $command))); + $process = new Process($command); $process->mustRun(); $io->text($process->getOutput()); } catch (ProcessFailedException $e) { diff --git a/src/Eccube/Command/UpdateSchemaDoctrineCommand.php b/src/Eccube/Command/UpdateSchemaDoctrineCommand.php index 0dd2acc4acc..2cadca5c1c5 100644 --- a/src/Eccube/Command/UpdateSchemaDoctrineCommand.php +++ b/src/Eccube/Command/UpdateSchemaDoctrineCommand.php @@ -62,21 +62,20 @@ public function __construct( /** * {@inheritDoc} */ - protected function configure() + protected function configure(): void { parent::configure(); $this ->setName('eccube:schema:update') ->setAliases(['doctrine:schema:update']) - ->addOption('em', null, InputOption::VALUE_OPTIONAL, 'The entity manager to use for this command') ->addOption('no-proxy', null, InputOption::VALUE_NONE, 'Does not use the proxy class and behaves the same as the original doctrine:schema:update command'); } /** * {@inheritDoc} */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { DoctrineCommandHelper::setApplicationEntityManager($this->getApplication(), $input->getOption('em')); $noProxy = true === $input->getOption('no-proxy'); diff --git a/src/Eccube/Controller/AbstractController.php b/src/Eccube/Controller/AbstractController.php index a937421512e..4c72d692e26 100644 --- a/src/Eccube/Controller/AbstractController.php +++ b/src/Eccube/Controller/AbstractController.php @@ -16,7 +16,7 @@ use Doctrine\ORM\EntityManagerInterface; use Eccube\Common\Constant; use Eccube\Common\EccubeConfig; -use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as Controller; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\HttpFoundation\Request; @@ -24,7 +24,7 @@ use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\Routing\Exception\RouteNotFoundException; -use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Contracts\Translation\TranslatorInterface; class AbstractController extends Controller { diff --git a/src/Eccube/Controller/Admin/AbstractCsvImportController.php b/src/Eccube/Controller/Admin/AbstractCsvImportController.php index 2bbe2a8a6a9..a1fb444df63 100644 --- a/src/Eccube/Controller/Admin/AbstractCsvImportController.php +++ b/src/Eccube/Controller/Admin/AbstractCsvImportController.php @@ -95,7 +95,6 @@ protected function sendTemplateResponse(Request $request, $columns, $filename) $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename='.$filename); - $response->send(); return $response; } diff --git a/src/Eccube/Controller/Admin/AdminController.php b/src/Eccube/Controller/Admin/AdminController.php index 2591f0623d5..7931b68222a 100644 --- a/src/Eccube/Controller/Admin/AdminController.php +++ b/src/Eccube/Controller/Admin/AdminController.php @@ -144,7 +144,7 @@ public function login(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ADMIM_LOGIN_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ADMIM_LOGIN_INITIALIZE); $form = $builder->getForm(); @@ -190,7 +190,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ADMIM_INDEX_ORDER, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ADMIM_INDEX_ORDER); $excludes = $event->getArgument('excludes'); // 受注ステータスごとの受注件数. @@ -212,7 +212,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ADMIM_INDEX_SALES, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ADMIM_INDEX_SALES); $this->excludes = $event->getArgument('excludes'); // 今日の売上/件数 @@ -247,7 +247,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ADMIM_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ADMIM_INDEX_COMPLETE); // 推奨プラグイン $recommendedPlugins = []; @@ -291,7 +291,7 @@ public function sale(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ADMIM_INDEX_SALES, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ADMIM_INDEX_SALES); $this->excludes = $event->getArgument('excludes'); // 週間の売上金額 @@ -333,7 +333,7 @@ public function changePassword(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ADMIM_CHANGE_PASSWORD_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ADMIM_CHANGE_PASSWORD_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -365,7 +365,7 @@ public function changePassword(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ADMIN_CHANGE_PASSWORD_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ADMIN_CHANGE_PASSWORD_COMPLETE); $this->addSuccess('admin.change_password.password_changed', 'admin'); diff --git a/src/Eccube/Controller/Admin/Content/BlockController.php b/src/Eccube/Controller/Admin/Content/BlockController.php index 10c71423989..8587969c156 100644 --- a/src/Eccube/Controller/Admin/Content/BlockController.php +++ b/src/Eccube/Controller/Admin/Content/BlockController.php @@ -69,7 +69,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_BLOCK_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_BLOCK_INDEX_COMPLETE); return [ 'Blocks' => $Blocks, @@ -81,7 +81,7 @@ public function index(Request $request) * @Route("/%eccube_admin_route%/content/block/{id}/edit", requirements={"id" = "\d+"}, name="admin_content_block_edit", methods={"GET", "POST"}) * @Template("@admin/Content/block_edit.twig") */ - public function edit(Request $request, $id = null, Environment $twig, FileSystem $fs, CacheUtil $cacheUtil) + public function edit(Request $request, Environment $twig, FileSystem $fs, CacheUtil $cacheUtil, $id = null) { $DeviceType = $this->deviceTypeRepository ->find(DeviceType::DEVICE_TYPE_PC); @@ -123,7 +123,7 @@ public function edit(Request $request, $id = null, Environment $twig, FileSystem ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_BLOCK_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_BLOCK_EDIT_INITIALIZE); $html = $event->getArgument('html'); $form = $builder->getForm(); @@ -165,7 +165,7 @@ public function edit(Request $request, $id = null, Environment $twig, FileSystem ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_BLOCK_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_BLOCK_EDIT_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -207,7 +207,7 @@ public function delete(Request $request, Block $Block, Filesystem $fs, CacheUtil ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_BLOCK_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_BLOCK_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Content/LayoutController.php b/src/Eccube/Controller/Admin/Content/LayoutController.php index 1ffc95f8c6f..83731f566fe 100644 --- a/src/Eccube/Controller/Admin/Content/LayoutController.php +++ b/src/Eccube/Controller/Admin/Content/LayoutController.php @@ -152,7 +152,7 @@ public function delete(Layout $Layout, CacheUtil $cacheUtil) * @Route("/%eccube_admin_route%/content/layout/{id}/edit", requirements={"id" = "\d+"}, name="admin_content_layout_edit", methods={"GET", "POST"}) * @Template("@admin/Content/layout.twig") */ - public function edit(Request $request, $id = null, $previewPageId = null, CacheUtil $cacheUtil) + public function edit(Request $request, CacheUtil $cacheUtil, $id = null, $previewPageId = null) { if (is_null($id)) { $Layout = new Layout(); @@ -279,6 +279,6 @@ public function preview(Request $request, $id, CacheUtil $cacheUtil) $form = $request->get('admin_layout'); $this->isPreview = true; - return $this->edit($request, $id, $form['Page'], $cacheUtil); + return $this->edit($request, $cacheUtil, $id, $form['Page']); } } diff --git a/src/Eccube/Controller/Admin/Content/MaintenanceController.php b/src/Eccube/Controller/Admin/Content/MaintenanceController.php index c3575a02534..83e1013d8d4 100644 --- a/src/Eccube/Controller/Admin/Content/MaintenanceController.php +++ b/src/Eccube/Controller/Admin/Content/MaintenanceController.php @@ -89,9 +89,9 @@ public function disableMaintenance(Request $request, $mode, SystemService $syste } if ($mode === 'manual') { - $path = $this->container->getParameter('eccube_content_maintenance_file_path'); + $path = $this->getParameter('eccube_content_maintenance_file_path'); if (file_exists($path)) { - unlink($this->container->getParameter('eccube_content_maintenance_file_path')); + unlink($this->getParameter('eccube_content_maintenance_file_path')); } } else { $maintenanceMode = [ diff --git a/src/Eccube/Controller/Admin/Content/NewsController.php b/src/Eccube/Controller/Admin/Content/NewsController.php index 8d092e1b29e..50317433fe5 100644 --- a/src/Eccube/Controller/Admin/Content/NewsController.php +++ b/src/Eccube/Controller/Admin/Content/NewsController.php @@ -56,7 +56,7 @@ public function __construct(NewsRepository $newsRepository) * * @return array */ - public function index(Request $request, $page_no = 1, PaginatorInterface $paginator) + public function index(Request $request, PaginatorInterface $paginator, $page_no = 1) { $qb = $this->newsRepository->getQueryBuilderAll(); @@ -66,7 +66,7 @@ public function index(Request $request, $page_no = 1, PaginatorInterface $pagina ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_NEWS_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_NEWS_INDEX_INITIALIZE); $pagination = $paginator->paginate( $qb, @@ -91,7 +91,7 @@ public function index(Request $request, $page_no = 1, PaginatorInterface $pagina * * @return array|\Symfony\Component\HttpFoundation\RedirectResponse */ - public function edit(Request $request, $id = null, CacheUtil $cacheUtil) + public function edit(Request $request, CacheUtil $cacheUtil, $id = null) { if ($id) { $News = $this->newsRepository->find($id); @@ -113,7 +113,7 @@ public function edit(Request $request, $id = null, CacheUtil $cacheUtil) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_NEWS_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_NEWS_EDIT_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -131,7 +131,7 @@ public function edit(Request $request, $id = null, CacheUtil $cacheUtil) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_NEWS_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_NEWS_EDIT_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -167,7 +167,7 @@ public function delete(Request $request, News $News, CacheUtil $cacheUtil) $this->newsRepository->delete($News); $event = new EventArgs(['News' => $News], $request); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_NEWS_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_NEWS_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Content/PageController.php b/src/Eccube/Controller/Admin/Content/PageController.php index b9e3053236f..39819d4b571 100644 --- a/src/Eccube/Controller/Admin/Content/PageController.php +++ b/src/Eccube/Controller/Admin/Content/PageController.php @@ -78,7 +78,7 @@ public function index(Request $request, RouterInterface $router) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_PAGE_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_PAGE_INDEX_COMPLETE); return [ 'Pages' => $Pages, @@ -91,7 +91,7 @@ public function index(Request $request, RouterInterface $router) * @Route("/%eccube_admin_route%/content/page/{id}/edit", requirements={"id" = "\d+"}, name="admin_content_page_edit", methods={"GET", "POST"}) * @Template("@admin/Content/page_edit.twig") */ - public function edit(Request $request, $id = null, Environment $twig, RouterInterface $router, CacheUtil $cacheUtil) + public function edit(Request $request, Environment $twig, RouterInterface $router, CacheUtil $cacheUtil, $id = null) { if (null === $id) { $Page = $this->pageRepository->newPage(); @@ -111,7 +111,7 @@ public function edit(Request $request, $id = null, Environment $twig, RouterInte ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_PAGE_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_PAGE_EDIT_INITIALIZE); $form = $builder->getForm(); @@ -220,7 +220,7 @@ public function edit(Request $request, $id = null, Environment $twig, RouterInte ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_PAGE_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_PAGE_EDIT_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -254,7 +254,7 @@ public function edit(Request $request, $id = null, Environment $twig, RouterInte /** * @Route("/%eccube_admin_route%/content/page/{id}/delete", requirements={"id" = "\d+"}, name="admin_content_page_delete", methods={"DELETE"}) */ - public function delete(Request $request, $id = null, CacheUtil $cacheUtil) + public function delete(Request $request, CacheUtil $cacheUtil, $id = null) { $this->isTokenValid(); @@ -286,7 +286,7 @@ public function delete(Request $request, $id = null, CacheUtil $cacheUtil) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CONTENT_PAGE_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CONTENT_PAGE_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Customer/CustomerController.php b/src/Eccube/Controller/Admin/Customer/CustomerController.php index 956b97785ad..8b8f0520f6c 100644 --- a/src/Eccube/Controller/Admin/Customer/CustomerController.php +++ b/src/Eccube/Controller/Admin/Customer/CustomerController.php @@ -35,7 +35,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Contracts\Translation\TranslatorInterface; class CustomerController extends AbstractController { @@ -90,7 +90,7 @@ public function __construct( * @Route("/%eccube_admin_route%/customer/page/{page_no}", requirements={"page_no" = "\d+"}, name="admin_customer_page", methods={"GET", "POST"}) * @Template("@admin/Customer/index.twig") */ - public function index(Request $request, $page_no = null, PaginatorInterface $paginator) + public function index(Request $request, PaginatorInterface $paginator, $page_no = null) { $session = $this->session; $builder = $this->formFactory->createBuilder(SearchCustomerType::class); @@ -101,7 +101,7 @@ public function index(Request $request, $page_no = null, PaginatorInterface $pag ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_INDEX_INITIALIZE); $searchForm = $builder->getForm(); @@ -163,7 +163,7 @@ public function index(Request $request, $page_no = null, PaginatorInterface $pag ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_INDEX_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_INDEX_SEARCH); $pagination = $paginator->paginate( $qb, @@ -211,7 +211,7 @@ public function resend(Request $request, $id) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_RESEND_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_RESEND_COMPLETE); $this->addSuccess('admin.common.send_complete', 'admin'); @@ -259,7 +259,7 @@ public function delete(Request $request, $id, TranslatorInterface $translator) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_DELETE_COMPLETE); return $this->redirect($this->generateUrl('admin_customer_page', ['page_no' => $page_no]).'?resume='.Constant::ENABLED); @@ -319,7 +319,7 @@ public function export(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_CSV_EXPORT, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_CSV_EXPORT); $ExportCsvRow->pushData(); } @@ -335,8 +335,6 @@ public function export(Request $request) $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename='.$filename); - $response->send(); - log_info('会員CSVファイル名', [$filename]); return $response; diff --git a/src/Eccube/Controller/Admin/Customer/CustomerDeliveryEditController.php b/src/Eccube/Controller/Admin/Customer/CustomerDeliveryEditController.php index 0ffe832a72a..5d7b361adf3 100644 --- a/src/Eccube/Controller/Admin/Customer/CustomerDeliveryEditController.php +++ b/src/Eccube/Controller/Admin/Customer/CustomerDeliveryEditController.php @@ -82,7 +82,7 @@ public function edit(Request $request, Customer $Customer, $did = null) $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_DELIVERY_EDIT_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_DELIVERY_EDIT_INDEX_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -103,7 +103,7 @@ public function edit(Request $request, Customer $Customer, $did = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_DELIVERY_EDIT_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_DELIVERY_EDIT_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -159,7 +159,7 @@ public function delete(Request $request, Customer $Customer, $did) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_DELIVERY_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_DELIVERY_DELETE_COMPLETE); return $this->redirect($this->generateUrl('admin_customer_edit', ['id' => $Customer->getId()])); } diff --git a/src/Eccube/Controller/Admin/Customer/CustomerEditController.php b/src/Eccube/Controller/Admin/Customer/CustomerEditController.php index f8beac4f6d3..22aae693d12 100644 --- a/src/Eccube/Controller/Admin/Customer/CustomerEditController.php +++ b/src/Eccube/Controller/Admin/Customer/CustomerEditController.php @@ -14,6 +14,7 @@ namespace Eccube\Controller\Admin\Customer; use Eccube\Controller\AbstractController; +use Eccube\Entity\Customer; use Eccube\Entity\Master\CustomerStatus; use Eccube\Event\EccubeEvents; use Eccube\Event\EventArgs; @@ -56,6 +57,7 @@ public function index(Request $request, $id = null) $this->entityManager->getFilters()->enable('incomplete_order_status_hidden'); // 編集 if ($id) { + /** @var Customer $Customer */ $Customer = $this->customerRepository ->find($id); @@ -64,15 +66,12 @@ public function index(Request $request, $id = null) } $oldStatusId = $Customer->getStatus()->getId(); - // 編集用にデフォルトパスワードをセット - $previous_password = $Customer->getPassword(); - $Customer->setPassword($this->eccubeConfig['eccube_default_password']); + $Customer->setPlainPassword($this->eccubeConfig['eccube_default_password']); // 新規登録 } else { $Customer = $this->customerRepository->newCustomer(); $oldStatusId = null; - $previous_password = null; } // 会員登録フォーム @@ -86,7 +85,7 @@ public function index(Request $request, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_EDIT_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_EDIT_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -97,14 +96,12 @@ public function index(Request $request, $id = null) $encoder = $this->encoderFactory->getEncoder($Customer); - if ($Customer->getPassword() === $this->eccubeConfig['eccube_default_password']) { - $Customer->setPassword($previous_password); - } else { + if ($Customer->getPlainPassword() !== $this->eccubeConfig['eccube_default_password']) { if ($Customer->getSalt() === null) { $Customer->setSalt($encoder->createSalt()); $Customer->setSecretKey($this->customerRepository->getUniqueSecretKey()); } - $Customer->setPassword($encoder->encodePassword($Customer->getPassword(), $Customer->getSalt())); + $Customer->setPassword($encoder->encodePassword($Customer->getPlainPassword(), $Customer->getSalt())); } // 退会ステータスに更新の場合、ダミーのアドレスに更新 @@ -125,7 +122,7 @@ public function index(Request $request, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_CUSTOMER_EDIT_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_CUSTOMER_EDIT_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Order/EditController.php b/src/Eccube/Controller/Admin/Order/EditController.php index ea1d46bdc06..0d7350dc4fd 100644 --- a/src/Eccube/Controller/Admin/Order/EditController.php +++ b/src/Eccube/Controller/Admin/Order/EditController.php @@ -182,7 +182,7 @@ public function __construct( * @Route("/%eccube_admin_route%/order/{id}/edit", requirements={"id" = "\d+"}, name="admin_order_edit", methods={"GET", "POST"}) * @Template("@admin/Order/edit.twig") */ - public function index(Request $request, $id = null, RouterInterface $router) + public function index(Request $request, RouterInterface $router, $id = null) { $TargetOrder = null; $OriginOrder = null; @@ -218,7 +218,7 @@ public function index(Request $request, $id = null, RouterInterface $router) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -235,7 +235,7 @@ public function index(Request $request, $id = null, RouterInterface $router) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_INDEX_PROGRESS, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_INDEX_PROGRESS); $flowResult = $this->purchaseFlow->validate($TargetOrder, $purchaseContext); @@ -318,7 +318,7 @@ public function index(Request $request, $id = null, RouterInterface $router) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -364,7 +364,7 @@ public function index(Request $request, $id = null, RouterInterface $router) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_INITIALIZE); $searchCustomerModalForm = $builder->getForm(); @@ -380,7 +380,7 @@ public function index(Request $request, $id = null, RouterInterface $router) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_INITIALIZE); $searchProductModalForm = $builder->getForm(); @@ -416,7 +416,7 @@ public function index(Request $request, $id = null, RouterInterface $router) * * @return array */ - public function searchCustomerHtml(Request $request, $page_no = null, PaginatorInterface $paginator) + public function searchCustomerHtml(Request $request, PaginatorInterface $paginator, $page_no = null) { if ($request->isXmlHttpRequest() && $this->isTokenValid()) { log_debug('search customer start.'); @@ -453,7 +453,7 @@ public function searchCustomerHtml(Request $request, $page_no = null, PaginatorI ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_SEARCH); /** @var \Knp\Component\Pager\Pagination\SlidingPagination $pagination */ $pagination = $paginator->paginate( @@ -490,7 +490,7 @@ public function searchCustomerHtml(Request $request, $page_no = null, PaginatorI ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_COMPLETE); $data = $event->getArgument('data'); return [ @@ -526,7 +526,7 @@ public function searchCustomerById(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_BY_ID_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_BY_ID_INITIALIZE); if (is_null($Customer)) { log_debug('search customer by id not found.'); @@ -558,7 +558,7 @@ public function searchCustomerById(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_BY_ID_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_BY_ID_COMPLETE); $data = $event->getArgument('data'); return $this->json($data); @@ -572,7 +572,7 @@ public function searchCustomerById(Request $request) * @Route("/%eccube_admin_route%/order/search/product/page/{page_no}", requirements={"page_no" = "\d+"}, name="admin_order_search_product_page", methods={"GET", "POST"}) * @Template("@admin/Order/search_product.twig") */ - public function searchProduct(Request $request, $page_no = null, PaginatorInterface $paginator) + public function searchProduct(Request $request, PaginatorInterface $paginator, $page_no = null) { if ($request->isXmlHttpRequest() && $this->isTokenValid()) { log_debug('search product start.'); @@ -612,7 +612,7 @@ public function searchProduct(Request $request, $page_no = null, PaginatorInterf ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_SEARCH); /** @var \Knp\Component\Pager\Pagination\SlidingPagination $pagination */ $pagination = $paginator->paginate( @@ -647,7 +647,7 @@ public function searchProduct(Request $request, $page_no = null, PaginatorInterf ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_COMPLETE); return [ 'forms' => $forms, diff --git a/src/Eccube/Controller/Admin/Order/MailController.php b/src/Eccube/Controller/Admin/Order/MailController.php index 1a730cb6602..f8fa794e173 100644 --- a/src/Eccube/Controller/Admin/Order/MailController.php +++ b/src/Eccube/Controller/Admin/Order/MailController.php @@ -88,7 +88,7 @@ public function index(Request $request, Order $Order) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_MAIL_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_MAIL_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -125,7 +125,7 @@ public function index(Request $request, Order $Order) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_MAIL_INDEX_CHANGE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_MAIL_INDEX_CHANGE); $form->get('template')->setData($MailTemplate); if ($MailTemplate) { $form->get('mail_subject')->setData($MailTemplate->getMailSubject()); @@ -160,7 +160,7 @@ public function index(Request $request, Order $Order) $MailHistory = new MailHistory(); $MailHistory ->setMailSubject($message->getSubject()) - ->setMailBody($message->getBody()) + ->setMailBody($message->getTextBody()) ->setSendDate(new \DateTime()) ->setOrder($Order); @@ -176,7 +176,7 @@ public function index(Request $request, Order $Order) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_MAIL_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_MAIL_INDEX_COMPLETE); $this->addSuccess('admin.order.mail_send_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Order/OrderController.php b/src/Eccube/Controller/Admin/Order/OrderController.php index b2112ea60a6..d4714456f15 100644 --- a/src/Eccube/Controller/Admin/Order/OrderController.php +++ b/src/Eccube/Controller/Admin/Order/OrderController.php @@ -193,7 +193,7 @@ public function __construct( * @Route("/%eccube_admin_route%/order/page/{page_no}", requirements={"page_no" = "\d+"}, name="admin_order_page", methods={"GET", "POST"}) * @Template("@admin/Order/index.twig") */ - public function index(Request $request, $page_no = null, PaginatorInterface $paginator) + public function index(Request $request, PaginatorInterface $paginator, $page_no = null) { $builder = $this->formFactory ->createBuilder(SearchOrderType::class); @@ -204,7 +204,7 @@ public function index(Request $request, $page_no = null, PaginatorInterface $pag ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_INDEX_INITIALIZE); $searchForm = $builder->getForm(); @@ -299,7 +299,7 @@ public function index(Request $request, $page_no = null, PaginatorInterface $pag $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_INDEX_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_INDEX_SEARCH); $sortKey = $searchData['sortkey']; if (empty($this->orderRepository::COLUMNS[$sortKey]) || $sortKey == 'order_status') { @@ -448,7 +448,7 @@ protected function exportCsv(Request $request, $csvTypeId, $fileName) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_CSV_EXPORT_ORDER, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_ORDER_CSV_EXPORT_ORDER); $ExportCsvRow->pushData(); } @@ -462,7 +462,6 @@ protected function exportCsv(Request $request, $csvTypeId, $fileName) $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename='.$fileName); - $response->send(); return $response; } diff --git a/src/Eccube/Controller/Admin/Product/CategoryController.php b/src/Eccube/Controller/Admin/Product/CategoryController.php index ff9467ee239..8c151fb851d 100644 --- a/src/Eccube/Controller/Admin/Product/CategoryController.php +++ b/src/Eccube/Controller/Admin/Product/CategoryController.php @@ -62,7 +62,7 @@ public function __construct( * @Route("/%eccube_admin_route%/product/category/{id}/edit", requirements={"id" = "\d+"}, name="admin_product_category_edit", methods={"GET", "POST"}) * @Template("@admin/Product/category.twig") */ - public function index(Request $request, $parent_id = null, $id = null, CacheUtil $cacheUtil) + public function index(Request $request, CacheUtil $cacheUtil, $parent_id = null, $id = null) { if ($parent_id) { /** @var Category $Parent */ @@ -105,7 +105,7 @@ public function index(Request $request, $parent_id = null, $id = null, CacheUtil ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -138,7 +138,7 @@ public function index(Request $request, $parent_id = null, $id = null, CacheUtil ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -169,7 +169,7 @@ public function index(Request $request, $parent_id = null, $id = null, CacheUtil $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -237,7 +237,7 @@ public function delete(Request $request, $id, CacheUtil $cacheUtil) 'TargetCategory' => $TargetCategory, ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CATEGORY_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CATEGORY_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); @@ -336,7 +336,7 @@ public function export(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CATEGORY_CSV_EXPORT, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CATEGORY_CSV_EXPORT); $ExportCsvRow->pushData(); } @@ -351,7 +351,6 @@ public function export(Request $request) $filename = 'category_'.$now->format('YmdHis').'.csv'; $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename='.$filename); - $response->send(); log_info('カテゴリCSV出力ファイル名', [$filename]); diff --git a/src/Eccube/Controller/Admin/Product/ClassCategoryController.php b/src/Eccube/Controller/Admin/Product/ClassCategoryController.php index c34974fd9d1..9f6e189d423 100644 --- a/src/Eccube/Controller/Admin/Product/ClassCategoryController.php +++ b/src/Eccube/Controller/Admin/Product/ClassCategoryController.php @@ -93,7 +93,7 @@ public function index(Request $request, $class_name_id, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_INDEX_INITIALIZE); $ClassCategories = $this->classCategoryRepository->getList($ClassName); @@ -122,7 +122,7 @@ public function index(Request $request, $class_name_id, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -185,7 +185,7 @@ public function delete(Request $request, $class_name_id, $id) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); @@ -232,7 +232,7 @@ public function visibility(Request $request, $class_name_id, $id) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_DELETE_COMPLETE); if ($TargetClassCategory->isVisible()) { $this->addSuccess(trans('admin.common.to_show_complete', ['%name%' => $TargetClassCategory->getName()]), 'admin'); diff --git a/src/Eccube/Controller/Admin/Product/ClassNameController.php b/src/Eccube/Controller/Admin/Product/ClassNameController.php index f4a57248abf..be9f39b3cfd 100644 --- a/src/Eccube/Controller/Admin/Product/ClassNameController.php +++ b/src/Eccube/Controller/Admin/Product/ClassNameController.php @@ -69,7 +69,7 @@ public function index(Request $request, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_NAME_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CLASS_NAME_INDEX_INITIALIZE); $ClassNames = $this->classNameRepository->getList(); @@ -100,7 +100,7 @@ public function index(Request $request, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_NAME_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CLASS_NAME_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -147,7 +147,7 @@ public function delete(Request $request, ClassName $ClassName) $this->classNameRepository->delete($ClassName); $event = new EventArgs(['ClassName' => $ClassName], $request); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_NAME_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CLASS_NAME_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Product/CsvImportController.php b/src/Eccube/Controller/Admin/Product/CsvImportController.php index 24c6b387c14..e69e9fae35f 100644 --- a/src/Eccube/Controller/Admin/Product/CsvImportController.php +++ b/src/Eccube/Controller/Admin/Product/CsvImportController.php @@ -1688,7 +1688,6 @@ public function importCsv(Request $request, CsrfTokenManagerInterface $tokenMana $path, 'import.csv', 'text/csv', - filesize($path), null, true )]); diff --git a/src/Eccube/Controller/Admin/Product/ProductController.php b/src/Eccube/Controller/Admin/Product/ProductController.php index 55e6ca8b644..b5eec96e40e 100644 --- a/src/Eccube/Controller/Admin/Product/ProductController.php +++ b/src/Eccube/Controller/Admin/Product/ProductController.php @@ -151,7 +151,7 @@ public function __construct( * @Route("/%eccube_admin_route%/product/page/{page_no}", requirements={"page_no" = "\d+"}, name="admin_product_page", methods={"GET", "POST"}) * @Template("@admin/Product/index.twig") */ - public function index(Request $request, $page_no = null, PaginatorInterface $paginator) + public function index(Request $request, PaginatorInterface $paginator, $page_no = null) { $builder = $this->formFactory ->createBuilder(SearchProductType::class); @@ -162,7 +162,7 @@ public function index(Request $request, $page_no = null, PaginatorInterface $pag ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_INDEX_INITIALIZE); $searchForm = $builder->getForm(); @@ -253,7 +253,7 @@ public function index(Request $request, $page_no = null, PaginatorInterface $pag $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_INDEX_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_INDEX_SEARCH); $sortKey = $searchData['sortkey']; @@ -353,7 +353,7 @@ public function addImage(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_ADD_IMAGE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_ADD_IMAGE_COMPLETE); $files = $event->getArgument('files'); return $this->json(['files' => $files], 200); @@ -364,7 +364,7 @@ public function addImage(Request $request) * @Route("/%eccube_admin_route%/product/product/{id}/edit", requirements={"id" = "\d+"}, name="admin_product_product_edit", methods={"GET", "POST"}) * @Template("@admin/Product/product.twig") */ - public function edit(Request $request, $id = null, RouterInterface $router, CacheUtil $cacheUtil) + public function edit(Request $request, RouterInterface $router, CacheUtil $cacheUtil, $id = null) { $has_class = false; if (is_null($id)) { @@ -423,7 +423,7 @@ public function edit(Request $request, $id = null, RouterInterface $router, Cach ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_EDIT_INITIALIZE); $form = $builder->getForm(); @@ -616,7 +616,7 @@ public function edit(Request $request, $id = null, RouterInterface $router, Cach ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_EDIT_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -656,7 +656,7 @@ public function edit(Request $request, $id = null, RouterInterface $router, Cach ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_EDIT_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_EDIT_SEARCH); $searchForm = $builder->getForm(); @@ -689,7 +689,7 @@ public function edit(Request $request, $id = null, RouterInterface $router, Cach /** * @Route("/%eccube_admin_route%/product/product/{id}/delete", requirements={"id" = "\d+"}, name="admin_product_product_delete", methods={"DELETE"}) */ - public function delete(Request $request, $id = null, CacheUtil $cacheUtil) + public function delete(Request $request, CacheUtil $cacheUtil, $id = null) { $this->isTokenValid(); $session = $request->getSession(); @@ -732,7 +732,7 @@ public function delete(Request $request, $id = null, CacheUtil $cacheUtil) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_DELETE_COMPLETE); $deleteImages = $event->getArgument('deleteImages'); // 画像ファイルの削除(commit後に削除させる) @@ -867,7 +867,7 @@ public function copy(Request $request, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_COPY_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_COPY_COMPLETE); $this->addSuccess('admin.product.copy_complete', 'admin'); @@ -971,7 +971,7 @@ public function export(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_CSV_EXPORT, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_CSV_EXPORT); $ExportCsvRow->pushData(); } @@ -987,7 +987,6 @@ public function export(Request $request) $filename = 'product_'.$now->format('YmdHis').'.csv'; $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename='.$filename); - $response->send(); log_info('商品CSV出力ファイル名', [$filename]); diff --git a/src/Eccube/Controller/Admin/Product/TagController.php b/src/Eccube/Controller/Admin/Product/TagController.php index 83885f18f73..6f63f5a6a1f 100644 --- a/src/Eccube/Controller/Admin/Product/TagController.php +++ b/src/Eccube/Controller/Admin/Product/TagController.php @@ -64,7 +64,7 @@ public function index(Request $request) $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_TAG_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_TAG_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -140,7 +140,7 @@ public function delete(Request $request, Tag $Tag) 'Tag' => $Tag, ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_TAG_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_TAG_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); @@ -185,6 +185,6 @@ protected function dispatchComplete(Request $request, FormInterface $form, Tag $ $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_PRODUCT_TAG_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_PRODUCT_TAG_INDEX_COMPLETE); } } diff --git a/src/Eccube/Controller/Admin/Setting/Shop/CsvController.php b/src/Eccube/Controller/Admin/Setting/Shop/CsvController.php index 3c6272036da..2ace7af1e9e 100644 --- a/src/Eccube/Controller/Admin/Setting/Shop/CsvController.php +++ b/src/Eccube/Controller/Admin/Setting/Shop/CsvController.php @@ -122,7 +122,7 @@ public function index(Request $request, CsvType $CsvType) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_CSV_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_CSV_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -161,7 +161,7 @@ public function index(Request $request, CsvType $CsvType) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_CSV_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_CSV_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Setting/Shop/DeliveryController.php b/src/Eccube/Controller/Admin/Setting/Shop/DeliveryController.php index aa8723303d8..11bb2e66a09 100644 --- a/src/Eccube/Controller/Admin/Setting/Shop/DeliveryController.php +++ b/src/Eccube/Controller/Admin/Setting/Shop/DeliveryController.php @@ -105,7 +105,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_INDEX_COMPLETE); return [ 'Deliveries' => $Deliveries, @@ -117,7 +117,7 @@ public function index(Request $request) * @Route("/%eccube_admin_route%/setting/shop/delivery/{id}/edit", requirements={"id" = "\d+"}, name="admin_setting_shop_delivery_edit", methods={"GET", "POST"}) * @Template("@admin/Setting/Shop/delivery_edit.twig") */ - public function edit(Request $request, $id = null, EccubeExtension $extension) + public function edit(Request $request, EccubeExtension $extension, $id = null) { if (is_null($id)) { $SaleType = $this->saleTypeRepository->findOneBy([], ['sort_no' => 'ASC']); @@ -192,7 +192,7 @@ public function edit(Request $request, $id = null, EccubeExtension $extension) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_EDIT_INITIALIZE); $form = $builder->getForm(); @@ -260,7 +260,7 @@ public function edit(Request $request, $id = null, EccubeExtension $extension) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_EDIT_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -325,7 +325,7 @@ public function delete(Request $request, Delivery $Delivery) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); @@ -357,7 +357,7 @@ public function visibility(Request $request, Delivery $Delivery) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_VISIBILITY_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_DELIVERY_VISIBILITY_COMPLETE); $this->addSuccess($message, 'admin'); diff --git a/src/Eccube/Controller/Admin/Setting/Shop/MailController.php b/src/Eccube/Controller/Admin/Setting/Shop/MailController.php index 532f4d97e93..55a02dcd10a 100644 --- a/src/Eccube/Controller/Admin/Setting/Shop/MailController.php +++ b/src/Eccube/Controller/Admin/Setting/Shop/MailController.php @@ -65,7 +65,7 @@ public function index(Request $request, MailTemplate $Mail = null, Environment $ ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_MAIL_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_MAIL_INDEX_INITIALIZE); $form = $builder->getForm(); $form['template']->setData($Mail); @@ -126,7 +126,7 @@ public function index(Request $request, MailTemplate $Mail = null, Environment $ ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_MAIL_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_MAIL_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -161,7 +161,7 @@ public function preview(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_MAIL_PREVIEW_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_MAIL_PREVIEW_COMPLETE); return [ 'html_body' => $html_body, diff --git a/src/Eccube/Controller/Admin/Setting/Shop/PaymentController.php b/src/Eccube/Controller/Admin/Setting/Shop/PaymentController.php index c307797bdca..1518a7a02e1 100644 --- a/src/Eccube/Controller/Admin/Setting/Shop/PaymentController.php +++ b/src/Eccube/Controller/Admin/Setting/Shop/PaymentController.php @@ -67,7 +67,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_INDEX_COMPLETE); return [ 'Payments' => $Payments, @@ -105,7 +105,7 @@ public function edit(Request $request, Payment $Payment = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_EDIT_INITIALIZE); $form = $builder->getForm(); @@ -143,7 +143,7 @@ public function edit(Request $request, Payment $Payment = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_EDIT_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -195,7 +195,7 @@ public function imageAdd(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_IMAGE_ADD_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_IMAGE_ADD_COMPLETE); $filename = $event->getArgument('filename'); return $this->json(['filename' => $filename], 200); @@ -229,7 +229,7 @@ public function delete(Request $request, Payment $TargetPayment) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_PAYMENT_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); } catch (ForeignKeyConstraintViolationException $e) { diff --git a/src/Eccube/Controller/Admin/Setting/Shop/ShopController.php b/src/Eccube/Controller/Admin/Setting/Shop/ShopController.php index a2557549279..4f30728f5f9 100644 --- a/src/Eccube/Controller/Admin/Setting/Shop/ShopController.php +++ b/src/Eccube/Controller/Admin/Setting/Shop/ShopController.php @@ -22,7 +22,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -use Twig_Environment; +use Twig\Environment; /** * Class ShopController @@ -30,7 +30,7 @@ class ShopController extends AbstractController { /** - * @var Twig_Environment + * @var Environment */ protected $twig; @@ -42,10 +42,10 @@ class ShopController extends AbstractController /** * ShopController constructor. * - * @param Twig_Environment $twig + * @param Environment $twig * @param BaseInfoRepository $baseInfoRepository */ - public function __construct(Twig_Environment $twig, BaseInfoRepository $baseInfoRepository) + public function __construct(Environment $twig, BaseInfoRepository $baseInfoRepository) { $this->baseInfoRepository = $baseInfoRepository; $this->twig = $twig; @@ -75,7 +75,7 @@ public function index(Request $request, CacheUtil $cacheUtil) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_SHOP_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_SHOP_INDEX_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -92,8 +92,8 @@ public function index(Request $request, CacheUtil $cacheUtil) $request ); $this->eventDispatcher->dispatch( - EccubeEvents::ADMIN_SETTING_SHOP_SHOP_INDEX_COMPLETE, - $event + $event, + EccubeEvents::ADMIN_SETTING_SHOP_SHOP_INDEX_COMPLETE ); // キャッシュの削除 diff --git a/src/Eccube/Controller/Admin/Setting/Shop/TaxRuleController.php b/src/Eccube/Controller/Admin/Setting/Shop/TaxRuleController.php index 55e12aad103..b389802e405 100644 --- a/src/Eccube/Controller/Admin/Setting/Shop/TaxRuleController.php +++ b/src/Eccube/Controller/Admin/Setting/Shop/TaxRuleController.php @@ -73,7 +73,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_TAX_RULE_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_TAX_RULE_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -92,7 +92,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_TAX_RULE_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_TAX_RULE_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -165,7 +165,7 @@ public function delete(Request $request, TaxRule $TaxRule) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_TAX_RULE_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SHOP_TAX_RULE_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); } diff --git a/src/Eccube/Controller/Admin/Setting/System/AuthorityController.php b/src/Eccube/Controller/Admin/Setting/System/AuthorityController.php index aa4d68fbad2..f7e668a9b23 100644 --- a/src/Eccube/Controller/Admin/Setting/System/AuthorityController.php +++ b/src/Eccube/Controller/Admin/Setting/System/AuthorityController.php @@ -69,7 +69,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_AUTHORITY_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_AUTHORITY_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -112,7 +112,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_AUTHORITY_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_AUTHORITY_INDEX_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Setting/System/LogController.php b/src/Eccube/Controller/Admin/Setting/System/LogController.php index aeb7d3397b2..72e04c8a449 100644 --- a/src/Eccube/Controller/Admin/Setting/System/LogController.php +++ b/src/Eccube/Controller/Admin/Setting/System/LogController.php @@ -47,7 +47,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_LOG_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_LOG_INDEX_INITIALIZE); $formData = $event->getArgument('data'); $form = $builder->getForm(); @@ -63,7 +63,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_LOG_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_LOG_INDEX_COMPLETE); } $logDir = $this->getParameter('kernel.logs_dir').DIRECTORY_SEPARATOR.$this->getParameter('kernel.environment'); $logFile = $logDir.'/'.$formData['files']; @@ -81,7 +81,6 @@ public function index(Request $request) } } }); - $response->send(); return $response; } else { diff --git a/src/Eccube/Controller/Admin/Setting/System/MasterdataController.php b/src/Eccube/Controller/Admin/Setting/System/MasterdataController.php index b199d05a1cf..cea835f6263 100644 --- a/src/Eccube/Controller/Admin/Setting/System/MasterdataController.php +++ b/src/Eccube/Controller/Admin/Setting/System/MasterdataController.php @@ -13,7 +13,7 @@ namespace Eccube\Controller\Admin\Setting\System; -use Doctrine\Common\Persistence\Mapping\MappingException; +use Doctrine\Persistence\Mapping\MappingException; use Eccube\Controller\AbstractController; use Eccube\Event\EccubeEvents; use Eccube\Event\EventArgs; @@ -42,7 +42,7 @@ public function index(Request $request, $entity = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -55,7 +55,7 @@ public function index(Request $request, $entity = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_COMPLETE); if ($event->hasResponse()) { return $event->getResponse(); @@ -97,7 +97,7 @@ public function index(Request $request, $entity = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_FORM2_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_FORM2_INITIALIZE); $form2 = $builder2->getForm(); @@ -121,7 +121,7 @@ public function edit(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_EDIT_INITIALIZE); $form2 = $builder2->getForm(); @@ -171,8 +171,8 @@ function ($v) { $request ); $this->eventDispatcher->dispatch( - EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_EDIT_COMPLETE, - $event + $event, + EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_EDIT_COMPLETE ); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -195,7 +195,7 @@ function ($v) { ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_EDIT_FORM_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_EDIT_FORM_INITIALIZE); $form = $builder->getForm(); $parameter = array_merge($request->request->all(), ['masterdata' => $form2['masterdata_name']->getData()]); diff --git a/src/Eccube/Controller/Admin/Setting/System/MemberController.php b/src/Eccube/Controller/Admin/Setting/System/MemberController.php index c5b2a19951f..572a48f2457 100644 --- a/src/Eccube/Controller/Admin/Setting/System/MemberController.php +++ b/src/Eccube/Controller/Admin/Setting/System/MemberController.php @@ -78,7 +78,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -102,7 +102,7 @@ public function create(Request $request) 'builder' => $builder, 'Member' => $Member, ], $request); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -125,7 +125,7 @@ public function create(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -156,7 +156,7 @@ public function edit(Request $request, Member $Member) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -185,7 +185,7 @@ public function edit(Request $request, Member $Member) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_COMPLETE); $this->addSuccess('admin.common.save_complete', 'admin'); @@ -256,7 +256,7 @@ public function delete(Request $request, Member $Member) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_DELETE_COMPLETE); $this->addSuccess('admin.common.delete_complete', 'admin'); diff --git a/src/Eccube/Controller/Admin/Setting/System/SecurityController.php b/src/Eccube/Controller/Admin/Setting/System/SecurityController.php index e244dd86005..33a3553a9be 100644 --- a/src/Eccube/Controller/Admin/Setting/System/SecurityController.php +++ b/src/Eccube/Controller/Admin/Setting/System/SecurityController.php @@ -75,7 +75,7 @@ public function index(Request $request, CacheUtil $cacheUtil) $env = StringUtil::replaceOrAddEnv($env, [ 'ECCUBE_ADMIN_ALLOW_HOSTS' => "'{$adminAllowHosts}'", 'ECCUBE_ADMIN_DENY_HOSTS' => "'{$adminDenyHosts}'", - 'ECCUBE_FORCE_SSL' => $data['force_ssl'] ? 'true' : 'false', + 'ECCUBE_FORCE_SSL' => $data['force_ssl'] ? '1' : '0', 'TRUSTED_HOSTS' => $data['trusted_hosts'], ]); diff --git a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php index ce4afbce6d1..f9971107aaa 100644 --- a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php +++ b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php @@ -118,7 +118,7 @@ public function __construct( * * @return array */ - public function search(Request $request, $page_no = null, PaginatorInterface $paginator) + public function search(Request $request, PaginatorInterface $paginator, $page_no = null) { if (empty($this->BaseInfo->getAuthenticationKey())) { $this->addWarning('admin.store.plugin.search.not_auth', 'admin'); diff --git a/src/Eccube/Controller/Admin/Store/TemplateController.php b/src/Eccube/Controller/Admin/Store/TemplateController.php index c40f620443a..5f8727a847a 100644 --- a/src/Eccube/Controller/Admin/Store/TemplateController.php +++ b/src/Eccube/Controller/Admin/Store/TemplateController.php @@ -191,8 +191,8 @@ public function delete(Request $request, \Eccube\Entity\Template $Template) // テンプレートディレクトリの削除 $templateCode = $Template->getCode(); - $targetRealDir = $this->container->getParameter('kernel.project_dir').'/app/template/'.$templateCode; - $targetHtmlRealDir = $this->container->getParameter('kernel.project_dir').'/html/template/'.$templateCode; + $targetRealDir = $this->getParameter('kernel.project_dir').'/app/template/'.$templateCode; + $targetHtmlRealDir = $this->getParameter('kernel.project_dir').'/html/template/'.$templateCode; $fs = new Filesystem(); $fs->remove($targetRealDir); diff --git a/src/Eccube/Controller/Block/SearchProductController.php b/src/Eccube/Controller/Block/SearchProductController.php index 49df7f27c0a..8b2b3f47e9f 100644 --- a/src/Eccube/Controller/Block/SearchProductController.php +++ b/src/Eccube/Controller/Block/SearchProductController.php @@ -52,9 +52,9 @@ public function index(Request $request) $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_BLOCK_SEARCH_PRODUCT_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_BLOCK_SEARCH_PRODUCT_INDEX_INITIALIZE); - $request = $this->requestStack->getMasterRequest(); + $request = $this->requestStack->getMainRequest(); $form = $builder->getForm(); $form->handleRequest($request); diff --git a/src/Eccube/Controller/CartController.php b/src/Eccube/Controller/CartController.php index adb5763ec94..1074d4ae983 100644 --- a/src/Eccube/Controller/CartController.php +++ b/src/Eccube/Controller/CartController.php @@ -248,7 +248,7 @@ public function buystep(Request $request, $cart_key) [], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_CART_BUYSTEP_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_CART_BUYSTEP_INITIALIZE); $this->cartService->setPrimary($cart_key); $this->cartService->save(); @@ -258,7 +258,7 @@ public function buystep(Request $request, $cart_key) [], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_CART_BUYSTEP_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_CART_BUYSTEP_COMPLETE); if ($event->hasResponse()) { return $event->getResponse(); diff --git a/src/Eccube/Controller/ContactController.php b/src/Eccube/Controller/ContactController.php index 51f4e5220f2..ab0f60856fd 100644 --- a/src/Eccube/Controller/ContactController.php +++ b/src/Eccube/Controller/ContactController.php @@ -86,7 +86,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_CONTACT_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_CONTACT_INDEX_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -109,7 +109,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_CONTACT_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_CONTACT_INDEX_COMPLETE); $data = $event->getArgument('data'); diff --git a/src/Eccube/Controller/EntryController.php b/src/Eccube/Controller/EntryController.php index ee35de4713a..8a411d597ab 100644 --- a/src/Eccube/Controller/EntryController.php +++ b/src/Eccube/Controller/EntryController.php @@ -144,7 +144,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_ENTRY_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_ENTRY_INDEX_INITIALIZE); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); @@ -170,7 +170,7 @@ public function index(Request $request) $encoder = $this->encoderFactory->getEncoder($Customer); $salt = $encoder->createSalt(); - $password = $encoder->encodePassword($Customer->getPassword(), $salt); + $password = $encoder->encodePassword($Customer->getPlainPassword(), $salt); $secretKey = $this->customerRepository->getUniqueSecretKey(); $Customer @@ -191,7 +191,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_ENTRY_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_ENTRY_INDEX_COMPLETE); $activateFlg = $this->BaseInfo->isOptionCustomerActivate(); @@ -303,7 +303,7 @@ private function entryActivate(Request $request, $secret_key) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_ENTRY_ACTIVATE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_ENTRY_ACTIVATE_COMPLETE); // メール送信 $this->mailService->sendCustomerCompleteMail($Customer); diff --git a/src/Eccube/Controller/ForgotController.php b/src/Eccube/Controller/ForgotController.php index c2dd11aa22e..c9a85f20b36 100644 --- a/src/Eccube/Controller/ForgotController.php +++ b/src/Eccube/Controller/ForgotController.php @@ -91,7 +91,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_FORGOT_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_FORGOT_INDEX_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -117,7 +117,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_FORGOT_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_FORGOT_INDEX_COMPLETE); // 完了URLの生成 $reset_url = $this->generateUrl('forgot_reset', ['reset_key' => $Customer->getResetKey()], UrlGeneratorInterface::ABSOLUTE_URL); @@ -232,7 +232,7 @@ public function reset(Request $request, $reset_key) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_FORGOT_RESET_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_FORGOT_RESET_COMPLETE); // 完了メッセージを設定 $this->addFlash('password_reset_complete', trans('front.forgot.reset_complete')); diff --git a/src/Eccube/Controller/Install/InstallController.php b/src/Eccube/Controller/Install/InstallController.php index 1c86500c3aa..679ff579945 100644 --- a/src/Eccube/Controller/Install/InstallController.php +++ b/src/Eccube/Controller/Install/InstallController.php @@ -18,10 +18,8 @@ use Doctrine\Common\Cache\ArrayCache; use Doctrine\DBAL\Connection; use Doctrine\DBAL\DriverManager; -use Doctrine\DBAL\Migrations\Configuration\Configuration; -use Doctrine\DBAL\Migrations\Migration; -use Doctrine\DBAL\Migrations\MigrationException; use Doctrine\DBAL\Types\Type; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\EntityManager; use Doctrine\ORM\Tools\SchemaTool; use Doctrine\ORM\Tools\Setup; @@ -74,7 +72,6 @@ class InstallController extends AbstractController protected $recommendedModules = [ 'hash', - 'mcrypt', ]; protected $eccubeDirs = [ @@ -286,7 +283,7 @@ public function step3(Request $request) $sessionData['admin_force_ssl'] = $this->getParameter('eccube_force_ssl'); // メール - $mailerUrl = $this->getParameter('eccube_mailer_url'); + $mailerUrl = $this->getParameter('eccube_mailer_dsn'); $sessionData = array_merge($sessionData, $this->extractMailerUrl($mailerUrl)); } else { // 初期値設定 @@ -398,7 +395,6 @@ public function step5(Request $request) try { $conn = $this->createConnection(['url' => $url]); $em = $this->createEntityManager($conn); - $migration = $this->createMigration($conn); if ($noUpdate) { $this->update($conn, [ @@ -412,7 +408,6 @@ public function step5(Request $request) $this->dropTables($em); $this->createTables($em); $this->importCsv($em); - $this->migrate($migration); $this->insert($conn, [ 'auth_magic' => $sessionData['authmagic'], 'login_id' => $sessionData['login_id'], @@ -467,16 +462,16 @@ public function complete(Request $request) $mailerUrl = $this->createMailerUrl($sessionData); $forceSSL = isset($sessionData['admin_force_ssl']) ? (bool) $sessionData['admin_force_ssl'] : false; if ($forceSSL === false) { - $forceSSL = 'false'; + $forceSSL = '0'; } elseif ($forceSSL === true) { - $forceSSL = 'true'; + $forceSSL = '1'; } $env = file_get_contents(__DIR__.'/../../../../.env.dist'); $replacement = [ 'APP_ENV' => 'prod', 'APP_DEBUG' => '0', 'DATABASE_URL' => $databaseUrl, - 'MAILER_URL' => $mailerUrl, + 'MAILER_DSN' => $mailerUrl, 'ECCUBE_AUTH_MAGIC' => $sessionData['authmagic'], 'DATABASE_SERVER_VERSION' => isset($sessionData['database_version']) ? $sessionData['database_version'] : '3', 'ECCUBE_ADMIN_ALLOW_HOSTS' => $this->convertAdminAllowHosts($sessionData['admin_allow_hosts']), @@ -540,11 +535,6 @@ protected function checkModules() } foreach ($this->recommendedModules as $module) { if (!extension_loaded($module)) { - if ($module == 'mcrypt' && PHP_VERSION_ID >= 70100) { - //The mcrypt extension has been deprecated in PHP 7.1.x - //http://php.net/manual/en/migration71.deprecated.php - continue; - } $this->addInfo(trans('install.recommend_extension_disabled', ['%module%' => $module]), 'install'); } } @@ -583,7 +573,7 @@ protected function createConnection(array $params) Type::overrideType('datetimetz', UTCDateTimeTzType::class); $conn = DriverManager::getConnection($params); - $conn->ping(); + $conn->executeQuery('select 1'); $platform = $conn->getDatabasePlatform(); $platform->markDoctrineTypeCommented('datetime'); @@ -599,7 +589,7 @@ protected function createEntityManager(Connection $conn) $this->getParameter('kernel.project_dir').'/app/Customize/Entity', ]; $config = Setup::createConfiguration(true); - $driver = new AnnotationDriver(new CachedReader(new AnnotationReader(), new ArrayCache()), $paths); + $driver = new AnnotationDriver(new AnnotationReader(), $paths); $driver->setTraitProxiesDirectory($this->getParameter('kernel.project_dir').'/app/proxy/entity'); $config->setMetadataDriverImpl($driver); @@ -799,20 +789,6 @@ public function extractMailerUrl($url) return $options; } - protected function createMigration(Connection $conn) - { - $config = new Configuration($conn); - $config->setMigrationsNamespace('DoctrineMigrations'); - $migrationDir = $this->getParameter('kernel.project_dir').'/src/Eccube/Resource/doctrine/migration'; - $config->setMigrationsDirectory($migrationDir); - $config->registerMigrationsFromDirectory($migrationDir); - - $migration = new Migration($config); - $migration->setNoMigrationException(true); - - return $migration; - } - protected function dropTables(EntityManager $em) { $metadatas = $em->getMetadataFactory()->getAllMetadata(); @@ -865,7 +841,7 @@ protected function insert(Connection $conn, array $data) 'update_date' => new \DateTime(), 'discriminator_type' => 'baseinfo', ], [ - 'update_date' => \Doctrine\DBAL\Types\Type::DATETIME, + 'update_date' => Types::DATETIMETZ_MUTABLE, ]); $member_id = ('postgresql' === $conn->getDatabasePlatform()->getName()) @@ -887,8 +863,8 @@ protected function insert(Connection $conn, array $data) 'department' => $data['shop_name'], 'discriminator_type' => 'member', ], [ - 'update_date' => Type::DATETIME, - 'create_date' => Type::DATETIME, + 'update_date' => Types::DATETIMETZ_MUTABLE, + 'create_date' => Types::DATETIMETZ_MUTABLE, ]); $conn->commit(); } catch (\Exception $e) { @@ -943,15 +919,6 @@ protected function update(Connection $conn, array $data) } } - public function migrate(Migration $migration) - { - try { - // nullを渡すと最新バージョンまでマイグレートする - $migration->migrate(null, false); - } catch (MigrationException $e) { - } - } - /** * @param array $params * diff --git a/src/Eccube/Controller/Mypage/ChangeController.php b/src/Eccube/Controller/Mypage/ChangeController.php index 39b222c7681..40418141077 100644 --- a/src/Eccube/Controller/Mypage/ChangeController.php +++ b/src/Eccube/Controller/Mypage/ChangeController.php @@ -14,6 +14,7 @@ namespace Eccube\Controller\Mypage; use Eccube\Controller\AbstractController; +use Eccube\Entity\Customer; use Eccube\Event\EccubeEvents; use Eccube\Event\EventArgs; use Eccube\Form\Type\Front\EntryType; @@ -60,12 +61,9 @@ public function __construct( */ public function index(Request $request) { + /** @var Customer $Customer */ $Customer = $this->getUser(); - $LoginCustomer = clone $Customer; - $this->entityManager->detach($LoginCustomer); - - $previous_password = $Customer->getPassword(); - $Customer->setPassword($this->eccubeConfig['eccube_default_password']); + $Customer->setPlainPassword($this->eccubeConfig['eccube_default_password']); /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $this->formFactory->createBuilder(EntryType::class, $Customer); @@ -77,7 +75,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_CHANGE_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_CHANGE_INDEX_INITIALIZE); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); @@ -86,15 +84,13 @@ public function index(Request $request) if ($form->isSubmitted() && $form->isValid()) { log_info('会員編集開始'); - if ($Customer->getPassword() === $this->eccubeConfig['eccube_default_password']) { - $Customer->setPassword($previous_password); - } else { + if ($Customer->getPlainPassword() !== $this->eccubeConfig['eccube_default_password']) { $encoder = $this->encoderFactory->getEncoder($Customer); if ($Customer->getSalt() === null) { $Customer->setSalt($encoder->createSalt()); } $Customer->setPassword( - $encoder->encodePassword($Customer->getPassword(), $Customer->getSalt()) + $encoder->encodePassword($Customer->getPlainPassword(), $Customer->getSalt()) ); } $this->entityManager->flush(); @@ -108,13 +104,11 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_CHANGE_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_CHANGE_INDEX_COMPLETE); return $this->redirect($this->generateUrl('mypage_change_complete')); } - $this->tokenStorage->getToken()->setUser($LoginCustomer); - return [ 'form' => $form->createView(), ]; diff --git a/src/Eccube/Controller/Mypage/DeliveryController.php b/src/Eccube/Controller/Mypage/DeliveryController.php index 6de5ed741ff..9219f9883f4 100644 --- a/src/Eccube/Controller/Mypage/DeliveryController.php +++ b/src/Eccube/Controller/Mypage/DeliveryController.php @@ -118,7 +118,7 @@ public function edit(Request $request, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_DELIVERY_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_DELIVERY_EDIT_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -139,7 +139,7 @@ public function edit(Request $request, $id = null) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_DELIVERY_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_DELIVERY_EDIT_COMPLETE); return $this->redirect($this->generateUrl('mypage_delivery')); } @@ -176,7 +176,7 @@ public function delete(Request $request, CustomerAddress $CustomerAddress) 'CustomerAddress' => $CustomerAddress, ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_DELIVERY_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_DELIVERY_DELETE_COMPLETE); log_info('お届け先削除完了', [$CustomerAddress->getId()]); diff --git a/src/Eccube/Controller/Mypage/MypageController.php b/src/Eccube/Controller/Mypage/MypageController.php index 6feb40bf9be..a50e17fa13e 100644 --- a/src/Eccube/Controller/Mypage/MypageController.php +++ b/src/Eccube/Controller/Mypage/MypageController.php @@ -126,7 +126,7 @@ public function login(Request $request, AuthenticationUtils $utils) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_LOGIN_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_MYPAGE_LOGIN_INITIALIZE); $form = $builder->getForm(); @@ -161,7 +161,7 @@ public function index(Request $request, PaginatorInterface $paginator) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_INDEX_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_MYPAGE_INDEX_SEARCH); $pagination = $paginator->paginate( $qb, @@ -197,7 +197,7 @@ public function history(Request $request, $order_no) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_HISTORY_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_MYPAGE_HISTORY_INITIALIZE); /** @var Order $Order */ $Order = $event->getArgument('Order'); @@ -248,7 +248,7 @@ public function order(Request $request, $order_no) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_ORDER_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_MYPAGE_ORDER_INITIALIZE); if (!$Order) { log_info('対象の注文が見つかりません', [$order_no]); @@ -298,7 +298,7 @@ public function order(Request $request, $order_no) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_ORDER_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_MYPAGE_ORDER_COMPLETE); if ($event->getResponse() !== null) { return $event->getResponse(); @@ -332,7 +332,7 @@ public function favorite(Request $request, PaginatorInterface $paginator) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_FAVORITE_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_MYPAGE_FAVORITE_SEARCH); $pagination = $paginator->paginate( $qb, @@ -373,7 +373,7 @@ public function delete(Request $request, Product $Product) 'CustomerFavoriteProduct' => $CustomerFavoriteProduct, ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_DELETE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_MYPAGE_DELETE_COMPLETE); log_info('お気に入り商品削除完了', [$Customer->getId(), $CustomerFavoriteProduct->getId()]); diff --git a/src/Eccube/Controller/Mypage/WithdrawController.php b/src/Eccube/Controller/Mypage/WithdrawController.php index 66d3d57f4ee..982f85bdc55 100644 --- a/src/Eccube/Controller/Mypage/WithdrawController.php +++ b/src/Eccube/Controller/Mypage/WithdrawController.php @@ -104,7 +104,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_WITHDRAW_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_WITHDRAW_INDEX_INITIALIZE); $form = $builder->getForm(); @@ -145,7 +145,7 @@ public function index(Request $request) 'Customer' => $Customer, ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_MYPAGE_WITHDRAW_INDEX_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_MYPAGE_WITHDRAW_INDEX_COMPLETE); // メール送信 $this->mailService->sendCustomerWithdrawMail($Customer, $email); diff --git a/src/Eccube/Controller/NonMemberShoppingController.php b/src/Eccube/Controller/NonMemberShoppingController.php index 1177a76278a..7f16593afa6 100644 --- a/src/Eccube/Controller/NonMemberShoppingController.php +++ b/src/Eccube/Controller/NonMemberShoppingController.php @@ -96,7 +96,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_NONMEMBER_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_NONMEMBER_INITIALIZE); $form = $builder->getForm(); @@ -117,7 +117,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_NONMEMBER_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_NONMEMBER_COMPLETE); if ($event->getResponse() !== null) { return $event->getResponse(); @@ -206,7 +206,7 @@ public function customer(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_CUSTOMER_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_CUSTOMER_INITIALIZE); log_info('非会員お客様情報変更処理完了', [$Order->getId()]); $message = ['status' => 'OK', 'kana01' => $data['customer_kana01'], 'kana02' => $data['customer_kana02']]; @@ -321,7 +321,7 @@ protected function customerValidation(array &$data) $data['customer_email'], [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ] ); diff --git a/src/Eccube/Controller/ProductController.php b/src/Eccube/Controller/ProductController.php index 9d32d314042..8038490964e 100644 --- a/src/Eccube/Controller/ProductController.php +++ b/src/Eccube/Controller/ProductController.php @@ -139,7 +139,7 @@ public function index(Request $request, PaginatorInterface $paginator) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_PRODUCT_INDEX_INITIALIZE); /* @var $searchForm \Symfony\Component\Form\FormInterface */ $searchForm = $builder->getForm(); @@ -157,7 +157,7 @@ public function index(Request $request, PaginatorInterface $paginator) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_INDEX_SEARCH, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_PRODUCT_INDEX_SEARCH); $searchData = $event->getArgument('searchData'); $query = $qb->getQuery() @@ -194,66 +194,12 @@ public function index(Request $request, PaginatorInterface $paginator) $forms[$Product->getId()] = $addCartForm->createView(); } - // 表示件数 - $builder = $this->formFactory->createNamedBuilder( - 'disp_number', - ProductListMaxType::class, - null, - [ - 'required' => false, - 'allow_extra_fields' => true, - ] - ); - if ($request->getMethod() === 'GET') { - $builder->setMethod('GET'); - } - - $event = new EventArgs( - [ - 'builder' => $builder, - ], - $request - ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_INDEX_DISP, $event); - - $dispNumberForm = $builder->getForm(); - - $dispNumberForm->handleRequest($request); - - // ソート順 - $builder = $this->formFactory->createNamedBuilder( - 'orderby', - ProductListOrderByType::class, - null, - [ - 'required' => false, - 'allow_extra_fields' => true, - ] - ); - if ($request->getMethod() === 'GET') { - $builder->setMethod('GET'); - } - - $event = new EventArgs( - [ - 'builder' => $builder, - ], - $request - ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_INDEX_ORDER, $event); - - $orderByForm = $builder->getForm(); - - $orderByForm->handleRequest($request); - $Category = $searchForm->get('category_id')->getData(); return [ 'subtitle' => $this->getPageTitle($searchData), 'pagination' => $pagination, 'search_form' => $searchForm->createView(), - 'disp_number_form' => $dispNumberForm->createView(), - 'order_by_form' => $orderByForm->createView(), 'forms' => $forms, 'Category' => $Category, ]; @@ -294,7 +240,7 @@ public function detail(Request $request, Product $Product) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_DETAIL_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_PRODUCT_DETAIL_INITIALIZE); $is_favorite = false; if ($this->isGranted('ROLE_USER')) { @@ -326,7 +272,7 @@ public function addFavorite(Request $request, Product $Product) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_FAVORITE_ADD_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_PRODUCT_FAVORITE_ADD_INITIALIZE); if ($this->isGranted('ROLE_USER')) { $Customer = $this->getUser(); @@ -339,7 +285,7 @@ public function addFavorite(Request $request, Product $Product) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_FAVORITE_ADD_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_PRODUCT_FAVORITE_ADD_COMPLETE); return $this->redirectToRoute('product_detail', ['id' => $Product->getId()]); } else { @@ -354,7 +300,7 @@ public function addFavorite(Request $request, Product $Product) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_FAVORITE_ADD_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_PRODUCT_FAVORITE_ADD_COMPLETE); return $this->redirectToRoute('mypage_login'); } @@ -390,7 +336,7 @@ public function addCart(Request $request, Product $Product) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_CART_ADD_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_PRODUCT_CART_ADD_INITIALIZE); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); @@ -448,7 +394,7 @@ public function addCart(Request $request, Product $Product) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_PRODUCT_CART_ADD_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_PRODUCT_CART_ADD_COMPLETE); if ($event->getResponse() !== null) { return $event->getResponse(); diff --git a/src/Eccube/Controller/ShippingMultipleController.php b/src/Eccube/Controller/ShippingMultipleController.php index 9fac4cad7e2..38dbcd97704 100644 --- a/src/Eccube/Controller/ShippingMultipleController.php +++ b/src/Eccube/Controller/ShippingMultipleController.php @@ -155,7 +155,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_SHIPPING_MULTIPLE_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_SHIPPING_MULTIPLE_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -319,7 +319,7 @@ public function index(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_SHIPPING_MULTIPLE_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_SHIPPING_MULTIPLE_COMPLETE); log_info('複数配送設定処理完了', [$Order->getId()]); @@ -396,7 +396,7 @@ public function shippingMultipleEdit(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_SHIPPING_MULTIPLE_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_SHIPPING_MULTIPLE_EDIT_INITIALIZE); $form = $builder->getForm(); @@ -436,7 +436,7 @@ public function shippingMultipleEdit(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_SHIPPING_MULTIPLE_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_SHIPPING_MULTIPLE_EDIT_COMPLETE); log_info('複数配送のお届け先追加処理完了'); diff --git a/src/Eccube/Controller/ShoppingController.php b/src/Eccube/Controller/ShoppingController.php index 95e45cecda5..8071a567049 100644 --- a/src/Eccube/Controller/ShoppingController.php +++ b/src/Eccube/Controller/ShoppingController.php @@ -32,6 +32,7 @@ use Eccube\Service\PurchaseFlow\PurchaseContext; use Eccube\Service\PurchaseFlow\PurchaseFlow; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -61,16 +62,23 @@ class ShoppingController extends AbstractShoppingController */ protected $orderRepository; + /** + * @var ContainerInterface + */ + protected $serviceContainer; + public function __construct( CartService $cartService, MailService $mailService, OrderRepository $orderRepository, - OrderHelper $orderHelper + OrderHelper $orderHelper, + ContainerInterface $serviceContainer ) { $this->cartService = $cartService; $this->mailService = $mailService; $this->orderRepository = $orderRepository; $this->orderHelper = $orderHelper; + $this->serviceContainer = $serviceContainer; } /** @@ -403,7 +411,7 @@ public function checkout(Request $request) } catch (\Exception $e) { log_error('[注文処理] 予期しないエラーが発生しました.', [$e->getMessage()]); - $this->entityManager->rollback(); + // $this->entityManager->rollback(); FIXME ユニットテストで There is no active transaction エラーになってしまう $this->addError('front.shopping.system_error'); @@ -459,7 +467,7 @@ public function complete(Request $request) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_COMPLETE_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_COMPLETE_INITIALIZE); if ($event->getResponse() !== null) { return $event->getResponse(); @@ -538,7 +546,7 @@ public function shipping(Request $request, Shipping $Shipping) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_SHIPPING_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_SHIPPING_COMPLETE); log_info('お届先情報更新完了', [$Shipping->getId()]); @@ -599,7 +607,7 @@ public function shippingEdit(Request $request, Shipping $Shipping) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_SHIPPING_EDIT_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_SHIPPING_EDIT_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); @@ -629,7 +637,7 @@ public function shippingEdit(Request $request, Shipping $Shipping) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_SHIPPING_EDIT_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_SHIPPING_EDIT_COMPLETE); log_info('お届け先追加処理完了', ['order_id' => $Order->getId(), 'shipping_id' => $Shipping->getId()]); @@ -670,7 +678,7 @@ public function login(Request $request, AuthenticationUtils $authenticationUtils ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_LOGIN_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_LOGIN_INITIALIZE); $form = $builder->getForm(); @@ -700,7 +708,7 @@ public function error(Request $request, PurchaseFlow $cartPurchaseFlow) [], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_SHOPPING_SHIPPING_ERROR_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_SHOPPING_SHIPPING_ERROR_COMPLETE); if ($event->getResponse() !== null) { return $event->getResponse(); @@ -719,7 +727,7 @@ public function error(Request $request, PurchaseFlow $cartPurchaseFlow) */ private function createPaymentMethod(Order $Order, FormInterface $form) { - $PaymentMethod = $this->container->get($Order->getPayment()->getMethodClass()); + $PaymentMethod = $this->serviceContainer->get($Order->getPayment()->getMethodClass()); $PaymentMethod->setOrder($Order); $PaymentMethod->setFormType($form); diff --git a/src/Eccube/Controller/UserDataController.php b/src/Eccube/Controller/UserDataController.php index 363b74a6ce7..edd8cfb579f 100644 --- a/src/Eccube/Controller/UserDataController.php +++ b/src/Eccube/Controller/UserDataController.php @@ -73,7 +73,7 @@ public function index(Request $request, $route) ], $request ); - $this->eventDispatcher->dispatch(EccubeEvents::FRONT_USER_DATA_INDEX_INITIALIZE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_USER_DATA_INDEX_INITIALIZE); return $this->render($file); } diff --git a/src/Eccube/DataCollector/EccubeDataCollector.php b/src/Eccube/DataCollector/EccubeDataCollector.php index e838fdd6b8e..0767c0679ba 100644 --- a/src/Eccube/DataCollector/EccubeDataCollector.php +++ b/src/Eccube/DataCollector/EccubeDataCollector.php @@ -106,7 +106,7 @@ public function getDefaultLocaleCode() /** * {@inheritdoc} */ - public function collect(Request $request, Response $response, \Exception $exception = null) + public function collect(Request $request, Response $response, \Throwable $exception = null) { $this->data['base_currency_code'] = $this->container->getParameter('currency'); $this->data['currency_code'] = $this->container->getParameter('currency'); diff --git a/src/Eccube/DependencyInjection/EccubeExtension.php b/src/Eccube/DependencyInjection/EccubeExtension.php index 3642fb11609..315041f7a16 100644 --- a/src/Eccube/DependencyInjection/EccubeExtension.php +++ b/src/Eccube/DependencyInjection/EccubeExtension.php @@ -48,9 +48,9 @@ protected function configureFramework(ContainerBuilder $container) { $forceSSL = $container->resolveEnvPlaceholders('%env(ECCUBE_FORCE_SSL)%', true); // envから取得した内容が文字列のため, booleanに変換 - if ('true' === $forceSSL) { + if ('1' === $forceSSL) { $forceSSL = true; - } elseif ('false' === $forceSSL) { + } elseif ('0' === $forceSSL) { $forceSSL = false; } @@ -188,7 +188,7 @@ protected function configureTranslations(ContainerBuilder $container, $enabled, protected function isConnected(Connection $conn) { try { - if (!$conn->ping()) { + if (!$conn->executeQuery('select 1')) { return false; } } catch (\Exception $e) { diff --git a/src/Eccube/DependencyInjection/Facade/TranslatorFacade.php b/src/Eccube/DependencyInjection/Facade/TranslatorFacade.php index 18bb1a81fe0..736dd9ef193 100644 --- a/src/Eccube/DependencyInjection/Facade/TranslatorFacade.php +++ b/src/Eccube/DependencyInjection/Facade/TranslatorFacade.php @@ -14,7 +14,7 @@ namespace Eccube\DependencyInjection\Facade; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Contracts\Translation\TranslatorInterface; class TranslatorFacade { diff --git a/src/Eccube/Doctrine/Common/CsvDataFixtures/CsvFixture.php b/src/Eccube/Doctrine/Common/CsvDataFixtures/CsvFixture.php index a95ad64af88..aa93333ea5a 100644 --- a/src/Eccube/Doctrine/Common/CsvDataFixtures/CsvFixture.php +++ b/src/Eccube/Doctrine/Common/CsvDataFixtures/CsvFixture.php @@ -14,8 +14,8 @@ namespace Eccube\Doctrine\Common\CsvDataFixtures; use Doctrine\Common\DataFixtures\FixtureInterface; -use Doctrine\Common\Persistence\ObjectManager; use Doctrine\DBAL\Connection; +use Doctrine\Persistence\ObjectManager; /** * CSVファイルを扱うためのフィクスチャ. @@ -114,14 +114,14 @@ public function load(ObjectManager $manager) // シーケンスの存在チェック $sql = 'SELECT COUNT(*) FROM information_schema.sequences WHERE sequence_name = ?'; - $count = $Connection->fetchColumn($sql, [$sequence_name]); + $count = $Connection->fetchOne($sql, [$sequence_name]); if ($count < 1) { return; } // シーケンスを更新 $sql = sprintf('SELECT MAX(%s) FROM %s', $pk_name, $table_name); - $max = $Connection->fetchColumn($sql); + $max = $Connection->fetchOne($sql); if (is_null($max)) { // レコードが無い場合は1を初期値に設定 $sql = sprintf("SELECT SETVAL('%s', 1, false)", $sequence_name); diff --git a/src/Eccube/Doctrine/EventSubscriber/InitSubscriber.php b/src/Eccube/Doctrine/EventSubscriber/InitSubscriber.php index 9cf5962aba1..799410a8a89 100644 --- a/src/Eccube/Doctrine/EventSubscriber/InitSubscriber.php +++ b/src/Eccube/Doctrine/EventSubscriber/InitSubscriber.php @@ -33,7 +33,7 @@ public function getSubscribedEvents() public function postConnect(ConnectionEventArgs $args) { $db = $args->getConnection(); - $platform = $args->getDatabasePlatform()->getName(); + $platform = $args->getConnection()->getDatabasePlatform()->getName(); if ($platform === 'mysql') { $db->executeQuery("SET SESSION time_zone = '+00:00'"); diff --git a/src/Eccube/Doctrine/EventSubscriber/SaveEventSubscriber.php b/src/Eccube/Doctrine/EventSubscriber/SaveEventSubscriber.php index aaad1388efb..395f7457849 100644 --- a/src/Eccube/Doctrine/EventSubscriber/SaveEventSubscriber.php +++ b/src/Eccube/Doctrine/EventSubscriber/SaveEventSubscriber.php @@ -14,8 +14,8 @@ namespace Eccube\Doctrine\EventSubscriber; use Doctrine\Common\EventSubscriber; -use Doctrine\Common\Persistence\Event\LifecycleEventArgs; use Doctrine\ORM\Events; +use Doctrine\ORM\Event\LifecycleEventArgs; use Eccube\Common\EccubeConfig; use Eccube\Entity\Member; use Eccube\Request\Context; diff --git a/src/Eccube/Doctrine/EventSubscriber/TaxRuleEventSubscriber.php b/src/Eccube/Doctrine/EventSubscriber/TaxRuleEventSubscriber.php index 54acbd51a0c..a967d4e5c89 100644 --- a/src/Eccube/Doctrine/EventSubscriber/TaxRuleEventSubscriber.php +++ b/src/Eccube/Doctrine/EventSubscriber/TaxRuleEventSubscriber.php @@ -14,7 +14,7 @@ namespace Eccube\Doctrine\EventSubscriber; use Doctrine\Common\EventSubscriber; -use Doctrine\Common\Persistence\Event\LifecycleEventArgs; +use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Events; use Eccube\Entity\ProductClass; use Eccube\Service\TaxRuleService; diff --git a/src/Eccube/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php b/src/Eccube/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php index dcb150e16a1..5a889591fff 100644 --- a/src/Eccube/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php +++ b/src/Eccube/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php @@ -13,7 +13,7 @@ namespace Eccube\Doctrine\ORM\Mapping\Driver; -use Doctrine\Common\Persistence\Mapping\MappingException; +use Doctrine\Persistence\Mapping\MappingException; class AnnotationDriver extends \Doctrine\ORM\Mapping\Driver\AnnotationDriver { diff --git a/src/Eccube/Doctrine/ORM/Query/Extract.php b/src/Eccube/Doctrine/ORM/Query/Extract.php index 89fce31bad6..f82c50d7969 100644 --- a/src/Eccube/Doctrine/ORM/Query/Extract.php +++ b/src/Eccube/Doctrine/ORM/Query/Extract.php @@ -92,20 +92,20 @@ public function parse(Parser $parser) public function getSql(SqlWalker $sqlWalker) { - $driver = $sqlWalker->getConnection()->getDriver()->getName(); + $driver = $sqlWalker->getConnection()->getDriver()->getDatabasePlatform()->getName(); // UTCとの時差(秒数) $diff = intval(date('Z')); $second = abs($diff); $op = ($diff === $second) ? '+' : '-'; switch ($driver) { - case 'pdo_sqlite': + case 'sqlite': $sql = sprintf( "CAST(STRFTIME('%s', DATETIME(%s, '${op}{$second} SECONDS')) AS INTEGER)", $this->formats[$this->field], $this->source->dispatch($sqlWalker)); break; - case 'pdo_pgsql': + case 'postgresql': $sql = sprintf( "EXTRACT(%s FROM %s %s $op INTERVAL '$second SECONDS')", $this->field, diff --git a/src/Eccube/Doctrine/ORM/Query/Normalize.php b/src/Eccube/Doctrine/ORM/Query/Normalize.php index 7d06206adc6..3447f8af526 100644 --- a/src/Eccube/Doctrine/ORM/Query/Normalize.php +++ b/src/Eccube/Doctrine/ORM/Query/Normalize.php @@ -34,11 +34,11 @@ public function parse(Parser $parser) public function getSql(SqlWalker $sqlWalker) { - switch ($sqlWalker->getConnection()->getDriver()->getName()) { - case 'pdo_pgsql': + switch ($sqlWalker->getConnection()->getDriver()->getDatabasePlatform()->getName()) { + case 'postgresql': $sql = sprintf("LOWER(TRANSLATE(%s, '%s', '%s'))", $this->string->dispatch($sqlWalker), self::FROM, self::TO); break; - case 'pdo_mysql': + case 'mysql': $sql = sprintf('CONVERT(%s USING utf8) COLLATE utf8_unicode_ci', $this->string->dispatch($sqlWalker)); break; default: diff --git a/src/Eccube/Entity/AbstractEntity.php b/src/Eccube/Entity/AbstractEntity.php index 64056946922..02d8f43dd90 100644 --- a/src/Eccube/Entity/AbstractEntity.php +++ b/src/Eccube/Entity/AbstractEntity.php @@ -14,7 +14,8 @@ namespace Eccube\Entity; use Doctrine\Common\Collections\Collection; -use Doctrine\Common\Inflector\Inflector; +use Doctrine\Inflector\Inflector; +use Doctrine\Inflector\NoopWordInflector; use Doctrine\ORM\Mapping\Id; use Doctrine\ORM\Mapping\MappedSuperclass; use Doctrine\ORM\Proxy\Proxy; @@ -29,7 +30,8 @@ abstract class AbstractEntity implements \ArrayAccess { public function offsetExists($offset) { - $method = Inflector::classify($offset); + $inflector = new Inflector(new NoopWordInflector(), new NoopWordInflector()); + $method = $inflector->classify($offset); return method_exists($this, $method) || method_exists($this, "get$method") @@ -43,7 +45,8 @@ public function offsetSet($offset, $value) public function offsetGet($offset) { - $method = Inflector::classify($offset); + $inflector = new Inflector(new NoopWordInflector(), new NoopWordInflector()); + $method = $inflector->classify($offset); if (method_exists($this, $method)) { return $this->$method(); @@ -196,7 +199,7 @@ public function toJSON(array $excludeAttribute = ['__initializer__', '__cloner__ public function toXML(array $excludeAttribute = ['__initializer__', '__cloner__', '__isInitialized__']) { $ReflectionClass = new \ReflectionClass($this); - $serializer = new Serializer([new PropertyNormalizer()], [new XmlEncoder($ReflectionClass->getShortName())]); + $serializer = new Serializer([new PropertyNormalizer()], [new XmlEncoder([XmlEncoder::ROOT_NODE_NAME => $ReflectionClass->getShortName()])]); $xml = $serializer->serialize($this->toNormalizedArray($excludeAttribute), 'xml'); if ('\\' === DIRECTORY_SEPARATOR) { diff --git a/src/Eccube/Entity/Customer.php b/src/Eccube/Entity/Customer.php index ce574aa8203..bfe689e074e 100644 --- a/src/Eccube/Entity/Customer.php +++ b/src/Eccube/Entity/Customer.php @@ -16,6 +16,7 @@ use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Security\Core\User\UserInterface; +use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Mapping\ClassMetadata; if (!class_exists('\Eccube\Entity\Customer')) { @@ -116,6 +117,12 @@ class Customer extends \Eccube\Entity\AbstractEntity implements UserInterface, \ */ private $birth; + /** + * @Assert\NotBlank() + * @Assert\Length(max=4096) + */ + private $plain_password; + /** * @var string|null * @@ -609,6 +616,25 @@ public function getBirth() return $this->birth; } + /** + * @param string|null $password + * @return $this + */ + public function setPlainPassword(?string $password): self + { + $this->plain_password = $password; + + return $this; + } + + /** + * @return string|null + */ + public function getPlainPassword(): ?string + { + return $this->plain_password; + } + /** * Set password. * diff --git a/src/Eccube/Entity/Product.php b/src/Eccube/Entity/Product.php index 88a7c09020d..8321d776600 100644 --- a/src/Eccube/Entity/Product.php +++ b/src/Eccube/Entity/Product.php @@ -417,7 +417,7 @@ public function getMainListImage() { $ProductImages = $this->getProductImage(); - return empty($ProductImages) ? null : $ProductImages[0]; + return $ProductImages->isEmpty() ? null : $ProductImages[0]; } public function getMainFileName() diff --git a/src/Eccube/Event/EventDispatcherWrapper.php b/src/Eccube/Event/EventDispatcherWrapper.php deleted file mode 100644 index 7d7d0553ee3..00000000000 --- a/src/Eccube/Event/EventDispatcherWrapper.php +++ /dev/null @@ -1,35 +0,0 @@ -twig = $twig; $this->requestContext = $requestContext; } - public function onKernelException(GetResponseForExceptionEvent $event) + public function onKernelException(ExceptionEvent $event) { $title = trans('exception.error_title'); $message = trans('exception.error_message'); $statusCode = Response::HTTP_INTERNAL_SERVER_ERROR; - $exception = $event->getException(); + $exception = $event->getThrowable(); if ($exception instanceof HttpExceptionInterface) { $statusCode = $exception->getStatusCode(); diff --git a/src/Eccube/EventListener/ForwardOnlyListener.php b/src/Eccube/EventListener/ForwardOnlyListener.php index 2eeea5a8ed1..00222abcdab 100644 --- a/src/Eccube/EventListener/ForwardOnlyListener.php +++ b/src/Eccube/EventListener/ForwardOnlyListener.php @@ -14,7 +14,7 @@ namespace Eccube\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\ControllerEvent; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\KernelEvents; @@ -30,9 +30,9 @@ class ForwardOnlyListener implements EventSubscriberInterface * * @param FilterControllerEvent $event */ - public function onController(FilterControllerEvent $event) + public function onController(ControllerEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } diff --git a/src/Eccube/EventListener/IpAddrListener.php b/src/Eccube/EventListener/IpAddrListener.php index b87c84d1f99..c413c40b704 100644 --- a/src/Eccube/EventListener/IpAddrListener.php +++ b/src/Eccube/EventListener/IpAddrListener.php @@ -16,7 +16,7 @@ use Eccube\Common\EccubeConfig; use Eccube\Request\Context; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; class IpAddrListener implements EventSubscriberInterface @@ -37,9 +37,9 @@ public function __construct(EccubeConfig $eccubeConfig, Context $requestContext) $this->requestContext = $requestContext; } - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } diff --git a/src/Eccube/EventListener/LogListener.php b/src/Eccube/EventListener/LogListener.php index 0440468e4fc..3bfd40425ea 100644 --- a/src/Eccube/EventListener/LogListener.php +++ b/src/Eccube/EventListener/LogListener.php @@ -15,11 +15,11 @@ use Psr\Log\LoggerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; -use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; -use Symfony\Component\HttpKernel\Event\PostResponseEvent; +use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Event\ExceptionEvent; +use Symfony\Component\HttpKernel\Event\TerminateEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; use Symfony\Component\HttpKernel\KernelEvents; @@ -62,11 +62,11 @@ public static function getSubscribedEvents() } /** - * @param GetResponseEvent $event + * @param RequestEvent $event */ - public function onKernelRequestEarly(GetResponseEvent $event) + public function onKernelRequestEarly(RequestEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -74,11 +74,11 @@ public function onKernelRequestEarly(GetResponseEvent $event) } /** - * @param GetResponseEvent $event + * @param ResponseEvent $event */ - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -99,11 +99,11 @@ private function getRoute($request) } /** - * @param FilterControllerEvent $event + * @param ControllerEvent $event */ - public function onKernelController(FilterControllerEvent $event) + public function onKernelController(ControllerEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -114,9 +114,9 @@ public function onKernelController(FilterControllerEvent $event) /** * @param FilterResponseEvent $event */ - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ResponseEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -127,18 +127,18 @@ public function onKernelResponse(FilterResponseEvent $event) /** * @param PostResponseEvent $event */ - public function onKernelTerminate(PostResponseEvent $event) + public function onKernelTerminate(TerminateEvent $event) { $route = $this->getRoute($event->getRequest()); $this->logger->debug('PROCESS END', [$route]); } /** - * @param GetResponseForExceptionEvent $event + * @param ExceptionEvent $event */ - public function onKernelException(GetResponseForExceptionEvent $event) + public function onKernelException(ExceptionEvent $event) { - $e = $event->getException(); + $e = $event->getThrowable(); if ($e instanceof HttpExceptionInterface && $e->getStatusCode() < 500) { $this->logger->info($e->getMessage(), [$e->getStatusCode()]); } else { diff --git a/src/Eccube/EventListener/MaintenanceListener.php b/src/Eccube/EventListener/MaintenanceListener.php index 07554ef997a..653a33501a9 100644 --- a/src/Eccube/EventListener/MaintenanceListener.php +++ b/src/Eccube/EventListener/MaintenanceListener.php @@ -18,7 +18,7 @@ use Eccube\Service\SystemService; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Cookie; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; class MaintenanceListener implements EventSubscriberInterface @@ -43,7 +43,7 @@ public static function getSubscribedEvents() ]; } - public function onResponse(FilterResponseEvent $event) + public function onResponse(ResponseEvent $event) { $response = $event->getResponse(); diff --git a/src/Eccube/EventListener/MobileTemplatePathListener.php b/src/Eccube/EventListener/MobileTemplatePathListener.php index b6a7bfc86f6..0d83c68b7cf 100644 --- a/src/Eccube/EventListener/MobileTemplatePathListener.php +++ b/src/Eccube/EventListener/MobileTemplatePathListener.php @@ -13,11 +13,11 @@ namespace Eccube\EventListener; +use Detection\MobileDetect; use Eccube\Common\EccubeConfig; use Eccube\Request\Context; -use SunCat\MobileDetectBundle\DeviceDetector\MobileDetector; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Twig\Environment; class MobileTemplatePathListener implements EventSubscriberInterface @@ -33,7 +33,7 @@ class MobileTemplatePathListener implements EventSubscriberInterface protected $twig; /** - * @var MobileDetector + * @var MobileDetect */ protected $detector; @@ -42,7 +42,7 @@ class MobileTemplatePathListener implements EventSubscriberInterface */ protected $eccubeConfig; - public function __construct(Context $context, Environment $twig, MobileDetector $detector, EccubeConfig $eccubeConfig) + public function __construct(Context $context, Environment $twig, MobileDetect $detector, EccubeConfig $eccubeConfig) { $this->context = $context; $this->twig = $twig; @@ -50,9 +50,9 @@ public function __construct(Context $context, Environment $twig, MobileDetector $this->eccubeConfig = $eccubeConfig; } - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } // 管理画面の場合は実行しない. @@ -75,8 +75,8 @@ public function onKernelRequest(GetResponseEvent $event) ]; } - $loader = new \Twig_Loader_Chain([ - new \Twig_Loader_Filesystem($paths), + $loader = new \Twig\Loader\ChainLoader([ + new \Twig\Loader\FilesystemLoader($paths), $this->twig->getLoader(), ]); diff --git a/src/Eccube/EventListener/TransactionListener.php b/src/Eccube/EventListener/TransactionListener.php index ed6fc0414d3..4e0b4dcac6c 100644 --- a/src/Eccube/EventListener/TransactionListener.php +++ b/src/Eccube/EventListener/TransactionListener.php @@ -18,9 +18,9 @@ use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; -use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; -use Symfony\Component\HttpKernel\Event\PostResponseEvent; +use Symfony\Component\HttpKernel\Event\ExceptionEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\Event\TerminateEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -61,9 +61,9 @@ public function disable() /** * Kernel request listener callback. * - * @param GetResponseEvent $event + * @param RequestEvent $event */ - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { if (!$this->isEnabled) { log_debug('Transaction Listener is disabled.'); @@ -71,7 +71,7 @@ public function onKernelRequest(GetResponseEvent $event) return; } - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -89,9 +89,9 @@ public function onKernelRequest(GetResponseEvent $event) /** * Kernel exception listener callback. * - * @param GetResponseForExceptionEvent $event + * @param ExceptionEvent $event */ - public function onKernelException(GetResponseForExceptionEvent $event) + public function onKernelException(ExceptionEvent $event) { if (!$this->isEnabled) { log_debug('Transaction Listener is disabled.'); @@ -99,7 +99,7 @@ public function onKernelException(GetResponseForExceptionEvent $event) return; } - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -116,7 +116,7 @@ public function onKernelException(GetResponseForExceptionEvent $event) * * @param PostResponseEvent $event */ - public function onKernelTerminate(PostResponseEvent $event) + public function onKernelTerminate(TerminateEvent $event) { if (!$this->isEnabled) { log_debug('Transaction Listener is disabled.'); diff --git a/src/Eccube/EventListener/TwigInitializeListener.php b/src/Eccube/EventListener/TwigInitializeListener.php index 57a889fccd7..67817e547bc 100644 --- a/src/Eccube/EventListener/TwigInitializeListener.php +++ b/src/Eccube/EventListener/TwigInitializeListener.php @@ -13,6 +13,7 @@ namespace Eccube\EventListener; +use Detection\MobileDetect; use Doctrine\ORM\NoResultException; use Eccube\Common\EccubeConfig; use Eccube\Entity\AuthorityRole; @@ -30,9 +31,8 @@ use Eccube\Repository\PageRepository; use Eccube\Request\Context; use Eccube\Service\SystemService; -use SunCat\MobileDetectBundle\DeviceDetector\MobileDetector; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Twig\Environment; @@ -90,7 +90,7 @@ class TwigInitializeListener implements EventSubscriberInterface private $eccubeConfig; /** - * @var MobileDetector + * @var MobileDetect */ private $mobileDetector; @@ -122,7 +122,7 @@ public function __construct( AuthorityRoleRepository $authorityRoleRepository, EccubeConfig $eccubeConfig, Context $context, - MobileDetector $mobileDetector, + MobileDetect $mobileDetector, UrlGeneratorInterface $router, LayoutRepository $layoutRepository, SystemService $systemService @@ -146,7 +146,7 @@ public function __construct( * @throws NoResultException * @throws \Doctrine\ORM\NonUniqueResultException */ - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { if ($this->initialized) { return; @@ -166,7 +166,7 @@ public function onKernelRequest(GetResponseEvent $event) /** * @throws \Doctrine\ORM\NonUniqueResultException */ - public function setFrontVariables(GetResponseEvent $event) + public function setFrontVariables(RequestEvent $event) { $request = $event->getRequest(); /** @var \Symfony\Component\HttpFoundation\ParameterBag $attributes */ @@ -237,7 +237,7 @@ public function setFrontVariables(GetResponseEvent $event) $this->twig->addGlobal('isMaintenance', $this->systemService->isMaintenanceMode()); } - public function setAdminGlobals(GetResponseEvent $event) + public function setAdminGlobals(RequestEvent $event) { // メニュー表示用配列. $menus = []; diff --git a/src/Eccube/EventListener/TwoFactorAuthListener.php b/src/Eccube/EventListener/TwoFactorAuthListener.php index 1788cbf5356..86b77692ca8 100644 --- a/src/Eccube/EventListener/TwoFactorAuthListener.php +++ b/src/Eccube/EventListener/TwoFactorAuthListener.php @@ -19,7 +19,7 @@ use Eccube\Service\TwoFactorAuthService; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\RedirectResponse; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; @@ -69,11 +69,11 @@ public function __construct( } /** - * @param FilterControllerEvent $event + * @param ControllerArgumentsEvent $event */ - public function onKernelController(FilterControllerEvent $event) + public function onKernelController(ControllerArgumentsEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } diff --git a/src/Eccube/Form/DataTransformer/EntityToIdTransformer.php b/src/Eccube/Form/DataTransformer/EntityToIdTransformer.php index e7955f81a7a..a311000b137 100644 --- a/src/Eccube/Form/DataTransformer/EntityToIdTransformer.php +++ b/src/Eccube/Form/DataTransformer/EntityToIdTransformer.php @@ -13,7 +13,7 @@ namespace Eccube\Form\DataTransformer; -use Doctrine\Common\Persistence\ObjectManager; +use Doctrine\Persistence\ObjectManager; use Symfony\Component\Form\DataTransformerInterface; use Symfony\Component\Form\Exception\TransformationFailedException; diff --git a/src/Eccube/Form/Type/AddCartType.php b/src/Eccube/Form/Type/AddCartType.php index c30e8bd98c4..6c78a04e674 100644 --- a/src/Eccube/Form/Type/AddCartType.php +++ b/src/Eccube/Form/Type/AddCartType.php @@ -13,7 +13,7 @@ namespace Eccube\Form\Type; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; use Doctrine\ORM\EntityManager; use Eccube\Common\EccubeConfig; use Eccube\Entity\CartItem; diff --git a/src/Eccube/Form/Type/Admin/CalendarType.php b/src/Eccube/Form/Type/Admin/CalendarType.php index 0539c0a94b4..984e5138bba 100644 --- a/src/Eccube/Form/Type/Admin/CalendarType.php +++ b/src/Eccube/Form/Type/Admin/CalendarType.php @@ -69,7 +69,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => true, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', diff --git a/src/Eccube/Form/Type/Admin/CustomerType.php b/src/Eccube/Form/Type/Admin/CustomerType.php index bd08832ceeb..3264020fdaa 100644 --- a/src/Eccube/Form/Type/Admin/CustomerType.php +++ b/src/Eccube/Form/Type/Admin/CustomerType.php @@ -88,7 +88,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => true, 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], 'attr' => [ 'placeholder' => 'common.mail_address_sample', @@ -105,7 +105,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'input' => 'datetime', 'years' => range(date('Y'), date('Y') - $this->eccubeConfig['eccube_birth_max']), 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'constraints' => [ new Assert\LessThanOrEqual([ @@ -114,7 +113,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ]), ], ]) - ->add('password', RepeatedPasswordType::class, [ + ->add('plain_password', RepeatedPasswordType::class, [ // 'type' => 'password', 'first_options' => [ 'label' => 'member.label.pass', @@ -155,8 +154,8 @@ public function buildForm(FormBuilderInterface $builder, array $options) $form = $event->getForm(); /** @var Customer $Customer */ $Customer = $event->getData(); - if ($Customer->getPassword() != '' && $Customer->getPassword() == $Customer->getEmail()) { - $form['password']['first']->addError(new FormError(trans('common.password_eq_email'))); + if ($Customer->getPlainPassword() != '' && $Customer->getPlainPassword() == $Customer->getEmail()) { + $form['plain_password']['first']->addError(new FormError(trans('common.password_eq_email'))); } }); diff --git a/src/Eccube/Form/Type/Admin/MasterdataType.php b/src/Eccube/Form/Type/Admin/MasterdataType.php index e9761567953..30d36f5a535 100644 --- a/src/Eccube/Form/Type/Admin/MasterdataType.php +++ b/src/Eccube/Form/Type/Admin/MasterdataType.php @@ -53,7 +53,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $masterdata = []; /** @var MappingDriverChain $driverChain */ - $driverChain = $this->entityManager->getConfiguration()->getMetadataDriverImpl(); + $driverChain = $this->entityManager->getConfiguration()->getMetadataDriverImpl()->getDriver(); /** @var MappingDriver[] $drivers */ $drivers = $driverChain->getDrivers(); diff --git a/src/Eccube/Form/Type/Admin/NewsType.php b/src/Eccube/Form/Type/Admin/NewsType.php index 23c88c05676..9f9107296ca 100644 --- a/src/Eccube/Form/Type/Admin/NewsType.php +++ b/src/Eccube/Form/Type/Admin/NewsType.php @@ -46,7 +46,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) ->add('publish_date', DateTimeType::class, [ 'date_widget' => 'choice', 'input' => 'datetime', - 'format' => 'yyyy-MM-dd hh:mm', 'years' => range($this->eccubeConfig['eccube_news_start_year'], date('Y') + 3), 'constraints' => [ new Assert\NotBlank(), diff --git a/src/Eccube/Form/Type/Admin/OrderItemType.php b/src/Eccube/Form/Type/Admin/OrderItemType.php index 63f7ad13f19..d3cf5393a03 100644 --- a/src/Eccube/Form/Type/Admin/OrderItemType.php +++ b/src/Eccube/Form/Type/Admin/OrderItemType.php @@ -310,7 +310,7 @@ public function getBlockPrefix() */ protected function addErrorsIfExists(FormInterface $form, ConstraintViolationListInterface $errors) { - if (empty($errors)) { + if (count($errors) < 1) { return; } diff --git a/src/Eccube/Form/Type/Admin/OrderPdfType.php b/src/Eccube/Form/Type/Admin/OrderPdfType.php index 4f43e6052eb..5746308043c 100644 --- a/src/Eccube/Form/Type/Admin/OrderPdfType.php +++ b/src/Eccube/Form/Type/Admin/OrderPdfType.php @@ -70,12 +70,10 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'widget' => 'single_text', 'input' => 'datetime', 'required' => true, - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'data' => new \DateTime(), 'constraints' => [ - new Assert\NotBlank(), - new Assert\DateTime(), + new Assert\NotBlank() ], 'attr' => [ 'data-target' => '#'.$this->getBlockPrefix().'_issue_date', diff --git a/src/Eccube/Form/Type/Admin/OrderType.php b/src/Eccube/Form/Type/Admin/OrderType.php index 62bb3d1bb46..c9e26d50857 100644 --- a/src/Eccube/Form/Type/Admin/OrderType.php +++ b/src/Eccube/Form/Type/Admin/OrderType.php @@ -156,7 +156,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]) ->add('phone_number', PhoneNumberType::class, [ diff --git a/src/Eccube/Form/Type/Admin/SearchCustomerType.php b/src/Eccube/Form/Type/Admin/SearchCustomerType.php index 27e1cb9fcb7..f38824b5475 100644 --- a/src/Eccube/Form/Type/Admin/SearchCustomerType.php +++ b/src/Eccube/Form/Type/Admin/SearchCustomerType.php @@ -102,7 +102,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -115,7 +114,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -177,7 +175,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -190,7 +187,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_create_datetime_start', @@ -202,7 +198,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -215,7 +210,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_create_datetime_end', @@ -227,7 +221,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -240,7 +233,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_update_datetime_start', @@ -252,7 +244,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -265,7 +256,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_update_datetime_end', @@ -277,7 +267,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -290,7 +279,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_last_buy_datetime_start', @@ -302,7 +290,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -315,7 +302,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_last_buy_datetime_end', diff --git a/src/Eccube/Form/Type/Admin/SearchLoginHistoryType.php b/src/Eccube/Form/Type/Admin/SearchLoginHistoryType.php index ebfb51d25d4..b768bdac0c6 100644 --- a/src/Eccube/Form/Type/Admin/SearchLoginHistoryType.php +++ b/src/Eccube/Form/Type/Admin/SearchLoginHistoryType.php @@ -76,7 +76,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_create_datetime_start', @@ -88,7 +87,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_create_datetime_end', diff --git a/src/Eccube/Form/Type/Admin/SearchOrderType.php b/src/Eccube/Form/Type/Admin/SearchOrderType.php index 4fccb6c6504..7195632301c 100644 --- a/src/Eccube/Form/Type/Admin/SearchOrderType.php +++ b/src/Eccube/Form/Type/Admin/SearchOrderType.php @@ -122,7 +122,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -135,7 +134,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_order_datetime_start', @@ -147,7 +145,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -160,7 +157,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_order_datetime_end', @@ -172,7 +168,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -185,7 +180,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_payment_datetime_start', @@ -197,7 +191,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -210,7 +203,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_payment_datetime_end', @@ -222,7 +214,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -235,7 +226,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_update_datetime_start', @@ -247,7 +237,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -260,7 +249,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_update_datetime_end', @@ -272,7 +260,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -285,7 +272,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_shipping_delivery_datetime_start', @@ -297,7 +283,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -310,7 +295,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_shipping_delivery_datetime_end', diff --git a/src/Eccube/Form/Type/Admin/SearchProductType.php b/src/Eccube/Form/Type/Admin/SearchProductType.php index 3ef10962883..846958f8b0d 100644 --- a/src/Eccube/Form/Type/Admin/SearchProductType.php +++ b/src/Eccube/Form/Type/Admin/SearchProductType.php @@ -120,7 +120,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -133,7 +132,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_create_datetime_start', @@ -145,7 +143,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -158,7 +155,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_create_datetime_end', @@ -170,7 +166,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -183,7 +178,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_update_datetime_start', @@ -195,7 +189,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'attr' => [ 'class' => 'datetimepicker-input', @@ -208,7 +201,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'input' => 'datetime', 'widget' => 'single_text', - 'format' => 'yyyy-MM-dd HH:mm:ss', 'attr' => [ 'class' => 'datetimepicker-input', 'data-target' => '#'.$this->getBlockPrefix().'_update_datetime_end', diff --git a/src/Eccube/Form/Type/Admin/ShippingType.php b/src/Eccube/Form/Type/Admin/ShippingType.php index a50a4c7a07a..46488b0978c 100644 --- a/src/Eccube/Form/Type/Admin/ShippingType.php +++ b/src/Eccube/Form/Type/Admin/ShippingType.php @@ -177,7 +177,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) ]) ->add('shipping_delivery_date', DateType::class, [ 'placeholder' => '', - 'format' => 'yyyy-MM-dd', 'required' => false, ]) ->add('tracking_number', TextType::class, [ diff --git a/src/Eccube/Form/Type/Admin/ShopMasterType.php b/src/Eccube/Form/Type/Admin/ShopMasterType.php index 21156d01296..8740c32646c 100644 --- a/src/Eccube/Form/Type/Admin/ShopMasterType.php +++ b/src/Eccube/Form/Type/Admin/ShopMasterType.php @@ -106,28 +106,28 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]) ->add('email02', EmailType::class, [ 'required' => false, 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]) ->add('email03', EmailType::class, [ 'required' => false, 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]) ->add('email04', EmailType::class, [ 'required' => false, 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]) ->add('good_traded', TextareaType::class, [ diff --git a/src/Eccube/Form/Type/Admin/TaxRuleType.php b/src/Eccube/Form/Type/Admin/TaxRuleType.php index 9391d4fd117..a2c1b67444e 100644 --- a/src/Eccube/Form/Type/Admin/TaxRuleType.php +++ b/src/Eccube/Form/Type/Admin/TaxRuleType.php @@ -61,7 +61,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) ->add('apply_date', DateTimeType::class, [ 'date_widget' => 'choice', 'input' => 'datetime', - 'format' => 'yyyy-MM-dd HH:mm', 'years' => range(date('Y'), date('Y') + 10), 'placeholder' => [ 'year' => '----', 'month' => '--', 'day' => '--', diff --git a/src/Eccube/Form/Type/Front/ContactType.php b/src/Eccube/Form/Type/Front/ContactType.php index 49bf97361a1..7d3096dd206 100644 --- a/src/Eccube/Form/Type/Front/ContactType.php +++ b/src/Eccube/Form/Type/Front/ContactType.php @@ -67,7 +67,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ->add('email', EmailType::class, [ 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]) ->add('contents', TextareaType::class, [ diff --git a/src/Eccube/Form/Type/Front/CustomerLoginType.php b/src/Eccube/Form/Type/Front/CustomerLoginType.php index a60121c82aa..6dd331edfcd 100644 --- a/src/Eccube/Form/Type/Front/CustomerLoginType.php +++ b/src/Eccube/Form/Type/Front/CustomerLoginType.php @@ -52,7 +52,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ], 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], 'data' => $this->authenticationUtils->getLastUsername(), ]); diff --git a/src/Eccube/Form/Type/Front/EntryType.php b/src/Eccube/Form/Type/Front/EntryType.php index 654c452e3bf..199a3a9fecd 100644 --- a/src/Eccube/Form/Type/Front/EntryType.php +++ b/src/Eccube/Form/Type/Front/EntryType.php @@ -76,13 +76,12 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => true, ]) ->add('email', RepeatedEmailType::class) - ->add('password', RepeatedPasswordType::class) + ->add('plain_password', RepeatedPasswordType::class) ->add('birth', BirthdayType::class, [ 'required' => false, 'input' => 'datetime', 'years' => range(date('Y'), date('Y') - $this->eccubeConfig['eccube_birth_max']), 'widget' => 'choice', - 'format' => 'yyyy/MM/dd', 'placeholder' => ['year' => '----', 'month' => '--', 'day' => '--'], 'constraints' => [ new Assert\LessThanOrEqual([ @@ -119,8 +118,8 @@ public function buildForm(FormBuilderInterface $builder, array $options) $form = $event->getForm(); /** @var Customer $Customer */ $Customer = $event->getData(); - if ($Customer->getPassword() != '' && $Customer->getPassword() == $Customer->getEmail()) { - $form['password']['first']->addError(new FormError(trans('common.password_eq_email'))); + if ($Customer->getPlainPassword() != '' && $Customer->getPlainPassword() == $Customer->getEmail()) { + $form['plain_password']['first']->addError(new FormError(trans('common.password_eq_email'))); } }); } diff --git a/src/Eccube/Form/Type/Front/ForgotType.php b/src/Eccube/Form/Type/Front/ForgotType.php index 48a1423be4e..3bac4a9a017 100644 --- a/src/Eccube/Form/Type/Front/ForgotType.php +++ b/src/Eccube/Form/Type/Front/ForgotType.php @@ -51,7 +51,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ], 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]); } diff --git a/src/Eccube/Form/Type/Front/PasswordResetType.php b/src/Eccube/Form/Type/Front/PasswordResetType.php index bc699c64605..cb9fba6782b 100644 --- a/src/Eccube/Form/Type/Front/PasswordResetType.php +++ b/src/Eccube/Form/Type/Front/PasswordResetType.php @@ -52,7 +52,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ], 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ])->add('password', RepeatedPasswordType::class); diff --git a/src/Eccube/Form/Type/Install/Step3Type.php b/src/Eccube/Form/Type/Install/Step3Type.php index c6c608190f8..0c26f9ee4f4 100644 --- a/src/Eccube/Form/Type/Install/Step3Type.php +++ b/src/Eccube/Form/Type/Install/Step3Type.php @@ -64,7 +64,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'label' => trans('install.mail_address'), 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]) ->add('login_id', TextType::class, [ diff --git a/src/Eccube/Form/Type/Master/PageMaxType.php b/src/Eccube/Form/Type/Master/PageMaxType.php index 499e5d4554b..758f654ad30 100644 --- a/src/Eccube/Form/Type/Master/PageMaxType.php +++ b/src/Eccube/Form/Type/Master/PageMaxType.php @@ -13,6 +13,8 @@ namespace Eccube\Form\Type\Master; +use Doctrine\ORM\EntityManagerInterface; +use Eccube\Entity\Master\PageMax; use Eccube\Form\Type\MasterType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; @@ -22,6 +24,14 @@ class PageMaxType extends AbstractType { + /** @var EntityManagerInterface */ + private $entityManager; + + public function __construct(EntityManagerInterface $entityManager) + { + $this->entityManager = $entityManager; + } + /** * {@inheritdoc} */ @@ -30,7 +40,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $options = $event->getForm()->getConfig()->getOptions(); if (!$event->getData()) { - $data = current(array_keys($options['choice_loader']->loadChoiceList()->getValues())); + $data = current($options['choice_loader']->loadChoiceList()->getChoices()); $event->setData($data); } }); @@ -50,7 +60,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ - 'class' => 'Eccube\Entity\Master\PageMax', + 'class' => PageMax::class, ]); } diff --git a/src/Eccube/Form/Type/Master/ProductListMaxType.php b/src/Eccube/Form/Type/Master/ProductListMaxType.php index 715dce5dc8d..119e4b75ce9 100644 --- a/src/Eccube/Form/Type/Master/ProductListMaxType.php +++ b/src/Eccube/Form/Type/Master/ProductListMaxType.php @@ -14,6 +14,7 @@ namespace Eccube\Form\Type\Master; use Eccube\Form\Type\MasterType; +use Eccube\Entity\Master\ProductListMax; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormEvent; @@ -27,19 +28,10 @@ class ProductListMaxType extends AbstractType */ public function buildForm(FormBuilderInterface $builder, array $options) { - $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { - $options = $event->getForm()->getConfig()->getOptions(); - if (!$event->getData()) { - $data = current(array_keys($options['choice_loader']->loadChoiceList()->getValues())); - $event->setData($data); - } - }); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $options = $event->getForm()->getConfig()->getOptions(); - $values = $options['choice_loader']->loadChoiceList()->getValues(); - if (!in_array($event->getData(), $values)) { - $data = current($values); - $event->setData($data); + if ($event->getData() === null) { + $event->setData((string)$options['choices'][0]->getId()); } }); } @@ -50,7 +42,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ - 'class' => 'Eccube\Entity\Master\ProductListMax', + 'class' => ProductListMax::class, ]); } diff --git a/src/Eccube/Form/Type/Master/ProductListOrderByType.php b/src/Eccube/Form/Type/Master/ProductListOrderByType.php index d9ed2d093b6..7674d409f14 100644 --- a/src/Eccube/Form/Type/Master/ProductListOrderByType.php +++ b/src/Eccube/Form/Type/Master/ProductListOrderByType.php @@ -13,6 +13,7 @@ namespace Eccube\Form\Type\Master; +use Eccube\Entity\Master\ProductListOrderBy; use Eccube\Form\Type\MasterType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; @@ -27,19 +28,10 @@ class ProductListOrderByType extends AbstractType */ public function buildForm(FormBuilderInterface $builder, array $options) { - $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { - $options = $event->getForm()->getConfig()->getOptions(); - if (!$event->getData()) { - $data = current(array_keys($options['choice_loader']->loadChoiceList()->getValues())); - $event->setData($data); - } - }); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $options = $event->getForm()->getConfig()->getOptions(); - $values = $options['choice_loader']->loadChoiceList()->getValues(); - if (!in_array($event->getData(), $values)) { - $data = current($values); - $event->setData($data); + if ($event->getData() === null) { + $event->setData((string)$options['choices'][0]->getId()); } }); } @@ -50,7 +42,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ - 'class' => 'Eccube\Entity\Master\ProductListOrderBy', + 'class' => ProductListOrderBy::class, ]); } diff --git a/src/Eccube/Form/Type/PriceType.php b/src/Eccube/Form/Type/PriceType.php index ff695d2e806..48ca6398cea 100644 --- a/src/Eccube/Form/Type/PriceType.php +++ b/src/Eccube/Form/Type/PriceType.php @@ -17,7 +17,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\MoneyType; -use Symfony\Component\Intl\Intl; +use Symfony\Component\Intl\Currencies; use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\NotBlank; @@ -52,7 +52,7 @@ public function __construct(EccubeConfig $eccubeConfig, ContainerInterface $cont public function configureOptions(OptionsResolver $resolver) { $currency = $this->container->getParameter('currency'); - $scale = Intl::getCurrencyBundle()->getFractionDigits($currency); + $scale = Currencies::getFractionDigits($currency); $max = $this->eccubeConfig['eccube_price_max']; $min = -$max; diff --git a/src/Eccube/Form/Type/RepeatedEmailType.php b/src/Eccube/Form/Type/RepeatedEmailType.php index d6ce76761a7..f0f5853ef94 100644 --- a/src/Eccube/Form/Type/RepeatedEmailType.php +++ b/src/Eccube/Form/Type/RepeatedEmailType.php @@ -51,7 +51,7 @@ public function configureOptions(OptionsResolver $resolver) 'options' => [ 'constraints' => [ new Assert\NotBlank(), - new Email(['strict' => $this->eccubeConfig['eccube_rfc_email_check']]), + new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), new Assert\Length([ 'max' => $this->eccubeConfig['eccube_stext_len'], ]), diff --git a/src/Eccube/Form/Type/SearchProductType.php b/src/Eccube/Form/Type/SearchProductType.php index a5bf9be8bda..3e0bddcf5be 100644 --- a/src/Eccube/Form/Type/SearchProductType.php +++ b/src/Eccube/Form/Type/SearchProductType.php @@ -13,6 +13,9 @@ namespace Eccube\Form\Type; +use Doctrine\ORM\EntityManagerInterface; +use Eccube\Entity\Master\ProductListOrderBy; +use Eccube\Entity\Master\ProductListMax; use Eccube\Form\Type\Master\ProductListMaxType; use Eccube\Form\Type\Master\ProductListOrderByType; use Eccube\Repository\CategoryRepository; @@ -30,14 +33,20 @@ class SearchProductType extends AbstractType */ protected $categoryRepository; + /** + * @var EntityManagerInterface + */ + protected $entityManager; + /** * SearchProductType constructor. * * @param CategoryRepository $categoryRepository */ - public function __construct(CategoryRepository $categoryRepository) + public function __construct(CategoryRepository $categoryRepository, EntityManagerInterface $entityManager) { $this->categoryRepository = $categoryRepository; + $this->entityManager = $entityManager; } /** @@ -67,9 +76,11 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add('pageno', HiddenType::class, []); $builder->add('disp_number', ProductListMaxType::class, [ 'label' => false, + 'choices' => $this->entityManager->getRepository(ProductListMax::class)->findBy([], ['sort_no' => 'ASC']) ]); $builder->add('orderby', ProductListOrderByType::class, [ 'label' => false, + 'choices' => $this->entityManager->getRepository(ProductListOrderBy::class)->findBy([], ['sort_no' => 'ASC']) ]); } diff --git a/src/Eccube/Form/Validator/EmailValidator.php b/src/Eccube/Form/Validator/EmailValidator.php index eefecb54683..dc61d8befd9 100644 --- a/src/Eccube/Form/Validator/EmailValidator.php +++ b/src/Eccube/Form/Validator/EmailValidator.php @@ -37,8 +37,8 @@ public function validate($value, Constraint $constraint) throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Email'); } - if ($constraint->strict) { - $baseEmailValidator = new BaseEmailValidator($constraint->strict); + if ($constraint->mode === Email::VALIDATION_MODE_STRICT) { + $baseEmailValidator = new BaseEmailValidator(Email::VALIDATION_MODE_STRICT); $baseEmailValidator->initialize($this->context); $baseEmailValidator->validate($value, $constraint); @@ -62,50 +62,5 @@ public function validate($value, Constraint $constraint) ->setCode(Email::INVALID_FORMAT_ERROR) ->addViolation(); } - - $host = (string) substr($value, strrpos($value, '@') + 1); - - // Check for host DNS resource records - if ($constraint->checkMX) { - if (!$this->checkMX($host)) { - $this->context->buildViolation($constraint->message) - ->setParameter('{{ value }}', $this->formatValue($value)) - ->setCode(Email::MX_CHECK_FAILED_ERROR) - ->addViolation(); - } - - return; - } - - if ($constraint->checkHost && !$this->checkHost($host)) { - $this->context->buildViolation($constraint->message) - ->setParameter('{{ value }}', $this->formatValue($value)) - ->setCode(Email::HOST_CHECK_FAILED_ERROR) - ->addViolation(); - } - } - - /** - * Check DNS Records for MX type. - * - * @param string $host Host - * - * @return bool - */ - private function checkMX($host) - { - return '' !== $host && checkdnsrr($host, 'MX'); - } - - /** - * Check if one of MX, A or AAAA DNS RR exists. - * - * @param string $host Host - * - * @return bool - */ - private function checkHost($host) - { - return '' !== $host && ($this->checkMX($host) || (checkdnsrr($host, 'A') || checkdnsrr($host, 'AAAA'))); } } diff --git a/src/Eccube/Form/Validator/TwigLintValidator.php b/src/Eccube/Form/Validator/TwigLintValidator.php index 252242c1628..4f336f1bcad 100644 --- a/src/Eccube/Form/Validator/TwigLintValidator.php +++ b/src/Eccube/Form/Validator/TwigLintValidator.php @@ -22,16 +22,16 @@ class TwigLintValidator extends ConstraintValidator { /** - * @var \Twig_Environment + * @var \Twig\Environment */ protected $twig; /** * TwigLintValidator constructor. * - * @param \Twig_Environment $twig + * @param \Twig\Environment $twig */ - public function __construct(\Twig_Environment $twig) + public function __construct(\Twig\Environment $twig) { $this->twig = $twig; } diff --git a/src/Eccube/Kernel.php b/src/Eccube/Kernel.php index 33e7b7dc1c6..a7e0f2d5ee3 100644 --- a/src/Eccube/Kernel.php +++ b/src/Eccube/Kernel.php @@ -58,6 +58,13 @@ class Kernel extends BaseKernel const CONFIG_EXTS = '.{php,xml,yaml,yml}'; + public function __construct(string $environment, bool $debug) + { + parent::__construct($environment, $debug); + + $this->loadEntityProxies(); + } + public function getCacheDir() { return $this->getProjectDir().'/var/cache/'.$this->environment; @@ -108,7 +115,7 @@ public function registerBundles() public function boot() { // Symfonyがsrc/Eccube/Entity以下を読み込む前にapp/proxy/entity以下をロードする - $this->loadEntityProxies(); + //$this->loadEntityProxies(); parent::boot(); @@ -118,22 +125,15 @@ public function boot() $timezone = $container->getParameter('timezone'); UTCDateTimeType::setTimeZone($timezone); UTCDateTimeTzType::setTimeZone($timezone); - date_default_timezone_set($timezone); - // RFC違反のメールを送信できるよう独自のValidationを設定 - if (!$container->getParameter('eccube_rfc_email_check')) { - // RFC違反のメールを許容する - \Swift_DependencyContainer::getInstance() - ->register('email.validator') - ->asSharedInstanceOf(NoRFCEmailValidator::class); - } + date_default_timezone_set($timezone); $Logger = $container->get('eccube.logger'); if ($Logger !== null && $Logger instanceof \Eccube\Log\Logger) { LoggerFacade::init($container, $Logger); } $Translator = $container->get('translator'); - if ($Translator !== null && $Translator instanceof \Symfony\Component\Translation\TranslatorInterface) { + if ($Translator !== null && $Translator instanceof \Symfony\Contracts\Translation\TranslatorInterface) { TranslatorFacade::init($Translator); } diff --git a/src/Eccube/Plugin/AbstractPluginManager.php b/src/Eccube/Plugin/AbstractPluginManager.php index 0681b5a7635..387d4d2fbd6 100644 --- a/src/Eccube/Plugin/AbstractPluginManager.php +++ b/src/Eccube/Plugin/AbstractPluginManager.php @@ -14,8 +14,12 @@ namespace Eccube\Plugin; use Doctrine\DBAL\Connection; -use Doctrine\DBAL\Migrations\Configuration\Configuration; -use Doctrine\DBAL\Migrations\Migration; +use Doctrine\Migrations\Configuration\Configuration; +use Doctrine\Migrations\Configuration\Connection\ExistingConnection; +use Doctrine\Migrations\Configuration\Migration\ExistingConfiguration; +use Doctrine\Migrations\DependencyFactory; +use Doctrine\Migrations\Metadata\Storage\TableMetadataStorageConfiguration; +use Doctrine\Migrations\MigratorConfiguration; use Symfony\Component\DependencyInjection\ContainerInterface; abstract class AbstractPluginManager @@ -42,13 +46,39 @@ public function migration(Connection $connection, $pluginCode, $version = null, if (null === $migrationFilePath) { $migrationFilePath = __DIR__.'/../../../app/Plugin/'.$pluginCode.'/DoctrineMigrations'; } - $config = new Configuration($connection); - $config->setMigrationsNamespace('\Plugin\\'.$pluginCode.'\DoctrineMigrations'); - $config->setMigrationsDirectory($migrationFilePath); - $config->registerMigrationsFromDirectory($migrationFilePath); - $config->setMigrationsTableName(self::MIGRATION_TABLE_PREFIX.$pluginCode); - $migration = new Migration($config); - $migration->migrate($version, false); + + if (null == $version) { + $version = 'latest'; + } + + $migrationNamespace = 'Plugin\\'.$pluginCode.'\\DoctrineMigrations'; + $migrationTableName = self::MIGRATION_TABLE_PREFIX.strtolower($pluginCode); + $configuration = new Configuration(); + $configuration->addMigrationsDirectory($migrationNamespace, $migrationFilePath); + $configuration->setAllOrNothing(false); + $configuration->setCheckDatabasePlatform(false); + + $storageConfiguration = new TableMetadataStorageConfiguration(); + $storageConfiguration->setTableName($migrationTableName); + $configuration->setMetadataStorageConfiguration($storageConfiguration); + + $dependencyFactory = DependencyFactory::fromConnection( + new ExistingConfiguration($configuration), + new ExistingConnection($connection) + ); + + $dependencyFactory->getMetadataStorage()->ensureInitialized(); + + $migratorConfiguration = (new MigratorConfiguration()) + ->setDryRun(false) + ->setTimeAllQueries(false) + ->setAllOrNothing(false); + + $version = $dependencyFactory->getVersionAliasResolver()->resolveVersionAlias($version); + $planCalculator = $dependencyFactory->getMigrationPlanCalculator(); + $plan = $planCalculator->getPlanUntilVersion($version); + $migrator = $dependencyFactory->getMigrator(); + $migrator->migrate($plan, $migratorConfiguration); } /** diff --git a/src/Eccube/Repository/AuthorityRoleRepository.php b/src/Eccube/Repository/AuthorityRoleRepository.php index d4145719b82..1aecccc8fd0 100644 --- a/src/Eccube/Repository/AuthorityRoleRepository.php +++ b/src/Eccube/Repository/AuthorityRoleRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\AuthorityRole; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * AuthorityRoleRepository diff --git a/src/Eccube/Repository/BaseInfoRepository.php b/src/Eccube/Repository/BaseInfoRepository.php index 7e570e5fbe0..71d6395ae29 100644 --- a/src/Eccube/Repository/BaseInfoRepository.php +++ b/src/Eccube/Repository/BaseInfoRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\BaseInfo; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * BaseInfoRepository diff --git a/src/Eccube/Repository/BlockPositionRepository.php b/src/Eccube/Repository/BlockPositionRepository.php index b1be500d190..e2a291e3299 100644 --- a/src/Eccube/Repository/BlockPositionRepository.php +++ b/src/Eccube/Repository/BlockPositionRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\BlockPosition; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * BlockPositionRepository diff --git a/src/Eccube/Repository/BlockRepository.php b/src/Eccube/Repository/BlockRepository.php index f81cc0a06ae..db42d753b42 100644 --- a/src/Eccube/Repository/BlockRepository.php +++ b/src/Eccube/Repository/BlockRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Common\EccubeConfig; use Eccube\Entity\Block; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * BlocRepository diff --git a/src/Eccube/Repository/CalendarRepository.php b/src/Eccube/Repository/CalendarRepository.php index a723f257f4f..97de1583fd9 100644 --- a/src/Eccube/Repository/CalendarRepository.php +++ b/src/Eccube/Repository/CalendarRepository.php @@ -17,8 +17,8 @@ use Doctrine\ORM\NoResultException; use Doctrine\ORM\OptimisticLockException; use Doctrine\ORM\ORMException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Calendar; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CalendarRepository diff --git a/src/Eccube/Repository/CartItemRepository.php b/src/Eccube/Repository/CartItemRepository.php index 44f282d31ef..d8b05ff38c1 100644 --- a/src/Eccube/Repository/CartItemRepository.php +++ b/src/Eccube/Repository/CartItemRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\CartItem; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CartRepository diff --git a/src/Eccube/Repository/CartRepository.php b/src/Eccube/Repository/CartRepository.php index d6a83795762..6d71cc05ac0 100644 --- a/src/Eccube/Repository/CartRepository.php +++ b/src/Eccube/Repository/CartRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Cart; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CartRepository diff --git a/src/Eccube/Repository/CategoryRepository.php b/src/Eccube/Repository/CategoryRepository.php index 2c90a021562..48d86863eb1 100644 --- a/src/Eccube/Repository/CategoryRepository.php +++ b/src/Eccube/Repository/CategoryRepository.php @@ -15,9 +15,9 @@ use Doctrine\DBAL\Exception\DriverException; use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Common\EccubeConfig; use Eccube\Entity\Category; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CategoryRepository diff --git a/src/Eccube/Repository/ClassCategoryRepository.php b/src/Eccube/Repository/ClassCategoryRepository.php index 8f08c2b9b2d..b90eb1d32e0 100644 --- a/src/Eccube/Repository/ClassCategoryRepository.php +++ b/src/Eccube/Repository/ClassCategoryRepository.php @@ -15,8 +15,8 @@ use Doctrine\DBAL\Exception\DriverException; use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\ClassCategory; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ClasscategoryRepository diff --git a/src/Eccube/Repository/ClassNameRepository.php b/src/Eccube/Repository/ClassNameRepository.php index 7e894b0585f..de772ecd956 100644 --- a/src/Eccube/Repository/ClassNameRepository.php +++ b/src/Eccube/Repository/ClassNameRepository.php @@ -15,8 +15,8 @@ use Doctrine\DBAL\Exception\DriverException; use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\ClassName; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ClassNameRepository diff --git a/src/Eccube/Repository/CsvRepository.php b/src/Eccube/Repository/CsvRepository.php index 396143bd10d..079581be82f 100644 --- a/src/Eccube/Repository/CsvRepository.php +++ b/src/Eccube/Repository/CsvRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Csv; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CsvRepository diff --git a/src/Eccube/Repository/CustomerAddressRepository.php b/src/Eccube/Repository/CustomerAddressRepository.php index db6ea9bfe34..8ba90887b5c 100644 --- a/src/Eccube/Repository/CustomerAddressRepository.php +++ b/src/Eccube/Repository/CustomerAddressRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\CustomerAddress; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CustomerAddressRepository diff --git a/src/Eccube/Repository/CustomerFavoriteProductRepository.php b/src/Eccube/Repository/CustomerFavoriteProductRepository.php index 24430036a42..a03bc91ddbc 100644 --- a/src/Eccube/Repository/CustomerFavoriteProductRepository.php +++ b/src/Eccube/Repository/CustomerFavoriteProductRepository.php @@ -14,8 +14,8 @@ namespace Eccube\Repository; use Doctrine\ORM\QueryBuilder; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\CustomerFavoriteProduct; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CustomerFavoriteProductRepository diff --git a/src/Eccube/Repository/CustomerRepository.php b/src/Eccube/Repository/CustomerRepository.php index 6ca8e635375..d6d0dff89d4 100644 --- a/src/Eccube/Repository/CustomerRepository.php +++ b/src/Eccube/Repository/CustomerRepository.php @@ -14,13 +14,13 @@ namespace Eccube\Repository; use Doctrine\ORM\EntityManagerInterface; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Common\EccubeConfig; use Eccube\Doctrine\Query\Queries; use Eccube\Entity\Customer; use Eccube\Entity\Master\CustomerStatus; use Eccube\Entity\Master\OrderStatus; use Eccube\Util\StringUtil; -use Symfony\Bridge\Doctrine\RegistryInterface; use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; /** diff --git a/src/Eccube/Repository/DeliveryDurationRepository.php b/src/Eccube/Repository/DeliveryDurationRepository.php index e3f93af179b..2dfdd9bffa6 100644 --- a/src/Eccube/Repository/DeliveryDurationRepository.php +++ b/src/Eccube/Repository/DeliveryDurationRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\DeliveryDuration; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * DeliveryDurationRepository diff --git a/src/Eccube/Repository/DeliveryFeeRepository.php b/src/Eccube/Repository/DeliveryFeeRepository.php index 7cf48ebab58..449447d62a7 100644 --- a/src/Eccube/Repository/DeliveryFeeRepository.php +++ b/src/Eccube/Repository/DeliveryFeeRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\DeliveryFee; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * DelivFeeRepository diff --git a/src/Eccube/Repository/DeliveryRepository.php b/src/Eccube/Repository/DeliveryRepository.php index 0f6b5437ca8..16154613522 100644 --- a/src/Eccube/Repository/DeliveryRepository.php +++ b/src/Eccube/Repository/DeliveryRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Delivery; use Eccube\Entity\Payment; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * DelivRepository diff --git a/src/Eccube/Repository/DeliveryTimeRepository.php b/src/Eccube/Repository/DeliveryTimeRepository.php index 633d629ff49..6340d3b022f 100644 --- a/src/Eccube/Repository/DeliveryTimeRepository.php +++ b/src/Eccube/Repository/DeliveryTimeRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\DeliveryTime; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * DelivTimeRepository diff --git a/src/Eccube/Repository/LayoutRepository.php b/src/Eccube/Repository/LayoutRepository.php index d103c307996..79d3cf4028a 100644 --- a/src/Eccube/Repository/LayoutRepository.php +++ b/src/Eccube/Repository/LayoutRepository.php @@ -14,8 +14,8 @@ namespace Eccube\Repository; use Doctrine\ORM\NoResultException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Layout; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * LayoutRepository diff --git a/src/Eccube/Repository/LoginHistoryRepository.php b/src/Eccube/Repository/LoginHistoryRepository.php index 268839ff38d..50673adf0e1 100644 --- a/src/Eccube/Repository/LoginHistoryRepository.php +++ b/src/Eccube/Repository/LoginHistoryRepository.php @@ -13,10 +13,10 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Doctrine\Query\Queries; use Eccube\Entity\LoginHistory; use Eccube\Util\StringUtil; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * LoginHistoryRepository diff --git a/src/Eccube/Repository/MailHistoryRepository.php b/src/Eccube/Repository/MailHistoryRepository.php index b322f2d592a..484af257ec8 100644 --- a/src/Eccube/Repository/MailHistoryRepository.php +++ b/src/Eccube/Repository/MailHistoryRepository.php @@ -15,8 +15,8 @@ use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\NoResultException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\MailHistory; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * MailHistoryRepository diff --git a/src/Eccube/Repository/MailTemplateRepository.php b/src/Eccube/Repository/MailTemplateRepository.php index 3ac031be969..68adfc5470c 100644 --- a/src/Eccube/Repository/MailTemplateRepository.php +++ b/src/Eccube/Repository/MailTemplateRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\MailTemplate; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * MailTemplateRepository diff --git a/src/Eccube/Repository/Master/AuthorityRepository.php b/src/Eccube/Repository/Master/AuthorityRepository.php index 705f2364d08..1e4bedfeee7 100644 --- a/src/Eccube/Repository/Master/AuthorityRepository.php +++ b/src/Eccube/Repository/Master/AuthorityRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\Authority; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * AuthorityRepository diff --git a/src/Eccube/Repository/Master/CountryRepository.php b/src/Eccube/Repository/Master/CountryRepository.php index 6f9d337b170..8a98568c4b5 100644 --- a/src/Eccube/Repository/Master/CountryRepository.php +++ b/src/Eccube/Repository/Master/CountryRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\Country; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CountryRepository diff --git a/src/Eccube/Repository/Master/CsvTypeRepository.php b/src/Eccube/Repository/Master/CsvTypeRepository.php index ce962845c4e..6bc5914aa32 100644 --- a/src/Eccube/Repository/Master/CsvTypeRepository.php +++ b/src/Eccube/Repository/Master/CsvTypeRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\CsvType; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CsvTypeRepository diff --git a/src/Eccube/Repository/Master/CustomerOrderStatusRepository.php b/src/Eccube/Repository/Master/CustomerOrderStatusRepository.php index 3266f159d97..81b8ce93416 100644 --- a/src/Eccube/Repository/Master/CustomerOrderStatusRepository.php +++ b/src/Eccube/Repository/Master/CustomerOrderStatusRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\CustomerOrderStatus; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CustomerOrderStatusRepository diff --git a/src/Eccube/Repository/Master/CustomerStatusRepository.php b/src/Eccube/Repository/Master/CustomerStatusRepository.php index 3115cdfb1fb..a41c37c830e 100644 --- a/src/Eccube/Repository/Master/CustomerStatusRepository.php +++ b/src/Eccube/Repository/Master/CustomerStatusRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\CustomerStatus; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * CustomerStatusRepository diff --git a/src/Eccube/Repository/Master/DeviceTypeRepository.php b/src/Eccube/Repository/Master/DeviceTypeRepository.php index 563f298f1a6..c5370d4e729 100644 --- a/src/Eccube/Repository/Master/DeviceTypeRepository.php +++ b/src/Eccube/Repository/Master/DeviceTypeRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\DeviceType; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * DeviceTypeRepository diff --git a/src/Eccube/Repository/Master/JobRepository.php b/src/Eccube/Repository/Master/JobRepository.php index d709b65cc70..6e802e6aa74 100644 --- a/src/Eccube/Repository/Master/JobRepository.php +++ b/src/Eccube/Repository/Master/JobRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\Job; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * JobRepository diff --git a/src/Eccube/Repository/Master/LoginHistoryStatusRepository.php b/src/Eccube/Repository/Master/LoginHistoryStatusRepository.php index e19311630db..2582284cc28 100644 --- a/src/Eccube/Repository/Master/LoginHistoryStatusRepository.php +++ b/src/Eccube/Repository/Master/LoginHistoryStatusRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\LoginHistoryStatus; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * LoginHistoryStatusRepository diff --git a/src/Eccube/Repository/Master/OrderItemTypeRepository.php b/src/Eccube/Repository/Master/OrderItemTypeRepository.php index cffe6dae9fa..d605cd1a4b5 100644 --- a/src/Eccube/Repository/Master/OrderItemTypeRepository.php +++ b/src/Eccube/Repository/Master/OrderItemTypeRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\OrderItemType; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * OrderItemTypeRepository diff --git a/src/Eccube/Repository/Master/OrderStatusColorRepository.php b/src/Eccube/Repository/Master/OrderStatusColorRepository.php index 19c3162208b..b0402b808e8 100644 --- a/src/Eccube/Repository/Master/OrderStatusColorRepository.php +++ b/src/Eccube/Repository/Master/OrderStatusColorRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\OrderStatusColor; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * OrderStatusColorRepository diff --git a/src/Eccube/Repository/Master/OrderStatusRepository.php b/src/Eccube/Repository/Master/OrderStatusRepository.php index 309c7c2436c..ba94a724e99 100644 --- a/src/Eccube/Repository/Master/OrderStatusRepository.php +++ b/src/Eccube/Repository/Master/OrderStatusRepository.php @@ -15,9 +15,9 @@ use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\OrderStatus; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * OrderStatusRepository diff --git a/src/Eccube/Repository/Master/PageMaxRepository.php b/src/Eccube/Repository/Master/PageMaxRepository.php index f8e83ad3e8e..f2cc6512130 100644 --- a/src/Eccube/Repository/Master/PageMaxRepository.php +++ b/src/Eccube/Repository/Master/PageMaxRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\PageMax; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * PageMaxRepository diff --git a/src/Eccube/Repository/Master/PrefRepository.php b/src/Eccube/Repository/Master/PrefRepository.php index 283fda96cc2..4143ab929d0 100644 --- a/src/Eccube/Repository/Master/PrefRepository.php +++ b/src/Eccube/Repository/Master/PrefRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\Pref; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * PrefRepository diff --git a/src/Eccube/Repository/Master/ProductListMaxRepository.php b/src/Eccube/Repository/Master/ProductListMaxRepository.php index 5be5872633b..588eaa0df5e 100644 --- a/src/Eccube/Repository/Master/ProductListMaxRepository.php +++ b/src/Eccube/Repository/Master/ProductListMaxRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\ProductListMax; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductListMaxRepository diff --git a/src/Eccube/Repository/Master/ProductListOrderByRepository.php b/src/Eccube/Repository/Master/ProductListOrderByRepository.php index 253d7ee2154..ebd96e00d33 100644 --- a/src/Eccube/Repository/Master/ProductListOrderByRepository.php +++ b/src/Eccube/Repository/Master/ProductListOrderByRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\ProductListOrderBy; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductListOrderByRepository diff --git a/src/Eccube/Repository/Master/ProductStatusRepository.php b/src/Eccube/Repository/Master/ProductStatusRepository.php index 98d8074942f..929d076f66b 100644 --- a/src/Eccube/Repository/Master/ProductStatusRepository.php +++ b/src/Eccube/Repository/Master/ProductStatusRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\ProductStatus; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductStatusRepository diff --git a/src/Eccube/Repository/Master/RoundingTypeRepository.php b/src/Eccube/Repository/Master/RoundingTypeRepository.php index f91f7e10d59..1f2adef150c 100644 --- a/src/Eccube/Repository/Master/RoundingTypeRepository.php +++ b/src/Eccube/Repository/Master/RoundingTypeRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\RoundingType; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * RoundingTypeRepository diff --git a/src/Eccube/Repository/Master/SaleTypeRepository.php b/src/Eccube/Repository/Master/SaleTypeRepository.php index d75957f35db..e23b1468e6a 100644 --- a/src/Eccube/Repository/Master/SaleTypeRepository.php +++ b/src/Eccube/Repository/Master/SaleTypeRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\SaleType; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * SaleTypeRepository diff --git a/src/Eccube/Repository/Master/SexRepository.php b/src/Eccube/Repository/Master/SexRepository.php index c9eaa03a487..ceba0f149b7 100644 --- a/src/Eccube/Repository/Master/SexRepository.php +++ b/src/Eccube/Repository/Master/SexRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\Sex; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * SexRepository diff --git a/src/Eccube/Repository/Master/TaxDisplayTypeRepository.php b/src/Eccube/Repository/Master/TaxDisplayTypeRepository.php index d357da27d3f..3a9c2f6e33d 100644 --- a/src/Eccube/Repository/Master/TaxDisplayTypeRepository.php +++ b/src/Eccube/Repository/Master/TaxDisplayTypeRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\TaxDisplayType; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * TaxDisplayTypeRepository diff --git a/src/Eccube/Repository/Master/TaxTypeRepository.php b/src/Eccube/Repository/Master/TaxTypeRepository.php index d1919ff1aee..214098baeea 100644 --- a/src/Eccube/Repository/Master/TaxTypeRepository.php +++ b/src/Eccube/Repository/Master/TaxTypeRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\TaxType; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * TaxTypeRepository diff --git a/src/Eccube/Repository/Master/WorkRepository.php b/src/Eccube/Repository/Master/WorkRepository.php index ba2e88cba0c..51fd3df0118 100644 --- a/src/Eccube/Repository/Master/WorkRepository.php +++ b/src/Eccube/Repository/Master/WorkRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository\Master; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Master\Work; use Eccube\Repository\AbstractRepository; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * WorkRepository diff --git a/src/Eccube/Repository/MemberRepository.php b/src/Eccube/Repository/MemberRepository.php index 2f372b4f575..fb0f9f56928 100644 --- a/src/Eccube/Repository/MemberRepository.php +++ b/src/Eccube/Repository/MemberRepository.php @@ -15,8 +15,8 @@ use Doctrine\DBAL\Exception\DriverException; use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Member; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * MemberRepository diff --git a/src/Eccube/Repository/NewsRepository.php b/src/Eccube/Repository/NewsRepository.php index 969b16f0587..c56f089ffe9 100644 --- a/src/Eccube/Repository/NewsRepository.php +++ b/src/Eccube/Repository/NewsRepository.php @@ -17,8 +17,8 @@ use Doctrine\Common\Collections\Criteria; use Doctrine\DBAL\Exception\DriverException; use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\News; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * NewsRepository diff --git a/src/Eccube/Repository/OrderItemRepository.php b/src/Eccube/Repository/OrderItemRepository.php index 901fb093c69..1c6a02a6881 100644 --- a/src/Eccube/Repository/OrderItemRepository.php +++ b/src/Eccube/Repository/OrderItemRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\OrderItem; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * OrderItemRepository diff --git a/src/Eccube/Repository/OrderPdfRepository.php b/src/Eccube/Repository/OrderPdfRepository.php index ee9c80bcfa9..2acef526645 100644 --- a/src/Eccube/Repository/OrderPdfRepository.php +++ b/src/Eccube/Repository/OrderPdfRepository.php @@ -13,9 +13,9 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Member; use Eccube\Entity\OrderPdf; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * OrderPdfRepository. diff --git a/src/Eccube/Repository/OrderRepository.php b/src/Eccube/Repository/OrderRepository.php index d1fe87a021f..cc7ab5ca391 100644 --- a/src/Eccube/Repository/OrderRepository.php +++ b/src/Eccube/Repository/OrderRepository.php @@ -15,13 +15,13 @@ use Doctrine\ORM\NoResultException; use Doctrine\ORM\QueryBuilder; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Doctrine\Query\Queries; use Eccube\Entity\Customer; use Eccube\Entity\Master\OrderStatus; use Eccube\Entity\Order; use Eccube\Entity\Shipping; use Eccube\Util\StringUtil; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * OrderRepository diff --git a/src/Eccube/Repository/PageLayoutRepository.php b/src/Eccube/Repository/PageLayoutRepository.php index 94ee1e25557..c11d2a7d3fb 100644 --- a/src/Eccube/Repository/PageLayoutRepository.php +++ b/src/Eccube/Repository/PageLayoutRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\PageLayout; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * PageLayoutRepository diff --git a/src/Eccube/Repository/PageRepository.php b/src/Eccube/Repository/PageRepository.php index c64169a1d34..08d79fa9fb3 100644 --- a/src/Eccube/Repository/PageRepository.php +++ b/src/Eccube/Repository/PageRepository.php @@ -14,9 +14,9 @@ namespace Eccube\Repository; use Doctrine\ORM\NoResultException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Common\EccubeConfig; use Eccube\Entity\Page; -use Symfony\Bridge\Doctrine\RegistryInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** diff --git a/src/Eccube/Repository/PaymentOptionRepository.php b/src/Eccube/Repository/PaymentOptionRepository.php index c36b64753d4..ef2b516c2ac 100644 --- a/src/Eccube/Repository/PaymentOptionRepository.php +++ b/src/Eccube/Repository/PaymentOptionRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\PaymentOption; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * PaymentOptionRepository diff --git a/src/Eccube/Repository/PaymentRepository.php b/src/Eccube/Repository/PaymentRepository.php index 02e785cbfdb..478969dae02 100644 --- a/src/Eccube/Repository/PaymentRepository.php +++ b/src/Eccube/Repository/PaymentRepository.php @@ -14,8 +14,8 @@ namespace Eccube\Repository; use Doctrine\ORM\Query; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Payment; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * PaymentRepository diff --git a/src/Eccube/Repository/PluginRepository.php b/src/Eccube/Repository/PluginRepository.php index 02cff400990..82defeea3ea 100644 --- a/src/Eccube/Repository/PluginRepository.php +++ b/src/Eccube/Repository/PluginRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Plugin; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * PluginRepository diff --git a/src/Eccube/Repository/ProductCategoryRepository.php b/src/Eccube/Repository/ProductCategoryRepository.php index 3e5683be5e8..9c05f78a159 100644 --- a/src/Eccube/Repository/ProductCategoryRepository.php +++ b/src/Eccube/Repository/ProductCategoryRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\ProductCategory; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductCategoryRepository diff --git a/src/Eccube/Repository/ProductClassRepository.php b/src/Eccube/Repository/ProductClassRepository.php index 40ebe2dc8fd..f3c2735d372 100644 --- a/src/Eccube/Repository/ProductClassRepository.php +++ b/src/Eccube/Repository/ProductClassRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\ProductClass; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductClassRepository diff --git a/src/Eccube/Repository/ProductImageRepository.php b/src/Eccube/Repository/ProductImageRepository.php index 5c1b45ed8ba..0ab0c4ca6d6 100644 --- a/src/Eccube/Repository/ProductImageRepository.php +++ b/src/Eccube/Repository/ProductImageRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\ProductImage; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductImageRepository diff --git a/src/Eccube/Repository/ProductRepository.php b/src/Eccube/Repository/ProductRepository.php index 6749a8492a1..d1548899725 100644 --- a/src/Eccube/Repository/ProductRepository.php +++ b/src/Eccube/Repository/ProductRepository.php @@ -14,12 +14,12 @@ namespace Eccube\Repository; use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Common\EccubeConfig; use Eccube\Doctrine\Query\Queries; use Eccube\Entity\Product; use Eccube\Entity\ProductStock; use Eccube\Util\StringUtil; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductRepository diff --git a/src/Eccube/Repository/ProductStockRepository.php b/src/Eccube/Repository/ProductStockRepository.php index be7175b31eb..d44f1704916 100644 --- a/src/Eccube/Repository/ProductStockRepository.php +++ b/src/Eccube/Repository/ProductStockRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\ProductStock; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductClassRepository diff --git a/src/Eccube/Repository/ProductTagRepository.php b/src/Eccube/Repository/ProductTagRepository.php index 4503cae0f33..93d4a826550 100644 --- a/src/Eccube/Repository/ProductTagRepository.php +++ b/src/Eccube/Repository/ProductTagRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\ProductTag; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ProductTagRepository diff --git a/src/Eccube/Repository/ShippingRepository.php b/src/Eccube/Repository/ShippingRepository.php index 0ff4a832db5..e25bfef4283 100644 --- a/src/Eccube/Repository/ShippingRepository.php +++ b/src/Eccube/Repository/ShippingRepository.php @@ -14,9 +14,9 @@ namespace Eccube\Repository; use Doctrine\ORM\QueryBuilder; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Shipping; use Eccube\Util\StringUtil; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * ShippingRepository diff --git a/src/Eccube/Repository/TagRepository.php b/src/Eccube/Repository/TagRepository.php index 2d7536dded1..f4c6318045b 100644 --- a/src/Eccube/Repository/TagRepository.php +++ b/src/Eccube/Repository/TagRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Tag; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * TagRepository diff --git a/src/Eccube/Repository/TaxRuleRepository.php b/src/Eccube/Repository/TaxRuleRepository.php index 7b331cf94c5..ea265225690 100644 --- a/src/Eccube/Repository/TaxRuleRepository.php +++ b/src/Eccube/Repository/TaxRuleRepository.php @@ -14,12 +14,12 @@ namespace Eccube\Repository; use Doctrine\ORM\NoResultException; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Common\EccubeConfig; use Eccube\Entity\BaseInfo; use Eccube\Entity\Customer; use Eccube\Entity\Master\RoundingType; use Eccube\Entity\TaxRule; -use Symfony\Bridge\Doctrine\RegistryInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; diff --git a/src/Eccube/Repository/TemplateRepository.php b/src/Eccube/Repository/TemplateRepository.php index a6695f9cace..6bdf6bdef54 100644 --- a/src/Eccube/Repository/TemplateRepository.php +++ b/src/Eccube/Repository/TemplateRepository.php @@ -13,8 +13,8 @@ namespace Eccube\Repository; +use Doctrine\Persistence\ManagerRegistry as RegistryInterface; use Eccube\Entity\Template; -use Symfony\Bridge\Doctrine\RegistryInterface; /** * TemplateRepository diff --git a/src/Eccube/Request/Context.php b/src/Eccube/Request/Context.php index 294ad22f2ac..db713221885 100644 --- a/src/Eccube/Request/Context.php +++ b/src/Eccube/Request/Context.php @@ -50,7 +50,7 @@ public function __construct(RequestStack $requestStack, EccubeConfig $eccubeConf */ public function isAdmin() { - $request = $this->requestStack->getMasterRequest(); + $request = $this->requestStack->getMainRequest(); if (null === $request) { return false; @@ -70,7 +70,7 @@ public function isAdmin() */ public function isFront() { - $request = $this->requestStack->getMasterRequest(); + $request = $this->requestStack->getMainRequest(); if (null === $request) { return false; @@ -84,7 +84,7 @@ public function isFront() */ public function getCurrentUser() { - $request = $this->requestStack->getMasterRequest(); + $request = $this->requestStack->getMainRequest(); if (null === $request) { return null; diff --git a/src/Eccube/Resource/template/admin/Customer/edit.twig b/src/Eccube/Resource/template/admin/Customer/edit.twig index 805d2768f56..5b58149ab1e 100644 --- a/src/Eccube/Resource/template/admin/Customer/edit.twig +++ b/src/Eccube/Resource/template/admin/Customer/edit.twig @@ -180,8 +180,8 @@ file that was distributed with this source code. {{ 'admin.common.required'|trans }}
- {{ form_widget(form.password.first, { type : 'password'}) }} - {{ form_errors(form.password.first) }} + {{ form_widget(form.plain_password.first, { type : 'password'}) }} + {{ form_errors(form.plain_password.first) }}
@@ -190,8 +190,8 @@ file that was distributed with this source code. {{ 'admin.common.required'|trans }}
- {{ form_widget(form.password.second, { type : 'password'}) }} - {{ form_errors(form.password.second) }} + {{ form_widget(form.plain_password.second, { type : 'password'}) }} + {{ form_errors(form.plain_password.second) }}
diff --git a/src/Eccube/Resource/template/admin/search_items.twig b/src/Eccube/Resource/template/admin/search_items.twig index 0cd760a471b..b19ae64dd09 100644 --- a/src/Eccube/Resource/template/admin/search_items.twig +++ b/src/Eccube/Resource/template/admin/search_items.twig @@ -22,7 +22,7 @@ file that was distributed with this source code. {%- endfor -%} {{ not loop.last ? ', ' }} {%- endfor -%} - {%- elseif php_is_a(child.vars.data, '\DateTime') -%} + {%- elseif child.vars.data.timestamp is defined -%} {# DateTimeType の時は分まで表示 #} {% if 'datetime' in child.vars.id %} {{ child.vars.data|date_sec }} diff --git a/src/Eccube/Resource/template/default/Entry/confirm.twig b/src/Eccube/Resource/template/default/Entry/confirm.twig index 5aafcb89495..0d5ec2507e2 100644 --- a/src/Eccube/Resource/template/default/Entry/confirm.twig +++ b/src/Eccube/Resource/template/default/Entry/confirm.twig @@ -91,12 +91,12 @@ file that was distributed with this source code.
- {{ form_label(form.password, 'common.password', { 'label_attr': { 'class': 'ec-label' }}) }} + {{ form_label(form.plain_password, 'common.password', { 'label_attr': { 'class': 'ec-label' }}) }}
******** - {{ form_widget(form.password.first, { type : 'hidden' }) }} - {{ form_widget(form.password.second, { type : 'hidden' }) }} + {{ form_widget(form.plain_password.first, { type : 'hidden' }) }} + {{ form_widget(form.plain_password.second, { type : 'hidden' }) }}
diff --git a/src/Eccube/Resource/template/default/Entry/index.twig b/src/Eccube/Resource/template/default/Entry/index.twig index bf48615bb21..018461085db 100644 --- a/src/Eccube/Resource/template/default/Entry/index.twig +++ b/src/Eccube/Resource/template/default/Entry/index.twig @@ -125,22 +125,22 @@ file that was distributed with this source code.
- {{ form_label(form.password, 'common.password', { 'label_attr': {'class': 'ec-label' }}) }} + {{ form_label(form.plain_password, 'common.password', { 'label_attr': {'class': 'ec-label' }}) }}
-
- {{ form_widget(form.password.first, { +
+ {{ form_widget(form.plain_password.first, { 'attr': { 'placeholder': 'common.password_sample'|trans({ '%min%': eccube_config.eccube_password_min_len, '%max%': eccube_config.eccube_password_max_len }) }, 'type': 'password' }) }} - {{ form_errors(form.password.first) }} + {{ form_errors(form.plain_password.first) }}
-
- {{ form_widget(form.password.second, { +
+ {{ form_widget(form.plain_password.second, { 'attr': { 'placeholder': 'common.repeated_confirm'|trans }, 'type': 'password' }) }} - {{ form_errors(form.password.second) }} + {{ form_errors(form.plain_password.second) }}
diff --git a/src/Eccube/Resource/template/default/Mypage/change.twig b/src/Eccube/Resource/template/default/Mypage/change.twig index cbc9e11dffe..cb85b95df5d 100755 --- a/src/Eccube/Resource/template/default/Mypage/change.twig +++ b/src/Eccube/Resource/template/default/Mypage/change.twig @@ -132,22 +132,22 @@ file that was distributed with this source code.
- {{ form_label(form.password, 'common.password', { 'label_attr': {'class': 'ec-label' }}) }} + {{ form_label(form.plain_password, 'common.password', { 'label_attr': {'class': 'ec-label' }}) }}
-
- {{ form_widget(form.password.first, { +
+ {{ form_widget(form.plain_password.first, { 'attr': { 'placeholder': 'common.password_sample'|trans({ '%min%': eccube_config.eccube_password_min_len, '%max%': eccube_config.eccube_password_max_len }) }, 'type': 'password' }) }} - {{ form_errors(form.password.first) }} + {{ form_errors(form.plain_password.first) }}
-
- {{ form_widget(form.password.second, { +
+ {{ form_widget(form.plain_password.second, { 'attr': { 'placeholder': 'common.repeated_confirm'|trans }, 'type': 'password' }) }} - {{ form_errors(form.password.second) }} + {{ form_errors(form.plain_password.second) }}
diff --git a/src/Eccube/Resource/template/default/Product/list.twig b/src/Eccube/Resource/template/default/Product/list.twig index 998b9c33885..ec6fd62c397 100644 --- a/src/Eccube/Resource/template/default/Product/list.twig +++ b/src/Eccube/Resource/template/default/Product/list.twig @@ -140,8 +140,8 @@ file that was distributed with this source code. {% if pagination.totalItemCount > 0 %}
- {{ form_widget(disp_number_form, {'id': '', 'attr': {'class': 'disp-number'}}) }} - {{ form_widget(order_by_form, {'id': '', 'attr': {'class': 'order-by'}}) }} + {{ form_widget(search_form.disp_number, {'id': '', 'attr': {'class': 'disp-number'}}) }} + {{ form_widget(search_form.orderby, {'id': '', 'attr': {'class': 'order-by'}}) }}
{% endif %} diff --git a/src/Eccube/Resource/template/toolbar/eccube.html.twig b/src/Eccube/Resource/template/toolbar/eccube.html.twig index b65baa619f0..55cc6372a0d 100644 --- a/src/Eccube/Resource/template/toolbar/eccube.html.twig +++ b/src/Eccube/Resource/template/toolbar/eccube.html.twig @@ -8,7 +8,7 @@ http://www.ec-cube.co.jp/ For the full copyright and license information, please view the LICENSE file that was distributed with this source code. #} -{% extends 'WebProfilerBundle:Profiler:layout.html.twig' %} +{% extends '@WebProfiler/Profiler/layout.html.twig' %} {% block toolbar %} {% set icon %} diff --git a/src/Eccube/Security/Core/Encoder/PasswordEncoder.php b/src/Eccube/Security/Core/Encoder/PasswordEncoder.php index a7c04932a28..5a6e957294c 100644 --- a/src/Eccube/Security/Core/Encoder/PasswordEncoder.php +++ b/src/Eccube/Security/Core/Encoder/PasswordEncoder.php @@ -107,6 +107,13 @@ public function encodePassword($raw, $salt) return $res; } + /** + * Checks if an encoded password would benefit from rehashing. + */ + public function needsRehash(string $encoded): bool + { + return false; + } /** * saltを生成する. * diff --git a/src/Eccube/Security/Voter/AuthorityVoter.php b/src/Eccube/Security/Voter/AuthorityVoter.php index 7035e31cef2..a2d300b508a 100644 --- a/src/Eccube/Security/Voter/AuthorityVoter.php +++ b/src/Eccube/Security/Voter/AuthorityVoter.php @@ -53,7 +53,7 @@ public function vote(TokenInterface $token, $object, array $attributes) $path = null; try { - $request = $this->requestStack->getMasterRequest(); + $request = $this->requestStack->getMainRequest(); } catch (\RuntimeException $e) { // requestが取得できない場合、棄権する(テストプログラムで不要なため) return VoterInterface::ACCESS_ABSTAIN; diff --git a/src/Eccube/Service/EntityProxyService.php b/src/Eccube/Service/EntityProxyService.php index f3dfc18707e..03f336c21b1 100644 --- a/src/Eccube/Service/EntityProxyService.php +++ b/src/Eccube/Service/EntityProxyService.php @@ -134,7 +134,7 @@ private function originalEntityPath(string $entityClassName): string return $originalPath; } - $rc = new ClassReflection($entityClassName); + $rc = new \ReflectionClass($entityClassName); return str_replace('\\', '/', $rc->getFileName()); } diff --git a/src/Eccube/Service/MailService.php b/src/Eccube/Service/MailService.php index 986653acb8d..9f5182cb081 100644 --- a/src/Eccube/Service/MailService.php +++ b/src/Eccube/Service/MailService.php @@ -26,13 +26,17 @@ use Eccube\Repository\BaseInfoRepository; use Eccube\Repository\MailHistoryRepository; use Eccube\Repository\MailTemplateRepository; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Mailer\MailerInterface; +use Symfony\Component\Mime\Address; +use Symfony\Component\Mime\Email; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcherInterface; class MailService { /** - * @var \Swift_Mailer + * @var MailerInterface */ protected $mailer; @@ -62,29 +66,34 @@ class MailService protected $eccubeConfig; /** - * @var \Twig_Environment + * @var \Twig\Environment */ protected $twig; + /** @var ContainerInterface */ + protected $container; + /** * MailService constructor. * - * @param \Swift_Mailer $mailer + * @param MailerInterface $mailer * @param MailTemplateRepository $mailTemplateRepository * @param MailHistoryRepository $mailHistoryRepository * @param BaseInfoRepository $baseInfoRepository * @param EventDispatcherInterface $eventDispatcher - * @param \Twig_Environment $twig + * @param \Twig\Environment $twig * @param EccubeConfig $eccubeConfig + * @param ContainerInterface $container */ public function __construct( - \Swift_Mailer $mailer, + MailerInterface $mailer, MailTemplateRepository $mailTemplateRepository, MailHistoryRepository $mailHistoryRepository, BaseInfoRepository $baseInfoRepository, EventDispatcherInterface $eventDispatcher, - \Twig_Environment $twig, - EccubeConfig $eccubeConfig + \Twig\Environment $twig, + EccubeConfig $eccubeConfig, + ContainerInterface $container ) { $this->mailer = $mailer; $this->mailTemplateRepository = $mailTemplateRepository; @@ -93,6 +102,7 @@ public function __construct( $this->eventDispatcher = $eventDispatcher; $this->eccubeConfig = $eccubeConfig; $this->twig = $twig; + $this->container = $container; } /** @@ -113,13 +123,13 @@ public function sendCustomerConfirmMail(Customer $Customer, $activateUrl) 'activateUrl' => $activateUrl, ]); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()]) - ->setTo([$Customer->getEmail()]) - ->setBcc($this->BaseInfo->getEmail01()) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($Customer->getEmail())) + ->bcc($this->BaseInfo->getEmail01()) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -131,11 +141,10 @@ public function sendCustomerConfirmMail(Customer $Customer, $activateUrl) ]); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $event = new EventArgs( @@ -147,9 +156,9 @@ public function sendCustomerConfirmMail(Customer $Customer, $activateUrl) ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_CONFIRM, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_CUSTOMER_CONFIRM); - $count = $this->mailer->send($message, $failures); + $count = $this->mailer->send($message); log_info('仮会員登録メール送信完了', ['count' => $count]); @@ -172,13 +181,13 @@ public function sendCustomerCompleteMail(Customer $Customer) 'BaseInfo' => $this->BaseInfo, ]); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()]) - ->setTo([$Customer->getEmail()]) - ->setBcc($this->BaseInfo->getEmail01()) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($Customer->getEmail())) + ->bcc($this->BaseInfo->getEmail01()) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -189,11 +198,10 @@ public function sendCustomerCompleteMail(Customer $Customer) ]); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $event = new EventArgs( @@ -204,7 +212,7 @@ public function sendCustomerCompleteMail(Customer $Customer) ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_CUSTOMER_COMPLETE); $count = $this->mailer->send($message); @@ -230,13 +238,13 @@ public function sendCustomerWithdrawMail(Customer $Customer, string $email) 'BaseInfo' => $this->BaseInfo, ]); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()]) - ->setTo([$email]) - ->setBcc($this->BaseInfo->getEmail01()) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($email)) + ->bcc($this->BaseInfo->getEmail01()) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -247,11 +255,10 @@ public function sendCustomerWithdrawMail(Customer $Customer, string $email) ]); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $event = new EventArgs( @@ -263,7 +270,7 @@ public function sendCustomerWithdrawMail(Customer $Customer, string $email) ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_WITHDRAW, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_CUSTOMER_WITHDRAW); $count = $this->mailer->send($message); @@ -289,13 +296,13 @@ public function sendContactMail($formData) ]); // 問い合わせ者にメール送信 - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail02() => $this->BaseInfo->getShopName()]) - ->setTo([$formData['email']]) - ->setBcc($this->BaseInfo->getEmail02()) - ->setReplyTo($this->BaseInfo->getEmail02()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail02(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($formData['email'])) + ->bcc($this->BaseInfo->getEmail02()) + ->replyTo($this->BaseInfo->getEmail02()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -306,11 +313,10 @@ public function sendContactMail($formData) ]); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $event = new EventArgs( @@ -321,7 +327,7 @@ public function sendContactMail($formData) ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CONTACT, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_CONTACT); $count = $this->mailer->send($message); @@ -335,7 +341,7 @@ public function sendContactMail($formData) * * @param \Eccube\Entity\Order $Order 受注情報 * - * @return \Swift_Message + * @return Email */ public function sendOrderMail(Order $Order) { @@ -347,13 +353,13 @@ public function sendOrderMail(Order $Order) 'Order' => $Order, ]); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()]) - ->setTo([$Order->getEmail()]) - ->setBcc($this->BaseInfo->getEmail01()) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($Order->getEmail())) + ->bcc($this->BaseInfo->getEmail01()) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -363,11 +369,10 @@ public function sendOrderMail(Order $Order) ]); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $event = new EventArgs( @@ -379,20 +384,20 @@ public function sendOrderMail(Order $Order) ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_ORDER, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_ORDER); $count = $this->mailer->send($message); $MailHistory = new MailHistory(); $MailHistory->setMailSubject($message->getSubject()) - ->setMailBody($message->getBody()) + ->setMailBody($message->getTextBody()) ->setOrder($Order) ->setSendDate(new \DateTime()); // HTML用メールの設定 - $multipart = $message->getChildren(); - if (count($multipart) > 0) { - $MailHistory->setMailHtmlBody($multipart[0]->getBody()); + $htmlBody = $message->getHtmlBody(); + if (!empty($htmlBody)) { + $MailHistory->setMailHtmlBody($htmlBody); } $this->mailHistoryRepository->save($MailHistory); @@ -421,13 +426,13 @@ public function sendAdminCustomerConfirmMail(Customer $Customer, $activateUrl) 'activateUrl' => $activateUrl, ]); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail03() => $this->BaseInfo->getShopName()]) - ->setTo([$Customer->getEmail()]) - ->setBcc($this->BaseInfo->getEmail01()) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail03(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($Customer->getEmail())) + ->bcc($this->BaseInfo->getEmail01()) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -439,11 +444,10 @@ public function sendAdminCustomerConfirmMail(Customer $Customer, $activateUrl) ]); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $event = new EventArgs( @@ -455,7 +459,7 @@ public function sendAdminCustomerConfirmMail(Customer $Customer, $activateUrl) ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_ADMIN_CUSTOMER_CONFIRM, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_ADMIN_CUSTOMER_CONFIRM); $count = $this->mailer->send($message); @@ -470,7 +474,7 @@ public function sendAdminCustomerConfirmMail(Customer $Customer, $activateUrl) * @param Order $Order 受注情報 * @param $formData 入力内容 * - * @return \Swift_Message + * @return Email * * @throws \Twig_Error_Loader * @throws \Twig_Error_Runtime @@ -480,14 +484,14 @@ public function sendAdminOrderMail(Order $Order, $formData) { log_info('受注管理通知メール送信開始'); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$formData['mail_subject']) - ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()]) - ->setTo([$Order->getEmail()]) - ->setBcc($this->BaseInfo->getEmail01()) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()) - ->setBody($formData['tpl_data']); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$formData['mail_subject']) + ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($Order->getEmail())) + ->bcc($this->BaseInfo->getEmail01()) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()) + ->text($formData['tpl_data']); $event = new EventArgs( [ @@ -498,7 +502,7 @@ public function sendAdminOrderMail(Order $Order, $formData) ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_ADMIN_ORDER, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_ADMIN_ORDER); $count = $this->mailer->send($message); @@ -525,12 +529,12 @@ public function sendPasswordResetNotificationMail(Customer $Customer, $reset_url 'reset_url' => $reset_url, ]); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()]) - ->setTo([$Customer->getEmail()]) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($Customer->getEmail())) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -543,11 +547,10 @@ public function sendPasswordResetNotificationMail(Customer $Customer, $reset_url ]); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $event = new EventArgs( @@ -559,7 +562,7 @@ public function sendPasswordResetNotificationMail(Customer $Customer, $reset_url ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_PASSWORD_RESET, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_PASSWORD_RESET); $count = $this->mailer->send($message); @@ -586,13 +589,13 @@ public function sendPasswordResetCompleteMail(Customer $Customer, $password) 'password' => $password, ]); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()]) - ->setTo([$Customer->getEmail()]) - ->setBcc($this->BaseInfo->getEmail01()) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($Customer->getEmail())) + ->bcc($this->BaseInfo->getEmail01()) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -604,11 +607,10 @@ public function sendPasswordResetCompleteMail(Customer $Customer, $password) ]); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $event = new EventArgs( @@ -620,7 +622,7 @@ public function sendPasswordResetCompleteMail(Customer $Customer, $password) ], null ); - $this->eventDispatcher->dispatch(EccubeEvents::MAIL_PASSWORD_RESET_COMPLETE, $event); + $this->eventDispatcher->dispatch($event, EccubeEvents::MAIL_PASSWORD_RESET_COMPLETE); $count = $this->mailer->send($message); @@ -647,13 +649,13 @@ public function sendShippingNotifyMail(Shipping $Shipping) $Order = $Shipping->getOrder(); $body = $this->getShippingNotifyMailBody($Shipping, $Order, $MailTemplate->getFileName()); - $message = (new \Swift_Message()) - ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) - ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()]) - ->setTo($Order->getEmail()) - ->setBcc($this->BaseInfo->getEmail01()) - ->setReplyTo($this->BaseInfo->getEmail03()) - ->setReturnPath($this->BaseInfo->getEmail04()); + $message = (new Email()) + ->subject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject()) + ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName())) + ->to($this->convertRFCViolatingEmail($Order->getEmail())) + ->bcc($this->BaseInfo->getEmail01()) + ->replyTo($this->BaseInfo->getEmail03()) + ->returnPath($this->BaseInfo->getEmail04()); // HTMLテンプレートが存在する場合 $htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName()); @@ -661,25 +663,24 @@ public function sendShippingNotifyMail(Shipping $Shipping) $htmlBody = $this->getShippingNotifyMailBody($Shipping, $Order, $htmlFileName, true); $message - ->setContentType('text/plain; charset=UTF-8') - ->setBody($body, 'text/plain') - ->addPart($htmlBody, 'text/html'); + ->text($body) + ->html($htmlBody); } else { - $message->setBody($body); + $message->text($body); } $this->mailer->send($message); $MailHistory = new MailHistory(); $MailHistory->setMailSubject($message->getSubject()) - ->setMailBody($message->getBody()) + ->setMailBody($message->getTextBody()) ->setOrder($Order) ->setSendDate(new \DateTime()); // HTML用メールの設定 - $multipart = $message->getChildren(); - if (count($multipart) > 0) { - $MailHistory->setMailHtmlBody($multipart[0]->getBody()); + $htmlBody = $message->getHtmlBody(); + if (!empty($htmlBody)) { + $MailHistory->setMailHtmlBody($htmlBody); } $this->mailHistoryRepository->save($MailHistory); @@ -744,4 +745,43 @@ public function getHtmlTemplate($templateName) return null; } } + + /** + * RFC違反のメールの local part を "" で囲む. + * + * パラメータ eccube_rfc_email_check == true の場合は変換しない + * + * @param string $email + * @return Address + */ + public function convertRFCViolatingEmail(string $email): Address + { + if ($this->container->getParameter('eccube_rfc_email_check')) { + return new Address($email); + } + + // see https://blog.everqueue.com/chiba/2009/03/22/163/ + $wsp = '[\x20\x09]'; + $vchar = '[\x21-\x7e]'; + $quoted_pair = "\\\\(?:$vchar|$wsp)"; + $qtext = '[\x21\x23-\x5b\x5d-\x7e]'; + $qcontent = "(?:$qtext|$quoted_pair)"; + $quoted_string = "\"$qcontent*\""; + $atext = '[a-zA-Z0-9!#$%&\'*+\-\/\=?^_`{|}~]'; + $dot_atom = "$atext+(?:[.]$atext+)*"; + $local_part = "(?:$dot_atom|$quoted_string)"; + $domain = $dot_atom; + $addr_spec = "{$local_part}[@]$domain"; + + $dot_atom_loose = "$atext+(?:[.]|$atext)*"; + $local_part_loose = "(?:$dot_atom_loose|$quoted_string)"; + $addr_spec_loose = "{$local_part_loose}[@]$domain"; + + $regexp = "/\A{$addr_spec}\z/"; + if (!preg_match($regexp, $email)) { + $email = preg_replace('/^(.*)@(.*)$/', '"$1"@$2', $email); + } + + return new Address($email); + } } diff --git a/src/Eccube/Service/OrderHelper.php b/src/Eccube/Service/OrderHelper.php index b88b8e596f8..8aa912866ac 100644 --- a/src/Eccube/Service/OrderHelper.php +++ b/src/Eccube/Service/OrderHelper.php @@ -13,6 +13,7 @@ namespace Eccube\Service; +use Detection\MobileDetect; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\EntityManagerInterface; @@ -34,16 +35,12 @@ use Eccube\Repository\OrderRepository; use Eccube\Repository\PaymentRepository; use Eccube\Util\StringUtil; -use SunCat\MobileDetectBundle\DeviceDetector\MobileDetector; -use Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface; +use Symfony\Component\Security\Core\User\UserInterface; class OrderHelper { - // FIXME 必要なメソッドのみ移植する - use ControllerTrait; - /** * @var ContainerInterface */ @@ -131,7 +128,7 @@ public function __construct( PaymentRepository $paymentRepository, DeviceTypeRepository $deviceTypeRepository, PrefRepository $prefRepository, - MobileDetector $mobileDetector, + MobileDetect $mobileDetector, SessionInterface $session ) { $this->container = $container; @@ -507,4 +504,28 @@ protected function addOrderItems(Order $Order, Shipping $Shipping, array $OrderI $OrderItem->setShipping($Shipping); } } + + /** + * @see Symfony\Bundle\FrameworkBundle\Controller\AbstractController + */ + private function isGranted($attribute, $subject = null): bool + { + return $this->container->get('security.authorization_checker')->isGranted($attribute, $subject); + } + + /** + * @see Symfony\Bundle\FrameworkBundle\Controller\AbstractController + */ + private function getUser(): ?UserInterface + { + if (null === $token = $this->container->get('security.token_storage')->getToken()) { + return null; + } + + if (!\is_object($user = $token->getUser())) { + return null; + } + + return $user; + } } diff --git a/src/Eccube/Service/OrderStateMachine.php b/src/Eccube/Service/OrderStateMachine.php index 751823b481a..dec1b931310 100644 --- a/src/Eccube/Service/OrderStateMachine.php +++ b/src/Eccube/Service/OrderStateMachine.php @@ -272,4 +272,23 @@ public function getOrder() { return $this->Order; } + + // order_state_machine.php の marking_store => property は、デフォルト値である marking を使用するよう強く推奨されている. + // EC-CUBE4.1 までは status を指定していたが、 Symfony5 よりエラーになるためエイリアスを作成して対応する. + + /** + * Alias of getStatus() + */ + public function getMarking(): string + { + return $this->getStatus(); + } + + /** + * Alias of setStatus() + */ + public function setMarking(string $status): void + { + $this->setStatus($status); + } } diff --git a/src/Eccube/Service/PluginService.php b/src/Eccube/Service/PluginService.php index 044d71458a8..9ec483a7fdf 100644 --- a/src/Eccube/Service/PluginService.php +++ b/src/Eccube/Service/PluginService.php @@ -250,9 +250,7 @@ public function preInstall() public function postInstall($config, $source) { // dbにプラグイン登録 - $this->entityManager->getConnection()->beginTransaction(); - try { $Plugin = $this->pluginRepository->findByCode($config['code']); @@ -276,10 +274,16 @@ public function postInstall($config, $source) $this->entityManager->persist($Plugin); $this->entityManager->flush(); - $this->entityManager->flush(); - $this->entityManager->getConnection()->commit(); + if ($this->entityManager->getConnection()->getNativeConnection()->inTransaction()) { + $this->entityManager->getConnection()->commit(); + } } catch (\Exception $e) { - $this->entityManager->getConnection()->rollback(); + if ($this->entityManager->getConnection()->getNativeConnection()->inTransaction()) { + if ($this->entityManager->getConnection()->isRollbackOnly()) { + $this->entityManager->getConnection()->rollback(); + } + } + throw new PluginException($e->getMessage(), $e->getCode(), $e); } } @@ -336,7 +340,7 @@ public function generateProxyAndCallback(callable $callback, Plugin $plugin, $co $entityDir = $this->eccubeConfig['plugin_realdir'].'/'.$plugin->getCode().'/Entity'; if (file_exists($entityDir)) { $ormConfig = $this->entityManager->getConfiguration(); - $chain = $ormConfig->getMetadataDriverImpl(); + $chain = $ormConfig->getMetadataDriverImpl()->getDriver(); $driver = $ormConfig->newDefaultAnnotationDriver([$entityDir], false); $namespace = 'Plugin\\'.$config['code'].'\\Entity'; $chain->addDriver($driver, $namespace); diff --git a/src/Eccube/Service/SchemaService.php b/src/Eccube/Service/SchemaService.php index 16844ff1b2e..69d32f1ef49 100644 --- a/src/Eccube/Service/SchemaService.php +++ b/src/Eccube/Service/SchemaService.php @@ -67,7 +67,7 @@ public function executeCallback(callable $callback, $generatedFiles, $proxiesDir } try { - $chain = $this->entityManager->getConfiguration()->getMetadataDriverImpl(); + $chain = $this->entityManager->getConfiguration()->getMetadataDriverImpl()->getDriver(); $drivers = $chain->getDrivers(); foreach ($drivers as $namespace => $oldDriver) { if ('Eccube\Entity' === $namespace || preg_match('/^Plugin\\\\.*\\\\Entity$/', $namespace)) { @@ -129,7 +129,7 @@ public function updateSchema($generatedFiles, $proxiesDirectory, $saveMode = fal */ public function dropTable($targetNamespace) { - $chain = $this->entityManager->getConfiguration()->getMetadataDriverImpl(); + $chain = $this->entityManager->getConfiguration()->getMetadataDriverImpl()->getDriver(); $drivers = $chain->getDrivers(); $dropMetas = []; diff --git a/src/Eccube/Service/SystemService.php b/src/Eccube/Service/SystemService.php index db9c624b659..c7c8e62a271 100644 --- a/src/Eccube/Service/SystemService.php +++ b/src/Eccube/Service/SystemService.php @@ -22,7 +22,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector; -use Symfony\Component\HttpKernel\Event\PostResponseEvent; +use Symfony\Component\HttpKernel\Event\TerminateEvent; use Symfony\Component\HttpKernel\KernelEvents; use function unlink; @@ -169,7 +169,7 @@ public function getMaintenanceToken(): ?string /** * KernelEvents::TERMINATE で設定されるEvent */ - public function disableMaintenanceEvent(PostResponseEvent $event) + public function disableMaintenanceEvent(TerminateEvent $event) { if ($this->disableMaintenanceAfterResponse) { $this->switchMaintenance(false, $this->maintenanceMode); diff --git a/src/Eccube/Service/TwoFactorAuthService.php b/src/Eccube/Service/TwoFactorAuthService.php index 33ba09c87d6..00bdda2e59a 100644 --- a/src/Eccube/Service/TwoFactorAuthService.php +++ b/src/Eccube/Service/TwoFactorAuthService.php @@ -195,7 +195,7 @@ public function createSecret() public function isEnabled() { $enabled = $this->eccubeConfig->get('eccube_2fa_enabled'); - if (is_string($enabled) && $enabled === 'false' || $enabled === false) { + if (is_string($enabled) && $enabled === '0' || $enabled === false) { return false; } diff --git a/src/Eccube/Twig/Environment.php b/src/Eccube/Twig/Environment.php deleted file mode 100644 index 583da94d63e..00000000000 --- a/src/Eccube/Twig/Environment.php +++ /dev/null @@ -1,36 +0,0 @@ -twig = $twig; - } - - public function render($name, array $context = []) - { - return $this->twig->render($name, $context); - } -} diff --git a/src/Eccube/Twig/Extension/CartServiceExtension.php b/src/Eccube/Twig/Extension/CartServiceExtension.php index a8012f9f298..5b7291a1bfa 100644 --- a/src/Eccube/Twig/Extension/CartServiceExtension.php +++ b/src/Eccube/Twig/Extension/CartServiceExtension.php @@ -15,6 +15,7 @@ use Eccube\Entity\Cart; use Eccube\Service\CartService; +use Twig\TwigFunction; use Twig\Extension\AbstractExtension; class CartServiceExtension extends AbstractExtension @@ -32,10 +33,10 @@ public function __construct(CartService $cartService) public function getFunctions() { return [ - new \Twig_Function('get_cart', [$this, 'get_cart'], ['is_safe' => ['all']]), - new \Twig_Function('get_all_carts', [$this, 'get_all_carts'], ['is_safe' => ['all']]), - new \Twig_Function('get_carts_total_price', [$this, 'get_carts_total_price'], ['is_safe' => ['all']]), - new \Twig_Function('get_carts_total_quantity', [$this, 'get_carts_total_quantity'], ['is_safe' => ['all']]), + new TwigFunction('get_cart', [$this, 'get_cart'], ['is_safe' => ['all']]), + new TwigFunction('get_all_carts', [$this, 'get_all_carts'], ['is_safe' => ['all']]), + new TwigFunction('get_carts_total_price', [$this, 'get_carts_total_price'], ['is_safe' => ['all']]), + new TwigFunction('get_carts_total_quantity', [$this, 'get_carts_total_quantity'], ['is_safe' => ['all']]), ]; } diff --git a/src/Eccube/Twig/Extension/EccubeBlockExtension.php b/src/Eccube/Twig/Extension/EccubeBlockExtension.php index be1c0008281..824ac13d591 100644 --- a/src/Eccube/Twig/Extension/EccubeBlockExtension.php +++ b/src/Eccube/Twig/Extension/EccubeBlockExtension.php @@ -38,7 +38,7 @@ public function getFunctions() } $files = $this->blockTemplates; foreach ($files as $file) { - $template = $this->twig->loadTemplate($file); + $template = $this->twig->load($file); if ($template->hasBlock($name, $context)) { return $template->renderBlock($name, $context); } diff --git a/src/Eccube/Twig/Extension/EccubeExtension.php b/src/Eccube/Twig/Extension/EccubeExtension.php index aa7cdbee64b..60736c07b94 100644 --- a/src/Eccube/Twig/Extension/EccubeExtension.php +++ b/src/Eccube/Twig/Extension/EccubeExtension.php @@ -20,7 +20,7 @@ use Eccube\Repository\ProductRepository; use Eccube\Util\StringUtil; use Symfony\Component\Form\FormView; -use Symfony\Component\Intl\Intl; +use Symfony\Component\Intl\Currencies; use Twig\Extension\AbstractExtension; use Twig\TwigFilter; use Twig\TwigFunction; @@ -61,7 +61,6 @@ public function getFunctions() new TwigFunction('active_menus', [$this, 'getActiveMenus']), new TwigFunction('class_categories_as_json', [$this, 'getClassCategoriesAsJson']), new TwigFunction('product', [$this, 'getProduct']), - new TwigFunction('php_*', [$this, 'getPhpFunctions'], ['pre_escape' => 'html', 'is_safe' => ['html']]), new TwigFunction('currency_symbol', [$this, 'getCurrencySymbol']), ]; } @@ -215,27 +214,6 @@ public function getProduct($id) return null; } - /** - * Twigでphp関数を使用できるようにする。 - * - * @return mixed|null - * @deprecated since EC-CUBE 4.1 - */ - public function getPhpFunctions() - { - @trigger_error(sprintf('The "%s()" method is deprecated since EC-CUBE 4.1.', __METHOD__), \E_USER_DEPRECATED); - $arg_list = func_get_args(); - $function = array_shift($arg_list); - - if (is_callable($function)) { - return call_user_func_array($function, $arg_list); - } - - trigger_error('Called to an undefined function : php_'.$function, E_USER_WARNING); - - return null; - } - /** * Get the ClassCategories as JSON. * @@ -368,7 +346,7 @@ public function getCurrencySymbol($currency = null) if (is_null($currency)) { $currency = $this->eccubeConfig->get('currency'); } - $symbol = Intl::getCurrencyBundle()->getCurrencySymbol($currency); + $symbol = Currencies::getSymbol($currency); return $symbol; } diff --git a/src/Eccube/Twig/Extension/IgnoreRoutingNotFoundExtension.php b/src/Eccube/Twig/Extension/IgnoreRoutingNotFoundExtension.php index e4f9f30800c..81958143949 100644 --- a/src/Eccube/Twig/Extension/IgnoreRoutingNotFoundExtension.php +++ b/src/Eccube/Twig/Extension/IgnoreRoutingNotFoundExtension.php @@ -13,11 +13,39 @@ namespace Eccube\Twig\Extension; -use Symfony\Bridge\Twig\Extension\RoutingExtension; use Symfony\Component\Routing\Exception\RouteNotFoundException; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Twig\Extension\AbstractExtension; +use Twig\Node\Expression\ArrayExpression; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Node; +use Twig\TwigFunction; -class IgnoreRoutingNotFoundExtension extends RoutingExtension +/** + * \Symfony\Bridge\Twig\Extension\RoutingExtension の拡張です. + * Symfony5 より \Symfony\Bridge\Twig\Extension\RoutingExtension が final になったため, 各メソッドを移植しています. + */ +class IgnoreRoutingNotFoundExtension extends AbstractExtension { + /** @var UrlGeneratorInterface */ + private $generator; + + public function __construct(UrlGeneratorInterface $generator) + { + $this->generator = $generator; + } + + /** + * {@inheritdoc} + */ + public function getFunctions(): array + { + return [ + new TwigFunction('url', [$this, 'getUrl'], ['is_safe_callback' => [$this, 'isUrlGenerationSafe']]), + new TwigFunction('path', [$this, 'getPath'], ['is_safe_callback' => [$this, 'isUrlGenerationSafe']]), + ]; + } + /** * bind から URL へ変換します。 * \Symfony\Bridge\Twig\Extension\RoutingExtension::getPath の処理を拡張し、 @@ -32,11 +60,10 @@ class IgnoreRoutingNotFoundExtension extends RoutingExtension public function getPath($name, $parameters = [], $relative = false) { try { - return parent::getPath($name, $parameters, $relative); + return $this->generator->generate($name, $parameters, $relative ? UrlGeneratorInterface::RELATIVE_PATH : UrlGeneratorInterface::ABSOLUTE_PATH); } catch (RouteNotFoundException $e) { log_warning($e->getMessage(), ['exception' => $e]); - - return parent::getPath('homepage').'404?bind='.$name; + return $this->generator->generate('homepage', $parameters, $relative ? UrlGeneratorInterface::RELATIVE_PATH : UrlGeneratorInterface::ABSOLUTE_PATH).'404?bind='.$name;; } } @@ -54,11 +81,34 @@ public function getPath($name, $parameters = [], $relative = false) public function getUrl($name, $parameters = [], $schemeRelative = false) { try { - return parent::getUrl($name, $parameters, $schemeRelative); + return $this->generator->generate($name, $parameters, $schemeRelative ? UrlGeneratorInterface::NETWORK_PATH : UrlGeneratorInterface::ABSOLUTE_URL); } catch (RouteNotFoundException $e) { log_warning($e->getMessage(), ['exception' => $e]); - return parent::getUrl('homepage').'404?bind='.$name; + return $this->generator->generate('homepage', $parameters, $schemeRelative ? UrlGeneratorInterface::NETWORK_PATH : UrlGeneratorInterface::ABSOLUTE_URL).'404?bind='.$name; } } + + /** + * @param Node $argsNode The arguments of the path/url function + * + * @return array An array with the contexts the URL is safe + * + * @see \Symfony\Bridge\Twig\Extension\RoutingExtension + */ + public function isUrlGenerationSafe(Node $argsNode): array + { + // support named arguments + $paramsNode = $argsNode->hasNode('parameters') ? $argsNode->getNode('parameters') : ( + $argsNode->hasNode(1) ? $argsNode->getNode(1) : null + ); + + if (null === $paramsNode || $paramsNode instanceof ArrayExpression && \count($paramsNode) <= 2 && + (!$paramsNode->hasNode(1) || $paramsNode->getNode(1) instanceof ConstantExpression) + ) { + return ['html']; + } + + return []; + } } diff --git a/src/Eccube/Twig/Extension/IntlExtension.php b/src/Eccube/Twig/Extension/IntlExtension.php index 662dcc44015..246e2f6f54a 100644 --- a/src/Eccube/Twig/Extension/IntlExtension.php +++ b/src/Eccube/Twig/Extension/IntlExtension.php @@ -33,7 +33,7 @@ public function getFilters() } /** - * localizeddate('medium', 'none')のショートカット. + * format_datetime('medium', 'none')のショートカット. * * 2015/08/28のように、日までのフォーマットで表示します(localeがjaの場合). * null,空文字に対して利用した場合は、空文字を返却します. @@ -49,11 +49,11 @@ public function date_day(Environment $env, $date) return ''; } - return \twig_localized_date_filter($env, $date, 'medium', 'none'); + return (new \Twig\Extra\Intl\IntlExtension())->formatDateTime($env, $date, 'medium', 'none'); } /** - * localizeddate('medium', 'short')のショートカット. + * format_datetime('medium', 'short')のショートカット. * * 2015/08/28 16:13のように、分までのフォーマットで表示します(localeがjaの場合). * null,空文字に対して利用した場合は、空文字を返却します. @@ -69,11 +69,11 @@ public function date_min(Environment $env, $date) return ''; } - return \twig_localized_date_filter($env, $date, 'medium', 'short'); + return (new \Twig\Extra\Intl\IntlExtension())->formatDateTime($env, $date, 'medium', 'short'); } /** - * localizeddate('medium', 'medium')のショートカット. + * format_datetime('medium', 'medium')のショートカット. * * 2015/08/28 16:13:05(localeがjaの場合). * null,空文字に対して利用した場合は、空文字を返却します. @@ -89,7 +89,7 @@ public function date_sec(Environment $env, $date) return ''; } - return \twig_localized_date_filter($env, $date, 'medium', 'medium'); + return (new \Twig\Extra\Intl\IntlExtension())->formatDateTime($env, $date, 'medium', 'medium'); } /** @@ -104,7 +104,7 @@ public function date_day_with_weekday(Environment $env, $date) return ''; } - $date_day = \twig_localized_date_filter($env, $date, 'medium', 'none'); + $date_day = (new \Twig\Extra\Intl\IntlExtension())->formatDateTime($env, $date, 'medium'); // 曜日 $dateFormatter = \IntlDateFormatter::create( 'ja_JP@calendar=japanese', diff --git a/src/Eccube/Twig/Extension/TwigIncludeExtension.php b/src/Eccube/Twig/Extension/TwigIncludeExtension.php index dfb1307f9bb..4c70381f4d4 100644 --- a/src/Eccube/Twig/Extension/TwigIncludeExtension.php +++ b/src/Eccube/Twig/Extension/TwigIncludeExtension.php @@ -13,6 +13,7 @@ namespace Eccube\Twig\Extension; +use Twig\TwigFunction; use Twig\Extension\AbstractExtension; class TwigIncludeExtension extends AbstractExtension @@ -27,7 +28,7 @@ public function __construct(\Twig\Environment $twig) public function getFunctions() { return [ - new \Twig_Function('include_dispatch', [$this, 'include_dispatch'], + new TwigFunction('include_dispatch', [$this, 'include_dispatch'], ['needs_context' => true, 'is_safe' => ['all']]), ]; } diff --git a/src/Eccube/Twig/Template.php b/src/Eccube/Twig/Template.php index 191b56bc72e..caa561e8650 100644 --- a/src/Eccube/Twig/Template.php +++ b/src/Eccube/Twig/Template.php @@ -15,6 +15,7 @@ use Eccube\Event\TemplateEvent; use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Twig\Source; class Template extends \Twig\Template { @@ -32,7 +33,7 @@ public function display(array $context, array $blocks = []) $eventDispatcher = $globals['event_dispatcher']; $originCode = $this->env->getLoader()->getSourceContext($this->getTemplateName())->getCode(); $event = new TemplateEvent($this->getTemplateName(), $originCode, $context); - $eventDispatcher->dispatch($this->getTemplateName(), $event); + $eventDispatcher->dispatch($event, $this->getTemplateName()); if ($event->getSource() !== $originCode) { $newTemplate = $this->env->createTemplate($event->getSource()); $newTemplate->display($event->getParameters(), $blocks); @@ -62,4 +63,10 @@ protected function doDisplay(array $context, array $blocks = []) { // Templateのキャッシュ作成時に動的に作成されるメソッド } + + public function getSourceContext() + { + // FIXME Twig\Loader\FilesystemLoader の実装を持ってきたが,これで問題ないか要確認 + return new Source('', $this->getTemplateName(), ''); + } } diff --git a/src/Eccube/Util/CacheUtil.php b/src/Eccube/Util/CacheUtil.php index 0c384de48cb..be3b70bdf35 100644 --- a/src/Eccube/Util/CacheUtil.php +++ b/src/Eccube/Util/CacheUtil.php @@ -22,7 +22,7 @@ use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Finder\Finder; use Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer; -use Symfony\Component\HttpKernel\Event\PostResponseEvent; +use Symfony\Component\HttpKernel\Event\TerminateEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\KernelInterface; @@ -64,7 +64,7 @@ public function clearCache($env = null) $this->clearCacheAfterResponse = $env; } - public function forceClearCache(PostResponseEvent $event) + public function forceClearCache(TerminateEvent $event) { if ($this->clearCacheAfterResponse === false) { return; diff --git a/symfony.lock b/symfony.lock index 7a934b8cc0d..ce4d6d40df7 100644 --- a/symfony.lock +++ b/symfony.lock @@ -2,9 +2,6 @@ "behat/gherkin": { "version": "v4.5.1" }, - "bheller/images-generator": { - "version": "1.0.1" - }, "captbaritone/mailcatcher-codeception-module": { "version": "1.2.1" }, @@ -63,7 +60,10 @@ "branch": "master", "version": "4.0", "ref": "56eaa387b5e48ebcc7c95a893b47dfa1ad51449c" - } + }, + "files": [ + "app/config/eccube/packages/test/dama_doctrine_test_bundle.yaml" + ] }, "doctrine/annotations": { "version": "1.0", @@ -101,20 +101,21 @@ "ref": "44d3aa7752dd46f77ba11af2297a25e1dedfb4d0" } }, - "doctrine/doctrine-cache-bundle": { - "version": "1.3.2" - }, "doctrine/doctrine-fixtures-bundle": { "version": "v2.4.1" }, "doctrine/doctrine-migrations-bundle": { - "version": "1.2", + "version": "3.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "1.2", - "ref": "c1431086fec31f17fbcfe6d6d7e92059458facc1" - } + "version": "3.1", + "ref": "ee609429c9ee23e22d6fa5728211768f51ed2818" + }, + "files": [ + "app/config/eccube/packages/doctrine_migrations.yaml", + "migrations/.gitignore" + ] }, "doctrine/event-manager": { "version": "v1.0.0" @@ -129,7 +130,7 @@ "version": "v1.0.1" }, "doctrine/migrations": { - "version": "v1.6.2" + "version": "3.2.1" }, "doctrine/orm": { "version": "v2.5.13" @@ -137,8 +138,8 @@ "doctrine/persistence": { "version": "v1.0.0" }, - "doctrine/reflection": { - "version": "v1.0.0" + "doctrine/sql-formatter": { + "version": "1.1.1" }, "easycorp/easy-log-handler": { "version": "1.0", @@ -167,6 +168,9 @@ "ezyang/htmlpurifier": { "version": "v4.13.0" }, + "fakerphp/faker": { + "version": "v1.16.0" + }, "friendsofphp/php-cs-fixer": { "version": "2.2", "recipe": { @@ -177,10 +181,10 @@ } }, "friendsofphp/proxy-manager-lts": { - "version": "v1.0.3" + "version": "v1.0.5" }, - "fzaninotto/faker": { - "version": "v1.7.1" + "graham-campbell/result-type": { + "version": "v1.0.4" }, "guzzlehttp/guzzle": { "version": "6.3.0" @@ -191,9 +195,6 @@ "guzzlehttp/psr7": { "version": "1.4.2" }, - "jdorn/sql-formatter": { - "version": "v1.2.17" - }, "justinrainbow/json-schema": { "version": "5.2.6" }, @@ -203,18 +204,9 @@ "knplabs/knp-paginator-bundle": { "version": "v2.7.1" }, - "kylekatarnls/update-helper": { - "version": "1.2.0" - }, "laminas/laminas-code": { "version": "3.4.1" }, - "laminas/laminas-eventmanager": { - "version": "3.2.1" - }, - "laminas/laminas-zendframework-bridge": { - "version": "1.1.1" - }, "mikey179/vfsstream": { "version": "v1.6.5" }, @@ -233,24 +225,12 @@ "nikic/php-parser": { "version": "v4.0.3" }, - "ocramius/package-versions": { - "version": "1.2.0" - }, - "ocramius/proxy-manager": { - "version": "2.1.1" - }, "phar-io/manifest": { "version": "1.0.1" }, "phar-io/version": { "version": "1.0.1" }, - "php": { - "version": "7.1.3" - }, - "php-coveralls/php-coveralls": { - "version": "v2.4.3" - }, "php-cs-fixer/diff": { "version": "v1.2.0" }, @@ -266,6 +246,9 @@ "phpdocumentor/type-resolver": { "version": "0.4.0" }, + "phpoption/phpoption": { + "version": "1.8.1" + }, "phpspec/prophecy": { "version": "1.7.5" }, @@ -278,26 +261,28 @@ "phpunit/php-file-iterator": { "version": "1.4.5" }, + "phpunit/php-invoker": { + "version": "3.1.1" + }, "phpunit/php-text-template": { "version": "1.2.1" }, "phpunit/php-timer": { "version": "1.0.9" }, - "phpunit/php-token-stream": { - "version": "2.0.2" - }, "phpunit/phpunit": { - "version": "4.7", + "version": "9.5", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "4.7", - "ref": "c276fa48d4713de91eb410289b3b1834acb7e403" - } - }, - "pimple/pimple": { - "version": "v1.1.1" + "version": "9.3", + "ref": "a6249a6c4392e9169b87abf93225f7f9f59025e6" + }, + "files": [ + ".env.test", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] }, "psr/cache": { "version": "1.0.1" @@ -305,6 +290,15 @@ "psr/container": { "version": "1.0.0" }, + "psr/event-dispatcher": { + "version": "1.0.0" + }, + "psr/http-client": { + "version": "1.0.1" + }, + "psr/http-factory": { + "version": "1.0.1" + }, "psr/http-message": { "version": "1.0.1" }, @@ -323,12 +317,21 @@ "robthree/twofactorauth": { "version": "1.8.0" }, + "sebastian/cli-parser": { + "version": "1.0.1" + }, + "sebastian/code-unit": { + "version": "1.0.8" + }, "sebastian/code-unit-reverse-lookup": { "version": "1.0.1" }, "sebastian/comparator": { "version": "2.1.3" }, + "sebastian/complexity": { + "version": "2.0.2" + }, "sebastian/diff": { "version": "2.0.1" }, @@ -341,6 +344,9 @@ "sebastian/global-state": { "version": "2.0.0" }, + "sebastian/lines-of-code": { + "version": "1.0.3" + }, "sebastian/object-enumerator": { "version": "3.0.3" }, @@ -353,6 +359,9 @@ "sebastian/resource-operations": { "version": "1.0.0" }, + "sebastian/type": { + "version": "2.3.4" + }, "sebastian/version": { "version": "2.0.1" }, @@ -374,15 +383,6 @@ "app/config/eccube/packages/sensio_framework_extra.yaml" ] }, - "sensiolabs/security-checker": { - "version": "4.0", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "4.0", - "ref": "576d653444dade07f272c889d52fe4594caa4fc3" - } - }, "setasign/fpdi": { "version": "v2.0.3" }, @@ -395,18 +395,6 @@ "softcreatr/jsonpath": { "version": "0.7.5" }, - "suncat/mobile-detect-bundle": { - "version": "1.0", - "recipe": { - "repo": "github.com/symfony/recipes-contrib", - "branch": "master", - "version": "1.0", - "ref": "8284b33273c99974ef84c7e544e94aefac1a4c7f" - } - }, - "swiftmailer/swiftmailer": { - "version": "v5.4.8" - }, "symfony/asset": { "version": "v3.4.1" }, @@ -434,9 +422,6 @@ "symfony/css-selector": { "version": "v3.4.1" }, - "symfony/debug": { - "version": "v3.4.1" - }, "symfony/debug-bundle": { "version": "3.3", "recipe": { @@ -494,9 +479,6 @@ "ref": "8c507e663cf8a8c023d4287974d909bf68f06814" } }, - "symfony/http-client-contracts": { - "version": "v1.1.10" - }, "symfony/http-foundation": { "version": "v3.4.1" }, @@ -509,6 +491,18 @@ "symfony/intl": { "version": "v3.4.1" }, + "symfony/mailer": { + "version": "5.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "4.3", + "ref": "97a61eabb351d7f6cb7702039bcfe07fe9d7e03c" + }, + "files": [ + "app/config/eccube/packages/mailer.yaml" + ] + }, "symfony/maker-bundle": { "version": "1.0", "recipe": { @@ -519,7 +513,7 @@ } }, "symfony/mime": { - "version": "v4.4.0" + "version": "v5.4.8" }, "symfony/monolog-bridge": { "version": "v3.4.1" @@ -536,6 +530,9 @@ "symfony/options-resolver": { "version": "v3.4.1" }, + "symfony/password-hasher": { + "version": "v5.4.3" + }, "symfony/phpunit-bridge": { "version": "3.3", "recipe": { @@ -549,7 +546,10 @@ "version": "v1.8.0" }, "symfony/polyfill-iconv": { - "version": "v1.17.1" + "version": "v1.25.0" + }, + "symfony/polyfill-intl-grapheme": { + "version": "v1.25.0" }, "symfony/polyfill-intl-icu": { "version": "v1.6.0" @@ -563,9 +563,6 @@ "symfony/polyfill-mbstring": { "version": "v1.6.0" }, - "symfony/polyfill-php70": { - "version": "v1.6.0" - }, "symfony/polyfill-php72": { "version": "v1.6.0" }, @@ -584,6 +581,9 @@ "symfony/property-access": { "version": "v3.4.1" }, + "symfony/property-info": { + "version": "v5.4.7" + }, "symfony/proxy-manager-bridge": { "version": "v3.4.4" }, @@ -596,9 +596,6 @@ "ref": "a249484db698d1a847a30291c8f732414ac47e25" } }, - "symfony/security": { - "version": "v3.4.1" - }, "symfony/security-bundle": { "version": "3.3", "recipe": { @@ -608,9 +605,18 @@ "ref": "85834af1496735f28d831489d12ab1921a875e0d" } }, + "symfony/security-core": { + "version": "v5.4.7" + }, "symfony/security-csrf": { "version": "v3.4.1" }, + "symfony/security-guard": { + "version": "v5.4.3" + }, + "symfony/security-http": { + "version": "v5.4.5" + }, "symfony/serializer": { "version": "v3.4.1" }, @@ -620,14 +626,8 @@ "symfony/stopwatch": { "version": "v3.4.1" }, - "symfony/swiftmailer-bundle": { - "version": "2.5", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "2.5", - "ref": "8daf8ede72274989fb0dc66b83cb4bc1693afbb9" - } + "symfony/string": { + "version": "v5.4.3" }, "symfony/templating": { "version": "v3.4.1" @@ -674,15 +674,6 @@ "ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6" } }, - "symfony/web-server-bundle": { - "version": "3.3", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "c72d107d077f1654428edaed69415d0228c1aefe" - } - }, "symfony/workflow": { "version": "3.3", "recipe": { @@ -701,14 +692,11 @@ "theseer/tokenizer": { "version": "1.1.0" }, - "twig/extensions": { - "version": "1.0", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "1.0", - "ref": "4851df0afc426b8f07204379d21fca25b6df5d68" - } + "twig/extra-bundle": { + "version": "v3.3.8" + }, + "twig/intl-extra": { + "version": "v3.3.5" }, "twig/twig": { "version": "v2.4.4" @@ -719,10 +707,13 @@ "webmozart/assert": { "version": "1.3.0" }, - "zendframework/zend-code": { - "version": "3.3.0" + "zbateson/mail-mime-parser": { + "version": "1.3.3" + }, + "zbateson/mb-wrapper": { + "version": "1.1.1" }, - "zendframework/zend-eventmanager": { - "version": "3.2.0" + "zbateson/stream-decorators": { + "version": "1.0.6" } } diff --git a/tests/Eccube/Tests/Command/AbstractCommandTest.php b/tests/Eccube/Tests/Command/AbstractCommandTest.php index 9205bb732ba..08cfcdae916 100644 --- a/tests/Eccube/Tests/Command/AbstractCommandTest.php +++ b/tests/Eccube/Tests/Command/AbstractCommandTest.php @@ -61,7 +61,7 @@ abstract class AbstractCommandTest extends EccubeTestCase */ protected $loopCheckSum = 0; - public function tearDown() + protected function tearDown(): void { parent::tearDown(); Application::clearInstance(); diff --git a/tests/Eccube/Tests/Command/CsvLoaderCommandTest.php b/tests/Eccube/Tests/Command/CsvLoaderCommandTest.php index 18d2dc27176..f75f0c6993e 100644 --- a/tests/Eccube/Tests/Command/CsvLoaderCommandTest.php +++ b/tests/Eccube/Tests/Command/CsvLoaderCommandTest.php @@ -21,12 +21,12 @@ class CsvLoaderCommandTest extends AbstractCommandTest /** @var \SplFileObject */ protected $file; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { self::markTestIncomplete(); } - public function setUp() + protected function setUp(): void { $this->markTestIncomplete(get_class($this).' は未実装です'); parent::setUp(); @@ -61,7 +61,7 @@ public function testExecute() $CommandTester->execute($commandArg); $output = $CommandTester->getDisplay(); - $this->assertContains('CSV Loader complete.', $output); + $this->assertStringContainsString('CSV Loader complete.', $output); $this->file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::READ_AHEAD | \SplFileObject::SKIP_EMPTY); $this->file->rewind(); diff --git a/tests/Eccube/Tests/Command/UpdateSchemaDoctrineCommandTest.php b/tests/Eccube/Tests/Command/UpdateSchemaDoctrineCommandTest.php index 076c0693e16..c19219ed81a 100644 --- a/tests/Eccube/Tests/Command/UpdateSchemaDoctrineCommandTest.php +++ b/tests/Eccube/Tests/Command/UpdateSchemaDoctrineCommandTest.php @@ -48,7 +48,7 @@ class UpdateSchemaDoctrineCommandTest extends EccubeTestCase const NAME = 'eccube:schema:update'; - public function setUp() + protected function setUp(): void { parent::setUp(); $conn = $this->entityManager->getConnection(); @@ -68,7 +68,7 @@ public function setUp() $this->schemaService = self::$container->get(SchemaService::class); } - public function tearDown() + protected function tearDown(): void { $schema = $this->getSchemaManager(); $columns = $schema->listTableColumns('dtb_customer'); @@ -91,8 +91,8 @@ public function testHelpWithOriginalDoctrineCommand() ); $display = $tester->getDisplay(); - $this->assertContains('eccube:schema:update --force', $display); - $this->assertContains('eccube:schema:update --dump-sql', $display); + $this->assertStringContainsString('eccube:schema:update --force', $display); + $this->assertStringContainsString('eccube:schema:update --dump-sql', $display); } public function testHelpWithNoProxy() @@ -108,8 +108,8 @@ public function testHelpWithNoProxy() ); $display = $tester->getDisplay(); - $this->assertContains('eccube:schema:update --force', $display); - $this->assertContains('eccube:schema:update --dump-sql', $display); + $this->assertStringContainsString('eccube:schema:update --force', $display); + $this->assertStringContainsString('eccube:schema:update --dump-sql', $display); } /** @@ -130,7 +130,7 @@ public function testInstallPluginWithNoProxy() ] ); $display = $commandTester->getDisplay(); - $this->assertContains( + $this->assertStringContainsString( 'ALTER TABLE dtb_customer DROP test_update_schema_command', $display, '--no-proxy is do not use proxy' @@ -170,7 +170,7 @@ public function testInstallPluginWithProxy() ] ); $display = $commandTester->getDisplay(); - $this->assertContains('[OK] Nothing to update', $display, 'Use proxy'); + $this->assertStringContainsString('[OK] Nothing to update', $display, 'Use proxy'); /** @var AbstractSchemaManager $schema */ $schema = $this->getSchemaManager(); @@ -214,7 +214,7 @@ public function testEnablePluginWithNoProxy() ] ); $display = $commandTester->getDisplay(); - $this->assertContains('[OK] Nothing to update', $display, '--no-proxy is do not use proxy'); + $this->assertStringContainsString('[OK] Nothing to update', $display, '--no-proxy is do not use proxy'); /** @var AbstractSchemaManager $schema */ $schema = $this->getSchemaManager(); @@ -252,7 +252,7 @@ public function testEnablePluginWithProxy() ] ); $display = $commandTester->getDisplay(); - $this->assertContains('[OK] Nothing to update', $display, 'Use proxy'); + $this->assertStringContainsString('[OK] Nothing to update', $display, 'Use proxy'); /** @var AbstractSchemaManager $schema */ $schema = $this->getSchemaManager(); @@ -295,7 +295,7 @@ public function testDisablePluginWithNoProxy() ] ); $display = $commandTester->getDisplay(); - $this->assertContains( + $this->assertStringContainsString( 'ALTER TABLE dtb_customer DROP test_update_schema_command', $display, '--no-proxy is do not use proxy' @@ -340,7 +340,7 @@ public function testDisablePluginWithProxy() ] ); $display = $commandTester->getDisplay(); - $this->assertContains('[OK] Nothing to update', $display, 'Use proxy'); + $this->assertStringContainsString('[OK] Nothing to update', $display, 'Use proxy'); /** @var AbstractSchemaManager $schema */ $schema = $this->getSchemaManager(); @@ -484,7 +484,7 @@ private function executeExternalProcess($command) \DAMA\DoctrineTestBundle\Doctrine\DBAL\StaticDriver::commit(); \DAMA\DoctrineTestBundle\Doctrine\DBAL\StaticDriver::beginTransaction(); try { - $process = new Process($command); + $process = new Process(explode(' ', $command)); $process->mustRun(); return $process->getOutput(); diff --git a/tests/Eccube/Tests/Common/EccubeConfigTest.php b/tests/Eccube/Tests/Common/EccubeConfigTest.php index 6cf17779ad8..a60c4a4addd 100644 --- a/tests/Eccube/Tests/Common/EccubeConfigTest.php +++ b/tests/Eccube/Tests/Common/EccubeConfigTest.php @@ -24,7 +24,7 @@ class EccubeConfigTest extends TestCase */ protected $eccubeConfig; - public function setup() + protected function setup(): void { $container = new Container(); $this->eccubeConfig = new EccubeConfig($container); diff --git a/tests/Eccube/Tests/DependencyInjection/Compiler/NavCompilerPassTest.php b/tests/Eccube/Tests/DependencyInjection/Compiler/NavCompilerPassTest.php index c1684d1565f..798bcddf7da 100644 --- a/tests/Eccube/Tests/DependencyInjection/Compiler/NavCompilerPassTest.php +++ b/tests/Eccube/Tests/DependencyInjection/Compiler/NavCompilerPassTest.php @@ -33,10 +33,10 @@ public function testDefaultNav() $eccubeNav = $container->getParameter('eccube_nav'); // DefaultNavの全要素が含まれている - self::assertArraySubset(DefaultNav::getNav(), $eccubeNav); + self::assertSame(DefaultNav::getNav(), $eccubeNav); // DefaultNav以外の要素が含まれていない - self::assertEquals(DefaultNav::getNav(), $eccubeNav); + self::assertSame(DefaultNav::getNav(), $eccubeNav); } /** @@ -59,19 +59,16 @@ public function testAddNav($class, $expected) $eccubeNav = $container->getParameter('eccube_nav'); - // DefaultNavの全要素が含まれている - self::assertArraySubset(DefaultNav::getNav(), $eccubeNav); - // AddNavの全要素が含まれている - self::assertArraySubset($expected, $eccubeNav); + self::assertSame($expected, $eccubeNav); } public function addNavProvider() { return [ - [AddNav1::class, AddNav1::getNav()], - [AddNav2::class, AddNav2::getNav()], - [AddNav3::class, AddNav3::getNav()], + [AddNav1::class, AddNav1::getExpect()], + [AddNav2::class, AddNav2::getExpect()], + [AddNav3::class, AddNav3::getExpect()], ]; } @@ -93,13 +90,8 @@ public function testUpdateNav() // DefaultNavから変更されている self::assertNotEquals(DefaultNav::getNav(), $eccubeNav); - // nav['default']['name'] 以外のDefaultNavの全要素が含まれている - $expected = DefaultNav::getNav(); - unset($expected['default']['name']); - self::assertArraySubset($expected, $eccubeNav); - // UpdateNavの全要素が含まれている - self::assertArraySubset(UpdateNav::getNav(), $eccubeNav); + self::assertSame(UpdateNav::getExpect(), $eccubeNav); } /** @@ -172,6 +164,40 @@ public static function getNav() ], ]; } + + public static function getExpect() + { + return [ + 'default' => [ + 'name' => 'default', + 'icon' => 'fa-cube', + 'child' => [ + 'default_1' => [ + 'name' => 'default-1', + 'url' => 'admin_homepage', + ], + 'default_2' => [ + 'name' => 'default-2', + 'child' => [ + 'default_2_1' => [ + 'name' => 'default-2-1', + 'url' => 'admin_homepage', + ], + 'default_2_2' => [ + 'name' => 'default-2-2', + 'url' => 'admin_homepage', + ], + ], + ], + ], + ], + 'add' => [ + 'name' => 'add', + 'icon' => 'fa-cube', + 'url' => 'admin_homepage', + ], + ]; + } } /** @@ -194,6 +220,40 @@ public static function getNav() ], ]; } + + public static function getExpect() + { + return [ + 'default' => [ + 'name' => 'default', + 'icon' => 'fa-cube', + 'child' => [ + 'default_1' => [ + 'name' => 'default-1', + 'url' => 'admin_homepage', + ], + 'default_2' => [ + 'name' => 'default-2', + 'child' => [ + 'default_2_1' => [ + 'name' => 'default-2-1', + 'url' => 'admin_homepage', + ], + 'default_2_2' => [ + 'name' => 'default-2-2', + 'url' => 'admin_homepage', + ], + ], + ], + 'default_add' => [ + 'name' => 'default-add', + 'url' => 'admin_homepage', + ], + + ], + ], + ]; + } } /** @@ -220,6 +280,39 @@ public static function getNav() ], ]; } + + public static function getExpect() + { + return [ + 'default' => [ + 'name' => 'default', + 'icon' => 'fa-cube', + 'child' => [ + 'default_1' => [ + 'name' => 'default-1', + 'url' => 'admin_homepage', + ], + 'default_2' => [ + 'name' => 'default-2', + 'child' => [ + 'default_2_1' => [ + 'name' => 'default-2-1', + 'url' => 'admin_homepage', + ], + 'default_2_2' => [ + 'name' => 'default-2-2', + 'url' => 'admin_homepage', + ], + 'default_2_add' => [ + 'name' => 'default-2-add', + 'url' => 'admin_homepage', + ], + ], + ], + ], + ], + ]; + } } /** @@ -237,4 +330,33 @@ public static function getNav() ], ]; } + + public static function getExpect() + { + return [ + 'default' => [ + 'name' => 'update', + 'icon' => 'fa-cube', + 'child' => [ + 'default_1' => [ + 'name' => 'default-1', + 'url' => 'admin_homepage', + ], + 'default_2' => [ + 'name' => 'default-2', + 'child' => [ + 'default_2_1' => [ + 'name' => 'default-2-1', + 'url' => 'admin_homepage', + ], + 'default_2_2' => [ + 'name' => 'default-2-2', + 'url' => 'admin_homepage', + ], + ], + ], + ], + ], + ]; + } } diff --git a/tests/Eccube/Tests/DependencyInjection/Compiler/PluginPassTest.php b/tests/Eccube/Tests/DependencyInjection/Compiler/PluginPassTest.php index 7d02d7fd085..4f851d1d29d 100644 --- a/tests/Eccube/Tests/DependencyInjection/Compiler/PluginPassTest.php +++ b/tests/Eccube/Tests/DependencyInjection/Compiler/PluginPassTest.php @@ -24,7 +24,7 @@ class PluginPassTest extends TestCase */ private $containerBuilder; - public function setUp() + protected function setUp(): void { $this->containerBuilder = new ContainerBuilder(); $this->containerBuilder->register(\Plugin\Sample\TestClass::class) diff --git a/tests/Eccube/Tests/DependencyInjection/Compiler/PurchaseFlowPassTest.php b/tests/Eccube/Tests/DependencyInjection/Compiler/PurchaseFlowPassTest.php index 8272f48c42d..f77dc177842 100644 --- a/tests/Eccube/Tests/DependencyInjection/Compiler/PurchaseFlowPassTest.php +++ b/tests/Eccube/Tests/DependencyInjection/Compiler/PurchaseFlowPassTest.php @@ -35,7 +35,7 @@ class PurchaseFlowPassTest extends EccubeTestCase { public static $called = false; - public function setUp() + protected function setUp(): void { self::$called = false; parent::setUp(); diff --git a/tests/Eccube/Tests/DependencyInjection/Compiler/TwigExtensionPassTest.php b/tests/Eccube/Tests/DependencyInjection/Compiler/TwigExtensionPassTest.php index e5c4e2c35f4..1f5b13b08d5 100644 --- a/tests/Eccube/Tests/DependencyInjection/Compiler/TwigExtensionPassTest.php +++ b/tests/Eccube/Tests/DependencyInjection/Compiler/TwigExtensionPassTest.php @@ -30,7 +30,7 @@ class TwigExtensionPassTest extends TestCase /** @var ContainerBuilder */ protected $containerBuilder; - public function setUp() + protected function setUp(): void { $this->containerBuilder = new ContainerBuilder(); diff --git a/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/CsvFixtureTest.php b/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/CsvFixtureTest.php index 33ff46bcd74..3f8b5f9761d 100644 --- a/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/CsvFixtureTest.php +++ b/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/CsvFixtureTest.php @@ -37,7 +37,7 @@ class CsvFixtureTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/Executor/DbalExecutorTest.php b/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/Executor/DbalExecutorTest.php index aeaba14cd9a..13ce03020b2 100644 --- a/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/Executor/DbalExecutorTest.php +++ b/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/Executor/DbalExecutorTest.php @@ -38,7 +38,7 @@ class DbalExecutorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/LoaderTest.php b/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/LoaderTest.php index c882bff5df7..eb5dfe14b5b 100644 --- a/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/LoaderTest.php +++ b/tests/Eccube/Tests/Doctrine/Common/CsvDataFixtures/LoaderTest.php @@ -34,7 +34,7 @@ class LoaderTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->loader = new Loader(); diff --git a/tests/Eccube/Tests/Doctrine/ORM/Tools/PaginationTest.php b/tests/Eccube/Tests/Doctrine/ORM/Tools/PaginationTest.php index 327ab83ec8f..ab12a686c9a 100644 --- a/tests/Eccube/Tests/Doctrine/ORM/Tools/PaginationTest.php +++ b/tests/Eccube/Tests/Doctrine/ORM/Tools/PaginationTest.php @@ -58,7 +58,7 @@ class PaginationTest extends EccubeTestCase * @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\OptimisticLockException */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -86,7 +86,7 @@ public function setUp() // テスト用のエンティティを用意 $config = $em->getConfiguration(); $driver = $config->newDefaultAnnotationDriver(__DIR__, false); - $chain = $config->getMetadataDriverImpl(); + $chain = $config->getMetadataDriverImpl()->getDriver(); $chain->addDriver($driver, __NAMESPACE__); // 初期データより大きい値を指定 @@ -104,7 +104,7 @@ public function setUp() } } - public function tearDown() + protected function tearDown(): void { /** @var EntityManager $em */ $em = $this->entityManager; diff --git a/tests/Eccube/Tests/Doctrine/TimeZone/TimeZoneTest.php b/tests/Eccube/Tests/Doctrine/TimeZone/TimeZoneTest.php index 74d1affbf11..1586f1c758e 100644 --- a/tests/Eccube/Tests/Doctrine/TimeZone/TimeZoneTest.php +++ b/tests/Eccube/Tests/Doctrine/TimeZone/TimeZoneTest.php @@ -29,7 +29,7 @@ class TimeZoneTest extends EccubeTestCase * * @throws \Doctrine\DBAL\DBALException */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/EccubeTestCase.php b/tests/Eccube/Tests/EccubeTestCase.php index 44fce2065ae..bf6decc4496 100644 --- a/tests/Eccube/Tests/EccubeTestCase.php +++ b/tests/Eccube/Tests/EccubeTestCase.php @@ -20,9 +20,8 @@ use Eccube\Tests\Fixture\Generator; use Faker\Factory as Faker; use GuzzleHttp\Client as HttpClient; -use Symfony\Bundle\FrameworkBundle\Client; +use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; -use Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector; use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; @@ -40,7 +39,7 @@ abstract class EccubeTestCase extends WebTestCase protected $expected; /** - * @var Client + * @var KernelBrowser */ protected $client; @@ -57,10 +56,9 @@ abstract class EccubeTestCase extends WebTestCase /** * Client を生成しトランザクションを開始する. */ - public function setUp() + protected function setUp(): void { parent::setUp(); - self::bootKernel(); $this->client = static::createClient(); $this->entityManager = self::$container->get('doctrine')->getManager(); $this->eccubeConfig = self::$container->get(EccubeConfig::class); @@ -69,7 +67,7 @@ public function setUp() /** * トランザクションをロールバックする. */ - public function tearDown() + protected function tearDown(): void { parent::tearDown(); @@ -276,125 +274,6 @@ protected function cleanUpProperties() } } - /** - * MailCatcher を初期化する. - * - * このメソッドは主に setUp() メソッドでコールされる. - * MailCatcher が起動してない場合は, テストをスキップする. - * MailCatcher については \Eccube\Tests\Service\MailServiceTest のコメントを参照してください - * - * @see \Eccube\Tests\Service\MailServiceTest - * @see http://mailcatcher.me/ - * @deprecated - */ - protected function initializeMailCatcher() - { - $this->checkMailCatcherStatus(); - } - - /** - * MailCatcher の起動状態をチェックする. - * - * MailCatcher が起動していない場合は, テストをスキップする. - * - * @deprecated - */ - protected function checkMailCatcherStatus() - { - trigger_error('MailCatcher is deprecated. Please implementation to the EccubeTestCase::getMailCollector().', E_USER_ERROR); - try { - $httpClient = new HttpClient(); - $response = $httpClient->get(self::MAILCATCHER_URL.'messages'); - if ($response->getStatusCode() !== 200) { - throw new HttpException($response->getStatusCode()); - } - } catch (HttpException $e) { - $this->markTestSkipped($e->getMailCatcherMessage().'['.$e->getStatusCode().']'); - } catch (\Exception $e) { - $message = 'MailCatcher is not available'; - $this->markTestSkipped($message); - log_error($message); - } - } - - /** - * MailCatcher のメッセージをすべて削除する. - * - * @deprecated - */ - protected function cleanUpMailCatcherMessages() - { - try { - $httpClient = new HttpClient(); - $response = $httpClient->delete(self::MAILCATCHER_URL.'messages'); - } catch (\Exception $e) { - log_error('['.get_class().'] '.$e->getMessage()); - } - } - - /** - * MailCatcher のメッセージをすべて取得する. - * - * @return array MailCatcher のメッセージの配列 - * - * @deprecated - */ - protected function getMailCatcherMessages() - { - $httpClient = new HttpClient(); - $response = $httpClient->get(self::MAILCATCHER_URL.'messages'); - - return json_decode($response->getBody(true)); - } - - /** - * MailCatcher のメッセージを ID を指定して取得する. - * - * @param integer $id メッセージの ID - * - * @return object MailCatcher のメッセージ - * - * @deprecated - */ - protected function getMailCatcherMessage($id) - { - $httpClient = new HttpClient(); - $response = $httpClient->get(self::MAILCATCHER_URL.'messages/'.$id.'.json'); - - return json_decode($response->getBody(true)); - } - - /** - * MailCatcher のメッセージソースをデコードする. - * - * @param object $Message MailCatcher のメッセージ - * - * @return string デコードされた eml 形式のソース - * - * @deprecated - */ - protected function parseMailCatcherSource($Message) - { - return quoted_printable_decode($Message->source); - } - - /** - * Get the MailCollector - * - * @param boolean $sendRequest True to send requests internally. - * - * @return MessageDataCollector - */ - protected function getMailCollector($sendRequest = true) - { - if ($sendRequest) { - $this->client->enableProfiler(); - $this->client->request('POST', '/'); - } - - return $this->client->getProfile()->getCollector('swiftmailer'); - } - /** * Generates a URL from the given parameters. * diff --git a/tests/Eccube/Tests/Entity/DeliveryDurationTest.php b/tests/Eccube/Tests/Entity/DeliveryDurationTest.php index 53434e8f2bb..8b19de64a31 100644 --- a/tests/Eccube/Tests/Entity/DeliveryDurationTest.php +++ b/tests/Eccube/Tests/Entity/DeliveryDurationTest.php @@ -20,7 +20,7 @@ class DeliveryDurationTest extends EccubeTestCase { private $deliveryDurationRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->deliveryDurationRepository = $this->entityManager->getRepository(DeliveryDuration::class); diff --git a/tests/Eccube/Tests/Entity/Master/AbstractMasterEntityTest.php b/tests/Eccube/Tests/Entity/Master/AbstractMasterEntityTest.php index d3cb73f4355..0a7b58d1b0b 100644 --- a/tests/Eccube/Tests/Entity/Master/AbstractMasterEntityTest.php +++ b/tests/Eccube/Tests/Entity/Master/AbstractMasterEntityTest.php @@ -23,7 +23,7 @@ */ class AbstractMasterEntityTest extends EccubeTestCase { - public function setUp() + protected function setUp(): void { parent::setUp(); } diff --git a/tests/Eccube/Tests/Entity/OrderTest.php b/tests/Eccube/Tests/Entity/OrderTest.php index a12c9cadcc4..2ea9364834d 100644 --- a/tests/Eccube/Tests/Entity/OrderTest.php +++ b/tests/Eccube/Tests/Entity/OrderTest.php @@ -38,7 +38,7 @@ class OrderTest extends EccubeTestCase protected $Order; protected $rate; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); @@ -192,7 +192,7 @@ public function testGetTaxableTotal() public function testGetTaxableTotalByTaxRate() { $Order = $this->createTestOrder(); - self::assertArraySubset([10 => 220, 8 => 216], $Order->getTaxableTotalByTaxRate()); + self::assertSame([10 => 220, 8 => 216], $Order->getTaxableTotalByTaxRate()); } public function testGetTaxableDiscountItems() diff --git a/tests/Eccube/Tests/Fixture/Generator.php b/tests/Eccube/Tests/Fixture/Generator.php index 9b9ac9c496b..f53dbec7d4f 100644 --- a/tests/Eccube/Tests/Fixture/Generator.php +++ b/tests/Eccube/Tests/Fixture/Generator.php @@ -13,7 +13,6 @@ namespace Eccube\Tests\Fixture; -use bheller\ImagesGenerator\ImagesGeneratorProvider; use Doctrine\ORM\EntityManagerInterface; use Eccube\Entity\Customer; use Eccube\Entity\CustomerAddress; @@ -55,7 +54,6 @@ use Eccube\Service\PurchaseFlow\PurchaseContext; use Eccube\Service\PurchaseFlow\PurchaseFlow; use Eccube\Util\StringUtil; -use Faker\Factory as Faker; use Symfony\Component\HttpFoundation\Session\SessionInterface; /** @@ -369,14 +367,11 @@ public function createNonMember($email = null) * * @param string $product_name 商品名. null の場合はランダムな文字列が生成される. * @param integer $product_class_num 商品規格の生成数 - * @param string $image_type 生成する画像タイプ. - * cats の場合は猫の画像を生成する(時間がかかる). - * not null の場合はダミー画像を自動生成する(GD Extension が必要). - * null の場合は、画像を生成せずにファイル名のみを設定する. + * @param bool $with_image 画像を生成する場合 true, 生成しない場合 false * * @return \Eccube\Entity\Product */ - public function createProduct($product_name = null, $product_class_num = 3, $image_type = null) + public function createProduct($product_name = null, $product_class_num = 3, $with_image = false) { $faker = $this->getFaker(); $Member = $this->entityManager->find(\Eccube\Entity\Member::class, 2); @@ -401,25 +396,16 @@ public function createProduct($product_name = null, $product_class_num = 3, $ima $this->entityManager->persist($Product); $this->entityManager->flush(); - $faker2 = Faker::create($this->locale); - $faker2->addProvider(new ImagesGeneratorProvider($faker2)); + $faker2 = \Faker\Factory::create($this->locale); + for ($i = 0; $i < 3; $i++) { $ProductImage = new ProductImage(); - if ($image_type) { + if ($with_image) { $width = $faker->numberBetween(480, 640); $height = $faker->numberBetween(480, 640); - if ($image_type == 'cats') { - $image = $faker->uuid.'.jpg'; - $src = file_get_contents('https://placekitten.com/'.$width.'/'.$height); - file_put_contents(__DIR__.'/../../../../html/upload/save_image/'.$image, $src); - } else { - $image = $faker2->imageGenerator( - __DIR__.'/../../../../html/upload/save_image', - $width, - $height, - 'png', false, true, '#cccccc', '#ffffff' - ); - } + $image = $faker->uuid.'.jpg'; + $src = file_get_contents('https://placekitten.com/'.$width.'/'.$height); + file_put_contents(__DIR__.'/../../../../html/upload/save_image/'.$image, $src); } else { $image = $faker->word.'.jpg'; } @@ -885,64 +871,11 @@ public function createLoginHistory($user_name, $client_ip = null, $status = null /** * Faker を生成する. * - * @return Faker\Generator + * @return \Faker\Generator * - * @see https://github.com/fzaninotto/Faker */ protected function getFaker() { - return new Generator_Faker(Faker::create($this->locale)); - } -} - -class Generator_Faker extends Faker -{ - private $faker; - - public function __construct(\Faker\Generator $faker) - { - $this->faker = $faker; - } - - public function __get($attribute) - { - return $this->faker->$attribute; - } - - public function __call($method, $attributes) - { - return call_user_func_array([$this->faker, $method], $attributes); - } - - public function __isset($name) - { - if (isset($this->faker->$name)) { - return true; - } - - foreach ($this->faker->getProviders() as $provider) { - if (method_exists($provider, $name)) { - return true; - } - } - - return false; + return \Faker\Factory::create($this->locale); } } - -// class Generator_FakerTest extends EccubeTestCase -// { -// public function testKana01ShouldNotEmptyInJAJP() -// { -// $generator = new Generator($this->app, 'ja_JP'); -// $Customer = $generator->createCustomer(); -// self::assertNotEmpty($Customer->getKana01()); -// } - -// public function testKana01ShouldEmptyInENUS() -// { -// $generator = new Generator($this->app, 'en_US'); -// $Customer = $generator->createCustomer(); -// self::assertEmpty($Customer->getKana01()); -// } -// } diff --git a/tests/Eccube/Tests/Form/Type/AbstractTypeTestCase.php b/tests/Eccube/Tests/Form/Type/AbstractTypeTestCase.php index babe7df91c9..ef35cfc422c 100644 --- a/tests/Eccube/Tests/Form/Type/AbstractTypeTestCase.php +++ b/tests/Eccube/Tests/Form/Type/AbstractTypeTestCase.php @@ -23,7 +23,7 @@ abstract class AbstractTypeTestCase extends EccubeTestCase */ protected $formFactory; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->formFactory = self::$container->get('form.factory'); diff --git a/tests/Eccube/Tests/Form/Type/AddressTypeTest.php b/tests/Eccube/Tests/Form/Type/AddressTypeTest.php index 4989b581122..6910ce1f67c 100644 --- a/tests/Eccube/Tests/Form/Type/AddressTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/AddressTypeTest.php @@ -30,7 +30,7 @@ class AddressTypeTest extends AbstractTypeTestCase ], ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/AuthenticationTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/AuthenticationTypeTest.php index f1f5d53c4cf..af6ed57e9f2 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/AuthenticationTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/AuthenticationTypeTest.php @@ -27,7 +27,7 @@ class AuthenticationTypeTest extends AbstractTypeTestCase 'authentication_key' => 'abc123ABCZz', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/CalendarTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/CalendarTypeTest.php index f36e5dbda5d..a068f42b15e 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/CalendarTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/CalendarTypeTest.php @@ -31,7 +31,7 @@ class CalendarTypeTest extends AbstractTypeTestCase /** @var FormInterface */ protected $form; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/CategoryTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/CategoryTypeTest.php index 6d4b56c1fb2..d4b8ea8cc4f 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/CategoryTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/CategoryTypeTest.php @@ -25,7 +25,7 @@ class CategoryTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'name' => 'テスト家具', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/CustomerSearchTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/CustomerSearchTypeTest.php index 0c31ff9ab73..e6fd01a1776 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/CustomerSearchTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/CustomerSearchTypeTest.php @@ -20,7 +20,7 @@ class CustomerSearchTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCas /** @var \Symfony\Component\Form\FormInterface */ protected $form; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/CustomerTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/CustomerTypeTest.php index cfd0d7addf9..424530af67b 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/CustomerTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/CustomerTypeTest.php @@ -42,7 +42,7 @@ class CustomerTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'sex' => 1, 'job' => 1, 'birth' => '1983-2-14', - 'password' => [ + 'plain_password' => [ 'first' => 'password', 'second' => 'password', ], @@ -50,7 +50,7 @@ class CustomerTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'note' => 'note', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -200,8 +200,8 @@ public function testInvalidPasswordBlank() public function testValidPasswordMinLength() { - $this->formData['password']['first'] = str_repeat('a', $this->eccubeConfig['eccube_password_min_len']); - $this->formData['password']['second'] = str_repeat('a', $this->eccubeConfig['eccube_password_min_len']); + $this->formData['plain_password']['first'] = str_repeat('a', $this->eccubeConfig['eccube_password_min_len']); + $this->formData['plain_password']['second'] = str_repeat('a', $this->eccubeConfig['eccube_password_min_len']); $this->form->submit($this->formData); $this->assertTrue($this->form->isValid()); @@ -211,8 +211,8 @@ public function testInvalidPasswordMinLength() { $password = str_repeat('a', $this->eccubeConfig['eccube_password_min_len'] - 1); - $this->formData['password']['first'] = $password; - $this->formData['password']['second'] = $password; + $this->formData['plain_password']['first'] = $password; + $this->formData['plain_password']['second'] = $password; $this->form->submit($this->formData); $this->assertFalse($this->form->isValid()); @@ -220,8 +220,8 @@ public function testInvalidPasswordMinLength() public function testValidPasswordMaxLength() { - $this->formData['password']['first'] = str_repeat('a', $this->eccubeConfig['eccube_password_max_len']); - $this->formData['password']['second'] = str_repeat('a', $this->eccubeConfig['eccube_password_max_len']); + $this->formData['plain_password']['first'] = str_repeat('a', $this->eccubeConfig['eccube_password_max_len']); + $this->formData['plain_password']['second'] = str_repeat('a', $this->eccubeConfig['eccube_password_max_len']); $this->form->submit($this->formData); $this->assertTrue($this->form->isValid()); @@ -231,8 +231,8 @@ public function testInvalidPasswordMaxLength() { $password = str_repeat('a', $this->eccubeConfig['eccube_password_max_len'] + 1); - $this->formData['password']['first'] = $password; - $this->formData['password']['second'] = $password; + $this->formData['plain_password']['first'] = $password; + $this->formData['plain_password']['second'] = $password; $this->form->submit($this->formData); $this->assertFalse($this->form->isValid()); @@ -240,8 +240,8 @@ public function testInvalidPasswordMaxLength() public function testInvalidPasswordEqualEmail() { - $this->formData['password']['first'] = $this->formData['email']; - $this->formData['password']['second'] = $this->formData['email']; + $this->formData['plain_password']['first'] = $this->formData['email']; + $this->formData['plain_password']['second'] = $this->formData['email']; $this->form->submit($this->formData); $this->assertEquals(trans('common.password_eq_email'), $this->form->getErrors(true)[0]->getMessage()); diff --git a/tests/Eccube/Tests/Form/Type/Admin/DeliveryFeeTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/DeliveryFeeTypeTest.php index 76b2d9ced5c..442160887fa 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/DeliveryFeeTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/DeliveryFeeTypeTest.php @@ -54,7 +54,7 @@ public function getValidTestData() ]; } - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/DeliveryTimeTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/DeliveryTimeTypeTest.php index c62703a4191..17f0aabe686 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/DeliveryTimeTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/DeliveryTimeTypeTest.php @@ -26,7 +26,7 @@ class DeliveryTimeTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'sort_no' => '1', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/LayoutTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/LayoutTypeTest.php index 7e51ed424ea..533c45277d3 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/LayoutTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/LayoutTypeTest.php @@ -29,7 +29,7 @@ class LayoutTypeTest extends AbstractTypeTestCase 'Page' => 2, ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/LogTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/LogTypeTest.php index 9df68d81aab..f9ceecc3032 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/LogTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/LogTypeTest.php @@ -27,7 +27,7 @@ class LogTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase protected $logTest; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -53,7 +53,7 @@ public function setUp() ->getForm(); } - public function tearDown() + protected function tearDown(): void { // Delete the previously created file @unlink($this->logTest); diff --git a/tests/Eccube/Tests/Form/Type/Admin/MainEditTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/MainEditTypeTest.php index a8f02b63d3c..d541b3b1802 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/MainEditTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/MainEditTypeTest.php @@ -34,7 +34,7 @@ class MainEditTypeTest extends AbstractTypeTestCase 'meta_tags' => '', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); $options = [ diff --git a/tests/Eccube/Tests/Form/Type/Admin/MasterdataTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/MasterdataTypeTest.php index f88c7b5ac56..1dd9374c722 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/MasterdataTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/MasterdataTypeTest.php @@ -21,7 +21,7 @@ class MasterdataTypeTest extends AbstractTypeTestCase /** @var array デフォルト値(正常系)を設定 */ protected $formData = []; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/MemberTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/MemberTypeTest.php index 23d07a71b6a..5e5ce55071c 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/MemberTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/MemberTypeTest.php @@ -35,7 +35,7 @@ class MemberTypeTest extends AbstractTypeTestCase 'Work' => 1, ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/OrderItemTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/OrderItemTypeTest.php index 74bf81edbbf..150b453a719 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/OrderItemTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/OrderItemTypeTest.php @@ -30,7 +30,7 @@ class OrderItemTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'tax_rate' => '8', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/OrderSearchTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/OrderSearchTypeTest.php index d220f22e897..9c9bb75a004 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/OrderSearchTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/OrderSearchTypeTest.php @@ -20,7 +20,7 @@ class OrderSearchTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase /** @var \Symfony\Component\Form\FormInterface */ protected $form; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php index f7479037470..60dee56b809 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php @@ -64,7 +64,7 @@ class OrderTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase ], ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/PaymentRegisterTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/PaymentRegisterTypeTest.php index ff53bcb5f25..a6d4412c274 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/PaymentRegisterTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/PaymentRegisterTypeTest.php @@ -29,7 +29,7 @@ class PaymentRegisterTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCa 'rule_max' => '10000', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/ProductClassTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/ProductClassTypeTest.php index fd867be3bb9..14b83d5d335 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/ProductClassTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/ProductClassTypeTest.php @@ -38,7 +38,7 @@ class ProductClassTypeTest extends AbstractTypeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/SearchCustomerTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/SearchCustomerTypeTest.php index 09267b6bca9..746808f2ad3 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/SearchCustomerTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/SearchCustomerTypeTest.php @@ -26,7 +26,7 @@ class SearchCustomerTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCas /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/SearchLoginHistoryTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/SearchLoginHistoryTypeTest.php index 5ea70739d6c..3af42b4f556 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/SearchLoginHistoryTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/SearchLoginHistoryTypeTest.php @@ -27,7 +27,7 @@ class SearchLoginHistoryTypeTest extends AbstractTypeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/SearchOrderTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/SearchOrderTypeTest.php index 34d15ff9e85..2d16926c54b 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/SearchOrderTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/SearchOrderTypeTest.php @@ -26,7 +26,7 @@ class SearchOrderTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/SearchProductTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/SearchProductTypeTest.php index 5c2ba6d1a25..0ab80e029c3 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/SearchProductTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/SearchProductTypeTest.php @@ -26,7 +26,7 @@ class SearchProductTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/SecurityTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/SecurityTypeTest.php index 76e95576f9d..0acb8ad1b18 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/SecurityTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/SecurityTypeTest.php @@ -33,7 +33,7 @@ class SecurityTypeTest extends AbstractTypeTestCase 'trusted_hosts' => 'localhost', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Admin/ShopMasterTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/ShopMasterTypeTest.php index 12bd75c7181..628fc94f540 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/ShopMasterTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/ShopMasterTypeTest.php @@ -65,7 +65,7 @@ class ShopMasterTypeTest extends AbstractTypeTestCase */ ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/ClassCategoryTypeTest.php b/tests/Eccube/Tests/Form/Type/ClassCategoryTypeTest.php index afc3260da13..db1fd458135 100644 --- a/tests/Eccube/Tests/Form/Type/ClassCategoryTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/ClassCategoryTypeTest.php @@ -25,7 +25,7 @@ class ClassCategoryTypeTest extends AbstractTypeTestCase 'name' => '立方体', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/ClassNameTypeTest.php b/tests/Eccube/Tests/Form/Type/ClassNameTypeTest.php index 2cb80c75b48..c611d5c7eec 100644 --- a/tests/Eccube/Tests/Form/Type/ClassNameTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/ClassNameTypeTest.php @@ -25,7 +25,7 @@ class ClassNameTypeTest extends AbstractTypeTestCase 'name' => '形状', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Front/ContactTypeTest.php b/tests/Eccube/Tests/Form/Type/Front/ContactTypeTest.php index 75b9efd9c64..8a3f69ca0f6 100644 --- a/tests/Eccube/Tests/Form/Type/Front/ContactTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Front/ContactTypeTest.php @@ -41,7 +41,7 @@ class ContactTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'contents' => 'ほげほげ', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Front/CustomerAddressTypeTest.php b/tests/Eccube/Tests/Form/Type/Front/CustomerAddressTypeTest.php index 5d655315301..35f503c991f 100644 --- a/tests/Eccube/Tests/Form/Type/Front/CustomerAddressTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Front/CustomerAddressTypeTest.php @@ -40,7 +40,7 @@ class CustomerAddressTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCa 'phone_number' => '012-345-6789', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Front/CustomerLoginTypeTest.php b/tests/Eccube/Tests/Form/Type/Front/CustomerLoginTypeTest.php index 75d128f6fd4..aba92273a02 100644 --- a/tests/Eccube/Tests/Form/Type/Front/CustomerLoginTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Front/CustomerLoginTypeTest.php @@ -27,7 +27,7 @@ class CustomerLoginTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'login_pass' => '111111111', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Front/EntryTypeTest.php b/tests/Eccube/Tests/Form/Type/Front/EntryTypeTest.php index d0fb3d2d6e9..d883eb89251 100644 --- a/tests/Eccube/Tests/Form/Type/Front/EntryTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Front/EntryTypeTest.php @@ -42,7 +42,7 @@ class EntryTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'first' => 'eccube@example.com', 'second' => 'eccube@example.com', ], - 'password' => [ + 'plain_password' => [ 'first' => '12345678', 'second' => '12345678', ], @@ -55,7 +55,7 @@ class EntryTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase 'job' => 1, ]; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -180,8 +180,8 @@ public function testInvalidemailBlank() public function testInvalidPasswordEqualEmail() { - $this->formData['password']['first'] = $this->formData['email']['first']; - $this->formData['password']['second'] = $this->formData['email']['first']; + $this->formData['plain_password']['first'] = $this->formData['email']['first']; + $this->formData['plain_password']['second'] = $this->formData['email']['first']; $this->form->submit($this->formData); $this->assertEquals(trans('common.password_eq_email'), $this->form->getErrors(true)[0]->getMessage()); diff --git a/tests/Eccube/Tests/Form/Type/Front/ForgotTypeTest.php b/tests/Eccube/Tests/Form/Type/Front/ForgotTypeTest.php index 91b2da70770..793238649e7 100644 --- a/tests/Eccube/Tests/Form/Type/Front/ForgotTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Front/ForgotTypeTest.php @@ -58,7 +58,7 @@ public function getInvalidTestData() ]; } - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Front/NonMemberTypeTest.php b/tests/Eccube/Tests/Form/Type/Front/NonMemberTypeTest.php index f2122f49ec5..6add1958de3 100644 --- a/tests/Eccube/Tests/Form/Type/Front/NonMemberTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Front/NonMemberTypeTest.php @@ -44,7 +44,7 @@ class NonMemberTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase ], ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Front/PasswordResetTypeTest.php b/tests/Eccube/Tests/Form/Type/Front/PasswordResetTypeTest.php index 1cdc0ac4ac3..9f256ed0f91 100644 --- a/tests/Eccube/Tests/Form/Type/Front/PasswordResetTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Front/PasswordResetTypeTest.php @@ -29,7 +29,7 @@ class PasswordResetTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestCase ], ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Front/ShoppingShippingTypeTest.php b/tests/Eccube/Tests/Form/Type/Front/ShoppingShippingTypeTest.php index 19de9135f1b..50234536121 100644 --- a/tests/Eccube/Tests/Form/Type/Front/ShoppingShippingTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Front/ShoppingShippingTypeTest.php @@ -43,7 +43,7 @@ class ShoppingShippingTypeTest extends \Eccube\Tests\Form\Type\AbstractTypeTestC 'phone_number' => '012-345-6789', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Install/Step1TypeTest.php b/tests/Eccube/Tests/Form/Type/Install/Step1TypeTest.php index 075d6c010a2..21f2727ca23 100644 --- a/tests/Eccube/Tests/Form/Type/Install/Step1TypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Install/Step1TypeTest.php @@ -56,7 +56,7 @@ public function getValidTestData() ]; } - public function setUp() + protected function setUp(): void { $this->markTestIncomplete(get_class($this).' は未実装です'); parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Install/Step3TypeTest.php b/tests/Eccube/Tests/Form/Type/Install/Step3TypeTest.php index f6f8dce84f5..732a893f5b2 100644 --- a/tests/Eccube/Tests/Form/Type/Install/Step3TypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Install/Step3TypeTest.php @@ -43,7 +43,7 @@ class Step3TypeTest extends AbstractTypeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Install/Step4TypeTest.php b/tests/Eccube/Tests/Form/Type/Install/Step4TypeTest.php index e3e790c72e2..0414ebd06a1 100644 --- a/tests/Eccube/Tests/Form/Type/Install/Step4TypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Install/Step4TypeTest.php @@ -35,7 +35,7 @@ class Step4TypeTest extends AbstractTypeTestCase 'database_password' => '', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Install/Step5TypeTest.php b/tests/Eccube/Tests/Form/Type/Install/Step5TypeTest.php index 7a474bd2f40..ed1f7b4575e 100644 --- a/tests/Eccube/Tests/Form/Type/Install/Step5TypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Install/Step5TypeTest.php @@ -56,7 +56,7 @@ public function getValidTestData() ]; } - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/KanaTypeTest.php b/tests/Eccube/Tests/Form/Type/KanaTypeTest.php index e5a68c539a7..78ede635bfb 100644 --- a/tests/Eccube/Tests/Form/Type/KanaTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/KanaTypeTest.php @@ -76,7 +76,7 @@ public function getValidTestData() ]; } - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -85,7 +85,7 @@ public function setUp() ->getForm(); } - public function tearDown() + protected function tearDown(): void { parent::tearDown(); $this->form = null; diff --git a/tests/Eccube/Tests/Form/Type/Master/DeliveryDateTypeTest.php b/tests/Eccube/Tests/Form/Type/Master/DeliveryDateTypeTest.php index 22cb23f4010..855f50eeb4f 100644 --- a/tests/Eccube/Tests/Form/Type/Master/DeliveryDateTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Master/DeliveryDateTypeTest.php @@ -25,7 +25,7 @@ class DeliveryDurationTypeTest extends AbstractTypeTestCase /** @var DeliveryDurationRepository */ protected $deliveryDurationRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->deliveryDurationRepo = $this->entityManager->getRepository(\Eccube\Entity\DeliveryDuration::class); diff --git a/tests/Eccube/Tests/Form/Type/Master/MailTemplateTypeTest.php b/tests/Eccube/Tests/Form/Type/Master/MailTemplateTypeTest.php index 16b34297eca..1006cf7534c 100644 --- a/tests/Eccube/Tests/Form/Type/Master/MailTemplateTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Master/MailTemplateTypeTest.php @@ -25,7 +25,7 @@ class MailTemplateTypeTest extends AbstractTypeTestCase /** @var MailTemplateRepository */ protected $mailTemplateRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->mailTemplateRepo = $this->entityManager->getRepository(\Eccube\Entity\MailTemplate::class); diff --git a/tests/Eccube/Tests/Form/Type/Master/PrefTypeTest.php b/tests/Eccube/Tests/Form/Type/Master/PrefTypeTest.php index b045caa6767..9136cd19d9c 100644 --- a/tests/Eccube/Tests/Form/Type/Master/PrefTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Master/PrefTypeTest.php @@ -25,7 +25,7 @@ class PrefTypeTest extends AbstractTypeTestCase /** @var PrefRepository */ protected $prefRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->prefRepo = $this->entityManager->getRepository(\Eccube\Entity\Master\Pref::class); diff --git a/tests/Eccube/Tests/Form/Type/Master/ProductStatusTypeTest.php b/tests/Eccube/Tests/Form/Type/Master/ProductStatusTypeTest.php index 981fe85bb58..d8c3c1c1e49 100644 --- a/tests/Eccube/Tests/Form/Type/Master/ProductStatusTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Master/ProductStatusTypeTest.php @@ -25,7 +25,7 @@ class ProductStatusTypeTest extends AbstractTypeTestCase /** @var ProductStatusRepository */ protected $productStatusRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->productStatusRepo = $this->entityManager->getRepository(\Eccube\Entity\Master\ProductStatus::class); diff --git a/tests/Eccube/Tests/Form/Type/Master/RoundingTypeTypeTest.php b/tests/Eccube/Tests/Form/Type/Master/RoundingTypeTypeTest.php index db028c7b169..864acb62b6e 100644 --- a/tests/Eccube/Tests/Form/Type/Master/RoundingTypeTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Master/RoundingTypeTypeTest.php @@ -22,7 +22,7 @@ class RoundingTypeTypeTest extends AbstractTypeTestCase /** @var FormInterface */ protected $form; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/Master/SaleTypeTypeTest.php b/tests/Eccube/Tests/Form/Type/Master/SaleTypeTypeTest.php index d8ac90d10e3..35e5c777a9e 100644 --- a/tests/Eccube/Tests/Form/Type/Master/SaleTypeTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Master/SaleTypeTypeTest.php @@ -25,7 +25,7 @@ class SaleTypeTypeTest extends AbstractTypeTestCase /** @var SaleTypeRepository */ protected $saleTypeRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->saleTypeRepo = $this->entityManager->getRepository(\Eccube\Entity\Master\SaleType::class); diff --git a/tests/Eccube/Tests/Form/Type/NameTypeTest.php b/tests/Eccube/Tests/Form/Type/NameTypeTest.php index 1f1c20207e4..87f7b1ed4a0 100644 --- a/tests/Eccube/Tests/Form/Type/NameTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/NameTypeTest.php @@ -36,7 +36,7 @@ class NameTypeTest extends AbstractTypeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->form = $this->formFactory @@ -45,7 +45,7 @@ public function setUp() ->getForm(); } - public function tearDown() + protected function tearDown(): void { parent::tearDown(); $this->form = null; diff --git a/tests/Eccube/Tests/Form/Type/PhoneNumberTypeTest.php b/tests/Eccube/Tests/Form/Type/PhoneNumberTypeTest.php index c1fd7a2a517..85478d01905 100644 --- a/tests/Eccube/Tests/Form/Type/PhoneNumberTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/PhoneNumberTypeTest.php @@ -98,7 +98,7 @@ public function getValidTestData() ]; } - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Type/PostalTypeTest.php b/tests/Eccube/Tests/Form/Type/PostalTypeTest.php index 9365475a037..e6b81c1e65b 100644 --- a/tests/Eccube/Tests/Form/Type/PostalTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/PostalTypeTest.php @@ -26,7 +26,7 @@ class PostalTypeTest extends AbstractTypeTestCase 'postal_code' => '060-0000', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->form = $this->formFactory diff --git a/tests/Eccube/Tests/Form/Type/PriceTypeTest.php b/tests/Eccube/Tests/Form/Type/PriceTypeTest.php index 3fd16f5d69e..b21af2fab9f 100644 --- a/tests/Eccube/Tests/Form/Type/PriceTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/PriceTypeTest.php @@ -40,7 +40,7 @@ public function getValidTestData() ]; } - public function setUp() + protected function setUp(): void { parent::setUp(); $this->form = $this->formFactory diff --git a/tests/Eccube/Tests/Form/Type/RepeatedEmailTypeTest.php b/tests/Eccube/Tests/Form/Type/RepeatedEmailTypeTest.php index 1d1e91944fe..7c2b66dd4e2 100644 --- a/tests/Eccube/Tests/Form/Type/RepeatedEmailTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/RepeatedEmailTypeTest.php @@ -36,7 +36,7 @@ class RepeatedEmailTypeTest extends AbstractTypeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -47,7 +47,7 @@ public function setUp() ->getForm(); } - public function tearDown() + protected function tearDown(): void { parent::tearDown(); $this->form = null; diff --git a/tests/Eccube/Tests/Form/Type/RepeatedPasswordTypeTest.php b/tests/Eccube/Tests/Form/Type/RepeatedPasswordTypeTest.php index 5f6208432aa..e5e9343a13b 100644 --- a/tests/Eccube/Tests/Form/Type/RepeatedPasswordTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/RepeatedPasswordTypeTest.php @@ -29,7 +29,7 @@ class RepeatedPasswordTypeTest extends AbstractTypeTestCase ], ]; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->form = $this->formFactory @@ -38,7 +38,7 @@ public function setUp() ->getForm(); } - public function tearDown() + protected function tearDown(): void { parent::tearDown(); $this->form = null; diff --git a/tests/Eccube/Tests/Form/Type/Shopping/OrderTypeTest.php b/tests/Eccube/Tests/Form/Type/Shopping/OrderTypeTest.php index 471e1d58082..9f37acf9d95 100644 --- a/tests/Eccube/Tests/Form/Type/Shopping/OrderTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Shopping/OrderTypeTest.php @@ -24,7 +24,7 @@ class OrderTypeTest extends AbstractTypeTestCase private $orderType; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->paymentRepository = $this->entityManager->getRepository(Payment::class); diff --git a/tests/Eccube/Tests/Form/Type/TaxRuleTypeTest.php b/tests/Eccube/Tests/Form/Type/TaxRuleTypeTest.php index 683a2c702ae..3e73149579b 100644 --- a/tests/Eccube/Tests/Form/Type/TaxRuleTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/TaxRuleTypeTest.php @@ -31,7 +31,7 @@ class TaxRuleTypeTest extends AbstractTypeTestCase /** @var FormInterface */ protected $form; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Form/Validator/EmailValidatorTest.php b/tests/Eccube/Tests/Form/Validator/EmailValidatorTest.php index f00dad9a6d9..3a782a26e33 100644 --- a/tests/Eccube/Tests/Form/Validator/EmailValidatorTest.php +++ b/tests/Eccube/Tests/Form/Validator/EmailValidatorTest.php @@ -22,7 +22,7 @@ class EmailValidatorTest extends AbstractTypeTestCase /** @var ValidatorInterface */ protected $validator; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->validator = self::$container->get('validator'); @@ -33,7 +33,7 @@ public function setUp() */ public function testValidateEmailStrict($email, $rfc, $norfc) { - $constraint = new Email(['strict' => true]); + $constraint = new Email(null, null, Email::VALIDATION_MODE_STRICT); $validator = $this->validator; $errors = $validator->validate($email, $constraint); @@ -45,7 +45,7 @@ public function testValidateEmailStrict($email, $rfc, $norfc) */ public function testValidateEmailNoStrict($email, $rfc, $norfc) { - $constraint = new Email(['strict' => false]); + $constraint = new Email(null, null, Email::VALIDATION_MODE_LOOSE); $validator = $this->validator; $errors = $validator->validate($email, $constraint); diff --git a/tests/Eccube/Tests/Form/Validator/TwigLintValidatorTest.php b/tests/Eccube/Tests/Form/Validator/TwigLintValidatorTest.php index 09e47c57a06..0ca14ae86b2 100644 --- a/tests/Eccube/Tests/Form/Validator/TwigLintValidatorTest.php +++ b/tests/Eccube/Tests/Form/Validator/TwigLintValidatorTest.php @@ -22,7 +22,7 @@ class TwigLintValidatorTest extends AbstractTypeTestCase /** @var ValidatorInterface */ protected $validator; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->validator = self::$container->get('validator'); @@ -67,13 +67,13 @@ public function testInValidTemplate() $errors = $validator->validate($value, $constraint); self::assertCount(1, $errors); $message = $errors[0]->getMessage(); - self::assertContains('Unexpected "}" at line 1.', $message); + self::assertStringContainsString('Unexpected "}" at line 1.', $message); $value = '{% for product in products %}{% endfo %}'; $errors = $validator->validate($value, $constraint); self::assertCount(1, $errors); $message = $errors[0]->getMessage(); - self::assertContains( + self::assertStringContainsString( 'Unexpected "endfo" tag (expecting closing tag for the "for" tag defined near line 1) at line 1.', $message ); diff --git a/tests/Eccube/Tests/Plugin/PluginManagerTest.php b/tests/Eccube/Tests/Plugin/PluginManagerTest.php new file mode 100644 index 00000000000..2b50d063780 --- /dev/null +++ b/tests/Eccube/Tests/Plugin/PluginManagerTest.php @@ -0,0 +1,32 @@ +entityManager->getConnection(); + $pluginCode = 'MigrationSample'; + $version = null; + $migrationFilePath = null; + $pluginManager->migration($connection, $pluginCode, $version, $migrationFilePath); + + // migration用のテーブルが生成されていることを確認 + $tables = $connection->createSchemaManager()->listTableNames(); + $migrationTableName = AbstractPluginManager::MIGRATION_TABLE_PREFIX.strtolower($pluginCode); + self::assertContains($migrationTableName, $tables); + + // migrationが実行され、バージョンが記録されることを確認 + $expected = 'Plugin\MigrationSample\DoctrineMigrations\Version20181101012712'; + $actual = $connection->fetchOne('select version from '.$migrationTableName); + self::assertSame($expected, $actual); + } +} diff --git a/tests/Eccube/Tests/Repository/AbstractProductRepositoryTestCase.php b/tests/Eccube/Tests/Repository/AbstractProductRepositoryTestCase.php index 632033363ee..25e51d3c084 100644 --- a/tests/Eccube/Tests/Repository/AbstractProductRepositoryTestCase.php +++ b/tests/Eccube/Tests/Repository/AbstractProductRepositoryTestCase.php @@ -40,7 +40,7 @@ abstract class AbstractProductRepositoryTestCase extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Repository/BaseInfoRepositoryTest.php b/tests/Eccube/Tests/Repository/BaseInfoRepositoryTest.php index 7d289010285..1cbc119d865 100644 --- a/tests/Eccube/Tests/Repository/BaseInfoRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/BaseInfoRepositoryTest.php @@ -43,7 +43,7 @@ class BaseInfoRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); // ダミーデータを生成する Faker diff --git a/tests/Eccube/Tests/Repository/BlockPositionRepositoryTest.php b/tests/Eccube/Tests/Repository/BlockPositionRepositoryTest.php index d2f4d3d114a..f509855f2a7 100644 --- a/tests/Eccube/Tests/Repository/BlockPositionRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/BlockPositionRepositoryTest.php @@ -69,7 +69,7 @@ class BlockPositionRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->blockRepository = $this->entityManager->getRepository(\Eccube\Entity\Block::class); diff --git a/tests/Eccube/Tests/Repository/BlockRepositoryTest.php b/tests/Eccube/Tests/Repository/BlockRepositoryTest.php index ae28073713f..ecf21e0a59a 100644 --- a/tests/Eccube/Tests/Repository/BlockRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/BlockRepositoryTest.php @@ -43,7 +43,7 @@ class BlockRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->blockRepository = $this->entityManager->getRepository(\Eccube\Entity\Block::class); diff --git a/tests/Eccube/Tests/Repository/CalendarRepositoryTest.php b/tests/Eccube/Tests/Repository/CalendarRepositoryTest.php index bf7f540fbfb..dc639f84ec0 100644 --- a/tests/Eccube/Tests/Repository/CalendarRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/CalendarRepositoryTest.php @@ -53,7 +53,7 @@ class CalendarRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { $this->DateTimeNow = new \DateTime('+1 minutes'); diff --git a/tests/Eccube/Tests/Repository/CategoryRepositoryTest.php b/tests/Eccube/Tests/Repository/CategoryRepositoryTest.php index 143c67929da..0f3d6937204 100644 --- a/tests/Eccube/Tests/Repository/CategoryRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/CategoryRepositoryTest.php @@ -32,7 +32,7 @@ class CategoryRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->categoryRepository = $this->entityManager->getRepository(\Eccube\Entity\Category::class); diff --git a/tests/Eccube/Tests/Repository/ClassCategoryRepositoryTest.php b/tests/Eccube/Tests/Repository/ClassCategoryRepositoryTest.php index 30f8b4a69d3..f256b668a4d 100644 --- a/tests/Eccube/Tests/Repository/ClassCategoryRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/ClassCategoryRepositoryTest.php @@ -46,7 +46,7 @@ class ClassCategoryRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->productClassRepository = $this->entityManager->getRepository(\Eccube\Entity\ProductClass::class); diff --git a/tests/Eccube/Tests/Repository/ClassNameRepositoryTest.php b/tests/Eccube/Tests/Repository/ClassNameRepositoryTest.php index e2505ec4584..941be45048c 100644 --- a/tests/Eccube/Tests/Repository/ClassNameRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/ClassNameRepositoryTest.php @@ -51,7 +51,7 @@ class ClassNameRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Repository/CustomerAddressRepositoryTest.php b/tests/Eccube/Tests/Repository/CustomerAddressRepositoryTest.php index a9157a6dd80..ef2d9d03af8 100644 --- a/tests/Eccube/Tests/Repository/CustomerAddressRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/CustomerAddressRepositoryTest.php @@ -31,7 +31,7 @@ class CustomerAddressRepositoryTest extends EccubeTestCase */ protected $customerAddressRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); diff --git a/tests/Eccube/Tests/Repository/CustomerRepositoryGetQueryBuilderBySearchDataTest.php b/tests/Eccube/Tests/Repository/CustomerRepositoryGetQueryBuilderBySearchDataTest.php index f64e68cbbe8..f8700b47906 100644 --- a/tests/Eccube/Tests/Repository/CustomerRepositoryGetQueryBuilderBySearchDataTest.php +++ b/tests/Eccube/Tests/Repository/CustomerRepositoryGetQueryBuilderBySearchDataTest.php @@ -81,7 +81,7 @@ class CustomerRepositoryGetQueryBuilderBySearchDataTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->customerRepo = $this->entityManager->getRepository(\Eccube\Entity\Customer::class); diff --git a/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php b/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php index 944de9c4057..af8495044b7 100644 --- a/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/CustomerRepositoryTest.php @@ -50,7 +50,7 @@ class CustomerRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Repository/LayoutRepositoryTest.php b/tests/Eccube/Tests/Repository/LayoutRepositoryTest.php index 60b2e5f7fcb..2dc4acc8bc9 100644 --- a/tests/Eccube/Tests/Repository/LayoutRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/LayoutRepositoryTest.php @@ -41,7 +41,7 @@ class LayoutRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->layoutRepository = $this->entityManager->getRepository(\Eccube\Entity\Layout::class); diff --git a/tests/Eccube/Tests/Repository/LoginHistoryRepositoryGetQueryBuilderBySearchDataAdminTest.php b/tests/Eccube/Tests/Repository/LoginHistoryRepositoryGetQueryBuilderBySearchDataAdminTest.php index cb002c0e965..7488bd3ec12 100644 --- a/tests/Eccube/Tests/Repository/LoginHistoryRepositoryGetQueryBuilderBySearchDataAdminTest.php +++ b/tests/Eccube/Tests/Repository/LoginHistoryRepositoryGetQueryBuilderBySearchDataAdminTest.php @@ -41,7 +41,7 @@ class LoginHistoryRepositoryGetQueryBuilderBySearchDataAdminTest extends EccubeT /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Repository/MailHistoryRepositoryTest.php b/tests/Eccube/Tests/Repository/MailHistoryRepositoryTest.php index 74cafa00481..b064c4fe22b 100644 --- a/tests/Eccube/Tests/Repository/MailHistoryRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/MailHistoryRepositoryTest.php @@ -56,7 +56,7 @@ class MailHistoryRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $faker = $this->getFaker(); diff --git a/tests/Eccube/Tests/Repository/Master/OrderStatusRepositoryTest.php b/tests/Eccube/Tests/Repository/Master/OrderStatusRepositoryTest.php index 44e1b124f6d..e75a612b84e 100644 --- a/tests/Eccube/Tests/Repository/Master/OrderStatusRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/Master/OrderStatusRepositoryTest.php @@ -32,7 +32,7 @@ class OrderStatusRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->orderStatusRepository = $this->entityManager->getRepository(OrderStatus::class); diff --git a/tests/Eccube/Tests/Repository/MemberRepositoryTest.php b/tests/Eccube/Tests/Repository/MemberRepositoryTest.php index ea4483235d3..c258036d523 100644 --- a/tests/Eccube/Tests/Repository/MemberRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/MemberRepositoryTest.php @@ -33,7 +33,7 @@ class MemberRepositoryTest extends EccubeTestCase /** @var EncoderFactoryInterface */ protected $encoderFactory; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->encoderFactory = self::$container->get('security.encoder_factory'); diff --git a/tests/Eccube/Tests/Repository/NewsRepositoryTest.php b/tests/Eccube/Tests/Repository/NewsRepositoryTest.php index a0343194d4b..a4a9e484c0a 100644 --- a/tests/Eccube/Tests/Repository/NewsRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/NewsRepositoryTest.php @@ -29,7 +29,7 @@ class NewsRepositoryTest extends EccubeTestCase /** @var NewsRepository */ protected $newsRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->newsRepo = $this->entityManager->getRepository(\Eccube\Entity\News::class); diff --git a/tests/Eccube/Tests/Repository/OrderRepositoryGetQueryBuilderBySearchDataAdminTest.php b/tests/Eccube/Tests/Repository/OrderRepositoryGetQueryBuilderBySearchDataAdminTest.php index 06f1528ec43..ce05f5e1921 100644 --- a/tests/Eccube/Tests/Repository/OrderRepositoryGetQueryBuilderBySearchDataAdminTest.php +++ b/tests/Eccube/Tests/Repository/OrderRepositoryGetQueryBuilderBySearchDataAdminTest.php @@ -53,7 +53,7 @@ class OrderRepositoryGetQueryBuilderBySearchDataAdminTest extends EccubeTestCase /** @var PaymentRepository */ protected $paymentRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->createProduct(); diff --git a/tests/Eccube/Tests/Repository/OrderRepositoryTest.php b/tests/Eccube/Tests/Repository/OrderRepositoryTest.php index a05a8bcfc04..5c89cd1829a 100644 --- a/tests/Eccube/Tests/Repository/OrderRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/OrderRepositoryTest.php @@ -34,7 +34,7 @@ class OrderRepositoryTest extends EccubeTestCase /** @var OrderRepository */ protected $orderRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->orderRepository = $this->entityManager->getRepository(\Eccube\Entity\Order::class); diff --git a/tests/Eccube/Tests/Repository/PageRepositoryTest.php b/tests/Eccube/Tests/Repository/PageRepositoryTest.php index 4d28e6181c0..20ef0338e41 100644 --- a/tests/Eccube/Tests/Repository/PageRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/PageRepositoryTest.php @@ -25,7 +25,7 @@ class PageRepositoryTest extends EccubeTestCase protected $templateRealDir; protected $templateDefaultRealDir; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->pageRepo = $this->entityManager->getRepository(\Eccube\Entity\Page::class); diff --git a/tests/Eccube/Tests/Repository/PaymentRepositoryTest.php b/tests/Eccube/Tests/Repository/PaymentRepositoryTest.php index d5d66430cdb..aeb69a14069 100644 --- a/tests/Eccube/Tests/Repository/PaymentRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/PaymentRepositoryTest.php @@ -41,7 +41,7 @@ class PaymentRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Repository/PluginRepositoryTest.php b/tests/Eccube/Tests/Repository/PluginRepositoryTest.php index 3a3e7680835..38548012b8e 100644 --- a/tests/Eccube/Tests/Repository/PluginRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/PluginRepositoryTest.php @@ -24,7 +24,7 @@ class PluginRepositoryTest extends EccubeTestCase */ protected $pluginRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->pluginRepository = $this->entityManager->getRepository(Plugin::class); diff --git a/tests/Eccube/Tests/Repository/ProductRepositoryGetQueryBuilderBySearchDataAdminTest.php b/tests/Eccube/Tests/Repository/ProductRepositoryGetQueryBuilderBySearchDataAdminTest.php index c9c563cbc34..4863f11512f 100644 --- a/tests/Eccube/Tests/Repository/ProductRepositoryGetQueryBuilderBySearchDataAdminTest.php +++ b/tests/Eccube/Tests/Repository/ProductRepositoryGetQueryBuilderBySearchDataAdminTest.php @@ -50,7 +50,7 @@ class ProductRepositoryGetQueryBuilderBySearchDataAdminTest extends AbstractProd /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Repository/ProductRepositoryGetQueryBuilderBySearchDataTest.php b/tests/Eccube/Tests/Repository/ProductRepositoryGetQueryBuilderBySearchDataTest.php index 40ebe17b9f2..d2a7abb77a3 100644 --- a/tests/Eccube/Tests/Repository/ProductRepositoryGetQueryBuilderBySearchDataTest.php +++ b/tests/Eccube/Tests/Repository/ProductRepositoryGetQueryBuilderBySearchDataTest.php @@ -65,7 +65,7 @@ class ProductRepositoryGetQueryBuilderBySearchDataTest extends AbstractProductRe /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Repository/ShippingRepositoryTest.php b/tests/Eccube/Tests/Repository/ShippingRepositoryTest.php index 5274ad27312..572885cb2c4 100644 --- a/tests/Eccube/Tests/Repository/ShippingRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/ShippingRepositoryTest.php @@ -86,7 +86,7 @@ class ShippingRepositoryTest extends EccubeTestCase * * @throws \Doctrine\ORM\NoResultException */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Repository/TaxRuleRepositoryTest.php b/tests/Eccube/Tests/Repository/TaxRuleRepositoryTest.php index d7e53c33ff7..cc27782dd1f 100644 --- a/tests/Eccube/Tests/Repository/TaxRuleRepositoryTest.php +++ b/tests/Eccube/Tests/Repository/TaxRuleRepositoryTest.php @@ -82,7 +82,7 @@ class TaxRuleRepositoryTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { $this->DateTimeNow = new \DateTime('+1 minutes'); diff --git a/tests/Eccube/Tests/Security/Voter/AuthorityVoterTest.php b/tests/Eccube/Tests/Security/Voter/AuthorityVoterTest.php index 72ea88cec0a..eea08ac281b 100644 --- a/tests/Eccube/Tests/Security/Voter/AuthorityVoterTest.php +++ b/tests/Eccube/Tests/Security/Voter/AuthorityVoterTest.php @@ -35,7 +35,7 @@ class AuthorityVoterTest extends EccubeTestCase */ protected $eccubeConfig; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->authorityRoleRepository = $this->entityManager->getRepository(\Eccube\Entity\AuthorityRole::class); @@ -51,7 +51,7 @@ public function testVote(array $deniedUrls, $accessUrl, $expected) $request->method('getPathInfo')->willReturn($accessUrl); $requestStack = $this->createMock(RequestStack::class); - $requestStack->method('getMasterRequest')->willReturn($request); + $requestStack->method('getMainRequest')->willReturn($request); $voter = new AuthorityVoter($this->authorityRoleRepository, $requestStack, $this->eccubeConfig); diff --git a/tests/Eccube/Tests/Service/Cart/DefaultCartItemComparatorTest.php b/tests/Eccube/Tests/Service/Cart/DefaultCartItemComparatorTest.php index e7c1d496e65..32405001ef2 100644 --- a/tests/Eccube/Tests/Service/Cart/DefaultCartItemComparatorTest.php +++ b/tests/Eccube/Tests/Service/Cart/DefaultCartItemComparatorTest.php @@ -28,7 +28,7 @@ class DefaultCartItemComparatorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->comparator = new ProductClassComparator(); diff --git a/tests/Eccube/Tests/Service/Cart/SaleTypeCartAllocatorTest.php b/tests/Eccube/Tests/Service/Cart/SaleTypeCartAllocatorTest.php index d778c67641d..54b8ca03780 100644 --- a/tests/Eccube/Tests/Service/Cart/SaleTypeCartAllocatorTest.php +++ b/tests/Eccube/Tests/Service/Cart/SaleTypeCartAllocatorTest.php @@ -27,7 +27,7 @@ class SaleTypeCartAllocatorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->allocator = new SaleTypeCartAllocator(); diff --git a/tests/Eccube/Tests/Service/CartServiceTest.php b/tests/Eccube/Tests/Service/CartServiceTest.php index c69e0fd6edf..61ecd2ae284 100644 --- a/tests/Eccube/Tests/Service/CartServiceTest.php +++ b/tests/Eccube/Tests/Service/CartServiceTest.php @@ -76,7 +76,7 @@ class CartServiceTest extends AbstractServiceTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/CsvExportServiceTest.php b/tests/Eccube/Tests/Service/CsvExportServiceTest.php index 651c0631b8f..2f4eb1c3e31 100644 --- a/tests/Eccube/Tests/Service/CsvExportServiceTest.php +++ b/tests/Eccube/Tests/Service/CsvExportServiceTest.php @@ -44,7 +44,7 @@ class CsvExportServiceTest extends AbstractServiceTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/EntityProxyServiceTest.php b/tests/Eccube/Tests/Service/EntityProxyServiceTest.php index ffed2217416..d6cf287a6e8 100644 --- a/tests/Eccube/Tests/Service/EntityProxyServiceTest.php +++ b/tests/Eccube/Tests/Service/EntityProxyServiceTest.php @@ -37,7 +37,7 @@ class EntityProxyServiceTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -51,7 +51,7 @@ public function setUp() /** * {@inheritdoc} */ - public function tearDown() + protected function tearDown(): void { $files = Finder::create() ->in($this->tempOutputDir) diff --git a/tests/Eccube/Tests/Service/MailServiceTest.php b/tests/Eccube/Tests/Service/MailServiceTest.php index e2a99b47804..ac91cbf2b2e 100644 --- a/tests/Eccube/Tests/Service/MailServiceTest.php +++ b/tests/Eccube/Tests/Service/MailServiceTest.php @@ -18,6 +18,9 @@ use Eccube\Entity\Shipping; use Eccube\Repository\MailHistoryRepository; use Eccube\Service\MailService; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Address; +use Symfony\Component\Mime\Email; use Symfony\Component\HttpFoundation\Request; /** @@ -25,6 +28,8 @@ */ class MailServiceTest extends AbstractServiceTestCase { + use MailerAssertionsTrait; + /** * @var Customer */ @@ -49,15 +54,10 @@ class MailServiceTest extends AbstractServiceTestCase */ protected $orderRepository; - /** - * @var \Swift_Message - */ - protected $Message; - /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); @@ -76,65 +76,57 @@ public function testSendCustomerConfirmMail() $url = 'http://example.com/confirm'; $this->mailService->sendCustomerConfirmMail($this->Customer, $url); - $mailCollector = $this->getMailCollector(); - $this->assertEquals(1, $mailCollector->getMessageCount()); + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; - - $this->expected = $url; - $this->verifyRegExp($Message, 'URLは'.$url.'ではありません'); + $this->assertEmailTextBodyContains($Message, $url, 'URLは'.$url.'ではありません'); $this->expected = '['.$this->BaseInfo->getShopName().'] 会員登録のご確認'; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $this->Customer->getEmail(); - $this->actual = key($Message->getTo()); + $this->actual = $Message->getTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail01(); - $this->actual = key($Message->getBcc()); + $this->actual = $Message->getBcc()[0]->getAddress(); $this->verify(); - // HTMLメールテスト - $this->assertEquals(1, count($Message->getChildren())); + $this->assertEmailHtmlBodyContains($Message, $url, 'URLは'.$url.'ではありません'); } public function testSendCustomerCompleteMail() { $this->mailService->sendCustomerCompleteMail($this->Customer); - $mailCollector = $this->getMailCollector(); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$this->BaseInfo->getShopName().'] 会員登録が完了しました。'; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $this->Customer->getEmail(); - $this->actual = key($Message->getTo()); + $this->actual = $Message->getTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail01(); - $this->actual = key($Message->getBcc()); + $this->actual = $Message->getBcc()[0]->getAddress(); $this->verify(); - // HTMLメールテスト - $this->assertEquals(1, count($Message->getChildren())); + $this->assertEmailTextBodyContains($Message, '本会員登録が完了いたしました'); + $this->assertEmailHtmlBodyContains($Message, '本会員登録が完了いたしました'); } public function testSendCustomerWithdrawMail() @@ -142,31 +134,28 @@ public function testSendCustomerWithdrawMail() $email = 'draw@example.com'; $this->mailService->sendCustomerWithdrawMail($this->Customer, $email); - $mailCollector = $this->getMailCollector(); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$this->BaseInfo->getShopName().'] 退会手続きのご完了'; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $email; - $this->actual = key($Message->getTo()); + $this->actual = $Message->getTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail01(); - $this->actual = key($Message->getBcc()); + $this->actual = $Message->getBcc()[0]->getAddress(); $this->verify(); - // HTMLメールテスト - $this->assertEquals(0, count($Message->getChildren())); + $this->assertEmailTextBodyContains($Message, '退会手続きが完了いたしました'); + $this->assertEmailHtmlBodyNotContains($Message, '退会手続きが完了いたしました', 'HTML part は存在しない'); } public function testSendContactMail() @@ -198,33 +187,27 @@ public function testSendContactMail() $this->mailService->sendContactMail($formData); - $mailCollector = $this->getMailCollector(); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$this->BaseInfo->getShopName().'] お問い合わせを受け付けました。'; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $email; - $this->actual = key($Message->getTo()); + $this->actual = $Message->getTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail01(); - $this->actual = key($Message->getBcc()); - - $this->expected = 'お問い合わせ内容'; - $this->verifyRegExp($Message, 'お問い合わせ内容'); + $this->actual = $Message->getBcc()[0]->getAddress(); - // HTMLメールテスト - $this->assertEquals(1, count($Message->getChildren())); + $this->assertEmailTextBodyContains($Message, 'お問い合わせ内容'); + $this->assertEmailHtmlBodyContains($Message, 'お問い合わせ内容'); } public function testSendOrderMail() @@ -232,30 +215,28 @@ public function testSendOrderMail() $Order = $this->Order; $this->mailService->sendOrderMail($Order); - $mailCollector = $this->getMailCollector(); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$this->BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $Order->getEmail(); - $this->actual = key($Message->getTo()); + $this->actual = $Message->getTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail01(); - $this->actual = key($Message->getBcc()); + $this->actual = $Message->getBcc()[0]->getAddress(); + $this->verify(); - // HTMLメールテスト - $this->assertEquals(1, count($Message->getChildren())); + $this->assertEmailTextBodyContains($Message, 'この度はご注文いただき誠にありがとうございます。'); + $this->assertEmailHtmlBodyContains($Message, 'この度はご注文いただき誠にありがとうございます。'); } public function testSendAdminCustomerConfirmMail() @@ -263,34 +244,27 @@ public function testSendAdminCustomerConfirmMail() $url = 'http://example.com/confirm'; $this->mailService->sendAdminCustomerConfirmMail($this->Customer, $url); - $mailCollector = $this->getMailCollector(); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; - - $this->expected = $url; - $this->verifyRegExp($Message, 'URLは'.$url.'ではありません'); + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); + $this->assertEmailTextBodyContains($Message, $url, 'URLは'.$url.'ではありません'); + $this->assertEmailHtmlBodyContains($Message, $url, 'URLは'.$url.'ではありません'); $this->expected = '['.$this->BaseInfo->getShopName().'] 会員登録のご確認'; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $this->Customer->getEmail(); - $this->actual = key($Message->getTo()); + $this->actual = $Message->getTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail01(); - $this->actual = key($Message->getBcc()); + $this->actual = $Message->getBcc()[0]->getAddress(); $this->verify(); - - // HTMLメールテスト - $this->assertEquals(1, count($Message->getChildren())); } public function testSendAdminOrderMail() @@ -304,27 +278,24 @@ public function testSendAdminOrderMail() ]; $this->mailService->sendAdminOrderMail($Order, $formData); - $mailCollector = $this->getMailCollector(); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$this->BaseInfo->getShopName().'] '.$subject; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $Order->getEmail(); - $this->actual = key($Message->getTo()); + $this->actual = $Message->getTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail01(); - $this->actual = key($Message->getBcc()); + $this->actual = $Message->getBcc()[0]->getAddress(); $this->verify(); } @@ -333,30 +304,24 @@ public function testSendPasswordResetNotificationMail() $url = 'http://example.com/reset'; $this->mailService->sendPasswordResetNotificationMail($this->Customer, $url); - $mailCollector = $this->getMailCollector(); - $this->assertLessThanOrEqual(1, $mailCollector->getMessageCount(), 'Bccメールは送信しない'); + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; - - $this->expected = $url; - $this->verifyRegExp($Message, 'URLは'.$url.'ではありません'); + $this->assertEmailTextBodyContains($Message, $url, 'URLは'.$url.'ではありません'); + $this->assertEmailHtmlBodyNotContains($Message, $url, 'HTML part は存在しない'); $this->expected = '['.$this->BaseInfo->getShopName().'] パスワード変更のご確認'; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $this->Customer->getEmail(); - $this->actual = key($Message->getTo()); + $this->actual = $Message->getTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); - - // HTMLメールテスト - $this->assertEquals(0, count($Message->getChildren())); } public function testSendPasswordResetCompleteMail() @@ -364,128 +329,38 @@ public function testSendPasswordResetCompleteMail() $faker = $this->getFaker(); $password = $faker->password; $this->mailService->sendPasswordResetCompleteMail($this->Customer, $password); - - $mailCollector = $this->getMailCollector(); - $this->assertLessThanOrEqual(1, $mailCollector->getMessageCount(), 'Bccメールは送信しない'); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$this->BaseInfo->getShopName().'] パスワード変更のお知らせ'; $this->actual = $Message->getSubject(); $this->verify(); $this->expected = $this->BaseInfo->getEmail03(); - $this->actual = key($Message->getReplyTo()); + $this->actual = $Message->getReplyTo()[0]->getAddress(); $this->verify(); $this->expected = $this->BaseInfo->getEmail01(); - $this->actual = key($Message->getBcc()); + $this->actual = $Message->getBcc()[0]->getAddress(); $this->verify(); - // HTMLメールテスト - $this->assertEquals(0, count($Message->getChildren())); + $this->assertEmailTextBodyContains($Message, 'パスワードを変更いたしました。'); + $this->assertEmailHtmlBodyNotContains($Message, 'パスワードを変更いたしました。', 'HTML part は存在しない'); } - public function testConvertMessageISO() + public function testConvertRFCViolatingEmail() { - // TODO https://github.com/EC-CUBE/ec-cube/issues/2402#issuecomment-362487022 - $this->markTestIncomplete('実装確認中のためスキップ'); - $config = $this->app['config']; - $config['mail']['charset_iso_2022_jp'] = true; - $this->app['config'] = $config; - - $this->app->initMailer(); - - $Order = $this->Order; - // 戻り値はiso-2022-jpのmessage - $message = $this->app['eccube.service.mail']->sendOrderMail($Order); - - $this->expected = mb_strtolower($message->getCharset()); - $this->actual = 'iso-2022-jp'; + $this->expected = new Address('".aa"@example.com'); + $this->actual = $this->mailService->convertRFCViolatingEmail('.aa@example.com'); $this->verify(); - $this->expected = $message->getBody(); - - // 文字コードがiso-2022-jpからUTF-8に変換されたものと比較 - // MailUtil::convertMessage($this->app, $message); - // $this->actual = $message->getBody(); - // $this->assertNotEquals($this->expected, $this->actual); - - // 文字コードがUTF-8からiso-2022-jpに変換されたものと比較 - MailUtil::setParameterForCharset($this->app, $message); - $this->actual = $message->getBody(); - $this->assertEquals($this->expected, $this->actual); - - $config = $this->app['config']; - $config['mail']['charset_iso_2022_jp'] = false; - $this->app['config'] = $config; - } - - public function testConvertMessageUTF() - { - // TODO https://github.com/EC-CUBE/ec-cube/issues/2402#issuecomment-362487022 - $this->markTestIncomplete('実装確認中のためスキップ'); - - $config = $this->app['config']; - $config['mail']['charset_iso_2022_jp'] = false; - $this->app['config'] = $config; - - $this->app->initMailer(); - - $Order = $this->Order; - // 戻り値はUTFのmessage - $message = $this->app['eccube.service.mail']->sendOrderMail($Order); - - $this->expected = mb_strtolower($message->getCharset()); - $this->actual = 'utf-8'; - $this->verify(); - - $this->expected = $message->getBody(); - - // 変換されない - MailUtil::convertMessage($this->app, $message); - $this->actual = $message->getBody(); + $this->expected = new Address('"aa."@example.com'); + $this->actual = $this->mailService->convertRFCViolatingEmail('aa.@example.com'); $this->verify(); - // 変換されない - MailUtil::setParameterForCharset($this->app, $message); - $this->actual = $message->getBody(); + $this->expected = new Address('"a..a"@example.com'); + $this->actual = $this->mailService->convertRFCViolatingEmail('a..a@example.com'); $this->verify(); } - - /** - * @throws \Twig_Error - */ - public function testSendShippingNotifyMail() - { - $this->markTestIncomplete('実装確認中のためスキップ'); - $Order = $this->Order; - /** @var Shipping $Shipping */ - $Shipping = $Order->getShippings()->first(); - - $this->mailService->sendShippingNotifyMail($Shipping); - $this->entityManager->flush(); - - $messages = $this->getMailCollector()->getMessages(); - self::assertEquals(1, count($messages)); - - /** @var \Swift_Message $message */ - $message = $messages[0]; - self::assertEquals([$Order->getEmail() => 0], $message->getTo(), '受注者にメールが送られているはず'); - - /** @var MailHistoryRepository $mailHistoryRepository */ - $mailHistoryRepository = $this->entityManager->getRepository(\Eccube\Entity\MailHistory::class); - $histories = $mailHistoryRepository->findBy(['Order' => $Order]); - self::assertEquals(1, count($histories), 'メール履歴が作成されているはず'); - - // HTMLメールテスト - $this->assertEquals(1, count($Message->getChildren())); - } - - protected function verifyRegExp($Message, $errorMessage = null) - { - $this->assertRegExp('/'.preg_quote($this->expected, '/').'/', $Message->getBody(), $errorMessage); - } } diff --git a/tests/Eccube/Tests/Service/OrderHelperTest.php b/tests/Eccube/Tests/Service/OrderHelperTest.php index 9f477c51658..44396d74861 100644 --- a/tests/Eccube/Tests/Service/OrderHelperTest.php +++ b/tests/Eccube/Tests/Service/OrderHelperTest.php @@ -25,7 +25,7 @@ class OrderHelperTest extends EccubeTestCase */ protected $helper; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/OrderStateMachineTest.php b/tests/Eccube/Tests/Service/OrderStateMachineTest.php index a4a07b34b04..9ca6da2ead9 100644 --- a/tests/Eccube/Tests/Service/OrderStateMachineTest.php +++ b/tests/Eccube/Tests/Service/OrderStateMachineTest.php @@ -27,7 +27,7 @@ class OrderStateMachineTest extends EccubeTestCase /** @var OrderStateMachine */ private $stateMachine; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->stateMachine = self::$container->get(OrderStateMachine::class); diff --git a/tests/Eccube/Tests/Service/PluginServiceTest.php b/tests/Eccube/Tests/Service/PluginServiceTest.php index 52058cba075..24b7fba8ba0 100644 --- a/tests/Eccube/Tests/Service/PluginServiceTest.php +++ b/tests/Eccube/Tests/Service/PluginServiceTest.php @@ -24,7 +24,7 @@ /** * Class PluginServiceTest * - * @group cache-clear + * @group plugin-service */ class PluginServiceTest extends AbstractServiceTestCase { @@ -41,7 +41,7 @@ class PluginServiceTest extends AbstractServiceTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -49,7 +49,7 @@ public function setUp() $this->pluginRepository = $this->entityManager->getRepository(\Eccube\Entity\Plugin::class); } - public function tearDown() + protected function tearDown(): void { $dirs = []; $finder = new Finder(); @@ -142,12 +142,10 @@ public function testInstallPluginMinimum() /** * 必須ファイルがないプラグインがインストール出来ないこと - * - * @expectedException \Eccube\Exception\PluginException - * @exceptedExceptionMessage config.yml not found or syntax error */ public function testInstallPluginEmptyError() { + $this->expectException(\Eccube\Exception\PluginException::class); // インストールするプラグインを作成する $tmpname = 'dummy'.sha1(mt_rand()); $tmpdir = $this->createTempDir(); @@ -246,12 +244,10 @@ public function testConfigYmlFormat() /** * config.ymlに異常な項目がある場合 - * - * @expectedException \Eccube\Exception\PluginException - * @exceptedExceptionMessage config.yml name empty */ public function testnstallPluginMalformedConfigError() { + $this->expectException(\Eccube\Exception\PluginException::class); $tmpdir = $this->createTempDir(); $tmpfile = $tmpdir.'/plugin.tar'; $tar = new \PharData($tmpfile); @@ -394,7 +390,7 @@ public function update(array $meta, ContainerInterface $container) // インストールできるか、インストーラが呼ばれるか ob_start(); $this->assertTrue($this->service->install($tmpfile)); - $this->assertRegexp('/Installed/', ob_get_contents()); + $this->assertMatchesRegularExpression('/Installed/', ob_get_contents()); ob_end_clean(); $this->assertFileExists(__DIR__."/../../../../app/Plugin/$tmpname/PluginManager.php"); @@ -402,18 +398,18 @@ public function update(array $meta, ContainerInterface $container) ob_start(); $this->service->enable($plugin); - $this->assertRegexp('/Enabled/', ob_get_contents()); + $this->assertMatchesRegularExpression('/Enabled/', ob_get_contents()); ob_end_clean(); ob_start(); $this->service->disable($plugin); - $this->assertRegexp('/Disabled/', ob_get_contents()); + $this->assertMatchesRegularExpression('/Disabled/', ob_get_contents()); ob_end_clean(); // アンインストールできるか、アンインストーラが呼ばれるか ob_start(); $this->service->disable($plugin); $this->assertTrue($this->service->uninstall($plugin)); - $this->assertRegexp('/DisabledUninstalled/', ob_get_contents()); + $this->assertMatchesRegularExpression('/DisabledUninstalled/', ob_get_contents()); ob_end_clean(); } @@ -655,7 +651,7 @@ trait BlockTrait { ob_start(); $this->assertTrue($this->service->install($tmpfile)); - $this->assertRegexp('/Installed/', ob_get_contents()); + $this->assertMatchesRegularExpression('/Installed/', ob_get_contents()); ob_end_clean(); $this->assertFileExists(__DIR__."/../../../../app/Plugin/$tmpname/Entity/Block.php"); $this->assertFileExists(__DIR__."/../../../../app/Plugin/$tmpname/Entity/BlockTrait.php"); @@ -664,7 +660,7 @@ trait BlockTrait { ob_start(); $this->service->enable($plugin); - $this->assertRegexp('/Enabled/', ob_get_contents()); + $this->assertMatchesRegularExpression('/Enabled/', ob_get_contents()); ob_end_clean(); // check to Entity and Trait @@ -677,14 +673,14 @@ trait BlockTrait { ob_start(); $this->service->disable($plugin); - $this->assertRegexp('/Disabled/', ob_get_contents()); + $this->assertMatchesRegularExpression('/Disabled/', ob_get_contents()); ob_end_clean(); // アンインストールできるか、アンインストーラが呼ばれるか ob_start(); $this->service->disable($plugin); $this->assertTrue($this->service->uninstall($plugin)); - $this->assertRegexp('/DisabledUninstalled/', ob_get_contents()); + $this->assertMatchesRegularExpression('/DisabledUninstalled/', ob_get_contents()); ob_end_clean(); } @@ -698,7 +694,7 @@ public function testRemoveAssets() $this->service->removeAssets($code); - $this->assertFileNotExists($dir); + $this->assertFileDoesNotExist($dir); } public function testReadConfigNormalizeSourceToZero() diff --git a/tests/Eccube/Tests/Service/PluginServiceWithEntityExtensionTest.php b/tests/Eccube/Tests/Service/PluginServiceWithEntityExtensionTest.php index a77a9194aef..9c630ca19ed 100644 --- a/tests/Eccube/Tests/Service/PluginServiceWithEntityExtensionTest.php +++ b/tests/Eccube/Tests/Service/PluginServiceWithEntityExtensionTest.php @@ -43,7 +43,7 @@ class PluginServiceWithEntityExtensionTest extends AbstractServiceTestCase * * @throws \ReflectionException */ - public function setUp() + protected function setUp(): void { // Fixme: because the proxy entity still not working, it's can not help to run this test case $this->markTestIncomplete('Fatal error: Cannot declare class Eccube\Entity\BaseInfo, because the name is already in use in app\proxy\entity\BaseInfo.php on line 28'); @@ -60,7 +60,7 @@ public function setUp() $this->pluginRepository = $this->entityManager->getRepository(\Eccube\Entity\Plugin::class); } - public function tearDown() + protected function tearDown(): void { $finder = new Finder(); $iterator = $finder @@ -258,7 +258,7 @@ private static function assertContainsTrait($file, $trait, $message = 'Traitが $useTraitEnd = $tokens->getNextTokenOfKind($useTraitStart, [';']); $useStatement = $tokens->generatePartialCode($useTraitStart, $useTraitEnd); - self::assertContains($trait, $useStatement, $message); + self::assertStringContainsString($trait, $useStatement, $message); } private static function assertNotContainsTrait($file, $trait, $message = 'Traitが有効になっているはず') diff --git a/tests/Eccube/Tests/Service/PluginServiceWithExceptionTest.php b/tests/Eccube/Tests/Service/PluginServiceWithExceptionTest.php index 6d5a63c174d..4825dfbb69f 100644 --- a/tests/Eccube/Tests/Service/PluginServiceWithExceptionTest.php +++ b/tests/Eccube/Tests/Service/PluginServiceWithExceptionTest.php @@ -40,7 +40,7 @@ class PluginServiceWithExceptionTest extends AbstractServiceTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -87,7 +87,7 @@ public function install($plugin,$app) } // インストーラで例外発生時にテーブルやファイスシステム上にゴミが残らないか - $this->assertFileNotExists(__DIR__."/../../../../app/Plugin/$tmpname"); + $this->assertFileDoesNotExist(__DIR__."/../../../../app/Plugin/$tmpname"); // XXX PHPUnit によってロールバックが遅延してしまうので, 検証できないが, 消えているはず $this->assertFalse((bool) $plugin = $this->pluginRepository->findOneBy(['name' => $tmpname])); } diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/ItemCollectionTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/ItemCollectionTest.php index f8a1217ed18..0a3686df643 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/ItemCollectionTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/ItemCollectionTest.php @@ -36,7 +36,7 @@ class ItemCollectionTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $Product = $this->createProduct(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeChangeValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeChangeValidatorTest.php index 3353f6ec8bd..8f6aba6651b 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeChangeValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeChangeValidatorTest.php @@ -37,7 +37,7 @@ class DeliveryFeeChangeValidatorTest extends EccubeTestCase */ private $Order; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeFreeByShippingProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeFreeByShippingProcessorTest.php index 6e13728b28e..0e8792b5fdb 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeFreeByShippingProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeFreeByShippingProcessorTest.php @@ -34,7 +34,7 @@ class DeliveryFeeFreeByShippingProcessorTest extends EccubeTestCase /** @var BaseInfoRepository */ private $baseInfoRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->ProductType = $this->entityManager->find(OrderItemType::class, OrderItemType::PRODUCT); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeFreeProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeFreeProcessorTest.php index 81aea6fcfe4..1a3773b5cb7 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeFreeProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeFreeProcessorTest.php @@ -43,7 +43,7 @@ class DeliveryFeeFreeProcessorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeProcessorTest.php index 24a31bc6a71..ac078b5b43e 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliveryFeeProcessorTest.php @@ -40,7 +40,7 @@ class DeliveryFeeProcessorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliverySettingValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliverySettingValidatorTest.php index 8272713f84e..aa31e35942c 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliverySettingValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/DeliverySettingValidatorTest.php @@ -46,7 +46,7 @@ class DeliverySettingValidatorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/EmptyItemsValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/EmptyItemsValidatorTest.php index b4dc9b9aac3..bf8ee95a787 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/EmptyItemsValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/EmptyItemsValidatorTest.php @@ -52,7 +52,7 @@ class EmptyItemsValidatorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/OrderNoProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/OrderNoProcessorTest.php index 18554158e63..124b21f9fe8 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/OrderNoProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/OrderNoProcessorTest.php @@ -46,7 +46,7 @@ public function testProcess($orderNoFormat, $expected) $processor->process($Order, new PurchaseContext()); - self::assertRegExp($expected, (string) $Order->getOrderNo()); + self::assertMatchesRegularExpression($expected, (string) $Order->getOrderNo()); } public function processDataProvider() diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PaymentChargeChangeValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PaymentChargeChangeValidatorTest.php index 49491b41ef0..731e1b1fa35 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PaymentChargeChangeValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PaymentChargeChangeValidatorTest.php @@ -43,7 +43,7 @@ class PaymentChargeChangeValidatorTest extends EccubeTestCase */ private $paymentRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PaymentProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PaymentProcessorTest.php index 471470c792c..581f65dd3b7 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PaymentProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PaymentProcessorTest.php @@ -65,7 +65,7 @@ class PaymentProcessorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PointDiffProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PointDiffProcessorTest.php index 5fdbed94e78..be7751b579d 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PointDiffProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PointDiffProcessorTest.php @@ -40,7 +40,7 @@ class PointDiffProcessorTest extends EccubeTestCase /** @var BaseInfo */ private $BaseInfo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->processor = self::$container->get(PointDiffProcessor::class); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PointProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PointProcessorTest.php index ca62f504adc..d80a859a441 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PointProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PointProcessorTest.php @@ -38,7 +38,7 @@ class PointProcessorTest extends EccubeTestCase /** @var BaseInfo */ private $BaseInfo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->processor = self::$container->get(PointProcessor::class); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PriceChangeValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PriceChangeValidatorTest.php index f8c18c28eba..7af28124aa7 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PriceChangeValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/PriceChangeValidatorTest.php @@ -45,7 +45,7 @@ class PriceChangeValidatorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/ProductStatusValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/ProductStatusValidatorTest.php index f7bff2ea91c..91a3ba0818b 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/ProductStatusValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/ProductStatusValidatorTest.php @@ -43,7 +43,7 @@ class ProductStatusValidatorTest extends EccubeTestCase */ protected $ProductClass; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/SaleLimitMultipleValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/SaleLimitMultipleValidatorTest.php index df43d763c5e..547257b0ff6 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/SaleLimitMultipleValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/SaleLimitMultipleValidatorTest.php @@ -58,7 +58,7 @@ class SaleLimitMultipleValidatorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockDiffProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockDiffProcessorTest.php index 25c13906e2c..36185fb814a 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockDiffProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockDiffProcessorTest.php @@ -41,7 +41,7 @@ class StockDiffProcessorTest extends EccubeTestCase /** @var BaseInfo */ private $BaseInfo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->processor = self::$container->get(StockDiffProcessor::class); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockMultipleValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockMultipleValidatorTest.php index f9dd0dbb37e..58b339d22bd 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockMultipleValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockMultipleValidatorTest.php @@ -57,7 +57,7 @@ class StockMultipleValidatorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockReduceProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockReduceProcessorTest.php index 10bac0beb54..720b163a2fb 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockReduceProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockReduceProcessorTest.php @@ -22,7 +22,7 @@ class StockReduceProcessorTest extends EccubeTestCase { private $processor; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->processor = self::$container->get(StockReduceProcessor::class); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockValidatorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockValidatorTest.php index 77471f92c74..ada4bf55020 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockValidatorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/StockValidatorTest.php @@ -46,7 +46,7 @@ class StockValidatorTest extends EccubeTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/TaxProcessorTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/TaxProcessorTest.php index b77cd8fcf56..50d39aa69e7 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/Processor/TaxProcessorTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/Processor/TaxProcessorTest.php @@ -45,7 +45,7 @@ class TaxProcessorTest extends EccubeTestCase /** @var TaxRuleRepository */ private $taxRuleRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/PurchaseFlow/PurchaseFlowTest.php b/tests/Eccube/Tests/Service/PurchaseFlow/PurchaseFlowTest.php index e8b303650e6..60cf251a210 100644 --- a/tests/Eccube/Tests/Service/PurchaseFlow/PurchaseFlowTest.php +++ b/tests/Eccube/Tests/Service/PurchaseFlow/PurchaseFlowTest.php @@ -38,7 +38,7 @@ class PurchaseFlowTest extends EccubeTestCase protected $Product; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Service/SystemServiceTest.php b/tests/Eccube/Tests/Service/SystemServiceTest.php index afb3e7f15ad..513bfcf17b8 100644 --- a/tests/Eccube/Tests/Service/SystemServiceTest.php +++ b/tests/Eccube/Tests/Service/SystemServiceTest.php @@ -22,6 +22,6 @@ public function testgetDbversion() $version = self::$container->get(SystemService::class)->getDbversion(); $this->assertNotNull($version); - $this->assertRegExp('/mysql|postgresql|sqlite/', strtolower($version)); + $this->assertMatchesRegularExpression('/mysql|postgresql|sqlite/', strtolower($version)); } } diff --git a/tests/Eccube/Tests/Service/TaxRuleServiceTest.php b/tests/Eccube/Tests/Service/TaxRuleServiceTest.php index a152dcedb8c..e8530995bee 100644 --- a/tests/Eccube/Tests/Service/TaxRuleServiceTest.php +++ b/tests/Eccube/Tests/Service/TaxRuleServiceTest.php @@ -37,7 +37,7 @@ class TaxRuleServiceTest extends AbstractServiceTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->BaseInfo = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class)->get(); diff --git a/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php b/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php index 5590aedefd6..32904b66de7 100644 --- a/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php +++ b/tests/Eccube/Tests/Session/Storage/Handler/SameSiteNoneCompatSessionHandlerTest.php @@ -25,7 +25,7 @@ class SameSiteNoneCompatSessionHandlerTest extends TestCase private static $server; const FIXTURES_DIR = __DIR__.'/../../../../../Fixtures/session'; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $spec = [ 1 => ['file', '/dev/null', 'w'], @@ -37,7 +37,7 @@ public static function setUpBeforeClass() sleep(1); } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { if (self::$server) { proc_terminate(self::$server); diff --git a/tests/Eccube/Tests/Transaction/TransactionListenerTest.php b/tests/Eccube/Tests/Transaction/TransactionListenerTest.php index 621552fddef..590517e8078 100644 --- a/tests/Eccube/Tests/Transaction/TransactionListenerTest.php +++ b/tests/Eccube/Tests/Transaction/TransactionListenerTest.php @@ -35,7 +35,7 @@ protected function isSqlite() return $this->app['db']->getDatabasePlatform()->getName() === 'sqlite'; } - public function setUp() + protected function setUp(): void { $this->markTestIncomplete(get_class($this).' は未実装です'); parent::setUp(); @@ -58,7 +58,7 @@ public function setUp() $this->app->mount('', $c); } - public function tearDown() + protected function tearDown(): void { if ($this->app['orm.em']) { $this->app['orm.em']->close(); diff --git a/tests/Eccube/Tests/Twig/Extension/EccubeBlockExtensionTest.php b/tests/Eccube/Tests/Twig/Extension/EccubeBlockExtensionTest.php index 0ef1a68dac0..9be39975565 100644 --- a/tests/Eccube/Tests/Twig/Extension/EccubeBlockExtensionTest.php +++ b/tests/Eccube/Tests/Twig/Extension/EccubeBlockExtensionTest.php @@ -27,11 +27,11 @@ class EccubeBlockExtensionTest extends EccubeTestCase ]; /** - * @var \Twig_Environment + * @var \Twig\Environment */ protected $twig; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -43,10 +43,10 @@ public function setUp() file_put_contents($this->templateDir.'/'.$twig_file, ''); } - $loader = new \Twig_Loader_Filesystem([ + $loader = new \Twig\Loader\FilesystemLoader([ $this->templateDir, ]); - $this->twig = new \Twig_Environment($loader); + $this->twig = new \Twig\Environment($loader); $this->twig->addExtension(new EccubeBlockExtension($this->twig, $this->blockTwigs)); } diff --git a/tests/Eccube/Tests/Twig/Extension/EccubeExtensionTest.php b/tests/Eccube/Tests/Twig/Extension/EccubeExtensionTest.php index c91df124447..ccdc15c79ed 100644 --- a/tests/Eccube/Tests/Twig/Extension/EccubeExtensionTest.php +++ b/tests/Eccube/Tests/Twig/Extension/EccubeExtensionTest.php @@ -24,7 +24,7 @@ class EccubeExtensionTest extends EccubeTestCase */ protected $Extension; - public function setUp() + protected function setUp(): void { parent::setUp(); $EccubeConfig = self::$container->get(EccubeConfig::class); diff --git a/tests/Eccube/Tests/Twig/Extension/FunctionsTest.php b/tests/Eccube/Tests/Twig/Extension/FunctionsTest.php deleted file mode 100644 index 5f17f833d1c..00000000000 --- a/tests/Eccube/Tests/Twig/Extension/FunctionsTest.php +++ /dev/null @@ -1,44 +0,0 @@ -twig = self::$container->get('twig'); - } - - /** - * PHP関数を使用するテスト - */ - public function testPhpFunctions() - { - $template = $this->twig->createTemplate("
{{ php_print_r('aaa', true) }}
"); - - $this->expected = "
aaa
"; - $this->actual = $template->render([]); - - $this->verify(); - } -} diff --git a/tests/Eccube/Tests/Twig/Extension/IntlExtensionTest.php b/tests/Eccube/Tests/Twig/Extension/IntlExtensionTest.php index 6303dede69d..dc591f6c09d 100644 --- a/tests/Eccube/Tests/Twig/Extension/IntlExtensionTest.php +++ b/tests/Eccube/Tests/Twig/Extension/IntlExtensionTest.php @@ -25,18 +25,15 @@ class IntlExtensionTest extends TestCase */ protected $twig; - public function setUp() + protected function setUp(): void { $loader = new ArrayLoader(); $loader->setTemplate('date_day_template', '{{ date|date_day }}'); $loader->setTemplate('date_min_template', '{{ date|date_min }}'); $this->twig = new Environment($loader); - $this->twig->getExtension('Twig_Extension_Core')->setTimezone('Asia/Tokyo'); + $this->twig->getExtension(\Twig\Extension\CoreExtension::class)->setTimezone('Asia/Tokyo'); $this->twig->addExtension(new IntlExtension()); - - // twig_localized_date_filter関数を使うため, Twig_Extensions_Extension_Intlをautoloadする. - class_exists('Twig_Extensions_Extension_Intl'); } public function testDateDay() diff --git a/tests/Eccube/Tests/Twig/Extension/TaxExtensionTest.php b/tests/Eccube/Tests/Twig/Extension/TaxExtensionTest.php index 69dc0f81a54..b50ce61831e 100644 --- a/tests/Eccube/Tests/Twig/Extension/TaxExtensionTest.php +++ b/tests/Eccube/Tests/Twig/Extension/TaxExtensionTest.php @@ -29,7 +29,7 @@ class TaxExtensionTest extends EccubeTestCase */ protected $taxRuleRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->taxExtension = self::$container->get(TaxExtension::class); diff --git a/tests/Eccube/Tests/Util/CacheUtilTest.php b/tests/Eccube/Tests/Util/CacheUtilTest.php index b4bf571deaf..d828f6e32db 100644 --- a/tests/Eccube/Tests/Util/CacheUtilTest.php +++ b/tests/Eccube/Tests/Util/CacheUtilTest.php @@ -29,7 +29,7 @@ class CacheUtilTest extends TestCase private $root; private $dirs; - public function setUp() + protected function setUp(): void { // 仮想ファイルを生成 $this->root = vfsStream::setup('rootDir'); diff --git a/tests/Eccube/Tests/Util/EntityUtilTest.php b/tests/Eccube/Tests/Util/EntityUtilTest.php index a774b85e639..bf16cc0541b 100644 --- a/tests/Eccube/Tests/Util/EntityUtilTest.php +++ b/tests/Eccube/Tests/Util/EntityUtilTest.php @@ -24,7 +24,7 @@ */ class EntityUtilTest extends EccubeTestCase { - public function setUp() + protected function setUp(): void { parent::setUp(); } diff --git a/tests/Eccube/Tests/Util/FormUtilTest.php b/tests/Eccube/Tests/Util/FormUtilTest.php index 6e23a68ab76..7d538dacb2e 100644 --- a/tests/Eccube/Tests/Util/FormUtilTest.php +++ b/tests/Eccube/Tests/Util/FormUtilTest.php @@ -38,7 +38,7 @@ class FormUtilTest extends EccubeTestCase 'date' => '2017-02-01', ]; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->formFactory = self::$container->get('form.factory'); diff --git a/tests/Eccube/Tests/Util/StringUtilTest.php b/tests/Eccube/Tests/Util/StringUtilTest.php index 766cdb0ce7f..30881b7f603 100644 --- a/tests/Eccube/Tests/Util/StringUtilTest.php +++ b/tests/Eccube/Tests/Util/StringUtilTest.php @@ -27,7 +27,7 @@ class StringUtilTest extends TestCase private $actual; private $expected; - public function setUp() + protected function setUp(): void { } diff --git a/tests/Eccube/Tests/Web/AbstractShoppingControllerTestCase.php b/tests/Eccube/Tests/Web/AbstractShoppingControllerTestCase.php index aa0e56e74a4..eefde795e15 100644 --- a/tests/Eccube/Tests/Web/AbstractShoppingControllerTestCase.php +++ b/tests/Eccube/Tests/Web/AbstractShoppingControllerTestCase.php @@ -26,12 +26,12 @@ */ abstract class AbstractShoppingControllerTestCase extends AbstractWebTestCase { - public function setUp() + protected function setUp(): void { parent::setUp(); } - public function tearDown() + protected function tearDown(): void { parent::tearDown(); } diff --git a/tests/Eccube/Tests/Web/AbstractWebTestCase.php b/tests/Eccube/Tests/Web/AbstractWebTestCase.php index 347f71e9409..375b116a87c 100644 --- a/tests/Eccube/Tests/Web/AbstractWebTestCase.php +++ b/tests/Eccube/Tests/Web/AbstractWebTestCase.php @@ -20,14 +20,14 @@ abstract class AbstractWebTestCase extends EccubeTestCase { - public function setUp() + protected function setUp(): void { parent::setUp(); $this->createSession(); } - public function tearDown() + protected function tearDown(): void { parent::tearDown(); } diff --git a/tests/Eccube/Tests/Web/Admin/AbstractAdminWebTestCase.php b/tests/Eccube/Tests/Web/Admin/AbstractAdminWebTestCase.php index f1425dc8506..812f1478038 100644 --- a/tests/Eccube/Tests/Web/Admin/AbstractAdminWebTestCase.php +++ b/tests/Eccube/Tests/Web/Admin/AbstractAdminWebTestCase.php @@ -17,7 +17,7 @@ abstract class AbstractAdminWebTestCase extends AbstractWebTestCase { - public function setUp() + protected function setUp(): void { parent::setUp(); $this->logIn(); diff --git a/tests/Eccube/Tests/Web/Admin/AdminControllerProductNonStockTest.php b/tests/Eccube/Tests/Web/Admin/AdminControllerProductNonStockTest.php index 272ca97a411..a65f741dce3 100644 --- a/tests/Eccube/Tests/Web/Admin/AdminControllerProductNonStockTest.php +++ b/tests/Eccube/Tests/Web/Admin/AdminControllerProductNonStockTest.php @@ -44,7 +44,7 @@ public function testAdminNonStockRender() $crawler = $client->request('GET', $this->generateUrl('admin_homepage')); $this->assertTrue($client->getResponse()->isSuccessful()); - $this->assertContains('在庫切れ商品', $crawler->filter($this->target)->html()); + $this->assertStringContainsString('在庫切れ商品', $crawler->filter($this->target)->html()); } /** @@ -59,7 +59,7 @@ public function testAdminNonStockWithSearch() $crawler = $client->request('GET', $this->generateUrl('admin_homepage')); $this->assertTrue($client->getResponse()->isSuccessful()); - $this->assertContains('在庫切れ商品', $crawler->filter($this->target)->html()); + $this->assertStringContainsString('在庫切れ商品', $crawler->filter($this->target)->html()); $section = trim($crawler->filter($this->target.' .card-body .d-block:nth-child(1) span.h4')->text()); $this->expected = $showNumber = preg_replace('/\D/', '', $section); diff --git a/tests/Eccube/Tests/Web/Admin/Content/CssControllerTest.php b/tests/Eccube/Tests/Web/Admin/Content/CssControllerTest.php index e07204fa1dc..aa09e351249 100644 --- a/tests/Eccube/Tests/Web/Admin/Content/CssControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Content/CssControllerTest.php @@ -30,7 +30,7 @@ class CssControllerTest extends AbstractAdminWebTestCase */ private $contents; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->dir = self::$container->getParameter('eccube_html_dir').'/user_data/assets/css/'; @@ -39,7 +39,7 @@ public function setUp() $fs->dumpFile($this->dir.self::CSS_FILE, ''); } - public function tearDown() + protected function tearDown(): void { chmod($this->dir, 0755); $fs = new Filesystem(); diff --git a/tests/Eccube/Tests/Web/Admin/Content/FileControllerTest.php b/tests/Eccube/Tests/Web/Admin/Content/FileControllerTest.php index 5f7e422dbc2..ab2316921d4 100644 --- a/tests/Eccube/Tests/Web/Admin/Content/FileControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Content/FileControllerTest.php @@ -160,7 +160,6 @@ public function testIndexWithUpload() realpath($filepath1), // file path 'aaa.html', // original name 'text/html', // mimeType - null, // file size null, // error true // test mode ); @@ -168,7 +167,6 @@ public function testIndexWithUpload() realpath($filepath2), // file path 'bbb.html', // original name 'text/html', // mimeType - null, // file size null, // error true // test mode ); @@ -184,7 +182,7 @@ public function testIndexWithUpload() 'mode' => 'upload', 'now_dir' => '/', ], - ['file' => [$file1, $file2]] + ['form' => ['file' => [$file1, $file2]]] ); $this->assertTrue($this->client->getResponse()->isSuccessful()); @@ -204,7 +202,6 @@ public function testUploadIgnoreFiles() realpath($php), // file path 'test.php', // original name 'x-php', // mimeType - null, // file size null, // error true // test mode ); @@ -213,7 +210,6 @@ public function testUploadIgnoreFiles() realpath($dot), // file path '.dotfile', // original name 'text/plain', // mimeType - null, // file size null, // error true // test mode ); @@ -230,7 +226,7 @@ public function testUploadIgnoreFiles() 'mode' => 'upload', 'now_dir' => '/', ], - ['file' => [$phpfile, $dotfile]] + ['form' => ['file' => [$phpfile, $dotfile]]] ); $messages = $crawler->filter('p.errormsg')->each(function (Crawler $node) { @@ -238,6 +234,7 @@ public function testUploadIgnoreFiles() }); $this->assertTrue($this->client->getResponse()->isSuccessful()); + $this->assertContains('phpファイルはアップロードできません。', $messages); $this->assertContains('.で始まるファイルはアップロードできません。', $messages); $this->assertFalse(file_exists($this->getUserDataDir().'/test.php')); @@ -249,7 +246,7 @@ public function testUploadIgnoreFiles() protected function getUserDataDir() { - return self::$container->getParameter('kernel.project_dir').'/html/user_data'; + return __DIR__.'/../../../../../../html/user_data'; } private function getJailDir($path) @@ -260,8 +257,9 @@ private function getJailDir($path) return $jailPath ? $jailPath : '/'; } - public function tearDown() + protected function tearDown(): void { + parent::tearDown(); if (file_exists($this->getUserDataDir().'/aaa.html')) { unlink($this->getUserDataDir().'/aaa.html'); } diff --git a/tests/Eccube/Tests/Web/Admin/Content/JsControllerTest.php b/tests/Eccube/Tests/Web/Admin/Content/JsControllerTest.php index 53546d41c98..077d161411a 100644 --- a/tests/Eccube/Tests/Web/Admin/Content/JsControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Content/JsControllerTest.php @@ -30,7 +30,7 @@ class JsControllerTest extends AbstractAdminWebTestCase */ private $contents; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->dir = self::$container->getParameter('eccube_html_dir').'/user_data/assets/js/'; @@ -39,7 +39,7 @@ public function setUp() $fs->dumpFile($this->dir.self::JS_FILE, ''); } - public function tearDown() + protected function tearDown(): void { chmod($this->dir, 0755); $fs = new Filesystem(); diff --git a/tests/Eccube/Tests/Web/Admin/Content/LayoutControllerTest.php b/tests/Eccube/Tests/Web/Admin/Content/LayoutControllerTest.php index f819f75b868..87afe78241e 100644 --- a/tests/Eccube/Tests/Web/Admin/Content/LayoutControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Content/LayoutControllerTest.php @@ -48,7 +48,7 @@ class LayoutControllerTest extends AbstractAdminWebTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->PageLayoutRepo = $this->entityManager->getRepository(\Eccube\Entity\PageLayout::class); @@ -149,7 +149,7 @@ public function testDeleteSuccess() $this->generateUrl('admin_content_layout_delete', ['id' => $Layout->getId()]) ); $crawler = $this->client->followRedirect(); - $this->assertRegExp('/削除しました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/削除しました/u', $crawler->filter('div.alert-success')->text()); } public function testDeleteFail() @@ -207,6 +207,6 @@ public function testDeleteFailByPages() $this->generateUrl('admin_content_layout_delete', ['id' => $Layout->getId()]) ); $crawler = $this->client->followRedirect(); - $this->assertRegExp('/削除できませんでした/u', $crawler->filter('div.alert-warning')->text()); + $this->assertMatchesRegularExpression('/削除できませんでした/u', $crawler->filter('div.alert-warning')->text()); } } diff --git a/tests/Eccube/Tests/Web/Admin/Content/MaintenanceControllerTest.php b/tests/Eccube/Tests/Web/Admin/Content/MaintenanceControllerTest.php index 5e29f4ee423..502d809f17a 100644 --- a/tests/Eccube/Tests/Web/Admin/Content/MaintenanceControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Content/MaintenanceControllerTest.php @@ -19,7 +19,7 @@ class MaintenanceControllerTest extends AbstractAdminWebTestCase { private $maintenance_file_path; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -31,7 +31,7 @@ public function setUp() } } - public function tearDown() + protected function tearDown(): void { parent::tearDown(); diff --git a/tests/Eccube/Tests/Web/Admin/Content/NewsControllerTest.php b/tests/Eccube/Tests/Web/Admin/Content/NewsControllerTest.php index ffff620e082..4628ca8d8fc 100644 --- a/tests/Eccube/Tests/Web/Admin/Content/NewsControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Content/NewsControllerTest.php @@ -26,7 +26,7 @@ class NewsControllerTest extends AbstractAdminWebTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Web/Admin/Customer/CustomerControllerTest.php b/tests/Eccube/Tests/Web/Admin/Customer/CustomerControllerTest.php index 3ee244f3564..d97a0fe7914 100644 --- a/tests/Eccube/Tests/Web/Admin/Customer/CustomerControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Customer/CustomerControllerTest.php @@ -17,16 +17,20 @@ use Eccube\Entity\Master\OrderStatus; use Eccube\Repository\Master\OrderStatusRepository; use Eccube\Tests\Web\Admin\AbstractAdminWebTestCase; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; /** * Class CustomerControllerTest */ class CustomerControllerTest extends AbstractAdminWebTestCase { + use MailerAssertionsTrait; + /** * Setup */ - public function setUp() + protected function setUp(): void { parent::setUp(); for ($i = 0; $i < 10; $i++) { @@ -47,7 +51,7 @@ public function setUp() /** * tearDown */ - public function tearDown() + protected function tearDown(): void { parent::tearDown(); } @@ -109,7 +113,7 @@ public function testIndexWithPostSex() ); $this->expected = '検索'; $this->actual = $crawler->filter('div.c-outsideBlock__contents.mb-5 > span')->text(); - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); } /** @@ -198,7 +202,6 @@ public function indexWithPostSearchByProductNameProvider() */ public function testResend() { - $this->client->enableProfiler(); $Customer = $this->createCustomer(); $this->client->request( 'GET', @@ -206,9 +209,9 @@ public function testResend() ); $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('admin_customer'))); - $Messages = $this->getMailCollector(false)->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $BaseInfo = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class)->get(); $this->expected = '['.$BaseInfo->getShopName().'] 会員登録のご確認'; @@ -216,7 +219,7 @@ public function testResend() $this->verify(); //test mail resend to 仮会員. - $this->assertContains($BaseInfo->getEmail02(), $Message->toString()); + $this->assertStringContainsString($BaseInfo->getEmail02(), $Message->toString()); } /** diff --git a/tests/Eccube/Tests/Web/Admin/Customer/CustomerDeliveryEditControllerTest.php b/tests/Eccube/Tests/Web/Admin/Customer/CustomerDeliveryEditControllerTest.php index e1e14225c74..c3103abb267 100644 --- a/tests/Eccube/Tests/Web/Admin/Customer/CustomerDeliveryEditControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Customer/CustomerDeliveryEditControllerTest.php @@ -35,7 +35,7 @@ class CustomerDeliveryEditControllerTest extends AbstractAdminWebTestCase /** * setUp */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); diff --git a/tests/Eccube/Tests/Web/Admin/Customer/CustomerEditControllerTest.php b/tests/Eccube/Tests/Web/Admin/Customer/CustomerEditControllerTest.php index 37dddbffa66..f6af028d841 100644 --- a/tests/Eccube/Tests/Web/Admin/Customer/CustomerEditControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Customer/CustomerEditControllerTest.php @@ -28,7 +28,7 @@ class CustomerEditControllerTest extends AbstractAdminWebTestCase /** * setUp */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); @@ -54,7 +54,7 @@ protected function createFormData() 'address' => ['pref' => '5', 'addr01' => $faker->city, 'addr02' => $faker->streetAddress], 'phone_number' => $faker->phoneNumber, 'email' => $email, - 'password' => ['first' => $password, 'second' => $password], + 'plain_password' => ['first' => $password, 'second' => $password], 'birth' => $birth->format('Y').'-'.$birth->format('n').'-'.$birth->format('j'), 'sex' => 1, 'job' => 1, @@ -91,7 +91,7 @@ public function testIndexBackButton() $this->expected = '会員一覧'; $this->actual = $crawler->filter('#customer_form > div.c-conversionArea > div > div > div:nth-child(1) > div')->text(); - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); } /** @@ -169,7 +169,7 @@ public function testShowOrder() ); $orderListing = $crawler->filter('#orderHistory > div')->text(); - $this->assertRegexp('/'.$Order->getOrderNo().'/', $orderListing); + $this->assertMatchesRegularExpression('/'.$Order->getOrderNo().'/', $orderListing); } public function testNotShowProcessingOrder() @@ -194,7 +194,7 @@ public function testNotShowProcessingOrder() ); $orderListing = $crawler->filter('#orderHistory')->text(); - $this->assertContains('この会員の購入履歴がありません', $orderListing); + $this->assertStringContainsString('この会員の購入履歴がありません', $orderListing); } /** @@ -212,7 +212,7 @@ public function testCustomerWithdraw() $EditedCustomer = $this->entityManager->getRepository(\Eccube\Entity\Customer::class)->find($this->Customer->getId()); - $this->assertRegExp('/@dummy.dummy/', $EditedCustomer->getEmail()); + $this->assertMatchesRegularExpression('/@dummy.dummy/', $EditedCustomer->getEmail()); } /** diff --git a/tests/Eccube/Tests/Web/Admin/IndexControllerTest.php b/tests/Eccube/Tests/Web/Admin/IndexControllerTest.php index 109799ac68c..a489537de1a 100644 --- a/tests/Eccube/Tests/Web/Admin/IndexControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/IndexControllerTest.php @@ -30,7 +30,7 @@ class IndexControllerTest extends AbstractAdminWebTestCase /** @var OrderRepository */ protected $orderRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Member = $this->createMember(); diff --git a/tests/Eccube/Tests/Web/Admin/Order/CsvImportControllerTest.php b/tests/Eccube/Tests/Web/Admin/Order/CsvImportControllerTest.php index e6916064196..3586ef196e2 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/CsvImportControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/CsvImportControllerTest.php @@ -165,7 +165,7 @@ public function testCsvShipping() $Shipping3->getId().',9012,2018-03-22', ])); - $file = new UploadedFile($tempFile, 'shipping.csv', 'text/csv', null, null, true); + $file = new UploadedFile($tempFile, 'shipping.csv', 'text/csv', null, true); $crawler = $this->client->request( 'POST', @@ -176,10 +176,10 @@ public function testCsvShipping() 'import_file' => $file, ], ], - ['import_file' => $file] + ['admin_csv_import' => ['import_file' => $file]] ); - $this->assertRegexp( + $this->assertMatchesRegularExpression( '/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-primary')->text() ); diff --git a/tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php b/tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php index d8c3a2f0ac2..d00a921ec19 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/EditControllerTest.php @@ -61,7 +61,7 @@ class EditControllerTest extends AbstractEditControllerTestCase */ protected $customerRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); diff --git a/tests/Eccube/Tests/Web/Admin/Order/EditControllerWithMultipleTest.php b/tests/Eccube/Tests/Web/Admin/Order/EditControllerWithMultipleTest.php index 3476833e021..4c8cdae1771 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/EditControllerWithMultipleTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/EditControllerWithMultipleTest.php @@ -27,7 +27,7 @@ class EditControllerWithMultipleTest extends AbstractEditControllerTestCase protected $Order; protected $Product; - public function setUp() + protected function setUp(): void { $this->markTestIncomplete(get_class($this).' は未実装です'); parent::setUp(); diff --git a/tests/Eccube/Tests/Web/Admin/Order/MailControllerTest.php b/tests/Eccube/Tests/Web/Admin/Order/MailControllerTest.php index 26dc02e23e7..56ad3099bb9 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/MailControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/MailControllerTest.php @@ -19,9 +19,13 @@ use Eccube\Entity\MailTemplate; use Eccube\Entity\Order; use Eccube\Tests\Web\Admin\AbstractAdminWebTestCase; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; class MailControllerTest extends AbstractAdminWebTestCase { + use MailerAssertionsTrait; + /** * @var Customer */ @@ -32,7 +36,7 @@ class MailControllerTest extends AbstractAdminWebTestCase */ protected $Order; - public function setUp() + protected function setUp(): void { parent::setUp(); $faker = $this->getFaker(); @@ -67,6 +71,7 @@ public function createFormData() $form = [ 'template' => 1, 'mail_subject' => $faker->word, + 'tpl_data' => $faker->realText(), '_token' => 'dummy', ]; @@ -98,7 +103,6 @@ public function testIndexWithConfirm() public function testComplete() { - $this->client->enableProfiler(); $form = $this->createFormData(); $crawler = $this->client->request( 'POST', @@ -110,12 +114,9 @@ public function testComplete() ); $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('admin_order_edit', ['id' => $this->Order->getId()]))); - $mailCollector = $this->getMailCollector(false); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $BaseInfo = $this->entityManager->find(BaseInfo::class, 1); $this->expected = '['.$BaseInfo->getShopName().'] '.$form['mail_subject']; diff --git a/tests/Eccube/Tests/Web/Admin/Order/OrderControllerTest.php b/tests/Eccube/Tests/Web/Admin/Order/OrderControllerTest.php index da509e6d05e..6951312a997 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/OrderControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/OrderControllerTest.php @@ -25,9 +25,13 @@ use Eccube\Repository\PaymentRepository; use Eccube\Tests\Web\Admin\AbstractAdminWebTestCase; use Symfony\Component\DomCrawler\Crawler; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; class OrderControllerTest extends AbstractAdminWebTestCase { + use MailerAssertionsTrait; + /** * @var OrderStatusRepository */ @@ -58,7 +62,7 @@ class OrderControllerTest extends AbstractAdminWebTestCase */ protected $customerRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -326,7 +330,7 @@ public function testSearchWithEmail() /* @var $customer \Eccube\Entity\Customer */ $customer = $this->customerRepository->findOneBy(['email' => 'user-1@example.com']); - $this->assertContains($customer->getName01(), $crawler->filter('table#search_result')->html()); + $this->assertStringContainsString($customer->getName01(), $crawler->filter('table#search_result')->html()); } /** @@ -453,13 +457,11 @@ public function testSimpleUpdateOrderStatusWithSendMail() $orderIds[] = $Order->getId(); $Shippings = $Order->getShippings(); foreach ($Shippings as $Shipping) { - $this->client->enableProfiler(); - - $this->client->request( + $crawler = $this->client->request( 'PUT', $this->generateUrl('admin_shipping_update_order_status', ['id' => $Shipping->getId()]), [ - 'order_status' => $OrderStatusDelivered, + 'order_status' => $OrderStatusDelivered->getId(), 'notificationMail' => 'on', Constant::TOKEN_NAME => 'dummy', ], @@ -472,14 +474,12 @@ public function testSimpleUpdateOrderStatusWithSendMail() $this->assertTrue($this->client->getResponse()->isSuccessful()); - $Messages = $this->getMailCollector(false)->getMessages(); - $this->assertEquals(1, count($Messages)); - - /** @var \Swift_Message $Message */ - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); - $this->assertRegExp('/\[.*?\] 商品出荷のお知らせ/', $Message->getSubject()); - $this->assertEquals([$Order->getEmail() => null], $Message->getTo()); + $this->assertStringContainsString('商品出荷のお知らせ', $Message->getSubject()); + $this->assertEquals($Order->getEmail(), $Message->getTo()[0]->getAddress()); } } diff --git a/tests/Eccube/Tests/Web/Admin/Order/OrderPdfControllerTest.php b/tests/Eccube/Tests/Web/Admin/Order/OrderPdfControllerTest.php index 6387352ef2b..d40dc065034 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/OrderPdfControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/OrderPdfControllerTest.php @@ -39,7 +39,7 @@ class OrderPdfControllerTest extends AbstractAdminWebTestCase /** @var OrderPdfRepository */ protected $orderPdfRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->orderStatusRepo = $this->entityManager->getRepository(\Eccube\Entity\Master\OrderStatus::class); @@ -81,11 +81,11 @@ public function testRender() $this->generateUrl('admin_order') ); - $this->assertContains((string) $shippingId, $crawler->filter('#search_result')->html()); + $this->assertStringContainsString((string) $shippingId, $crawler->filter('#search_result')->html()); $expectedText = '納品書出力'; $actualNode = $crawler->filter('.btn-bulk-wrapper')->html(); - $this->assertContains($expectedText, $actualNode); + $this->assertStringContainsString($expectedText, $actualNode); } /** @@ -108,11 +108,11 @@ public function testRenderDownloadWithDefault() ] ); $html = $crawler->filter('#order_pdf_form')->html(); - $this->assertContains((string) $shippingId, $html); - $this->assertContains('お買上げ明細書(納品書)', $html); - $this->assertContains('このたびはお買上げいただきありがとうございます。', $html); - $this->assertContains('下記の内容にて納品させていただきます。', $html); - $this->assertContains('ご確認くださいますよう、お願いいたします。', $html); + $this->assertStringContainsString((string) $shippingId, $html); + $this->assertStringContainsString('お買上げ明細書(納品書)', $html); + $this->assertStringContainsString('このたびはお買上げいただきありがとうございます。', $html); + $this->assertStringContainsString('下記の内容にて納品させていただきます。', $html); + $this->assertStringContainsString('ご確認くださいますよう、お願いいたします。', $html); } /** @@ -160,15 +160,15 @@ public function testRenderDownloadWithPreviousInput() ]); $html = $crawler->filter('#order_pdf_form')->html(); - $this->assertContains((string) $shippingId, $html); + $this->assertStringContainsString((string) $shippingId, $html); - $this->assertContains($form['order_pdf[title]']->getValue(), $html); - $this->assertContains($form['order_pdf[message1]']->getValue(), $html); - $this->assertContains($form['order_pdf[message2]']->getValue(), $html); - $this->assertContains($form['order_pdf[message3]']->getValue(), $html); - $this->assertContains($form['order_pdf[note1]']->getValue(), $html); - $this->assertContains($form['order_pdf[note2]']->getValue(), $html); - $this->assertContains($form['order_pdf[note3]']->getValue(), $html); + $this->assertStringContainsString($form['order_pdf[title]']->getValue(), $html); + $this->assertStringContainsString($form['order_pdf[message1]']->getValue(), $html); + $this->assertStringContainsString($form['order_pdf[message2]']->getValue(), $html); + $this->assertStringContainsString($form['order_pdf[message3]']->getValue(), $html); + $this->assertStringContainsString($form['order_pdf[note1]']->getValue(), $html); + $this->assertStringContainsString($form['order_pdf[note2]']->getValue(), $html); + $this->assertStringContainsString($form['order_pdf[note3]']->getValue(), $html); } /** @@ -184,7 +184,7 @@ public function testDownloadIdInvalid() $crawler = $this->client->followRedirect(); $html = $crawler->filter('.alert')->html(); - $this->assertContains('出荷IDが指定されていません', $html); + $this->assertStringContainsString('出荷IDが指定されていません', $html); } /** @@ -215,11 +215,11 @@ public function testDownloadMaxLength($field, $message) ] ); $html = $crawler->filter('#order_pdf_form')->html(); - $this->assertContains((string) $shippingId, $html); - $this->assertContains('お買上げ明細書(納品書)', $html); - $this->assertContains('このたびはお買上げいただきありがとうございます。', $html); - $this->assertContains('下記の内容にて納品させていただきます。', $html); - $this->assertContains('ご確認くださいますよう、お願いいたします。', $html); + $this->assertStringContainsString((string) $shippingId, $html); + $this->assertStringContainsString('お買上げ明細書(納品書)', $html); + $this->assertStringContainsString('このたびはお買上げいただきありがとうございます。', $html); + $this->assertStringContainsString('下記の内容にて納品させていただきます。', $html); + $this->assertStringContainsString('ご確認くださいますよう、お願いいたします。', $html); $form = $this->getForm($crawler); /** @@ -231,7 +231,7 @@ public function testDownloadMaxLength($field, $message) $this->assertTrue($client->getResponse()->isSuccessful()); $html = $crawler->filter('#order_pdf_form')->html(); - $this->assertContains($message, $html); + $this->assertStringContainsString($message, $html); } /** @@ -275,11 +275,11 @@ public function testDownloadSuccess() 'ids' => [$shippingId], ]); $html = $crawler->filter('#order_pdf_form')->html(); - $this->assertContains((string) $shippingId, $html); - $this->assertContains('お買上げ明細書(納品書)', $html); - $this->assertContains('このたびはお買上げいただきありがとうございます。', $html); - $this->assertContains('下記の内容にて納品させていただきます。', $html); - $this->assertContains('ご確認くださいますよう、お願いいたします。', $html); + $this->assertStringContainsString((string) $shippingId, $html); + $this->assertStringContainsString('お買上げ明細書(納品書)', $html); + $this->assertStringContainsString('このたびはお買上げいただきありがとうございます。', $html); + $this->assertStringContainsString('下記の内容にて納品させていただきます。', $html); + $this->assertStringContainsString('ご確認くださいますよう、お願いいたします。', $html); $form = $this->getForm($crawler); $client->submit($form); @@ -331,14 +331,14 @@ public function testDownloadWithPreviousInputSuccess() ); $html = $crawler->filter('#order_pdf_form')->html(); - $this->assertContains((string) $shippingId, $html); - $this->assertContains($OrderPdf->getTitle(), $html); - $this->assertContains($OrderPdf->getMessage1(), $html); - $this->assertContains($OrderPdf->getMessage2(), $html); - $this->assertContains($OrderPdf->getMessage3(), $html); - $this->assertContains($OrderPdf->getNote1(), $html); - $this->assertContains($OrderPdf->getNote2(), $html); - $this->assertContains($OrderPdf->getNote3(), $html); + $this->assertStringContainsString((string) $shippingId, $html); + $this->assertStringContainsString($OrderPdf->getTitle(), $html); + $this->assertStringContainsString($OrderPdf->getMessage1(), $html); + $this->assertStringContainsString($OrderPdf->getMessage2(), $html); + $this->assertStringContainsString($OrderPdf->getMessage3(), $html); + $this->assertStringContainsString($OrderPdf->getNote1(), $html); + $this->assertStringContainsString($OrderPdf->getNote2(), $html); + $this->assertStringContainsString($OrderPdf->getNote3(), $html); $form = $this->getForm($crawler); $client->submit($form); diff --git a/tests/Eccube/Tests/Web/Admin/Order/ShippingControllerTest.php b/tests/Eccube/Tests/Web/Admin/Order/ShippingControllerTest.php index e1d005b80bb..d902d326e4e 100644 --- a/tests/Eccube/Tests/Web/Admin/Order/ShippingControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Order/ShippingControllerTest.php @@ -20,9 +20,14 @@ use Eccube\Entity\ProductClass; use Eccube\Entity\Shipping; use Eccube\Repository\ShippingRepository; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; class ShippingControllerTest extends AbstractEditControllerTestCase { + + use MailerAssertionsTrait; + /** * @var ShippingRepository */ @@ -31,7 +36,7 @@ class ShippingControllerTest extends AbstractEditControllerTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->shippingRepository = $this->entityManager->getRepository(\Eccube\Entity\Shipping::class); @@ -64,8 +69,8 @@ public function testShippingMessageNoticeWhenPost() $crawler = $this->client->followRedirect(); $info = $crawler->filter('#page_admin_shipping_edit > div.c-container > div.c-contentsArea > div.alert.alert-primary')->text(); $success = $crawler->filter('#page_admin_shipping_edit > div.c-container > div.c-contentsArea > div.alert.alert-success')->text(); - $this->assertContains('保存しました', $success); - $this->assertContains('出荷に関わる情報が変更されました。送料の変更が必要な場合は、受注管理より手動で変更してください。', $info); + $this->assertStringContainsString('保存しました', $success); + $this->assertStringContainsString('出荷に関わる情報が変更されました。送料の変更が必要な場合は、受注管理より手動で変更してください。', $info); } public function testEditAddTrackingNumber() @@ -92,7 +97,7 @@ public function testEditAddTrackingNumber() $crawler = $this->client->followRedirect(); $success = $crawler->filter('#page_admin_shipping_edit > div.c-container > div.c-contentsArea > div.alert.alert-success')->text(); - $this->assertContains('保存しました', $success); + $this->assertStringContainsString('保存しました', $success); $expectedShipping = $this->entityManager->find(Shipping::class, $shippingId); $this->assertEquals($trackingNumber, $expectedShipping->getTrackingNumber()); @@ -128,9 +133,9 @@ public function testAddAndDeleteShipping() // 出荷登録フォームが2個に増えていることを確認 $card1 = $crawler->filter('#form1 > div.c-contentsArea__cols > div > div > div:nth-child(1) > div.card-header > div > div.col-8 > div > span')->text(); - $this->assertContains('出荷情報(1)', $card1); + $this->assertStringContainsString('出荷情報(1)', $card1); $card2 = $crawler->filter('#form1 > div.c-contentsArea__cols > div > div > div:nth-child(2) > div.card-header > div > div.col-8 > div > span')->text(); - $this->assertContains('出荷情報(2)', $card2); + $this->assertStringContainsString('出荷情報(2)', $card2); // 2個の出荷登録フォームを作成 $shippingFormData = $this->createShippingFormDataForEdit($Shipping); @@ -180,8 +185,6 @@ public function testAddAndDeleteShipping() */ public function testSendNotifyMail() { - $this->client->enableProfiler(); - $Order = $this->createOrder($this->createCustomer()); /** @var Shipping $Shipping */ $Shipping = $Order->getShippings()->first(); @@ -198,19 +201,18 @@ public function testSendNotifyMail() $this->assertTrue($this->client->getResponse()->isSuccessful()); - $Messages = $this->getMailCollector(false)->getMessages(); - self::assertEquals(1, count($Messages)); + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); - /** @var \Swift_Message $Message */ - $Message = $Messages[0]; + $this->assertEmailTextBodyContains($Message, 'お客さまがご注文された以下の商品を発送いたしました'); + $this->assertEmailHtmlBodyContains($Message, 'お客さまがご注文された以下の商品を発送いたしました'); - self::assertRegExp('/\[.*?\] 商品出荷のお知らせ/', $Message->getSubject()); - self::assertEquals([$Order->getEmail() => null], $Message->getTo()); + self::assertEquals($Order->getEmail(), $Message->getTo()[0]->getAddress()); } public function testSendNotifyMailWithSanitize() { - $this->client->enableProfiler(); $Customer = $this->createCustomer(); $Customer->setName01(''); @@ -230,29 +232,21 @@ public function testSendNotifyMailWithSanitize() $this->assertTrue($this->client->getResponse()->isSuccessful()); - $Messages = $this->getMailCollector(false)->getMessages(); - self::assertEquals(1, count($Messages)); + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); - /** @var \Swift_Message $Message */ - $Message = $Messages[0]; + $this->assertEmailTextBodyContains($Message, 'お客さまがご注文された以下の商品を発送いたしました'); + $this->assertEmailHtmlBodyContains($Message, 'お客さまがご注文された以下の商品を発送いたしました'); - self::assertRegExp('/\[.*?\] 商品出荷のお知らせ/', $Message->getSubject()); - self::assertEquals([$Order->getEmail() => null], $Message->getTo()); + self::assertEquals($Order->getEmail(), $Message->getTo()[0]->getAddress()); - $this->assertContains('<Sanitize&>', $Message->getBody(), 'テキストメールがサニタイズされている'); - - $MultiPart = $Message->getChildren(); - foreach ($MultiPart as $Part) { - if ($Part->getContentType() == 'text/html') { - $this->assertContains('<Sanitize&>', $Part->getBody(), 'HTMLメールがサニタイズされている'); - } - } + $this->assertEmailTextBodyContains($Message, '<Sanitize&>', 'テキストメールがサニタイズされている'); + $this->assertEmailHtmlBodyContains($Message, '<Sanitize&>', 'HTMLメールがサニタイズされている'); } public function testNotSendNotifyMail() { - $this->client->enableProfiler(); - $Order = $this->createOrder($this->createCustomer()); /** @var Shipping $Shipping */ $Shipping = $Order->getShippings()->first(); @@ -264,8 +258,7 @@ public function testNotSendNotifyMail() $this->assertTrue($this->client->getResponse()->isSuccessful()); - $Messages = $this->getMailCollector(false)->getMessages(); - self::assertEquals(1, count($Messages)); + $this->assertEmailCount(1); } /** diff --git a/tests/Eccube/Tests/Web/Admin/Product/AbstractProductCommonTestCase.php b/tests/Eccube/Tests/Web/Admin/Product/AbstractProductCommonTestCase.php index 148189410bb..53fb24db410 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/AbstractProductCommonTestCase.php +++ b/tests/Eccube/Tests/Web/Admin/Product/AbstractProductCommonTestCase.php @@ -53,7 +53,7 @@ abstract class AbstractProductCommonTestCase extends AbstractAdminWebTestCase /** * Set up function */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->faker = $this->getFaker(); diff --git a/tests/Eccube/Tests/Web/Admin/Product/CategoryControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/CategoryControllerTest.php index 238e5b7c55f..920f9c98f43 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/CategoryControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/CategoryControllerTest.php @@ -24,7 +24,7 @@ class CategoryControllerTest extends AbstractAdminWebTestCase */ protected $categoryRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Web/Admin/Product/ClassCategoryControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/ClassCategoryControllerTest.php index 4aaad4e08f1..ad9dd6bfd94 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/ClassCategoryControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/ClassCategoryControllerTest.php @@ -31,7 +31,7 @@ class ClassCategoryControllerTest extends AbstractAdminWebTestCase */ protected $classCategoryRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -129,7 +129,7 @@ public function testRoutingAdminProductClassCategoryEditInline() $crawler = $this->client->followRedirect(); $this->assertTrue($this->client->getResponse()->isSuccessful()); - $this->assertContains($editName, $crawler->filter('ul.sortable-container li:nth-child(3)')->text()); + $this->assertStringContainsString($editName, $crawler->filter('ul.sortable-container li:nth-child(3)')->text()); } public function testRoutingAdminProductClassCategoryDelete() @@ -234,13 +234,13 @@ public function testClassCategorySortByRank() //チョコ, 抹茶, バニラ sort by rank setup above. $this->expected = '抹茶'; $this->actual = $crawler->filter('ul.sortable-container > li:nth-child(3)')->text(); - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); $this->expected = 'バニラ'; $this->actual = $crawler->filter('ul.sortable-container > li:nth-child(4)')->text(); - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); $this->expected = 'チョコ'; $this->actual = $crawler->filter('ul.sortable-container > li:nth-child(5)')->text(); - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); } private function newTestClassName($TestCreator) diff --git a/tests/Eccube/Tests/Web/Admin/Product/ClassNameControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/ClassNameControllerTest.php index 708f7dea122..9198c6bbcd2 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/ClassNameControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/ClassNameControllerTest.php @@ -43,7 +43,7 @@ class ClassNameControllerTest extends AbstractAdminWebTestCase */ private $classNameRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->productClassRepo = $this->entityManager->getRepository(\Eccube\Entity\ProductClass::class); diff --git a/tests/Eccube/Tests/Web/Admin/Product/CsvImportControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/CsvImportControllerTest.php index e90622f3494..b3bf66270a3 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/CsvImportControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/CsvImportControllerTest.php @@ -39,7 +39,7 @@ class CsvImportControllerTest extends AbstractAdminWebTestCase private $categoriesIdList = []; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->productRepo = $this->entityManager->getRepository(\Eccube\Entity\Product::class); @@ -52,7 +52,7 @@ public function setUp() $fs->remove($this->getCsvTempFiles()); } - public function tearDown() + protected function tearDown(): void { if (file_exists($this->filepath)) { unlink($this->filepath); @@ -192,7 +192,7 @@ public function testCsvProduct() } } - $this->assertRegexp('/CSVファイルをアップロードしました/u', + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); // 規格1のみ商品の確認 @@ -200,8 +200,8 @@ public function testCsvProduct() $pdo = $this->entityManager->getConnection()->getWrappedConnection(); $sql = "SELECT * FROM dtb_product_class WHERE product_code = 'class1-only' ORDER BY visible ASC"; $stmt = $pdo->prepare($sql); - $stmt->execute(); - $result = $stmt->fetchAll(); + $resultSet = $stmt->execute(); + $result = $resultSet->fetchAllAssociative(); $this->expected = 2; $this->actual = count($result); @@ -274,7 +274,7 @@ public function testCsvImportWithExistsProducts() $this->actual = $newCount; $this->verify('fork-0[0-9]-new に商品コードを変更したのは '.$this->expected.'商品規格'); - $this->assertRegexp('/CSVファイルをアップロードしました/u', + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); } @@ -298,7 +298,7 @@ public function testCsvImportWithExistsProductsAddProductClass() $this->actual = count($Products); $this->verify(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); // 規格1のみ商品の確認 @@ -306,8 +306,8 @@ public function testCsvImportWithExistsProductsAddProductClass() $pdo = $this->entityManager->getConnection()->getWrappedConnection(); $sql = 'SELECT * FROM dtb_product_class WHERE product_id = 2 ORDER BY visible ASC'; $stmt = $pdo->prepare($sql); - $stmt->execute(); - $result = $stmt->fetchAll(); + $resultSet = $stmt->execute(); + $result = $resultSet->fetchAllAssociative(); $this->expected = 2; $this->actual = count($result); @@ -430,7 +430,7 @@ public function testCsvImportWithExistsProductsExceptOptionalColumns() } $this->filepath = $this->createCsvFromArray($csv); $crawler = $this->scenario(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); $afterProduct = $this->productRepo->findOneBy([], ['id' => 'ASC']); $this->assertEquals($beforeProduct->getDescriptionDetail(), $afterProduct->getDescriptionDetail()); @@ -456,7 +456,7 @@ public function testCsvCategory() $this->actual = count($Categories); $this->verify(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); } /** @@ -480,7 +480,7 @@ public function testCsvCategoryWithNew() $this->actual = count($Categories); $this->verify(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); } /** @@ -505,7 +505,7 @@ public function testCsvCategoryWithOnlyCategoryName() $this->actual = count($Categories); $this->verify(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); } /** @@ -531,7 +531,7 @@ public function testCsvCategoryWithCategoryNameIsNull() $this->actual = count($arrCategory); $this->verify(); - $this->assertRegexp('/2行目のカテゴリ名が設定されていません。/u', $crawler->filter('#upload-form > div:nth-child(4)')->text()); + $this->assertMatchesRegularExpression('/2行目のカテゴリ名が設定されていません。/u', $crawler->filter('#upload-form > div:nth-child(4)')->text()); } /** @@ -557,7 +557,7 @@ public function testCsvCategoryWithoutCategoryNameColumn() $this->actual = count($arrCategory); $this->verify(); - $this->assertRegexp('/CSVのフォーマットが一致しません/u', $crawler->filter('#upload-form > div:nth-child(4)')->text()); + $this->assertMatchesRegularExpression('/CSVのフォーマットが一致しません/u', $crawler->filter('#upload-form > div:nth-child(4)')->text()); } /** @@ -584,7 +584,7 @@ public function testCsvCategoryWithColumnSorted() $this->expected = 1; $this->verify(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); } //====================================================================== @@ -656,7 +656,7 @@ public function testImportProductWithColumnIsMissed() $this->verify(); } } - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); } /** @@ -677,7 +677,7 @@ public function testImportProductWithColumnIsRequiredOnly() $Products = $this->productRepo->findAll(); $this->actual = count($Products); $this->verify(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); // 2 case no stock_unlimited $this->expected = count($Products) + 1; @@ -692,7 +692,7 @@ public function testImportProductWithColumnIsRequiredOnly() $this->actual = count($Products); $this->verify(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); } /** @@ -715,7 +715,7 @@ public function testImportProductWithIdIsWrong($id, $expectedMessage) $Products = $this->productRepo->findAll(); $this->actual = count($Products); $this->verify(); - $this->assertRegexp("/$expectedMessage/u", $crawler->filter('form#upload-form')->text()); + $this->assertMatchesRegularExpression("/$expectedMessage/u", $crawler->filter('form#upload-form')->text()); } /** @@ -735,7 +735,7 @@ public function testImportProductWithPublicIdIsIncorrect($status, $expectedMessa $this->filepath = $this->createCsvFromArray($csv); $crawler = $this->scenario(); - $this->assertRegexp("/$expectedMessage/u", $crawler->filter('form#upload-form')->text()); + $this->assertMatchesRegularExpression("/$expectedMessage/u", $crawler->filter('form#upload-form')->text()); } /** @@ -756,7 +756,7 @@ public function testImportDeliveryFee($optionDeliveryFee, $expected) $this->filepath = $this->createCsvFromArray($csv); $crawler = $this->scenario(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); $Product = $this->productRepo->findOneBy(['name' => '送料更新用']); $ProductClass = $Product->getProductClasses()[0]; @@ -814,7 +814,6 @@ protected function scenario($bind = 'admin_product_csv_import', $original_name = $this->filepath, // file path $original_name, // original name 'text/csv', // mimeType - null, // file size null, // error true // test mode ); @@ -828,7 +827,7 @@ protected function scenario($bind = 'admin_product_csv_import', $original_name = 'import_file' => $file, ], ], - ['import_file' => $file], + ['admin_csv_import' => ['import_file' => $file]], $isXmlHttpRequest ? ['HTTP_X_REQUESTED_WITH' => 'XMLHttpRequest'] : [] ); @@ -881,7 +880,7 @@ public function testImportDescriptionetail($length, $selector, $pattern) $this->filepath = $this->createCsvFromArray($csv); $crawler = $this->scenario(); - $this->assertRegexp($pattern, $crawler->filter($selector)->text()); + $this->assertMatchesRegularExpression($pattern, $crawler->filter($selector)->text()); } public function dataDescriptionDetailProvider() @@ -917,7 +916,7 @@ public function testImportTaxRule($optionTaxRule, $preTaxRate, $postTaxRate) $this->filepath = $this->createCsvFromArray($csv); $crawler = $this->scenario(); - $this->assertRegexp('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); + $this->assertMatchesRegularExpression('/CSVファイルをアップロードしました/u', $crawler->filter('div.alert-success')->text()); $Product = $this->productRepo->findOneBy(['name' => '商品別税率テスト用']); /** @var ProductClass $ProductClass */ diff --git a/tests/Eccube/Tests/Web/Admin/Product/ProductClassControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/ProductClassControllerTest.php index 57a63d408a8..898dd732cd3 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/ProductClassControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/ProductClassControllerTest.php @@ -50,7 +50,7 @@ class ProductClassControllerTest extends AbstractProductCommonTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -134,8 +134,8 @@ public function testProductClassNewWhenProductTaxRuleEnableAndEditTaxRuleIsInval $htmlMessage = $crawler->filter('body')->html(); // FIXME 以下のメッセージが翻訳されない // https://github.com/symfony/validator/blob/4.4/Resources/translations/validators.ja.xlf#L366 - // $this->assertContains('0以上でなければなりません。', $htmlMessage); - $this->assertContains('数字と小数点のみ入力できます。', $htmlMessage); + // $this->assertStringContainsString('0以上でなければなりません。', $htmlMessage); + $this->assertStringContainsString('数字と小数点のみ入力できます。', $htmlMessage); } /** @@ -180,7 +180,7 @@ public function testProductClassNewWhenProductTaxRuleEnableAndEditTaxRuleIsEmpty // check submit $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database $taxRule = $this->taxRuleRepository->findBy(['Product' => $product]); @@ -228,7 +228,7 @@ public function testProductClassNewWhenProductTaxRuleEnableAndEditTaxRuleIsZero( // check submit $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database $taxRule = $this->taxRuleRepository->findOneBy(['Product' => $product]); @@ -274,7 +274,7 @@ public function testProductClassNewWhenProductTaxRuleEnableAndEditTaxRuleIsNotEm // check submit $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database /* @var TaxRule $taxRule */ @@ -316,8 +316,8 @@ public function testProductClassEditWhenProductTaxRuleEnableAndEditTaxRuleInvali $htmlMessage = $crawler->filter('body')->html(); // FIXME 以下のメッセージが翻訳されない // https://github.com/symfony/validator/blob/4.4/Resources/translations/validators.ja.xlf#L366 - // $this->assertContains('0以上でなければなりません。', $htmlMessage); - $this->assertContains('数字と小数点のみ入力できます。', $htmlMessage); + // $this->assertStringContainsString('0以上でなければなりません。', $htmlMessage); + $this->assertStringContainsString('数字と小数点のみ入力できます。', $htmlMessage); } /** @@ -352,7 +352,7 @@ public function testProductClassEditWhenProductTaxRuleEnableAndEditTaxRuleIsZero // check submit $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body .c-contentsArea')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database $product = $this->productRepository->find($id); @@ -392,7 +392,7 @@ public function testProductClassEditWhenProductTaxRuleEnableAndEditTaxRuleIsEmpt // check submit $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body .c-contentsArea')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database $product = $this->productRepository->find($id); @@ -431,7 +431,7 @@ public function testProductClassEditWhenProductTaxRuleEnableAndEditTaxRuleIsNotE // check submit $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body .c-contentsArea')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database $product = $this->productRepository->find($id); @@ -489,7 +489,7 @@ public function testProductClassEditWhenProductTaxRuleEnableAndAddNewClass() // check submit $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body .c-contentsArea')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database /* @var TaxRule $taxRule */ @@ -526,7 +526,7 @@ public function testProductClassEditWhenProductTaxRuleEnableAndRemoveClass() $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body .c-contentsArea')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database $product = $this->productRepository->find($id); /* @var TaxRule $taxRule */ @@ -589,7 +589,7 @@ public function testProductClassEditWhenProductTaxRuleEnableAndCurrentRoundingTy $crawler = $this->client->followRedirect(); $htmlMessage = $crawler->filter('body .c-contentsArea')->html(); - $this->assertContains('保存しました', $htmlMessage); + $this->assertStringContainsString('保存しました', $htmlMessage); // check database $product = $this->productRepository->find($id); /* @var ProductTaxRule $taxRule */ @@ -645,12 +645,12 @@ public function testProductClassSortByRank() //チョコ, 抹茶, バニラ sort by rank setup above. $this->expected = 'チョコ'; $this->actual = $classCategories[1]; - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); $this->expected = '抹茶'; $this->actual = $classCategories[4]; - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); $this->expected = 'バニラ'; $this->actual = $classCategories[7]; - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); } } diff --git a/tests/Eccube/Tests/Web/Admin/Product/ProductControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/ProductControllerTest.php index edd7ac26038..40aa73e0a23 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/ProductControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/ProductControllerTest.php @@ -69,7 +69,7 @@ class ProductControllerTest extends AbstractAdminWebTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -92,7 +92,7 @@ public function setUp() /** * {@inheritdoc} */ - public function tearDown() + protected function tearDown(): void { $fs = new Filesystem(); $fs->remove($this->imageDir); @@ -128,16 +128,16 @@ public function createFormData() 'product_image' => [], 'description_detail' => $faker->realText, 'description_list' => $faker->paragraph, - 'Category' => null, + 'Category' => [], 'Tag' => [1], 'search_word' => $faker->word, 'free_area' => $faker->realText, 'Status' => 1, 'note' => $faker->realText, - 'tags' => null, - 'images' => null, - 'add_images' => null, - 'delete_images' => null, + 'tags' => [], + 'images' => [], + 'add_images' => [], + 'delete_images' => [], Constant::TOKEN_NAME => 'dummy', ]; @@ -427,7 +427,7 @@ public function testDisplayProductHasClass() $expected = '規格1'; $actual = $crawler->filter('#standardConfig > div > table')->text(); - $this->assertContains($expected, $actual); + $this->assertStringContainsString($expected, $actual); $this->expected = $productClassNum; $this->actual = $crawler->filter('#standardConfig > div > table > tbody > tr')->count(); @@ -909,7 +909,7 @@ public function testAddImage() $this->imageDir.'/sand-1.png', 'sand-1.png', 'image/png', - null, null, true + null, true ); $this->client->request('POST', $this->generateUrl('admin_product_image_add'), @@ -937,7 +937,7 @@ public function testAddImageWithUppercaseSuffix() $this->imageDir.'/sand-1.PNG', 'sand-1.PNG', 'image/png', - null, null, true + null, true ); $this->client->request('POST', @@ -980,7 +980,7 @@ public function testAddImageMineNotSupported() $this->imageDir.'/categories.png', 'categories.png', 'image/png', - null, null, true + null, true ); $crawler = $this->client->request('POST', diff --git a/tests/Eccube/Tests/Web/Admin/Product/TagControllerTest.php b/tests/Eccube/Tests/Web/Admin/Product/TagControllerTest.php index f4e5c8ab267..29151dfdb40 100644 --- a/tests/Eccube/Tests/Web/Admin/Product/TagControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Product/TagControllerTest.php @@ -25,7 +25,7 @@ class TagControllerTest extends AbstractAdminWebTestCase */ private $TagRepo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->TagRepo = $this->entityManager->getRepository(\Eccube\Entity\Tag::class); @@ -119,7 +119,7 @@ public function testEditInvalid() ] ); $this->assertTrue($this->client->getResponse()->isSuccessful()); - $this->assertContains('入力されていません', $crawler->html()); + $this->assertStringContainsString('入力されていません', $crawler->html()); } public function testDeleteSuccess() diff --git a/tests/Eccube/Tests/Web/Admin/Setting/Shop/CalendarControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/Shop/CalendarControllerTest.php index fc0c5d6b893..cfb0def18c8 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/Shop/CalendarControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/Shop/CalendarControllerTest.php @@ -28,7 +28,7 @@ class CalendarControllerTest extends AbstractAdminWebTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Web/Admin/Setting/Shop/DeliveryControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/Shop/DeliveryControllerTest.php index ca6e87382e6..97194f70f82 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/Shop/DeliveryControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/Shop/DeliveryControllerTest.php @@ -36,6 +36,7 @@ public function createDelivery() $Delivery = new Delivery(); $Delivery->setConfirmUrl($faker->url); $Delivery->setVisible(true); + $Delivery->setSortNo(1); $this->entityManager->persist($Delivery); $this->entityManager->flush(); diff --git a/tests/Eccube/Tests/Web/Admin/Setting/Shop/MailControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/Shop/MailControllerTest.php index 7e9dbc55ddb..10cb001ccac 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/Shop/MailControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/Shop/MailControllerTest.php @@ -21,7 +21,7 @@ */ class MailControllerTest extends AbstractAdminWebTestCase { - public function tearDown() + protected function tearDown(): void { $themeDir = self::$container->getParameter('eccube_theme_front_dir'); if (file_exists($themeDir.'/Mail/order.twig')) { diff --git a/tests/Eccube/Tests/Web/Admin/Setting/Shop/OrderStatusControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/Shop/OrderStatusControllerTest.php index da5c8d8852e..9b1d560e4f1 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/Shop/OrderStatusControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/Shop/OrderStatusControllerTest.php @@ -38,7 +38,7 @@ class OrderStatusControllerTest extends AbstractAdminWebTestCase */ private $customerOrderStatusRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->orderStatusRepository = $this->entityManager->getRepository(OrderStatus::class); @@ -92,7 +92,7 @@ public function testSubmitWithError() ); $this->assertFalse($this->client->getResponse()->isRedirection()); - $this->assertContains('入力されていません。', $crawler->text()); + $this->assertStringContainsString('入力されていません。', $crawler->text()); } private function createFormData() diff --git a/tests/Eccube/Tests/Web/Admin/Setting/Shop/PaymentControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/Shop/PaymentControllerTest.php index c39b13f804b..625b19befcb 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/Shop/PaymentControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/Shop/PaymentControllerTest.php @@ -34,7 +34,7 @@ class PaymentControllerTest extends AbstractAdminWebTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -47,7 +47,7 @@ public function setUp() /** * {@inheritdoc} */ - public function tearDown() + protected function tearDown(): void { $fs = new Filesystem(); $fs->remove($this->imageDir); @@ -169,7 +169,7 @@ public function testAddImage() $this->imageDir.'/sand-1.png', 'sand-1.png', 'image/png', - null, null, true + null, true ); $this->client->request('POST', $this->generateUrl('admin_payment_image_add'), @@ -197,7 +197,7 @@ public function testAddImageWithUppercaseSuffix() $this->imageDir.'/sand-1.PNG', 'sand-1.PNG', 'image/png', - null, null, true + null, true ); $this->client->request('POST', @@ -240,7 +240,7 @@ public function testAddImageMineNotSupported() $this->imageDir.'/categories.png', 'categories.png', 'image/png', - null, null, true + null, true ); $crawler = $this->client->request('POST', diff --git a/tests/Eccube/Tests/Web/Admin/Setting/System/AuthorityControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/System/AuthorityControllerTest.php index 8ee0108b5f5..6d8a4fec2e4 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/System/AuthorityControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/System/AuthorityControllerTest.php @@ -38,7 +38,7 @@ class AuthorityControllerTest extends AbstractAdminWebTestCase */ protected $authorityRoleRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Web/Admin/Setting/System/LogControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/System/LogControllerTest.php index 2ebf071395e..3d9088e5883 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/System/LogControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/System/LogControllerTest.php @@ -28,7 +28,7 @@ class LogControllerTest extends AbstractAdminWebTestCase /** form Data */ protected $formData; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -50,7 +50,7 @@ public function setUp() /** * rollback */ - public function tearDown() + protected function tearDown(): void { parent::tearDown(); if (file_exists($this->logTest)) { @@ -109,7 +109,7 @@ public function testSystemLogValidate($value, $expected, $message) $this->expected = $expected; $this->verify(); if ($message) { - $this->assertContains($message, $crawler->filter('.card-body')->html()); + $this->assertStringContainsString($message, $crawler->filter('.card-body')->html()); } } diff --git a/tests/Eccube/Tests/Web/Admin/Setting/System/LoginHistoryControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/System/LoginHistoryControllerTest.php index 9fd8b980eff..3557dc841b2 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/System/LoginHistoryControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/System/LoginHistoryControllerTest.php @@ -21,7 +21,7 @@ class LoginHistoryControllerTest extends AbstractAdminWebTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -38,13 +38,6 @@ public function setUp() } } - /** - * {@inheritdoc} - */ - public function tearDown() - { - } - public function testIndex() { $crawler = $this->client->request('GET', $this->generateUrl('admin_setting_system_login_history')); diff --git a/tests/Eccube/Tests/Web/Admin/Setting/System/MasterdataControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/System/MasterdataControllerTest.php index 34801f08e72..c6f7be7b122 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/System/MasterdataControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/System/MasterdataControllerTest.php @@ -27,7 +27,7 @@ class MasterdataControllerTest extends AbstractAdminWebTestCase */ private $session; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -71,7 +71,7 @@ public function testSelect() $entityName = str_replace('-', '\\', $formData['masterdata']); $this->actual = $crawler->filter('.table.table-sm')->html(); $this->expected = $this->entityManager->getRepository($entityName)->find(1)->getName(); - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); } /** @@ -108,7 +108,7 @@ public function testEditNameIsBlank() ] ); $html = $crawler->html(); - $this->assertContains('入力されていません。', $html); + $this->assertStringContainsString('入力されていません。', $html); // Cannot save $entityName = str_replace('-', '\\', $formData['masterdata']); @@ -138,7 +138,7 @@ public function testNewNameIsBlank() ] ); $html = $crawler->html(); - $this->assertContains('入力されていません。', $html); + $this->assertStringContainsString('入力されていません。', $html); // Cannot save $entityName = str_replace('-', '\\', $formData['masterdata']); diff --git a/tests/Eccube/Tests/Web/Admin/Setting/System/MemberControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/System/MemberControllerTest.php index 01e4db575dd..a2f34fa6eed 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/System/MemberControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/System/MemberControllerTest.php @@ -26,7 +26,7 @@ class MemberControllerTest extends AbstractAdminWebTestCase /** * @{@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Web/Admin/Setting/System/SecurityControllerTest.php b/tests/Eccube/Tests/Web/Admin/Setting/System/SecurityControllerTest.php index 29b8459824d..5a8086446ac 100644 --- a/tests/Eccube/Tests/Web/Admin/Setting/System/SecurityControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Setting/System/SecurityControllerTest.php @@ -24,7 +24,7 @@ class SecurityControllerTest extends AbstractAdminWebTestCase protected $env; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -34,7 +34,7 @@ public function setUp() } } - public function tearDown() + protected function tearDown(): void { if ($this->env) { file_put_contents($this->envFile, $this->env); @@ -77,7 +77,7 @@ public function testSubmit() $this->expected = 'admin.setting.system.security.admin_url_changed'; $this->verify(); - self::assertRegexp('/ECCUBE_ADMIN_ROUTE='.$formData['admin_route_dir'].'/', file_get_contents($this->envFile)); + self::assertMatchesRegularExpression('/ECCUBE_ADMIN_ROUTE='.$formData['admin_route_dir'].'/', file_get_contents($this->envFile)); } /** diff --git a/tests/Eccube/Tests/Web/Admin/Store/TemplateControllerTest.php b/tests/Eccube/Tests/Web/Admin/Store/TemplateControllerTest.php index 9f3b4556623..02142e194bd 100644 --- a/tests/Eccube/Tests/Web/Admin/Store/TemplateControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Store/TemplateControllerTest.php @@ -58,7 +58,7 @@ class TemplateControllerTest extends AbstractAdminWebTestCase */ protected $env; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -86,7 +86,7 @@ public function setUp() } } - public function tearDown() + protected function tearDown(): void { $fs = new Filesystem(); $fs->remove($this->dir); @@ -135,7 +135,7 @@ public function testChangeTemplate() $this->assertTrue($this->client->getResponse()->isRedirection()); // .envが更新されている - self::assertRegexp('/ECCUBE_TEMPLATE_CODE='.$Template->getCode().'/', file_get_contents($this->envFile)); + self::assertMatchesRegularExpression('/ECCUBE_TEMPLATE_CODE='.$Template->getCode().'/', file_get_contents($this->envFile)); } /** diff --git a/tests/Eccube/Tests/Web/AuthenticationHandlerTest.php b/tests/Eccube/Tests/Web/AuthenticationHandlerTest.php index 15cc8e8e921..18fd2ac0927 100644 --- a/tests/Eccube/Tests/Web/AuthenticationHandlerTest.php +++ b/tests/Eccube/Tests/Web/AuthenticationHandlerTest.php @@ -21,7 +21,7 @@ final class AuthenticationHandlerTest extends AbstractWebTestCase /** @var Entity\Customer */ private $Customer; - public function setUp() + protected function setUp(): void { parent::setUp(); diff --git a/tests/Eccube/Tests/Web/CartValidationTest.php b/tests/Eccube/Tests/Web/CartValidationTest.php index 9e7cfbb02a8..c5545628a5d 100644 --- a/tests/Eccube/Tests/Web/CartValidationTest.php +++ b/tests/Eccube/Tests/Web/CartValidationTest.php @@ -38,7 +38,7 @@ class CartValidationTest extends AbstractWebTestCase /** * setup mail */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->productStatusRepository = $this->entityManager->getRepository(\Eccube\Entity\Master\ProductStatus::class); @@ -49,7 +49,7 @@ public function setUp() /** * tear down */ - public function tearDown() + protected function tearDown(): void { parent::tearDown(); } @@ -105,9 +105,9 @@ public function testValidationStock() $message = $crawler->filter('.ec-cartRole__error')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('一度に在庫数を超える購入はできません。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません。', $message); } /** @@ -234,7 +234,7 @@ public function testProductInCartIsStockOut() $html = $crawler->html(); $this->assertTrue($this->client->getResponse()->isSuccessful()); - $this->assertContains('ただいま品切れ中です', $html); + $this->assertStringContainsString('ただいま品切れ中です', $html); } /** @@ -291,8 +291,8 @@ public function testProductInCartIsStockOutWithProductClass() $this->assertTrue($this->client->getResponse()->isSuccessful()); $message = $crawler->filter('.ec-cartRole')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -345,9 +345,9 @@ public function testProductInCartIsNotEnough() $message = $crawler->filter('.ec-alert-warning')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('一度に在庫数を超える購入はできません。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません。', $message); self::assertEquals($stock, $crawler->filter('.ec-cartRow__amount')->text(), '在庫数分だけカートに入っているはず'); } @@ -429,10 +429,10 @@ public function testProductInCartIsNotEnoughAndLimit() $crawler = $client->followRedirect(); $message = $crawler->filter('.ec-alert-warning__text')->text(); - // FIXME $this->assertContains('商品を購入できる金額の上限を超えております。数量を調整してください。', $message); - $this->assertContains('一度に在庫数を超える購入はできません', $message); + // FIXME $this->assertStringContainsString('商品を購入できる金額の上限を超えております。数量を調整してください。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません', $message); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); } /** @@ -507,7 +507,7 @@ public function testProductInCartSaleType() $crawler = $client->followRedirect(); $message = $crawler->filter('.ec-alert-warning')->text(); - $this->assertContains('この商品は同時に購入することはできません。', $message); + $this->assertStringContainsString('この商品は同時に購入することはできません。', $message); } /** @@ -646,8 +646,8 @@ public function testProductInCartStockLimit() $crawler = $client->followRedirect(); $message = $crawler->filter('.ec-alert-warning')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); - $this->assertContains('一度に販売制限数を超える購入はできません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); + $this->assertStringContainsString('一度に販売制限数を超える購入はできません。', $message); self::assertEquals($limit, $crawler->filter('.ec-cartRow__amount')->text()); } @@ -678,7 +678,7 @@ public function testProductInCartIsAbolishedFromShopping() $message = $crawler->filter('.ec-layoutRole__main')->text(); - $this->assertContains('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); + $this->assertStringContainsString('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); } /** @@ -705,7 +705,7 @@ public function testProductInCartIsPrivateFromShopping() $message = $crawler->filter('.ec-layoutRole__main')->text(); - $this->assertContains('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); + $this->assertStringContainsString('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); } /** @@ -735,7 +735,7 @@ public function testProductInCartOutOfStockFromShopping() // check message error $message = $crawler->filter('.ec-layoutRole__main')->text(); - $this->assertContains('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); + $this->assertStringContainsString('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); } /** @@ -774,8 +774,8 @@ public function testProductInCartStockNotEnoughFromShopping() // cart or shopping??? $message = $crawler->filter('.ec-layoutRole__main')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('一度に在庫数を超える購入はできません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません。', $message); } /** @@ -814,11 +814,11 @@ public function atestProductInCartStockLimitFromShopping() // cart or shopping??? $message = $crawler->filter('.ec-layoutRole__main')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); - $this->assertContains('一度に販売制限数を超える購入はできません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); + $this->assertStringContainsString('一度に販売制限数を超える購入はできません。', $message); // check cart - $this->assertContains((string) $limit, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString((string) $limit, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -862,11 +862,11 @@ public function atestProductInCartSaleTypeFromShopping() // THEN // check page title $message = $crawler->filter('h1.page-heading')->text(); - $this->assertContains('ショッピングカート', $message); + $this->assertStringContainsString('ショッピングカート', $message); // check message error $message = $crawler->filter('#cart_box__message--1')->text(); - $this->assertContains('配送の準備ができていない商品が含まれております。', $message); - $this->assertContains('恐れ入りますがお問い合わせページよりお問い合わせください。', $message); + $this->assertStringContainsString('配送の準備ができていない商品が含まれております。', $message); + $this->assertStringContainsString('恐れ入りますがお問い合わせページよりお問い合わせください。', $message); $this->assertEmpty($crawler->filter('#cart_box__message--2')); } @@ -901,8 +901,8 @@ public function testProductInCartIsDeletedBeforePlus() // THEN // check message error $message = $crawler->filter('.ec-layoutRole__main')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -939,8 +939,8 @@ public function testProductInCartIsPrivateBeforePlus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -978,9 +978,9 @@ public function testProductInCartProductOutOfStockBeforePlus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1018,9 +1018,9 @@ public function testProductInCartProductStockIsNotEnoughBeforePlus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('一度に在庫数を超える購入はできません。', $message); - $this->assertContains((string) $stock, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません。', $message); + $this->assertStringContainsString((string) $stock, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -1060,9 +1060,9 @@ public function testProductInCartSaleLimitIsNotEnoughBeforePlus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); - $this->assertContains('一度に販売制限数を超える購入はできません。', $message); - $this->assertContains((string) $saleLimit, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); + $this->assertStringContainsString('一度に販売制限数を超える購入はできません。', $message); + $this->assertStringContainsString((string) $saleLimit, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -1115,7 +1115,7 @@ public function testProductInCartChangeSaleTypeBeforePlus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('この商品は同時に購入することはできません。', $message); + $this->assertStringContainsString('この商品は同時に購入することはできません。', $message); } /** @@ -1204,8 +1204,8 @@ public function testProductInCartIsDeletedBeforeMinus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1239,8 +1239,8 @@ public function testProductInCartIsPrivateBeforeMinus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1275,9 +1275,9 @@ public function testProductInCartProductOutOfStockBeforeMinus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1312,9 +1312,9 @@ public function testProductInCartProductStockIsNotEnoughBeforeMinus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('一度に在庫数を超える購入はできません。', $message); - $this->assertContains((string) $stock, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません。', $message); + $this->assertStringContainsString((string) $stock, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -1353,9 +1353,9 @@ public function testProductInCartSaleLimitIsNotEnoughBeforeMinus() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); - $this->assertContains('一度に販売制限数を超える購入はできません。', $message); - $this->assertContains((string) $saleLimit, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); + $this->assertStringContainsString('一度に販売制限数を超える購入はできません。', $message); + $this->assertStringContainsString((string) $saleLimit, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -1408,7 +1408,7 @@ public function testProductInCartChangeSaleTypeBeforeMinus() // THEN // check message error $message = $crawler->filter('#cart_box__body')->text(); - $this->assertContains('この商品は同時に購入することはできません。', $message); + $this->assertStringContainsString('この商品は同時に購入することはできません。', $message); } /** @@ -1498,8 +1498,8 @@ public function testProductInCartIsDeletedWhileReturnTopPage() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1531,8 +1531,8 @@ public function testProductInCartIsPrivateWhileReturnTopPage() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1565,8 +1565,8 @@ public function testProductInCartProductOutOfStockWhileReturnTopPage() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('該当商品をカートから削除しました。', $message); } /** @@ -1599,9 +1599,9 @@ public function testProductInCartProductStockIsNotEnoughWhileReturnTopPage() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('一度に在庫数を超える購入はできません。', $message); - $this->assertContains((string) $stock, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません。', $message); + $this->assertStringContainsString((string) $stock, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -1640,9 +1640,9 @@ public function testProductInCartSaleLimitIsNotEnoughWhileReturnTopPage() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); - $this->assertContains('一度に販売制限数を超える購入はできません。', $message); - $this->assertContains((string) $saleLimit, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); + $this->assertStringContainsString('一度に販売制限数を超える購入はできません。', $message); + $this->assertStringContainsString((string) $saleLimit, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -1678,8 +1678,8 @@ public function testProductInCartDeletedFromShoppingBackToCart() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1716,8 +1716,8 @@ public function testProductInCartIsPrivateFromShoppingBackToCart() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1755,9 +1755,9 @@ public function testProductInCartOutOfStockFromShoppingBackToCart() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('該当商品をカートから削除しました。', $message); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); } /** @@ -1795,9 +1795,9 @@ public function testProductInCartStockNotEnoughFromShoppingBackToCart() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('一度に在庫数を超える購入はできません。', $message); - $this->assertContains((string) $stock, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません。', $message); + $this->assertStringContainsString((string) $stock, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -1838,9 +1838,9 @@ public function testProductInCartStockLimitFromShoppingBackToCart() // THEN // check message error $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); - $this->assertContains('一度に販売制限数を超える購入はできません。', $message); - $this->assertContains((string) $saleLimit, $crawler->filter('.ec-cartRow__amount')->text()); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); + $this->assertStringContainsString('一度に販売制限数を超える購入はできません。', $message); + $this->assertStringContainsString((string) $saleLimit, $crawler->filter('.ec-cartRow__amount')->text()); } /** @@ -1885,7 +1885,7 @@ public function testProductInCartDeletedFromShoppingChangePayment() // check message error $crawler = $this->client->followRedirect(); $message = $crawler->filter('body')->text(); - $this->assertContains('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); + $this->assertStringContainsString('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); } /** @@ -1932,7 +1932,7 @@ public function testProductInCartIsPrivateFromShoppingChangePayment() // check message error $crawler = $this->client->followRedirect(); $message = $crawler->filter('body')->text(); - $this->assertContains('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); + $this->assertStringContainsString('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); } /** @@ -1980,7 +1980,7 @@ public function testProductInCartOutOfStockFromShoppingChangePayment() // check message error $crawler = $this->client->followRedirect(); $message = $crawler->filter('body')->text(); - $this->assertContains('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); + $this->assertStringContainsString('ご注文手続きが正常に完了しませんでした。大変お手数ですが、再度ご注文手続きをお願いします。', $message); } /** @@ -2028,7 +2028,7 @@ public function testProductInCartStockNotEnoughFromShoppingChangePayment() // check message error $crawler = $this->client->followRedirect(); $message = $crawler->filter('.ec-layoutRole__main')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); } /** @@ -2079,8 +2079,8 @@ public function testProductInCartStockLimitFromShoppingChangePayment() // check message error $crawler = $this->client->followRedirect(); $message = $crawler->filter('body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); - $this->assertContains('一度に販売制限数を超える購入はできません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); + $this->assertStringContainsString('一度に販売制限数を超える購入はできません。', $message); } /** @@ -2120,7 +2120,7 @@ public function testProductInHistoryOrderDeletedFromOrderAgain() $product = $crawler->filter('#detail_list_box__list')->text(); // check order product name - $this->assertContains($productName, $product); + $this->assertStringContainsString($productName, $product); // Remove product (delete flg) $Product->setDelFlg(Constant::ENABLED); @@ -2137,10 +2137,10 @@ public function testProductInHistoryOrderDeletedFromOrderAgain() // THEN // check message error $message = $crawler->filter('#cart_box__message--1')->text(); - $this->assertContains('現時点で販売していない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現時点で販売していない商品が含まれておりました。該当商品をカートから削除しました。', $message); $this->assertEmpty($crawler->filter('#cart_box__message--2')); $message = $crawler->filter('#cart_box__message')->text(); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); // check cart $arrCartItem = $this->app['eccube.service.cart']->getCart()->getCartItems(); @@ -2192,7 +2192,7 @@ public function testProductInHistoryOrderIsPrivateFromOrderAgain() $product = $crawler->filter('#detail_list_box__list')->text(); // check order product name - $this->assertContains($productName, $product); + $this->assertStringContainsString($productName, $product); // change status $this->changeStatus($Product, ProductStatus::DISPLAY_HIDE); @@ -2205,10 +2205,10 @@ public function testProductInHistoryOrderIsPrivateFromOrderAgain() // THEN // check message error $message = $crawler->filter('#cart_box__message--1')->text(); - $this->assertContains('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('現時点で購入できない商品が含まれておりました。該当商品をカートから削除しました。', $message); $this->assertEmpty($crawler->filter('#cart_box__message--2')); $message = $crawler->filter('#cart_box__message')->text(); - $this->assertContains('現在カート内に商品はございません。', $message); + $this->assertStringContainsString('現在カート内に商品はございません。', $message); // check cart $arrCartItem = $this->app['eccube.service.cart']->getCart()->getCartItems(); @@ -2260,7 +2260,7 @@ public function testProductInHistoryOrderOutOfStockFromOrderAgain() $product = $crawler->filter('#detail_list_box__list')->text(); // check order product name - $this->assertContains($productName, $product); + $this->assertStringContainsString($productName, $product); // change stock $stock = 0; @@ -2274,8 +2274,8 @@ public function testProductInHistoryOrderOutOfStockFromOrderAgain() // THEN // check message error $message = $crawler->filter('#cart_box__body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('該当商品をカートから削除しました。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('該当商品をカートから削除しました。', $message); // check cart $arrCartItem = $this->app['eccube.service.cart']->getCart()->getCartItems(); @@ -2327,7 +2327,7 @@ public function testProductInHistoryOrderStockNotEnoughFromOrderAgain() $product = $crawler->filter('#detail_list_box__list')->text(); // check order product name - $this->assertContains($productName, $product); + $this->assertStringContainsString($productName, $product); // change stock $stock = 1; @@ -2341,8 +2341,8 @@ public function testProductInHistoryOrderStockNotEnoughFromOrderAgain() // THEN // check message error $message = $crawler->filter('#cart_box__body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); - $this->assertContains('一度に在庫数を超える購入はできません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」の在庫が不足しております。', $message); + $this->assertStringContainsString('一度に在庫数を超える購入はできません。', $message); // check cart $CartItem = $this->app['eccube.service.cart']->getCart()->getCartItems()->first(); @@ -2394,7 +2394,7 @@ public function testProductInHistoryOrderStockLimitFromOrderAgain() $product = $crawler->filter('#detail_list_box__list')->text(); // check order product name - $this->assertContains($productName, $product); + $this->assertStringContainsString($productName, $product); // sale limit $saleLimit = 1; @@ -2410,8 +2410,8 @@ public function testProductInHistoryOrderStockLimitFromOrderAgain() // THEN // check message error $message = $crawler->filter('#cart_box__body')->text(); - $this->assertContains('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); - $this->assertContains('一度に販売制限数を超える購入はできません。', $message); + $this->assertStringContainsString('「'.$this->getProductName($ProductClass).'」は販売制限しております。', $message); + $this->assertStringContainsString('一度に販売制限数を超える購入はできません。', $message); // check cart $CartItem = $this->app['eccube.service.cart']->getCart()->getCartItems()->first(); @@ -2474,8 +2474,8 @@ public function testProductInHistoryOrderWhenSaleTypeIsChangedFromOrderAgain() $product = $crawler->filter('#detail_list_box__list')->text(); // check order product name - $this->assertContains($productName, $product); - $this->assertContains($productName2, $product); + $this->assertStringContainsString($productName, $product); + $this->assertStringContainsString($productName2, $product); // change type $SaleType = $this->entityManager->find(SaleType::class, 2); @@ -2491,7 +2491,7 @@ public function testProductInHistoryOrderWhenSaleTypeIsChangedFromOrderAgain() // THEN // check message error $message = $crawler->filter('#cart_box__body')->text(); - $this->assertContains('この商品は同時に購入することはできません。', $message); + $this->assertStringContainsString('この商品は同時に購入することはできません。', $message); } /** @@ -2549,8 +2549,8 @@ public function testProductInHistoryOrderWhenSaleTypeIsChangedFromOrderAgainWith $product = $crawler->filter('#detail_list_box__list')->text(); // check order product name - $this->assertContains($productName, $product); - $this->assertContains($productName2, $product); + $this->assertStringContainsString($productName, $product); + $this->assertStringContainsString($productName2, $product); // change type $SaleType = $this->entityManager->find(SaleType::class, 2); diff --git a/tests/Eccube/Tests/Web/ContactControllerTest.php b/tests/Eccube/Tests/Web/ContactControllerTest.php index 6b8f3554ca5..76fcd905ba2 100644 --- a/tests/Eccube/Tests/Web/ContactControllerTest.php +++ b/tests/Eccube/Tests/Web/ContactControllerTest.php @@ -14,9 +14,13 @@ namespace Eccube\Tests\Web; use Eccube\Entity\BaseInfo; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; class ContactControllerTest extends AbstractWebTestCase { + use MailerAssertionsTrait; + protected function createFormData() { $faker = $this->getFaker(); @@ -68,13 +72,11 @@ public function testConfirm() $this->expected = 'お問い合わせ(確認ページ)'; $this->actual = $crawler->filter('title')->text(); - $this->assertRegexp('/'.preg_quote($this->expected).'$/', $this->actual); + $this->assertMatchesRegularExpression('/'.preg_quote($this->expected).'$/', $this->actual); } public function testComplete() { - $this->client->enableProfiler(); - $crawler = $this->client->request( 'POST', $this->generateUrl('contact'), @@ -86,12 +88,9 @@ public function testComplete() $BaseInfo = $this->entityManager->find(BaseInfo::class, 1); - $mailCollector = $this->getMailCollector(false); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] お問い合わせを受け付けました。'; $this->actual = $Message->getSubject(); @@ -100,7 +99,6 @@ public function testComplete() public function testCompleteWithSanitize() { - $this->client->enableProfiler(); $form = $this->createFormData(); $form['name']['name01'] .= ''; $crawler = $this->client->request( @@ -114,25 +112,16 @@ public function testCompleteWithSanitize() $BaseInfo = $this->entityManager->find(BaseInfo::class, 1); - $mailCollector = $this->getMailCollector(false); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] お問い合わせを受け付けました。'; $this->actual = $Message->getSubject(); $this->verify(); - $this->assertContains('<Sanitize&>', $Message->getBody(), 'テキストメールがサニタイズされている'); - - $MultiPart = $Message->getChildren(); - foreach ($MultiPart as $Part) { - if ($Part->getContentType() == 'text/html') { - $this->assertContains('<Sanitize&>', $Part->getBody(), 'HTMLメールがサニタイズされている'); - } - } + $this->assertStringContainsString('<Sanitize&>', $Message->getTextBody(), 'テキストメールがサニタイズされている'); + $this->assertStringContainsString('<Sanitize&>', $Message->getHtmlBody(), 'HTMLメールがサニタイズされている'); } /** @@ -162,12 +151,9 @@ public function testCompleteWithRequired() $BaseInfo = $this->entityManager->find(BaseInfo::class, 1); - $mailCollector = $this->getMailCollector(false); - $this->assertEquals(1, $mailCollector->getMessageCount()); - - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] お問い合わせを受け付けました。'; $this->actual = $Message->getSubject(); @@ -176,9 +162,6 @@ public function testCompleteWithRequired() public function testCompleteWithLogin() { - // require for retrieving mail - $this->client->enableProfiler(); - // Always generate a form before login $formData = $this->createFormData(); $this->logInTo($this->createCustomer()); @@ -193,12 +176,10 @@ public function testCompleteWithLogin() $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('contact_complete'))); $BaseInfo = $this->entityManager->find(BaseInfo::class, 1); - $mailCollector = $this->getMailCollector(false); - $collectedMessages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; - $this->assertEquals(1, $mailCollector->getMessageCount()); + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] お問い合わせを受け付けました。'; $this->actual = $Message->getSubject(); @@ -207,7 +188,6 @@ public function testCompleteWithLogin() public function testRoutingComplete() { - $this->client = $this->createClient(); $this->client->request('GET', $this->generateUrl('contact_complete')); $this->assertTrue($this->client->getResponse()->isSuccessful()); } diff --git a/tests/Eccube/Tests/Web/EntryControllerTest.php b/tests/Eccube/Tests/Web/EntryControllerTest.php index d3fed8295bf..00c218c25cb 100644 --- a/tests/Eccube/Tests/Web/EntryControllerTest.php +++ b/tests/Eccube/Tests/Web/EntryControllerTest.php @@ -15,13 +15,16 @@ use Eccube\Common\Constant; use Eccube\Entity\Master\CustomerStatus; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; class EntryControllerTest extends AbstractWebTestCase { - public function setUp() + use MailerAssertionsTrait; + + protected function setUp(): void { parent::setUp(); - $this->client->enableProfiler(); } protected function createFormData() @@ -52,7 +55,7 @@ protected function createFormData() 'first' => $email, 'second' => $email, ], - 'password' => [ + 'plain_password' => [ 'first' => $password, 'second' => $password, ], @@ -154,9 +157,9 @@ public function testCompleteWithActivate() $this->assertTrue($client->getResponse()->isRedirect($this->generateUrl('entry_complete'))); - $collectedMessages = $this->getMailCollector(false)->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] 会員登録のご確認'; $this->actual = $Message->getSubject(); @@ -182,22 +185,16 @@ public function testCompleteWithActivateWithMultipartSanitize() $this->assertTrue($client->getResponse()->isRedirect($this->generateUrl('entry_complete'))); - $collectedMessages = $this->getMailCollector(false)->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] 会員登録のご確認'; $this->actual = $Message->getSubject(); $this->verify(); - $this->assertContains('<Sanitize&>', $Message->getBody(), 'テキストメールがサニタイズされている'); - - $MultiPart = $Message->getChildren(); - foreach ($MultiPart as $Part) { - if ($Part->getContentType() == 'text/html') { - $this->assertContains('<Sanitize&>', $Part->getBody(), 'HTMLメールがサニタイズされている'); - } - } + $this->assertEmailTextBodyContains($Message, '<Sanitize&>', 'テキストメールがサニタイズされている'); + $this->assertEmailHtmlBodyContains($Message, '<Sanitize&>', 'HTMLメールがサニタイズされている'); } public function testRoutingComplete() @@ -221,9 +218,9 @@ public function testActivate() $client->request('GET', $this->generateUrl('entry_activate', ['secret_key' => $secret_key])); $this->assertTrue($client->getResponse()->isSuccessful()); - $collectedMessages = $this->getMailCollector(false)->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] 会員登録が完了しました。'; $this->actual = $Message->getSubject(); $this->verify(); @@ -243,21 +240,15 @@ public function testActivateWithSanitize() $client->request('GET', $this->generateUrl('entry_activate', ['secret_key' => $secret_key])); $this->assertTrue($client->getResponse()->isSuccessful()); - $collectedMessages = $this->getMailCollector(false)->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $collectedMessages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] 会員登録が完了しました。'; $this->actual = $Message->getSubject(); $this->verify(); - $this->assertContains('<Sanitize&>', $Message->getBody(), 'テキストメールがサニタイズされている'); - - $MultiPart = $Message->getChildren(); - foreach ($MultiPart as $Part) { - if ($Part->getContentType() == 'text/html') { - $this->assertContains('<Sanitize&>', $Part->getBody(), 'HTMLメールがサニタイズされている'); - } - } + $this->assertEmailTextBodyContains($Message, '<Sanitize&>', 'テキストメールがサニタイズされている'); + $this->assertEmailHtmlBodyContains($Message, '<Sanitize&>', 'HTMLメールがサニタイズされている'); } public function testActivateWithNotFound() diff --git a/tests/Eccube/Tests/Web/ForgotControllerTest.php b/tests/Eccube/Tests/Web/ForgotControllerTest.php index 016368ff72a..ce9f24bbe48 100644 --- a/tests/Eccube/Tests/Web/ForgotControllerTest.php +++ b/tests/Eccube/Tests/Web/ForgotControllerTest.php @@ -16,9 +16,13 @@ use Eccube\Common\Constant; use Eccube\Repository\BaseInfoRepository; use Eccube\Repository\CustomerRepository; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; class ForgotControllerTest extends AbstractWebTestCase { + use MailerAssertionsTrait; + /** * @var BaseInfoRepository */ @@ -29,7 +33,7 @@ class ForgotControllerTest extends AbstractWebTestCase */ protected $customerRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->client->enableProfiler(); @@ -67,12 +71,11 @@ public function testIndexWithPostAndVerify() $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('forgot_complete'))); - $mailCollector = $this->getMailCollector(false); - // メール受信確認 - $Messages = $mailCollector->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); + $this->expected = '['.$BaseInfo->getShopName().'] パスワード変更のご確認'; $this->actual = $Message->getSubject(); $this->verify(); diff --git a/tests/Eccube/Tests/Web/Install/InstallControllerTest.php b/tests/Eccube/Tests/Web/Install/InstallControllerTest.php index 0adc80fea53..f3115a9f256 100644 --- a/tests/Eccube/Tests/Web/Install/InstallControllerTest.php +++ b/tests/Eccube/Tests/Web/Install/InstallControllerTest.php @@ -54,7 +54,7 @@ class InstallControllerTest extends AbstractWebTestCase */ protected $session; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -86,7 +86,7 @@ public function setUp() $this->request = $this->createMock(Request::class); } - public function tearDown() + protected function tearDown(): void { if (file_exists($this->envFileBackup)) { rename($this->envFileBackup, $this->envFile); @@ -408,7 +408,7 @@ public function testExtractMailerUrl() public function testDatabaseVersion() { $version = $this->controller->getDatabaseVersion($this->entityManager); - $this->assertRegExp('/\A([\d+\.]+)/', $version); + $this->assertMatchesRegularExpression('/\A([\d+\.]+)/', $version); } public function testCreateAppData() @@ -424,7 +424,7 @@ public function testCreateAppData() $this->assertEquals(Constant::VERSION, $appData['cube_ver']); $this->assertEquals(phpversion(), $appData['php_ver']); $this->assertEquals(php_uname(), $appData['os_type']); - $this->assertRegExp('/(sqlite|mysql|postgresql).[0-9.]+/', $appData['db_ver']); + $this->assertMatchesRegularExpression('/(sqlite|mysql|postgresql).[0-9.]+/', $appData['db_ver']); } public function testConvertAdminAllowHosts() diff --git a/tests/Eccube/Tests/Web/Mypage/ChangeControllerTest.php b/tests/Eccube/Tests/Web/Mypage/ChangeControllerTest.php index 3adac94adc9..e594c439935 100644 --- a/tests/Eccube/Tests/Web/Mypage/ChangeControllerTest.php +++ b/tests/Eccube/Tests/Web/Mypage/ChangeControllerTest.php @@ -23,7 +23,7 @@ class ChangeControllerTest extends AbstractWebTestCase */ protected $Customer; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); @@ -57,7 +57,7 @@ protected function createFormData() 'first' => $email, 'second' => $email, ], - 'password' => [ + 'plain_password' => [ 'first' => $password, 'second' => $password, ], @@ -108,7 +108,7 @@ public function testIndexWithPostDefaultPassword() $this->loginTo($this->Customer); $form = $this->createFormData(); - $form['password'] = [ + $form['plain_password'] = [ 'first' => $this->eccubeConfig['eccube_default_password'], 'second' => $this->eccubeConfig['eccube_default_password'], ]; diff --git a/tests/Eccube/Tests/Web/Mypage/DeliveryControllerTest.php b/tests/Eccube/Tests/Web/Mypage/DeliveryControllerTest.php index bcf3faf7dc4..5eec83d53c9 100644 --- a/tests/Eccube/Tests/Web/Mypage/DeliveryControllerTest.php +++ b/tests/Eccube/Tests/Web/Mypage/DeliveryControllerTest.php @@ -23,7 +23,7 @@ class DeliveryControllerTest extends AbstractWebTestCase */ protected $Customer; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); diff --git a/tests/Eccube/Tests/Web/Mypage/MypageControllerTest.php b/tests/Eccube/Tests/Web/Mypage/MypageControllerTest.php index 0be64dcad13..800e85dfdea 100644 --- a/tests/Eccube/Tests/Web/Mypage/MypageControllerTest.php +++ b/tests/Eccube/Tests/Web/Mypage/MypageControllerTest.php @@ -26,7 +26,7 @@ class MypageControllerTest extends AbstractWebTestCase */ protected $Customer; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); diff --git a/tests/Eccube/Tests/Web/Mypage/WithdrawControllerTest.php b/tests/Eccube/Tests/Web/Mypage/WithdrawControllerTest.php index 025b230cbae..fbee859282b 100644 --- a/tests/Eccube/Tests/Web/Mypage/WithdrawControllerTest.php +++ b/tests/Eccube/Tests/Web/Mypage/WithdrawControllerTest.php @@ -15,21 +15,25 @@ use Eccube\Entity\Customer; use Eccube\Tests\Web\AbstractWebTestCase; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; class WithdrawControllerTest extends AbstractWebTestCase { + use MailerAssertionsTrait; + /** * @var Customer */ protected $Customer; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->Customer = $this->createCustomer(); } - public function tearDown() + protected function tearDown(): void { parent::tearDown(); } @@ -67,7 +71,6 @@ public function testIndexWithPostConfirm() public function testIndexWithPostComplete() { - $this->client->enableProfiler(); $this->logInTo($this->Customer); $crawler = $this->client->request( @@ -79,13 +82,13 @@ public function testIndexWithPostComplete() ] ); - $this->assertRegExp('/@dummy.dummy/', $this->Customer->getEmail()); + $this->assertMatchesRegularExpression('/@dummy.dummy/', $this->Customer->getEmail()); $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('mypage_withdraw_complete'))); - $Messages = $this->getMailCollector(false)->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $BaseInfo = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class)->get(); $this->expected = '['.$BaseInfo->getShopName().'] 退会手続きのご完了'; @@ -110,27 +113,21 @@ public function testIndexWithPostCompleteWithSanitize() ] ); - $this->assertRegExp('/@dummy.dummy/', $this->Customer->getEmail()); + $this->assertMatchesRegularExpression('/@dummy.dummy/', $this->Customer->getEmail()); $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('mypage_withdraw_complete'))); - $Messages = $this->getMailCollector(false)->getMessages(); - /** @var \Swift_Message $Message */ - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $BaseInfo = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class)->get(); $this->expected = '['.$BaseInfo->getShopName().'] 退会手続きのご完了'; $this->actual = $Message->getSubject(); $this->verify(); - $this->assertContains('<Sanitize&>', $Message->getBody(), 'テキストメールがサニタイズされている'); - - $MultiPart = $Message->getChildren(); - foreach ($MultiPart as $Part) { - if ($Part->getContentType() == 'text/html') { - $this->assertContains('<Sanitize&>', $Part->getBody(), 'HTMLメールがサニタイズされている'); - } - } + $this->assertEmailTextBodyContains($Message, '<Sanitize&>', 'テキストメールがサニタイズされている'); + $this->assertEmailHtmlBodyNotContains($Message, '<Sanitize&>', 'HTML part は存在しない'); } public function testComplete() diff --git a/tests/Eccube/Tests/Web/ProductControllerTest.php b/tests/Eccube/Tests/Web/ProductControllerTest.php index 5ac9b4fd778..de54827d42b 100644 --- a/tests/Eccube/Tests/Web/ProductControllerTest.php +++ b/tests/Eccube/Tests/Web/ProductControllerTest.php @@ -39,7 +39,7 @@ class ProductControllerTest extends AbstractWebTestCase */ private $classCategoryRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->baseInfoRepository = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class); @@ -82,7 +82,7 @@ public function testCategoryNotFound() $client = $this->client; $message = 'ご指定のカテゴリは存在しません'; $crawler = $client->request('GET', $this->generateUrl('product_list', ['category_id' => 'XXX'])); - $this->assertContains($message, $crawler->html()); + $this->assertStringContainsString($message, $crawler->html()); } /** @@ -93,7 +93,7 @@ public function testCategoryFound() $client = $this->client; $message = '商品が見つかりました'; $crawler = $client->request('GET', $this->generateUrl('product_list', ['category_id' => '6'])); - $this->assertContains($message, $crawler->html()); + $this->assertStringContainsString($message, $crawler->html()); } /** @@ -158,8 +158,8 @@ public function testProductFavoriteAddWhenOutOfStock() // Case 1: render check $html = $crawler->filter('div.ec-productRole__profile')->html(); - $this->assertContains('ただいま品切れ中です', $html); - $this->assertContains('お気に入りに追加', $html); + $this->assertStringContainsString('ただいま品切れ中です', $html); + $this->assertStringContainsString('お気に入りに追加', $html); $favoriteForm = $crawler->selectButton('お気に入りに追加')->form(); @@ -168,8 +168,8 @@ public function testProductFavoriteAddWhenOutOfStock() // Case 2: after add favorite check $html = $crawler->filter('div.ec-productRole__profile')->html(); - $this->assertContains('ただいま品切れ中です', $html); - $this->assertContains('お気に入りに追加済です', $html); + $this->assertStringContainsString('ただいま品切れ中です', $html); + $this->assertStringContainsString('お気に入りに追加済です', $html); } /** @@ -196,8 +196,8 @@ public function testProductFavoriteAdd() // Case 3: render check when 商品在庫>0 $html = $crawler->filter('div.ec-productRole__profile')->html(); - $this->assertContains('カートに入れる', $html); - $this->assertContains('お気に入りに追加', $html); + $this->assertStringContainsString('カートに入れる', $html); + $this->assertStringContainsString('お気に入りに追加', $html); $favoriteForm = $crawler->selectButton('お気に入りに追加')->form(); @@ -206,8 +206,8 @@ public function testProductFavoriteAdd() // Case 4: after add favorite when 商品在庫>0 $html = $crawler->filter('div.ec-productRole__profile')->html(); - $this->assertContains('カートに入れる', $html); - $this->assertContains('お気に入りに追加済です', $html); + $this->assertStringContainsString('カートに入れる', $html); + $this->assertStringContainsString('お気に入りに追加済です', $html); } /** @@ -254,7 +254,7 @@ public function testProductFavoriteAddThroughLogin() $crawler = $client->followRedirect(); $html = $crawler->filter('div.ec-productRole__profile')->html(); - $this->assertContains('お気に入りに追加済です', $html); + $this->assertStringContainsString('お気に入りに追加済です', $html); } /** @@ -305,7 +305,7 @@ public function testMetaTagsInListPage() // 検索 0件 → noindex 確認 $url = $this->generateUrl('product_list', ['category_id' => 1, 'name' => 'notfoundquery'], UrlGeneratorInterface::ABSOLUTE_URL); $crawler = $this->client->request('GET', $url); - $this->assertContains('お探しの商品は見つかりませんでした', $crawler->html()); + $this->assertStringContainsString('お探しの商品は見つかりませんでした', $crawler->html()); $this->assertEquals('noindex', $crawler->filter('meta[name="robots"]')->attr('content')); } diff --git a/tests/Eccube/Tests/Web/SearchProductControllerTest.php b/tests/Eccube/Tests/Web/SearchProductControllerTest.php index 98228a2c044..dc9f5578ece 100644 --- a/tests/Eccube/Tests/Web/SearchProductControllerTest.php +++ b/tests/Eccube/Tests/Web/SearchProductControllerTest.php @@ -22,7 +22,7 @@ class SearchProductControllerTest extends AbstractWebTestCase */ protected $categoryRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->remove(); diff --git a/tests/Eccube/Tests/Web/ShoppingControllerTest.php b/tests/Eccube/Tests/Web/ShoppingControllerTest.php index e38925ebe0f..08086d6c5ea 100644 --- a/tests/Eccube/Tests/Web/ShoppingControllerTest.php +++ b/tests/Eccube/Tests/Web/ShoppingControllerTest.php @@ -22,11 +22,15 @@ use Eccube\Repository\BaseInfoRepository; use Eccube\Repository\PaymentRepository; use Eccube\Tests\Fixture\Generator; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; class ShoppingControllerTest extends AbstractShoppingControllerTestCase { + use MailerAssertionsTrait; + /** * @var BaseInfoRepository */ @@ -37,7 +41,7 @@ class ShoppingControllerTest extends AbstractShoppingControllerTestCase */ private $paymentRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->baseInfoRepository = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class); @@ -96,9 +100,9 @@ public function testCompleteWithLogin() $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping_complete'))); $BaseInfo = $this->baseInfoRepository->get(); - $mailCollector = $this->getMailCollector(false); - $Messages = $mailCollector->getMessages(); - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); @@ -458,7 +462,7 @@ public function testShippingShippingPost() $Message = $this->getMailCatcherMessage($Messages[0]->id); // https://github.com/EC-CUBE/ec-cube/issues/1305 - $this->assertRegexp('/222-222-222/', $this->parseMailCatcherSource($Message), '変更した 電話番号が一致するか'); + $this->assertMatchesRegularExpression('/222-222-222/', $this->parseMailCatcherSource($Message), '変更した 電話番号が一致するか'); } /** @@ -487,7 +491,7 @@ public function testShippingEditTitle() $crawler = $client->request('GET', $url); // Title - $this->assertContains('お届け先の追加', $crawler->html()); + $this->assertStringContainsString('お届け先の追加', $crawler->html()); } /** @@ -540,9 +544,9 @@ public function testCompleteWithChangeDeliveryName() $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping_complete'))); $BaseInfo = $this->baseInfoRepository->get(); - $mailCollector = $this->getMailCollector(false); - $Messages = $mailCollector->getMessages(); - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); @@ -616,22 +620,16 @@ public function testCompleteWithSanitize() $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping_complete'))); $BaseInfo = $this->baseInfoRepository->get(); - $mailCollector = $this->getMailCollector(false); - $Messages = $mailCollector->getMessages(); - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); $this->verify(); - $this->assertContains('<Sanitize&>', $Message->getBody(), 'テキストメールがサニタイズされている'); - - $MultiPart = $Message->getChildren(); - foreach ($MultiPart as $Part) { - if ($Part->getContentType() == 'text/html') { - $this->assertContains('<Sanitize&>', $Part->getBody(), 'HTMLメールがサニタイズされている'); - } - } + $this->assertEmailTextBodyContains($Message, '<Sanitize&>', 'テキストメールがサニタイズされている'); + $this->assertEmailHtmlBodyContains($Message, '<Sanitize&>', 'HTMLメールがサニタイズされている'); } /** @@ -683,8 +681,8 @@ public function testPaymentLimitAndPointCombination() $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping'))); $crawler = $this->client->followRedirect(); $html = $crawler->filter('body')->html(); - $this->assertNotContains($COD1->getMethod(), $html); - $this->assertContains($COD2->getMethod(), $html); + $this->assertStringNotContainsString($COD1->getMethod(), $html); + $this->assertStringContainsString($COD2->getMethod(), $html); // use point with payment: COD1 $this->scenarioRedirectTo($Customer, [ @@ -705,8 +703,8 @@ public function testPaymentLimitAndPointCombination() $crawler = $this->client->followRedirect(); $html = $crawler->filter('body')->html(); - $this->assertContains($COD1->getMethod(), $html); - $this->assertNotContains($COD2->getMethod(), $html); + $this->assertStringContainsString($COD1->getMethod(), $html); + $this->assertStringNotContainsString($COD2->getMethod(), $html); } /** diff --git a/tests/Eccube/Tests/Web/ShoppingControllerWithMultipleNonmemberTest.php b/tests/Eccube/Tests/Web/ShoppingControllerWithMultipleNonmemberTest.php index 88f4c63edfe..abb3aa75da8 100644 --- a/tests/Eccube/Tests/Web/ShoppingControllerWithMultipleNonmemberTest.php +++ b/tests/Eccube/Tests/Web/ShoppingControllerWithMultipleNonmemberTest.php @@ -16,6 +16,8 @@ use Eccube\Entity\Order; use Eccube\Repository\BaseInfoRepository; use Eccube\Repository\OrderRepository; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; /** * 非会員複数配送指定のテストケース. @@ -24,22 +26,23 @@ */ class ShoppingControllerWithMultipleNonmemberTest extends AbstractShoppingControllerTestCase { + use MailerAssertionsTrait; + /** @var BaseInfoRepository */ private $baseInfoRepository; /** @var OrderRepository */ private $orderRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->baseInfoRepository = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class); $this->orderRepository = $this->entityManager->getRepository(\Eccube\Entity\Order::class); } - public function tearDown() + protected function tearDown(): void { - $this->cleanUpMailCatcherMessages(); parent::tearDown(); } @@ -124,15 +127,16 @@ function ($node, $i) { $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping_complete'))); $BaseInfo = $this->baseInfoRepository->get(); - $Messages = $this->getMailCollector(false)->getMessages(); - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); $this->verify(); $body = $Message->getBody(); - $this->assertRegexp('/◎お届け先2/u', $body, '複数配送のため, お届け先2が存在する'); + $this->assertEmailTextBodyContains($Message, '◎お届け先2', '複数配送のため, お届け先2が存在する'); } public function createNonmemberFormData() @@ -1015,7 +1019,7 @@ public function testAddMultiShippingWithQuantityNotEqual() $crawler = $this->client->request('GET', $this->generateUrl('shopping')); $shipping = $crawler->filter('#shopping-form > div > div.ec-orderRole__detail > div.ec-orderDelivery > div.ec-orderDelivery__item > ul')->last()->text(); - $this->assertContains('× 3', $shipping); + $this->assertStringContainsString('× 3', $shipping); } /** @@ -1246,7 +1250,7 @@ public function testAddMultiShippingWithThreeAddressesThreeItemsOnScreen() // shipping number on the screen $lastShipping = $crawler->filter('#shopping-form > div > div.ec-orderRole__detail > div.ec-orderDelivery div.ec-orderDelivery__title')->last()->text(); - $this->assertContains("(${addressNumber})", $lastShipping); + $this->assertStringContainsString("(${addressNumber})", $lastShipping); } /** @@ -1324,7 +1328,7 @@ function ($node, $i) { // shipping number on the screen $lastShipping = $crawler->filter('#shopping-form > div > div.ec-orderRole__detail > div.ec-orderDelivery div.ec-orderDelivery__title')->last()->text(); - $this->assertContains((string) $maxAddress, $lastShipping); + $this->assertStringContainsString((string) $maxAddress, $lastShipping); } /** @@ -1408,7 +1412,7 @@ public function testAddMultiShippingThreeItemsOfOneProduct() // item number on the screen $shipping = $crawler->filter('#shopping-form > div > div.ec-orderRole__detail > div.ec-orderDelivery > div.ec-orderDelivery__item > ul')->text(); - $this->assertContains('× 3', $shipping); + $this->assertStringContainsString('× 3', $shipping); $deliver = $crawler->filter('#shopping_order_Shippings_0_Delivery > option')->each( function ($node, $i) { @@ -1438,15 +1442,16 @@ function ($node, $i) { $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping_complete'))); $BaseInfo = $this->baseInfoRepository->get(); - $Messages = $this->getMailCollector(false)->getMessages(); - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); $this->verify(); $body = $Message->getBody(); - $this->assertRegexp('/◎お届け先/u', $body, '複数配送のため, お届け先1が存在する'); + $this->assertEmailTextBodyContains($Message, '◎お届け先', '複数配送のため, お届け先1が存在する'); } /** diff --git a/tests/Eccube/Tests/Web/ShoppingControllerWithMultipleTest.php b/tests/Eccube/Tests/Web/ShoppingControllerWithMultipleTest.php index 66e8b098fc6..ee9ca7f3c1f 100644 --- a/tests/Eccube/Tests/Web/ShoppingControllerWithMultipleTest.php +++ b/tests/Eccube/Tests/Web/ShoppingControllerWithMultipleTest.php @@ -18,7 +18,9 @@ use Eccube\Repository\Master\OrderStatusRepository; use Eccube\Repository\OrderRepository; use Eccube\Service\CartService; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Mime\Email; /** * 複数配送指定のテストケース. @@ -43,6 +45,8 @@ */ class ShoppingControllerWithMultipleTest extends AbstractShoppingControllerTestCase { + use MailerAssertionsTrait; + /** @var BaseInfoRepository */ private $baseInfoRepository; @@ -52,7 +56,7 @@ class ShoppingControllerWithMultipleTest extends AbstractShoppingControllerTestC /** @var OrderStatusRepository */ private $orderStatusRepository; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->baseInfoRepository = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class); @@ -63,9 +67,8 @@ public function setUp() /** * tearDown: rollback and clear mail */ - public function tearDown() + protected function tearDown(): void { - $this->cleanUpMailCatcherMessages(); parent::tearDown(); } @@ -123,15 +126,16 @@ function ($node, $i) { $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping_complete'))); $BaseInfo = $this->baseInfoRepository->get(); - /** @var \Swift_Message[] $Messages */ - $Messages = $this->getMailCollector(false)->getMessages(); - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); $this->verify(); - $this->assertRegexp('/◎お届け先2/u', $Message->getBody(), '複数配送のため, お届け先2が存在する'); + $this->assertEmailTextBodyContains($Message, '◎お届け先2', '複数配送のため, お届け先2が存在する'); + $this->assertEmailHtmlBodyContains($Message, '◎お届け先2', '複数配送のため, お届け先2が存在する'); // 生成された受注のチェック $Order = $this->orderRepository->findOneBy( @@ -1230,7 +1234,7 @@ public function testAddMultiShippingThreeItemsOfOneProduct() // item number on the screen $shipping = $crawler->filter('#shopping-form > div > div.ec-orderRole__detail > div.ec-orderDelivery > div.ec-orderDelivery__item > ul')->text(); - $this->assertContains('× 3', $shipping); + $this->assertStringContainsString('× 3', $shipping); $deliver = $crawler->filter('#shopping_order_Shippings_0_Delivery > option')->each( function ($node, $i) { @@ -1257,16 +1261,16 @@ function ($node, $i) { $this->scenarioCheckout($Customer); $BaseInfo = $this->baseInfoRepository->get(); - /** @var \Swift_Message[] $Messages */ - $Messages = $this->getMailCollector(false)->getMessages(); - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); $this->verify(); - $body = $Message->getBody(); - $this->assertRegexp('/◎お届け先/u', $body, '複数配送のため, お届け先1が存在する'); + $this->assertEmailTextBodyContains($Message, '◎お届け先', '複数配送のため, お届け先が存在する'); + $this->assertEmailHtmlBodyContains($Message, '◎お届け先', '複数配送のため, お届け先が存在する'); // 生成された受注のチェック /** @var Order $Order */ diff --git a/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php b/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php index 98d2d805856..7f277fb3eae 100644 --- a/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php +++ b/tests/Eccube/Tests/Web/ShoppingControllerWithNonmemberTest.php @@ -16,18 +16,22 @@ use Eccube\Entity\BaseInfo; use Eccube\Entity\Customer; use Eccube\Service\OrderHelper; +use Symfony\Bundle\FrameworkBundle\Test\MailerAssertionsTrait; +use Symfony\Component\Mime\Email; /** * Class ShoppingControllerWithNonmemberTest */ class ShoppingControllerWithNonmemberTest extends AbstractShoppingControllerTestCase { + use MailerAssertionsTrait; + /** * @var BaseInfo */ protected $BaseInfo; - public function setUp() + protected function setUp(): void { parent::setUp(); $this->BaseInfo = $this->entityManager->find(BaseInfo::class, 1); @@ -95,9 +99,9 @@ public function testCompleteWithNonmember() $this->scenarioCheckout(); $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('shopping_complete'))); - $mailCollector = $this->getMailCollector(false); - $Messages = $mailCollector->getMessages(); - $Message = $Messages[0]; + $this->assertEmailCount(1); + /** @var Email $Message */ + $Message = $this->getMailerMessage(0); $this->expected = '['.$this->BaseInfo->getShopName().'] ご注文ありがとうございます'; $this->actual = $Message->getSubject(); @@ -106,10 +110,9 @@ public function testCompleteWithNonmember() public function testNonmemberWithCartUnlock() { - $client = $this->createClient(); - $crawler = $client->request('GET', $this->generateUrl('shopping_nonmember')); + $crawler = $this->client->request('GET', $this->generateUrl('shopping_nonmember')); - $this->assertTrue($client->getResponse()->isRedirect($this->generateUrl('cart'))); + $this->assertTrue($this->client->getResponse()->isRedirect($this->generateUrl('cart'))); } public function testNonmemberWithCustomerLogin() @@ -203,7 +206,7 @@ public function testShippingEdit() $this->expected = 'お届け先の変更'; $this->actual = $crawler->filter('h1.page-heading')->text(); - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); } /** @@ -260,7 +263,7 @@ public function testShippingEditWithPostToComplete() $this->expected = 'お届け先の変更'; $this->actual = $crawler->filter('h1.page-heading')->text(); - $this->assertContains($this->expected, $this->actual); + $this->assertStringContainsString($this->expected, $this->actual); // お届け先設定画面で、入力値を変更しPOST送信 $formData = $this->createNonmemberFormData(); @@ -281,7 +284,7 @@ public function testShippingEditWithPostToComplete() $Messages = $this->getMailCatcherMessages(); $Message = $this->getMailCatcherMessage($Messages[0]->id); -// $this->assertRegexp('/111-111-111/', $this->parseMailCatcherSource($Message), '変更した FAX 番号が一致するか'); +// $this->assertMatchesRegularExpression('/111-111-111/', $this->parseMailCatcherSource($Message), '変更した FAX 番号が一致するか'); } public function createNonmemberFormData() diff --git a/tests/Eccube/Tests/Web/UserDataControllerTest.php b/tests/Eccube/Tests/Web/UserDataControllerTest.php index 802309a0297..f66036be754 100644 --- a/tests/Eccube/Tests/Web/UserDataControllerTest.php +++ b/tests/Eccube/Tests/Web/UserDataControllerTest.php @@ -24,7 +24,7 @@ class UserDataControllerTest extends AbstractWebTestCase /** * {@inheritdoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -38,7 +38,7 @@ public function setUp() $this->entityManager->flush(); } - public function tearDown() + protected function tearDown(): void { if (file_exists($this->userDataDir.'/'.$this->fileName.'.twig')) { unlink($this->userDataDir.'/'.$this->fileName.'.twig'); diff --git a/tests/Fixtures/session/common.php b/tests/Fixtures/session/common.php index 272a23c2b3c..9206967b5e0 100644 --- a/tests/Fixtures/session/common.php +++ b/tests/Fixtures/session/common.php @@ -31,7 +31,7 @@ require $parent.'/vendor/autoload.php'; if (file_exists($parent.'/.env')) { - (new Dotenv($parent))->overload(); + (Dotenv::createUnsafeMutable($parent, '.env'))->load(); } Request::setTrustedProxies(['127.0.0.1', '::1', 'REMOTE_ADDR'], Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); @@ -85,6 +85,7 @@ public function getData() return $this->data; } + #[\ReturnTypeWillChange] public function open($path, $name) { return parent::open($path, $name); @@ -101,6 +102,7 @@ public function __construct(SessionHandlerInterface $handler) $this->data = $handler->getData(); } + #[\ReturnTypeWillChange] public function open($path, $name) { echo __FUNCTION__, "\n"; diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 5323afb2b8d..ba106da67cf 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -10,10 +10,12 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ +use Symfony\Component\Dotenv\Dotenv; -$loader = require __DIR__.'/../vendor/autoload.php'; +require dirname(__DIR__).'/vendor/autoload.php'; -$envFile = __DIR__.'/../.env'; -if (file_exists($envFile)) { - (new \Symfony\Component\Dotenv\Dotenv())->load($envFile); +if (file_exists(dirname(__DIR__).'/config/bootstrap.php')) { + require dirname(__DIR__).'/config/bootstrap.php'; +} elseif (method_exists(Dotenv::class, 'bootEnv')) { + (new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); }