From edca83cea6020ce79e3a73561e0102663020a985 Mon Sep 17 00:00:00 2001 From: martin Date: Tue, 5 Dec 2023 16:55:29 +0100 Subject: [PATCH 1/3] todo --- src/Template/Basic.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Template/Basic.php b/src/Template/Basic.php index f95e486..4287dde 100644 --- a/src/Template/Basic.php +++ b/src/Template/Basic.php @@ -44,6 +44,7 @@ public static function print(Container $di): void 'last_sync' => date('c', $di->getByClass(Synchronizer::class)->getLastSync()), ]; + //todo: kazdy vyskyt "$settings->load('xxx') ?? DEFAULT" bych odstranil a zadefinoval defaultni hodnotu viz.: https://github.com/BulkGate/plugin/issues/3 $plugin_settings = [ 'dispatcher' => $settings->load('main:dispatcher') ?? Dispatcher::$default_dispatcher, 'synchronization' => $settings->load('main:synchronization') ?? 'all', From 9c1fcf86899fc9e57d58ff299f372983e12bed9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pij=C3=A1k?= Date: Wed, 6 Dec 2023 14:40:04 +0100 Subject: [PATCH 2/3] implementation --- src/DI/Factory.php | 27 ++++++++++++++++++++------- src/Eshop/LanguageWordpress.php | 12 ++++++++---- src/Template/Basic.php | 21 ++++++++++----------- 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/DI/Factory.php b/src/DI/Factory.php index 147b440..7d8f3be 100644 --- a/src/DI/Factory.php +++ b/src/DI/Factory.php @@ -38,7 +38,8 @@ WooSms\Event\Loader\OrderStatus, WooSms\Event\Loader\Post, WooSms\Event\Loader\Product, - WooSms\Event\Loader\Shop}; + WooSms\Event\Loader\Shop, + WooSms\Event\OrderForm}; use function extension_loaded, is_int, class_exists, in_array; class Factory implements DIFactory @@ -122,11 +123,6 @@ protected static function createContainer(array $parameters = []): Container ])]; $container['event.dispatcher'] = Event\Dispatcher::class; - if (in_array($parameters['dispatcher'] ?? null, [Event\Dispatcher::Asset, Event\Dispatcher::Cron, Event\Dispatcher::Direct], true)) - { - Event\Dispatcher::$default_dispatcher = $parameters['dispatcher']; - } - // IO $container['io.connection.factory'] = ['factory' => IO\ConnectionFactory::class, 'factory_method' => function () use ($container): IO\ConnectionFactory { @@ -147,7 +143,24 @@ protected static function createContainer(array $parameters = []): Container // Settings $container['settings.repository.database'] = Settings\Repository\SettingsDatabase::class; - $container['settings.settings'] = Settings\Settings::class; + $container['settings.settings'] = ['factory' => Settings\Settings::class, 'factory_method' => function () use ($container, $parameters): Settings\Settings + { + $service = new Settings\Settings($container->getByClass( Settings\Repository\Settings::class)); + $service->setDefaultSettings([ + 'main:dispatcher' => in_array($parameters['dispatcher'] ?? null, [Event\Dispatcher::Asset, Event\Dispatcher::Cron, Event\Dispatcher::Direct], true) ? $parameters['dispatcher'] : Event\Dispatcher::Direct, + 'main:synchronization' => 'all', + 'main:language' => 'auto', + 'main:language_mutation' => false, + 'main:delete_db' => false, + 'main:address_preference' => 'delivery', + 'main:marketing_message_opt_in_enabled' => OrderForm::DefaultEnabled, + 'main:marketing_message_opt_in_label' => '', + 'main:marketing_message_opt_in_default' => false, + 'main:marketing_message_opt_in_url' => '', + 'main:marketing_message_opt_in_url_label' => '', + ]); + return $service; + }]; $container['settings.repository.synchronizer'] = Settings\Repository\SynchronizationDatabase::class; $container['settings.synchronizer'] = Settings\Synchronizer::class; diff --git a/src/Eshop/LanguageWordpress.php b/src/Eshop/LanguageWordpress.php index d35338d..5d069b9 100644 --- a/src/Eshop/LanguageWordpress.php +++ b/src/Eshop/LanguageWordpress.php @@ -16,7 +16,7 @@ public function load(): array { $output = []; - if (is_plugin_active('sitepress-multilingual-cms-master/sitepress.php') || is_plugin_active('sitepress-multilingual-cms/sitepress.php')) + if ($this->hasMultiLanguageSupport()) { $languages = apply_filters('wpml_active_languages', null, 'orderby=id&order=desc'); @@ -36,9 +36,7 @@ public function load(): array public function get(?int $id = null): string { - if ( - (is_plugin_active('sitepress-multilingual-cms-master/sitepress.php') || is_plugin_active('sitepress-multilingual-cms/sitepress.php')) && - defined('ICL_LANGUAGE_CODE') + if ($this->hasMultiLanguageSupport() && defined('ICL_LANGUAGE_CODE') ) { return $id === null ? ICL_LANGUAGE_CODE : ((string) get_post_meta($id, 'wpml_language', true) ?: ICL_LANGUAGE_CODE); @@ -48,4 +46,10 @@ public function get(?int $id = null): string return get_locale(); } } + + + public function hasMultiLanguageSupport(): bool + { + return is_plugin_active('sitepress-multilingual-cms-master/sitepress.php') || is_plugin_active('sitepress-multilingual-cms/sitepress.php'); + } } diff --git a/src/Template/Basic.php b/src/Template/Basic.php index 4287dde..e815a55 100644 --- a/src/Template/Basic.php +++ b/src/Template/Basic.php @@ -44,18 +44,17 @@ public static function print(Container $di): void 'last_sync' => date('c', $di->getByClass(Synchronizer::class)->getLastSync()), ]; - //todo: kazdy vyskyt "$settings->load('xxx') ?? DEFAULT" bych odstranil a zadefinoval defaultni hodnotu viz.: https://github.com/BulkGate/plugin/issues/3 $plugin_settings = [ - 'dispatcher' => $settings->load('main:dispatcher') ?? Dispatcher::$default_dispatcher, - 'synchronization' => $settings->load('main:synchronization') ?? 'all', - 'language' => $settings->load('main:language') ?? 'en', - 'language_mutation' => $settings->load('main:language_mutation') ?? false, - 'delete_db' => $settings->load('main:delete_db') ?? false, - 'address_preference' => $settings->load('main:address_preference') ?? 'delivery', - 'marketing_message_opt_in_enabled' => $settings->load('main:marketing_message_opt_in_enabled') ?? OrderForm::DefaultEnabled, - 'marketing_message_opt_in_label' => $settings->load('main:marketing_message_opt_in_label') ?? '', - 'marketing_message_opt_in_default' => $settings->load('main:marketing_message_opt_in_default') ?? false, - 'marketing_message_opt_in_url' => $settings->load('main:marketing_message_opt_in_url') ?? '', + 'dispatcher' => $settings->load('main:dispatcher'), + 'synchronization' => $settings->load('main:synchronization'), + 'language' => $settings->load('main:language'), + 'language_mutation' => $settings->load('main:language_mutation'), + 'delete_db' => $settings->load('main:delete_db'), + 'address_preference' => $settings->load('main:address_preference'), + 'marketing_message_opt_in_enabled' => $settings->load('main:marketing_message_opt_in_enabled'), + 'marketing_message_opt_in_label' => $settings->load('main:marketing_message_opt_in_label'), + 'marketing_message_opt_in_default' => $settings->load('main:marketing_message_opt_in_default'), + 'marketing_message_opt_in_url' => $settings->load('main:marketing_message_opt_in_url'), ]; wp_print_inline_script_tag(<< Date: Wed, 6 Dec 2023 14:44:55 +0100 Subject: [PATCH 3/3] fix tests --- src/Eshop/LanguageWordpress.php | 3 +-- tests/DI/FactoryTest.phpt | 4 ---- tests/Template/BasicTest.phpt | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/Eshop/LanguageWordpress.php b/src/Eshop/LanguageWordpress.php index 5d069b9..bf9a33d 100644 --- a/src/Eshop/LanguageWordpress.php +++ b/src/Eshop/LanguageWordpress.php @@ -36,8 +36,7 @@ public function load(): array public function get(?int $id = null): string { - if ($this->hasMultiLanguageSupport() && defined('ICL_LANGUAGE_CODE') - ) + if ($this->hasMultiLanguageSupport() && defined('ICL_LANGUAGE_CODE')) { return $id === null ? ICL_LANGUAGE_CODE : ((string) get_post_meta($id, 'wpml_language', true) ?: ICL_LANGUAGE_CODE); } diff --git a/tests/DI/FactoryTest.phpt b/tests/DI/FactoryTest.phpt index 1b1c690..2632045 100644 --- a/tests/DI/FactoryTest.phpt +++ b/tests/DI/FactoryTest.phpt @@ -69,8 +69,6 @@ class FactoryTest extends TestCase public function testBase(): void { - Assert::same(Dispatcher::Direct, Dispatcher::$default_dispatcher); - Factory::setup(fn () => [ 'db' => Mockery::mock(wpdb::class), 'url' => 'https://www.bulkgate.com', @@ -127,8 +125,6 @@ class FactoryTest extends TestCase Assert::type(Sign::class, Factory::get()->getService('user.sign')); Assert::count(35, Factory::get()); - - Assert::same(Dispatcher::Cron, Dispatcher::$default_dispatcher); } } diff --git a/tests/Template/BasicTest.phpt b/tests/Template/BasicTest.phpt index 90cdf4a..81c3ffe 100644 --- a/tests/Template/BasicTest.phpt +++ b/tests/Template/BasicTest.phpt @@ -44,7 +44,7 @@ class BasicTest extends TestCase $settings->shouldReceive('load')->with('main:marketing_message_opt_in_enabled')->once()->andReturnFalse(); $settings->shouldReceive('load')->with('main:marketing_message_opt_in_label')->once()->andReturn('label'); $settings->shouldReceive('load')->with('main:marketing_message_opt_in_default')->once()->andReturnFalse(); - $settings->shouldReceive('load')->with('main:marketing_message_opt_in_url')->once()->andReturnNull(); + $settings->shouldReceive('load')->with('main:marketing_message_opt_in_url')->once()->andReturn(''); $url->shouldReceive('get')->withNoArgs()->once()->andReturn('https://www.example.com/'); $url->shouldReceive('get')->with('widget/eshop/load/jwt.token.451?config=init_widget_eshop_load')->once()->andReturn('https://www.example.com/widget/message/send/jwt.token.451?config=init_widget_message_send'); $url->shouldReceive('get')->with('/images/white-label/bulkgate/logo/short.svg')->once()->andReturn('https://www.example.com/images/white-label/bulkgate/logo/short.svg');