PluginProbe
Packeta / 2.0.9
Packeta v2.0.9
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
← All changes | src/Packetery/Module/Options/Page.php +55 -208 trunk2.0.9 View file →
@@ -12,17 +12,11 @@
12 12 use DateTime;
13 13 use Packetery\Core\Api;
14 14 use Packetery\Core\Api\Soap\Request\SenderGetReturnRouting;
15 15 use Packetery\Core\CoreHelper;
16 -use Packetery\Core\Entity\PacketStatus;
17 16 use Packetery\Core\Log;
18 17 use Packetery\Latte\Engine;
19 -use Packetery\Module\Dashboard\DashboardPage;
20 -use Packetery\Module\DiagnosticsLogger\DiagnosticsLogger;
21 18 use Packetery\Module\FormFactory;
22 -use Packetery\Module\Forms\BugReportForm;
23 -use Packetery\Module\Forms\DiagnosticsLoggingFormFactory;
24 -use Packetery\Module\Framework\WpAdapter;
25 19 use Packetery\Module\MessageManager;
26 20 use Packetery\Module\ModuleHelper;
27 21 use Packetery\Module\Order\PacketAutoSubmitter;
28 22 use Packetery\Module\Order\PacketSynchronizer;
@@ -27,9 +21,8 @@
27 21 use Packetery\Module\Order\PacketAutoSubmitter;
28 22 use Packetery\Module\Order\PacketSynchronizer;
29 23 use Packetery\Module\PaymentGatewayHelper;
30 24 use Packetery\Module\Views\UrlBuilder;
31 -use Packetery\Module\WcLogger;
32 25 use Packetery\Nette\Forms\Container;
33 26 use Packetery\Nette\Forms\Controls\BaseControl;
34 27 use Packetery\Nette\Forms\Controls\SubmitButton;
35 28 use Packetery\Nette\Forms\Form;
@@ -41,13 +34,12 @@
41 34 * @package Packetery\Options
42 35 */
43 36 class Page {
44 37
45 - private const FORM_FIELDS_CONTAINER = 'packetery';
46 - private const FORM_FIELD_PACKETA_LABEL_FORMAT = 'packeta_label_format';
47 - private const FORM_FIELD_CARRIER_LABEL_FORMAT = 'carrier_label_format';
48 - private const FORM_FIELD_FREE_SHIPPING_SHOWN = 'free_shipping_shown';
49 - public const FORM_PICKUP_POINT_VALIDATION_ENABLED = 'pickup_point_validation_enabled';
38 + private const FORM_FIELDS_CONTAINER = 'packetery';
39 + private const FORM_FIELD_PACKETA_LABEL_FORMAT = 'packeta_label_format';
40 + private const FORM_FIELD_CARRIER_LABEL_FORMAT = 'carrier_label_format';
41 + private const FORM_FIELD_FREE_SHIPPING_SHOWN = 'free_shipping_shown';
50 42
51 43 public const ACTION_VALIDATE_SENDER = 'validate-sender';
52 44
53 45 public const SLUG = 'packeta-options';
@@ -59,10 +51,8 @@
59 51 public const TAB_AUTO_SUBMISSION = 'auto-submission';
60 52
61 53 public const PARAM_TAB = 'tab';
62 54
63 - const PACKETA_SVG_LOGO = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IlZyc3R2YV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMzcgNDAiIHN0eWxlPSJmaWxsOiNhN2FhYWQiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiAjYTdhYWFkO30KPC9zdHlsZT4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE5LjQsMTYuMWwtMC45LDAuNGwtMC45LTAuNGwtMTMtNi41bDYuMi0yLjRsMTMuNCw2LjVMMTkuNCwxNi4xeiBNMzIuNSw5LjZsLTQuNywyLjNsLTEzLjUtNmw0LjItMS42CglMMzIuNSw5LjZ6Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOSwwbDE3LjIsNi42bC0yLjQsMS45bC0xNS4yLTZMMy4yLDguNkwwLjgsNi42TDE4LDBMMTksMEwxOSwweiBNMzQuMSw5LjFsMi44LTEuMWwtMi4xLDE3LjZsLTAuNCwwLjgKCUwxOS40LDQwbC0wLjUtMy4xbDEzLjQtMTJMMzQuMSw5LjF6IE0yLjUsMjYuNWwtMC40LTAuOEwwLDguMWwyLjgsMS4xbDEuOSwxNS43bDEzLjQsMTJMMTcuNiw0MEwyLjUsMjYuNXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTI4LjIsMTIuNGw0LjMtMi43bC0xLjcsMTQuMkwxOC42LDM1bDAuNi0xN2w1LjQtMy4zTDI0LjMsMjNsMy4zLTIuM0wyOC4yLDEyLjR6Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNy43LDE3LjlsMC42LDE3bC0xMi4yLTExTDQuNCw5LjhMMTcuNywxNy45eiIvPgo8L3N2Zz4K';
64 -
65 55 /**
66 56 * PacketeryLatte_engine.
67 57 *
68 58 * @var Engine PacketeryLatte engine.
@@ -119,35 +109,12 @@
119 109 */
120 110 private $urlBuilder;
121 111
122 112 /**
123 - * @var PacketSynchronizer
124 - */
125 - private $packetSynchronizer;
126 -
127 - /**
128 - * @var WpAdapter
129 - */
130 - private $wpAdapter;
131 -
132 - /**
133 113 * @var string
134 114 */
135 115 private $supportEmailAddress;
136 116
137 - /**
138 - * @var BugReportForm
139 - */
140 - private $bugReportForm;
141 -
142 - /**
143 - * @var DiagnosticsLoggingFormFactory
144 - */
145 - private $diagnosticsLoggingFormFactory;
146 -
147 - /** @var DiagnosticsLogger */
148 - private $diagnosticsLogger;
149 -
150 117 public function __construct(
151 118 Engine $latteEngine,
152 119 OptionsProvider $optionsProvider,
153 120 FormFactory $formFactory,
@@ -156,55 +123,40 @@
156 123 MessageManager $messageManager,
157 124 Http\Request $httpRequest,
158 125 ModuleHelper $moduleHelper,
159 126 UrlBuilder $urlBuilder,
160 - PacketSynchronizer $packetSynchronizer,
161 - WpAdapter $wpAdapter,
162 - string $supportEmailAddress,
163 - BugReportForm $bugReportForm,
164 - DiagnosticsLoggingFormFactory $diagnosticsLoggingFormFactory,
165 - DiagnosticsLogger $diagnosticsLogger
127 + string $supportEmailAddress
166 128 ) {
167 - $this->latteEngine = $latteEngine;
168 - $this->optionsProvider = $optionsProvider;
169 - $this->formFactory = $formFactory;
170 - $this->packetaClient = $packetaClient;
171 - $this->logger = $logger;
172 - $this->messageManager = $messageManager;
173 - $this->httpRequest = $httpRequest;
174 - $this->moduleHelper = $moduleHelper;
175 - $this->urlBuilder = $urlBuilder;
176 - $this->packetSynchronizer = $packetSynchronizer;
177 - $this->supportEmailAddress = $supportEmailAddress;
178 - $this->wpAdapter = $wpAdapter;
179 - $this->bugReportForm = $bugReportForm;
180 - $this->diagnosticsLoggingFormFactory = $diagnosticsLoggingFormFactory;
181 - $this->diagnosticsLogger = $diagnosticsLogger;
129 + $this->latteEngine = $latteEngine;
130 + $this->optionsProvider = $optionsProvider;
131 + $this->formFactory = $formFactory;
132 + $this->packetaClient = $packetaClient;
133 + $this->logger = $logger;
134 + $this->messageManager = $messageManager;
135 + $this->httpRequest = $httpRequest;
136 + $this->moduleHelper = $moduleHelper;
137 + $this->urlBuilder = $urlBuilder;
138 + $this->supportEmailAddress = $supportEmailAddress;
182 139 }
183 140
141 + /**
142 + * Registers WP callbacks.
143 + */
184 144 public function register(): void {
185 - add_action( 'admin_init', [ $this, 'admin_init' ] );
186 - add_action( 'admin_init', [ $this, 'processActions' ] );
187 - add_filter( 'custom_menu_order', '__return_true' );
188 - add_filter( 'menu_order', [ $this, 'customMenuOrder' ] );
189 - }
190 -
191 - public function registerMenuPage(): void {
192 - $this->wpAdapter->addMenuPage(
193 - $this->wpAdapter->__( 'Packeta', 'packeta' ),
194 - $this->wpAdapter->__( 'Packeta', 'packeta' ),
145 + add_action( 'admin_init', array( $this, 'admin_init' ) );
146 + $icon = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IlZyc3R2YV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMzcgNDAiIHN0eWxlPSJmaWxsOiNhN2FhYWQiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiAjYTdhYWFkO30KPC9zdHlsZT4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE5LjQsMTYuMWwtMC45LDAuNGwtMC45LTAuNGwtMTMtNi41bDYuMi0yLjRsMTMuNCw2LjVMMTkuNCwxNi4xeiBNMzIuNSw5LjZsLTQuNywyLjNsLTEzLjUtNmw0LjItMS42CglMMzIuNSw5LjZ6Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOSwwbDE3LjIsNi42bC0yLjQsMS45bC0xNS4yLTZMMy4yLDguNkwwLjgsNi42TDE4LDBMMTksMEwxOSwweiBNMzQuMSw5LjFsMi44LTEuMWwtMi4xLDE3LjZsLTAuNCwwLjgKCUwxOS40LDQwbC0wLjUtMy4xbDEzLjQtMTJMMzQuMSw5LjF6IE0yLjUsMjYuNWwtMC40LTAuOEwwLDguMWwyLjgsMS4xbDEuOSwxNS43bDEzLjQsMTJMMTcuNiw0MEwyLjUsMjYuNXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTI4LjIsMTIuNGw0LjMtMi43bC0xLjcsMTQuMkwxOC42LDM1bDAuNi0xN2w1LjQtMy4zTDI0LjMsMjNsMy4zLTIuM0wyOC4yLDEyLjR6Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNy43LDE3LjlsMC42LDE3bC0xMi4yLTExTDQuNCw5LjhMMTcuNywxNy45eiIvPgo8L3N2Zz4K';
147 + add_menu_page(
148 + __( 'Packeta', 'packeta' ),
149 + __( 'Packeta', 'packeta' ),
195 150 'manage_options',
196 - DashboardPage::SLUG,
151 + self::SLUG,
197 152 function () {},
198 - self::PACKETA_SVG_LOGO
153 + $icon
199 154 );
200 - }
201 -
202 - public function registerSubmenuPage(): void {
203 - $this->wpAdapter->addSubmenuPage(
204 - DashboardPage::SLUG,
205 - $this->wpAdapter->__( 'Settings', 'packeta' ),
206 - $this->wpAdapter->__( 'Settings', 'packeta' ),
155 + add_submenu_page(
156 + self::SLUG,
157 + __( 'Settings', 'packeta' ),
158 + __( 'Settings', 'packeta' ),
207 159 'manage_options',
208 160 self::SLUG,
209 161 array(
210 162 $this,
@@ -211,24 +163,22 @@
211 163 'render',
212 164 ),
213 165 1
214 166 );
167 + add_action( 'admin_init', [ $this, 'processActions' ] );
168 +
169 + add_filter( 'custom_menu_order', '__return_true' );
170 + add_filter( 'menu_order', [ $this, 'customMenuOrder' ] );
215 171 }
216 172
217 173 /**
218 174 * Returns menu_order with Packeta item in last position.
219 175 *
220 - * @param array|mixed $menuOrder WP $menu_order.
176 + * @param array $menuOrder WP $menu_order.
221 177 *
222 - * @return array|mixed
178 + * @return array
223 179 */
224 - public function customMenuOrder( $menuOrder ) {
225 - if ( ! is_array( $menuOrder ) ) {
226 - WcLogger::logArgumentTypeError( __METHOD__, 'menuOrder', 'array', $menuOrder );
227 -
228 - return $menuOrder;
229 - }
230 -
180 + public function customMenuOrder( array $menuOrder ): array {
231 181 $currentPosition = array_search( self::SLUG, $menuOrder, true );
232 182
233 183 if ( $currentPosition !== false ) {
234 184 unset( $menuOrder[ $currentPosition ] );
@@ -276,35 +226,15 @@
276 226 return $statuses;
277 227 }
278 228
279 229 /**
280 - * Gets status syncing packet statuses.
281 - *
282 - * @return array<string, array{key: int|string, default: bool, label:string}>
283 - */
284 - public function getStatusSyncingPacketStatusesChoiceData(): array {
285 - $statuses = $this->packetSynchronizer->getDefaultPacketStatuses();
286 -
287 - return $this->createPacketStatusChoiceData( $statuses );
288 - }
289 -
290 - /**
291 230 * Gets all packet statuses.
292 231 *
293 - * @return array<string, array{key: int|string, default: bool, label:string}>
232 + * @return array
294 233 */
295 - public function getAllPacketStatusesChoiceData(): array {
296 - $statuses = $this->packetSynchronizer->getPacketStatuses();
234 + public function getPacketStatusesChoiceData(): array {
235 + $statuses = PacketSynchronizer::getPacketStatuses();
297 236
298 - return $this->createPacketStatusChoiceData( $statuses );
299 - }
300 -
301 - /**
302 - * @param PacketStatus[] $statuses Packet statuses.
303 - *
304 - * @return array<string, array{key: int|string, default: bool, label:string}>
305 - */
306 - private function createPacketStatusChoiceData( array $statuses ): array {
307 237 $result = [];
308 238
309 239 foreach ( $statuses as $status => $statusEntity ) {
310 240 $result[ md5( $status ) ] = [
@@ -343,9 +273,9 @@
343 273 */
344 274 public function createAutoSubmissionForm(): Form {
345 275 $gateways = PaymentGatewayHelper::getAvailablePaymentGateways();
346 276 $form = $this->formFactory->create( 'packetery_auto_submission_form' );
347 - $defaults = $this->optionsProvider->getOptionsByName( OptionNames::PACKETERY_AUTO_SUBMISSION );
277 + $defaults = $this->optionsProvider->getOptionsByName( OptionsProvider::OPTION_NAME_PACKETERY_AUTO_SUBMISSION );
348 278
349 279 $form->addCheckbox( 'allow', __( 'Allow packet auto-submission', 'packeta' ) )
350 280 ->setRequired( false )
351 281 ->setDefaultValue( OptionsProvider::PACKET_AUTO_SUBMISSION_ALLOWED_DEFAULT );
@@ -383,9 +313,9 @@
383 313 *
384 314 * @return void
385 315 */
386 316 public function onAutoSubmissionFormSuccess( Form $form, array $values ): void {
387 - update_option( OptionNames::PACKETERY_AUTO_SUBMISSION, $values );
317 + update_option( OptionsProvider::OPTION_NAME_PACKETERY_AUTO_SUBMISSION, $values );
388 318
389 319 $this->messageManager->flash_message( __( 'Settings saved.', 'packeta' ), MessageManager::TYPE_SUCCESS, MessageManager::RENDERER_PACKETERY, 'plugin-options' );
390 320
391 321 if ( wp_safe_redirect( $this->createLink( self::TAB_AUTO_SUBMISSION ) ) ) {
@@ -399,9 +329,9 @@
399 329 * @return Form
400 330 */
401 331 private function createPacketStatusSyncForm(): Form {
402 332 $form = $this->formFactory->create( 'packetery_packet_status_sync_form' );
403 - $settings = $this->optionsProvider->getOptionsByName( OptionNames::PACKETERY_SYNC );
333 + $settings = $this->optionsProvider->getOptionsByName( OptionsProvider::OPTION_NAME_PACKETERY_SYNC );
404 334
405 335 $form->addText( 'max_status_syncing_packets', __( 'Number of orders synced during one cron call', 'packeta' ) )
406 336 ->setRequired( false )
407 337 ->addRule( Form::INTEGER )
@@ -424,9 +354,9 @@
424 354 }
425 355 }
426 356 unset( $settings['status_syncing_order_statuses'] );
427 357
428 - $packetStatuses = $this->getStatusSyncingPacketStatusesChoiceData();
358 + $packetStatuses = $this->getPacketStatusesChoiceData();
429 359 $packetStatusesContainer = $form->addContainer( 'status_syncing_packet_statuses' );
430 360
431 361 foreach ( $packetStatuses as $packetStatusHash => $packetStatusData ) {
432 362 $item = $packetStatusesContainer->addCheckbox( $packetStatusHash, $packetStatusData['label'] );
@@ -445,9 +375,8 @@
445 375 ->toggle( '.order_status_change_content' );
446 376
447 377 $orderStatusChangePacketStatuses = $form->addContainer( 'order_status_change_packet_statuses' );
448 378 $orderStatuses = wc_get_order_statuses();
449 - $packetStatuses = $this->getAllPacketStatusesChoiceData();
450 379 foreach ( $packetStatuses as $packetStatusHash => $packetStatusData ) {
451 380 $item = $orderStatusChangePacketStatuses->addSelect( $packetStatusHash, $packetStatusData['label'], $orderStatuses )
452 381 ->setPrompt( __( 'Order status', 'packeta' ) );
453 382 $targetStatus = $settings['order_status_change_packet_statuses'][ $packetStatusData['key'] ] ?? null;
@@ -474,18 +403,19 @@
474 403 *
475 404 * @return void
476 405 */
477 406 public function onPacketStatusSyncFormSuccess( Form $form, array $values ): void {
407 +
478 408 $values['status_syncing_order_statuses'] = $this->getChosenKeys(
479 409 self::getOrderStatusesChoiceData(),
480 410 $values['status_syncing_order_statuses']
481 411 );
482 412 $values['status_syncing_packet_statuses'] = $this->getChosenKeys(
483 - $this->getStatusSyncingPacketStatusesChoiceData(),
413 + $this->getPacketStatusesChoiceData(),
484 414 $values['status_syncing_packet_statuses']
485 415 );
486 416 $values['order_status_change_packet_statuses'] = $this->translateStatuses(
487 - $this->getAllPacketStatusesChoiceData(),
417 + $this->getPacketStatusesChoiceData(),
488 418 $values['order_status_change_packet_statuses']
489 419 );
490 420
491 421 if ( $values['max_status_syncing_packets'] === '' ) {
@@ -495,9 +425,9 @@
495 425 if ( $values['max_days_of_packet_status_syncing'] === '' ) {
496 426 unset( $values['max_days_of_packet_status_syncing'] );
497 427 }
498 428
499 - update_option( OptionNames::PACKETERY_SYNC, $values );
429 + update_option( OptionsProvider::OPTION_NAME_PACKETERY_SYNC, $values );
500 430
501 431 $this->messageManager->flash_message( __( 'Settings saved.', 'packeta' ), MessageManager::TYPE_SUCCESS, MessageManager::RENDERER_PACKETERY, 'plugin-options' );
502 432
503 433 if ( wp_safe_redirect( $this->createLink( self::TAB_PACKET_STATUS_SYNC ) ) ) {
@@ -506,9 +436,9 @@
506 436 }
507 437
508 438 public function createAdvancedForm(): Form {
509 439 $form = $this->formFactory->create( 'packetery_advanced_form' );
510 - $defaults = $this->optionsProvider->getOptionsByName( OptionNames::PACKETERY_ADVANCED );
440 + $defaults = $this->optionsProvider->getOptionsByName( OptionsProvider::OPTION_NAME_PACKETERY_ADVANCED );
511 441
512 442 $form->addCheckbox( 'new_carrier_settings_enabled', __( 'Advanced carrier settings', 'packeta' ) )
513 443 ->setRequired( false )
514 444 ->setDefaultValue( OptionsProvider::DEFAULT_VALUE_CARRIER_SETTINGS );
@@ -522,9 +452,9 @@
522 452 return $form;
523 453 }
524 454
525 455 public function onAdvancedFormSuccess( Form $form, array $values ): void {
526 - update_option( OptionNames::PACKETERY_ADVANCED, $values );
456 + update_option( OptionsProvider::OPTION_NAME_PACKETERY_ADVANCED, $values );
527 457
528 458 $this->messageManager->flash_message( __( 'Settings saved.', 'packeta' ), MessageManager::TYPE_SUCCESS, MessageManager::RENDERER_PACKETERY, 'plugin-options' );
529 459
530 460 if ( wp_safe_redirect( $this->createLink( self::TAB_ADVANCED ) ) ) {
@@ -657,18 +587,8 @@
657 587 'after_transport_methods' => __( 'After transport methods', 'packeta' ),
658 588 ]
659 589 );
660 590
661 - $container->addCheckbox( 'hide_checkout_logo', __( 'Hide Packeta checkout logo', 'packeta' ) )
662 - ->setRequired( false )
663 - ->setDefaultValue( OptionsProvider::HIDE_CHECKOUT_LOGO_DEFAULT );
664 -
665 - $container->addCheckbox( 'auto_email_info_insertion', __( 'Automatically insert packet and pickup point information into emails', 'packeta' ) )
666 - ->setRequired( false )
667 - ->setDefaultValue( OptionsProvider::AUTO_EMAIL_INFO_INSERTION_DEFAULT )
668 - ->addCondition( Form::EQUAL, true )
669 - ->toggle( '#packetery-email-hook' );
670 -
671 591 $container->addSelect(
672 592 'email_hook',
673 593 __( 'Hook used to view information in email', 'packeta' ),
674 594 [
@@ -694,20 +614,12 @@
694 614 $container->addCheckbox( 'prices_include_tax', __( 'Prices include tax', 'packeta' ) )
695 615 ->setRequired( false )
696 616 ->setDefaultValue( OptionsProvider::PRICES_INCLUDE_TAX_DEFAULT );
697 617
698 - $container->addCheckbox( self::FORM_PICKUP_POINT_VALIDATION_ENABLED, __( 'Validate the pickup point using the API before accepting the order', 'packeta' ) )
699 - ->setRequired( false )
700 - ->setDefaultValue( OptionsProvider::PICKUP_POINT_VALIDATION_ENABLED_DEFAULT );
701 -
702 - $container->addCheckbox( 'show_consign_password_for_z_box', __( 'Show consignment code', 'packeta' ) )
703 - ->setRequired( false )
704 - ->setDefaultValue( OptionsProvider::SHOW_CONSIGN_PASSWORD_FOR_Z_BOX_DEFAULT );
705 -
706 618 $form->addSubmit( 'save', __( 'Save changes', 'packeta' ) );
707 619
708 - if ( $this->optionsProvider->has_any( OptionNames::PACKETERY ) ) {
709 - $container->setDefaults( $this->optionsProvider->getOptionsByName( OptionNames::PACKETERY ) );
620 + if ( $this->optionsProvider->has_any( OptionsProvider::OPTION_NAME_PACKETERY ) ) {
621 + $container->setDefaults( $this->optionsProvider->getOptionsByName( OptionsProvider::OPTION_NAME_PACKETERY ) );
710 622 }
711 623
712 624 return $form;
713 625 }
@@ -716,12 +628,9 @@
716 628 * Admin_init callback.
717 629 */
718 630 public function admin_init(): void {
719 631 add_filter( 'pre_update_option_packetery', [ $this, 'validatePacketeryOptions' ] );
720 -
721 - // Registered callback is called when the form is submitted.
722 632 register_setting( self::FORM_FIELDS_CONTAINER, self::FORM_FIELDS_CONTAINER, [ $this, 'sanitizePacketeryOptions' ] );
723 -
724 633 add_settings_section( 'packetery_main', __( 'Main Settings', 'packeta' ), function () {}, self::SLUG );
725 634 }
726 635
727 636 /**
@@ -745,9 +654,9 @@
745 654 if ( $control->hasErrors() === false ) {
746 655 continue;
747 656 }
748 657
749 - add_settings_error( OptionNames::PACKETERY, esc_attr( $control->getName() ), "{$control->getCaption()}: {$control->getError()}" );
658 + add_settings_error( OptionsProvider::OPTION_NAME_PACKETERY, esc_attr( $control->getName() ), "{$control->getCaption()}: {$control->getError()}" );
750 659 }
751 660 }
752 661
753 662 $apiPassword = $packeteryContainer['api_password'];
@@ -774,14 +683,8 @@
774 683 *
775 684 * @var Container $packeteryContainer
776 685 */
777 686 $packeteryContainer = $form[ self::FORM_FIELDS_CONTAINER ];
778 - if ( ! isset( $options['auto_email_info_insertion'] ) ) {
779 - $options['auto_email_info_insertion'] = false;
780 - }
781 - if ( ! isset( $options['show_consign_password_for_z_box'] ) ) {
782 - $options['show_consign_password_for_z_box'] = false;
783 - }
784 687 $packeteryContainer->setValues( $options );
785 688 if ( $form->isValid() === false ) {
786 689 foreach ( $packeteryContainer->getControls() as $control ) {
787 690 if ( $control->hasErrors() === false ) {
@@ -822,9 +725,9 @@
822 725 if ( $packeteryContainer['free_shipping_shown'] instanceof BaseControl ) {
823 726 $options['free_shipping_shown'] = (int) $packeteryContainer['free_shipping_shown']->getValue();
824 727 }
825 728
826 - $previousOptions = $this->optionsProvider->getOptionsByName( OptionNames::PACKETERY );
729 + $previousOptions = $this->optionsProvider->getOptionsByName( OptionsProvider::OPTION_NAME_PACKETERY );
827 730 if ( ! isset( $options['default_weight_enabled'] ) ) {
828 731 if ( isset( $previousOptions['default_weight'] ) ) {
829 732 $options['default_weight'] = $previousOptions['default_weight'];
830 733 } else {
@@ -840,12 +743,8 @@
840 743 }
841 744 }
842 745 }
843 746
844 - if ( $options['api_key'] === '' ) {
845 - $options[ self::FORM_PICKUP_POINT_VALIDATION_ENABLED ] = false;
846 - }
847 -
848 747 return $options;
849 748 }
850 749
851 750 /**
@@ -938,26 +837,8 @@
938 837 $advancedForm['save']->isSubmittedBy()
939 838 ) {
940 839 $advancedForm->fireEvents();
941 840 }
942 -
943 - $bugReportForm = $this->bugReportForm->createForm();
944 - if (
945 - $bugReportForm['submit'] instanceof SubmitButton &&
946 - $bugReportForm['submit']->isSubmittedBy() &&
947 - $bugReportForm->isSuccess()
948 - ) {
949 - $bugReportForm->fireEvents();
950 - }
951 -
952 - $diagnosticsLoggingForm = $this->diagnosticsLoggingFormFactory->createForm();
953 - if (
954 - $diagnosticsLoggingForm['save'] instanceof SubmitButton &&
955 - $diagnosticsLoggingForm['save']->isSubmittedBy() &&
956 - $diagnosticsLoggingForm->isSuccess()
957 - ) {
958 - $diagnosticsLoggingForm->fireEvents();
959 - }
960 841 }
961 842
962 843 /**
963 844 * Renders page.
@@ -973,15 +854,8 @@
973 854 } elseif ( $activeTab === self::TAB_ADVANCED ) {
974 855 $latteParams = [ 'form' => $this->createAdvancedForm() ];
975 856 } elseif ( $activeTab === self::TAB_GENERAL ) {
976 857 $latteParams = [ 'form' => $this->create_form() ];
977 - } elseif ( $activeTab === self::TAB_SUPPORT ) {
978 - $latteParams = [
979 - 'bugReportFormEnabled' => false,
980 - 'bugReportForm' => $this->bugReportForm->createForm(),
981 - 'diagnosticsLoggingForm' => $this->diagnosticsLoggingFormFactory->createForm(),
982 - 'hasPacketaLog' => is_file( $this->diagnosticsLogger->getPacketaLogPath() ),
983 - ];
984 858 }
985 859
986 860 if ( ! extension_loaded( 'soap' ) ) {
987 861 $latteParams['error'] = __( 'This plugin requires an active SOAP library for proper operation. Contact your web hosting administrator.', 'packeta' );
@@ -996,17 +870,8 @@
996 870 ],
997 871 get_admin_url( null, 'admin.php' )
998 872 );
999 873
1000 - $latteParams['deleteDiagnosticsLogsLink'] = add_query_arg(
1001 - [
1002 - 'page' => self::SLUG,
1003 - 'action' => DiagnosticsLogger::ACTION_DELETE_PACKETA_LOG,
1004 - 'tab' => self::TAB_SUPPORT,
1005 - ],
1006 - get_admin_url( null, 'admin.php' )
1007 - );
1008 -
1009 874 $latteParams['activeTab'] = ( $this->httpRequest->getQuery( self::PARAM_TAB ) ?? self::TAB_GENERAL );
1010 875 $latteParams['generalTabLink'] = $this->createLink();
1011 876 $latteParams['advancedTabLink'] = $this->createLink( self::TAB_ADVANCED );
1012 877 $latteParams['supportTabLink'] = $this->createLink( self::TAB_SUPPORT );
@@ -1022,9 +887,9 @@
1022 887 get_admin_url( null, 'admin.php' )
1023 888 );
1024 889
1025 890 $lastExport = null;
1026 - $lastExportOption = get_option( OptionNames::LAST_SETTINGS_EXPORT );
891 + $lastExportOption = get_option( Exporter::OPTION_LAST_SETTINGS_EXPORT );
1027 892 if ( $lastExportOption !== false ) {
1028 893 $date = DateTime::createFromFormat( DATE_ATOM, $lastExportOption );
1029 894 if ( $date !== false ) {
1030 895 $date->setTimezone( wp_timezone() );
@@ -1041,9 +906,9 @@
1041 906 $latteParams['logoZasilkovna'] = $this->urlBuilder->buildAssetUrl( 'public/images/logo-zasilkovna.svg' );
1042 907 $latteParams['logoPacketa'] = $this->urlBuilder->buildAssetUrl( 'public/images/logo-packeta.svg' );
1043 908 $advancedCarrierSettingsDescription = sprintf(
1044 909 // translators: first %s is line break, second one is e-mail address
1045 - __( 'When this feature is active, Packeta carriers will appear as separate shipping methods under WooCommerce → Settings → Shipping. After enabling or disabling this feature, you need to reconfigure your shipping methods in WooCommerce.%1$sIf you encounter any issues, please contact us at %2$s.', 'packeta' ),
910 + __( 'BETA: Once enabled, Packeta carriers will appear as separate shipping methods in WooCommerce - Settings - Shipping. After enabling this feature, you will need to set up shipping methods in WooCommerce again.%1$sThis is an experimental feature. If you experience any issues, please email us at %2$s with a description of the issue.', 'packeta' ),
1046 911 '<br>',
1047 912 '<a href="mailto:' . $this->supportEmailAddress . '">' . $this->supportEmailAddress . '</a>'
1048 913 );
1049 914 $latteParams['translations'] = [
@@ -1069,13 +934,8 @@
1069 934 ),
1070 935 'exportPluginSettings' => __( 'Export the plugin settings', 'packeta' ),
1071 936 'settingsExportDatetime' => __( 'Date and time of the last export of settings', 'packeta' ),
1072 937 'settingsNotYetExported' => __( 'The settings have not been exported yet.', 'packeta' ),
1073 - 'bugReportTitle' => $this->wpAdapter->__( 'Report a bug', 'packeta' ),
1074 - 'bugReportDescription' => $this->wpAdapter->__( 'If you encounter any issues with the Packeta plugin, please use this form to report them. Your message will be sent to our technical support team along with system information.', 'packeta' ),
1075 - 'bugReportInfo' => $this->wpAdapter->__( 'We will also zip the following files and attach them to the email, if available: WooCommerce Log, Diagnostics Log, Tracy Log, Wordpress Debug Log, WooCommerce System Status Log, Packeta plugin settings export.', 'packeta' ),
1076 - 'exportSettingsTitle' => $this->wpAdapter->__( 'Export settings', 'packeta' ),
1077 - 'diagnosticsLoggingTitle' => $this->wpAdapter->__( 'Diagnostics logging', 'packeta' ),
1078 938 'senderDescription' => sprintf(
1079 939 /* translators: 1: emphasis start 2: emphasis end 3: client section link start 4: client section link end */
1080 940 esc_html__( 'Fill here %1$ssender label%2$s - you will find it in %3$sclient section%4$s - user information - field \'Indication\'.', 'packeta' ),
1081 941 '<strong>',
@@ -1098,21 +958,8 @@
1098 958 'autoOrderStatusChangeDescription' => __( 'Change order status after data submission to Packeta.', 'packeta' ),
1099 959 'freeShippingTextDescription' => __( 'If enabled, "FREE" will be displayed after the name of the shipping method, if free shipping is applied.', 'packeta' ),
1100 960 'orderStatusChangeSettings' => __( 'Order status change settings', 'packeta' ),
1101 961 'dimensionsLabel' => __( 'Dimensions', 'packeta' ),
1102 - 'autoEmailInfoInsertionDescription' => __( 'When enabled, the plugin automatically adds packet and pickup point details to emails. Disable this if you prefer to insert them manually using shortcodes.', 'packeta' ),
1103 - 'diagnosticsLoggingDescription' => $this->wpAdapter->__( 'If some plugin functionality is not working correctly, you can enable diagnostic logging. After enabling it, please repeat the action that is not working as expected. The log will then record important function calls, passed parameters, and their results. Once you have reproduced the issue, disable diagnostic logging again. This information can help developers troubleshoot the problem. You can find the log in the packeta.log file, which is stored by default in wp-content/plugins/packeta/log.', 'packeta' ),
1104 - 'diagnosticsLoggingLink' => $this->wpAdapter->__( 'Delete log', 'packeta' ),
1105 - 'bugReportScreenshotsTitle' => $this->wpAdapter->__( 'If possible, please provide screenshots showing the problem. You can do it this way:', 'packeta' ),
1106 - 'bugReportScreenshotsFirstStep' => sprintf(
1107 - /* translators: 1: ImgBB link start 2: ImgBB link end */
1108 - $this->wpAdapter->__( 'Go to %1$sImgBB%2$s and upload your screenshots.', 'packeta' ),
1109 - '<a href="https://imgbb.com/" target="_blank">',
1110 - '</a>'
1111 - ),
1112 - 'bugReportScreenshotsSecondStep' => $this->wpAdapter->__( 'Copy the link(s) generated after uploading', 'packeta' ),
1113 - 'bugReportScreenshotsThirdStep' => $this->wpAdapter->__( 'Paste the link(s) into your message.', 'packeta' ),
1114 - 'message' => $this->wpAdapter->__( 'Message', 'packeta' ),
1115 962 ];
1116 963
1117 964 $this->latteEngine->render( PACKETERY_PLUGIN_DIR . '/template/options/page.latte', $latteParams );
1118 965 }