PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.11
Booking for Appointments and Events Calendar – Amelia v1.2.11
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Infrastructure / WP / InstallActions / ActivationSettingsHook.php
ameliabooking / src / Infrastructure / WP / InstallActions Last commit date
DB 1 year ago ActivationDatabaseHook.php 2 years ago ActivationMultisite.php 7 years ago ActivationNewSiteMultisite.php 7 years ago ActivationRolesHook.php 7 years ago ActivationSettingsHook.php 1 year ago AutoUpdateHook.php 3 years ago DeleteDatabaseHook.php 2 years ago DeletionMultisite.php 5 years ago
ActivationSettingsHook.php
1729 lines
1 <?php
2 /**
3 * Settings hook for activation
4 */
5
6 namespace AmeliaBooking\Infrastructure\WP\InstallActions;
7
8 use AmeliaBooking\Domain\Services\Settings\SettingsService;
9 use AmeliaBooking\Domain\ValueObjects\String\Token;
10 use AmeliaBooking\Infrastructure\Services\Frontend\LessParserService;
11 use AmeliaBooking\Infrastructure\WP\SettingsService\SettingsStorage;
12 use Exception;
13
14 /**
15 * Class ActivationSettingsHook
16 *
17 * @package AmeliaBooking\Infrastructure\WP\InstallActions
18 */
19 class ActivationSettingsHook
20 {
21 /**
22 * Initialize the plugin
23 *
24 * @throws Exception
25 */
26 public static function init()
27 {
28 self::initDBSettings();
29
30 self::initGeneralSettings();
31
32 self::initCompanySettings();
33
34 self::initNotificationsSettings();
35
36 self::initDaysOffSettings();
37
38 self::initWeekScheduleSettings();
39
40 self::initGoogleCalendarSettings();
41
42 self::initOutlookCalendarSettings();
43
44 self::initPaymentsSettings();
45
46 self::initActivationSettings();
47
48 self::initCustomizationSettings();
49
50 self::initLabelsSettings();
51
52 self::initRolesSettings();
53
54 self::initAppointmentsSettings();
55
56 self::initWebHooksSettings();
57
58 self::initZoomSettings();
59
60 self::initApiKeySettings();
61
62 self::initLessonSpaceSettings();
63
64 self::initIcsSettings();
65
66 self::initFacebookPixelSettings();
67
68 self::initGoogleAnalyticsSettings();
69
70 self::initGoogleTagSettings();
71 }
72
73 /**
74 * @param string $category
75 * @param array $settings
76 * @param bool $replace
77 */
78 public static function initSettings($category, $settings, $replace = false)
79 {
80 $settingsService = new SettingsService(new SettingsStorage());
81
82 if (!$settingsService->getCategorySettings($category)) {
83 $settingsService->setCategorySettings(
84 $category,
85 []
86 );
87 }
88
89 foreach ($settings as $key => $value) {
90 if ($replace || null === $settingsService->getSetting($category, $key)) {
91 $settingsService->setSetting(
92 $category,
93 $key,
94 $value
95 );
96 }
97 }
98 }
99
100 /**
101 * Init General Settings
102 *
103 * @param array $savedSettings
104 *
105 * @return array
106 */
107 public static function getDefaultGeneralSettings($savedSettings)
108 {
109 return [
110 'timeSlotLength' => 1800,
111 'serviceDurationAsSlot' => false,
112 'bufferTimeInSlot' => true,
113 'defaultAppointmentStatus' => 'approved',
114 'minimumTimeRequirementPriorToBooking' => 0,
115 'minimumTimeRequirementPriorToCanceling' => 0,
116 'minimumTimeRequirementPriorToRescheduling' =>
117 isset($savedSettings['minimumTimeRequirementPriorToCanceling']) &&
118 !isset($savedSettings['minimumTimeRequirementPriorToRescheduling']) ?
119 $savedSettings['minimumTimeRequirementPriorToCanceling'] : 0,
120 'numberOfDaysAvailableForBooking' => SettingsService::NUMBER_OF_DAYS_AVAILABLE_FOR_BOOKING,
121 'backendSlotsDaysInFuture' => SettingsService::NUMBER_OF_DAYS_AVAILABLE_FOR_BOOKING,
122 'backendSlotsDaysInPast' => SettingsService::NUMBER_OF_DAYS_AVAILABLE_FOR_BOOKING,
123 'phoneDefaultCountryCode' => 'auto',
124 'ipLocateApiKey' => '',
125 'requiredPhoneNumberField' => false,
126 'requiredEmailField' => true,
127 'itemsPerPage' => 12,
128 'itemsPerPageBackEnd' => 30,
129 'appointmentsPerPage' => 100,
130 'eventsPerPage' => 100,
131 'servicesPerPage' => 100,
132 'customersFilterLimit' => 100,
133 'calendarEmployeesPreselected' => 0,
134 'gMapApiKey' => '',
135 'addToCalendar' => true,
136 'defaultPageOnBackend' => 'Dashboard',
137 'showClientTimeZone' => false,
138 'redirectUrlAfterAppointment' => '',
139 'customFieldsUploadsPath' => '',
140 'runInstantPostBookingActions' => false,
141 'sortingPackages' => 'nameAsc',
142 'sortingServices' => 'nameAsc',
143 'calendarLocaleSubstitutes' => [
144 ],
145 'googleRecaptcha' => [
146 'enabled' => false,
147 'invisible' => true,
148 'siteKey' => '',
149 'secret' => '',
150 ],
151 'usedLanguages' => [],
152 ];
153 }
154
155 /**
156 * Get General Settings
157 */
158 private static function initGeneralSettings()
159 {
160 $settingsService = new SettingsService(new SettingsStorage());
161
162 $savedSettings = $settingsService->getCategorySettings('general');
163
164 $settings = self::getDefaultGeneralSettings($savedSettings);
165
166 $settings['backLink'] = self::getBackLinkSetting();
167
168 self::initSettings('general', $settings);
169
170 self::setNewSettingsToExistingSettings(
171 'general',
172 [
173 ['backLink', 'url'],
174 ],
175 $settings
176 );
177 }
178
179 /**
180 * Init DB Settings
181 */
182 private static function initDBSettings()
183 {
184 $settings = [
185 'mysqliEnabled' => false,
186 'pdoEmulatePrepares' => false,
187 'pdoBigSelect' => false,
188 'ssl' => [
189 'enable' => false,
190 'key' => null,
191 'cert' => null,
192 'ca' => null,
193 'verify_cert' => null,
194 ],
195 'wpTablesPrefix' => '',
196 'port' => 3306
197 ];
198
199 self::initSettings('db', $settings);
200 }
201
202 /**
203 * Init Company Settings
204 */
205 private static function initCompanySettings()
206 {
207
208 $settings = [
209 'pictureFullPath' => '',
210 'pictureThumbPath' => '',
211 'name' => '',
212 'address' => '',
213 'phone' => '',
214 'countryPhoneIso' => '',
215 'website' => '',
216 'translations' => '',
217 ];
218
219 self::initSettings('company', $settings);
220 }
221
222 /**
223 * Get Notification Settings
224 *
225 * @param array $savedSettings
226 *
227 * @return array
228 */
229 public static function getDefaultNotificationsSettings($savedSettings)
230 {
231 return [
232 'mailService' => 'php',
233 'smtpHost' => '',
234 'smtpPort' => '',
235 'smtpSecure' => 'ssl',
236 'smtpUsername' => '',
237 'smtpPassword' => '',
238 'mailgunApiKey' => '',
239 'mailgunDomain' => '',
240 'mailgunEndpoint' => '',
241 'senderName' => '',
242 'senderEmail' => '',
243 'notifyCustomers' => true,
244 'sendAllCF' => true,
245 'smsAlphaSenderId' => 'Amelia',
246 'smsSignedIn' => false,
247 'smsApiToken' => '',
248 'bccEmail' => '',
249 'bccSms' => '',
250 'emptyPackageEmployees' => '',
251 'smsBalanceEmail' => ['enabled' => false, 'minimum' => 0, 'email' => ''],
252 'cancelSuccessUrl' => '',
253 'cancelErrorUrl' => '',
254 'approveSuccessUrl' => '',
255 'approveErrorUrl' => '',
256 'rejectSuccessUrl' => '',
257 'rejectErrorUrl' => '',
258 'breakReplacement' => '<br>',
259 'pendingReminder' => false,
260 'sendInvoice' => false,
261 'whatsAppEnabled' =>
262 $savedSettings &&
263 !empty($savedSettings['whatsAppPhoneID']) &&
264 !empty($savedSettings['whatsAppAccessToken']) &&
265 !empty($savedSettings['whatsAppBusinessID']),
266 'whatsAppPhoneID' => '',
267 'whatsAppAccessToken' => '',
268 'whatsAppBusinessID' => '',
269 'whatsAppLanguage' => '',
270 'whatsAppReplyEnabled' => false,
271 'whatsAppReplyMsg' => 'Dear %customer_full_name%,
272 This message does not have an option for responding. If you need additional information about your booking, please contact us at %company_phone%',
273 'whatsAppReplyToken' => (new Token(null, 20))->getValue(),
274 ];
275 }
276
277 /**
278 * Init Notification Settings
279 */
280 private static function initNotificationsSettings()
281 {
282 $settingsService = new SettingsService(new SettingsStorage());
283
284 $savedSettings = $settingsService->getCategorySettings('notifications');
285
286 $settings = self::getDefaultNotificationsSettings($savedSettings);
287
288 self::initSettings('notifications', $settings);
289 }
290
291 /**
292 * Init Days Off Settings
293 */
294 private static function initDaysOffSettings()
295 {
296 self::initSettings('daysOff', []);
297 }
298
299 /**
300 * Init Work Schedule Settings
301 */
302 private static function initWeekScheduleSettings()
303 {
304 self::initSettings(
305 'weekSchedule',
306 [
307 [
308 'day' => 'Monday',
309 'time' => ['09:00', '17:00'],
310 'breaks' => [],
311 'periods' => []
312 ],
313 [
314 'day' => 'Tuesday',
315 'time' => ['09:00', '17:00'],
316 'breaks' => [],
317 'periods' => []
318 ],
319 [
320 'day' => 'Wednesday',
321 'time' => ['09:00', '17:00'],
322 'breaks' => [],
323 'periods' => []
324 ],
325 [
326 'day' => 'Thursday',
327 'time' => ['09:00', '17:00'],
328 'breaks' => [],
329 'periods' => []
330 ],
331 [
332 'day' => 'Friday',
333 'time' => ['09:00', '17:00'],
334 'breaks' => [],
335 'periods' => []
336 ],
337 [
338 'day' => 'Saturday',
339 'time' => [],
340 'breaks' => [],
341 'periods' => []
342 ],
343 [
344 'day' => 'Sunday',
345 'time' => [],
346 'breaks' => [],
347 'periods' => []
348 ]
349 ]
350 );
351 }
352
353 /**
354 * Init Google Calendar Settings
355 */
356 private static function initGoogleCalendarSettings()
357 {
358 $settingsService = new SettingsService(new SettingsStorage());
359
360 $savedSettings = $settingsService->getCategorySettings('googleCalendar');
361
362 $settings = [
363 'clientID' => '',
364 'clientSecret' => '',
365 'redirectURI' => AMELIA_SITE_URL . '/wp-admin/admin.php?page=wpamelia-employees',
366 'showAttendees' => false,
367 'insertPendingAppointments' => false,
368 'addAttendees' => false,
369 'sendEventInvitationEmail' => false,
370 'removeGoogleCalendarBusySlots' => false,
371 'maximumNumberOfEventsReturned' => 50,
372 'eventTitle' => '%service_name%',
373 'eventDescription' => '',
374 'includeBufferTimeGoogleCalendar' => false,
375 'status' => 'tentative',
376 'enableGoogleMeet' => false,
377 'title' => [
378 'appointment' => $savedSettings && !empty($savedSettings['eventTitle']) ?
379 $savedSettings['eventTitle'] : '%service_name%',
380 'event' => '%event_name%'
381 ],
382 'description' => [
383 'appointment' => $savedSettings && !empty($savedSettings['eventDescription']) ?
384 $savedSettings['eventDescription'] : '',
385 'event' => ''
386 ],
387 ];
388
389 self::initSettings('googleCalendar', $settings);
390 }
391
392 /**
393 * Init Outlook Calendar Settings
394 */
395 private static function initOutlookCalendarSettings()
396 {
397 $settingsService = new SettingsService(new SettingsStorage());
398
399 $savedSettings = $settingsService->getCategorySettings('outlookCalendar');
400
401 $settings = [
402 'clientID' => '',
403 'clientSecret' => '',
404 'redirectURI' => AMELIA_SITE_URL . '/wp-admin/',
405 'insertPendingAppointments' => false,
406 'addAttendees' => false,
407 'sendEventInvitationEmail' => false,
408 'removeOutlookCalendarBusySlots' => false,
409 'maximumNumberOfEventsReturned' => 50,
410 'eventTitle' => '%service_name%',
411 'eventDescription' => '',
412 'includeBufferTimeOutlookCalendar' => false,
413 'title' => [
414 'appointment' => $savedSettings && !empty($savedSettings['eventTitle']) ?
415 $savedSettings['eventTitle'] : '%service_name%',
416 'event' => '%event_name%'
417 ],
418 'description' => [
419 'appointment' => $savedSettings && !empty($savedSettings['eventDescription']) ?
420 $savedSettings['eventDescription'] : '',
421 'event' => ''
422 ],
423 ];
424
425 self::initSettings('outlookCalendar', $settings);
426 }
427
428 /**
429 * Init Zoom Settings
430 */
431 private static function initZoomSettings()
432 {
433 $settingsService = new SettingsService(new SettingsStorage());
434
435 $savedSettings = $settingsService->getCategorySettings('zoom');
436
437 $settings = [
438 'enabled' => true,
439 'apiKey' => '',
440 'apiSecret' => '',
441 'meetingTitle' => '%reservation_name%',
442 'meetingAgenda' => '%reservation_description%',
443 'pendingAppointmentsMeetings' => false,
444 'maxUsersCount' => 300,
445 's2sEnabled' => true,
446 'accountId' => '',
447 'clientId' => '',
448 'clientSecret' => '',
449 'accessToken' => '',
450 ];
451
452 self::initSettings('zoom', $settings);
453 }
454
455
456 /**
457 * Init Api Key Settings
458 */
459 private static function initApiKeySettings()
460 {
461 $settings = [
462 'apiKeys' => []
463 ];
464
465 self::initSettings('apiKeys', $settings);
466 }
467
468 /**
469 * Init Lesson Space Settings
470 */
471 private static function initLessonSpaceSettings()
472 {
473 $settings = [
474 'enabled' => true,
475 'apiKey' => '',
476 'spaceNameAppointments' => '%reservation_name%',
477 'spaceNameEvents' => '%reservation_name%',
478 'pendingAppointments' => false,
479 'companyId' => ''
480 ];
481
482 self::initSettings('lessonSpace', $settings);
483 }
484
485 /**
486 * Init FacebookPixel Settings
487 */
488 private static function initFacebookPixelSettings()
489 {
490 $settings = [
491 'id' => '',
492 'tracking' => [
493 'appointment' => [],
494 'event' => [],
495 'package' => [],
496 ],
497 ];
498
499 self::initSettings('facebookPixel', $settings);
500 }
501
502 /**
503 * Init Google Analytics Settings
504 */
505 private static function initGoogleAnalyticsSettings()
506 {
507 $settings = [
508 'id' => '',
509 'tracking' => [
510 'appointment' => [],
511 'event' => [],
512 'package' => [],
513 ],
514 ];
515
516 self::initSettings('googleAnalytics', $settings);
517 }
518
519 /**
520 * Init GoogleTag Settings
521 */
522 private static function initGoogleTagSettings()
523 {
524 $settings = [
525 'id' => '',
526 'tracking' => [
527 'appointment' => [],
528 'event' => [],
529 'package' => [],
530 ],
531 ];
532
533 self::initSettings('googleTag', $settings);
534 }
535
536 /**
537 * Init Ics Settings
538 */
539 private static function initIcsSettings()
540 {
541 $settingsService = new SettingsService(new SettingsStorage());
542
543 $savedSettings = $settingsService->getCategorySettings('general');
544
545 $settings = [
546 'sendIcsAttachment' => isset($savedSettings['sendIcsAttachment']) ? $savedSettings['sendIcsAttachment'] : false,
547 'sendIcsAttachmentPending' => false,
548 'description' => [
549 'appointment' => '',
550 'event' => '',
551 'translations' => [
552 'appointment' => null,
553 'event' => null,
554 ],
555 ],
556 ];
557
558 self::initSettings('ics', $settings);
559 }
560
561 /**
562 * Get Payments Settings
563 *
564 * @param array $savedSettings
565 *
566 * @return array
567 */
568 public static function getDefaultPaymentsSettings($savedSettings)
569 {
570 return [
571 'currency' => 'USD',
572 'symbol' => '$',
573 'priceSymbolPosition' => 'before',
574 'priceNumberOfDecimals' => 2,
575 'priceSeparator' => 1,
576 'hideCurrencySymbolFrontend' => false,
577 'defaultPaymentMethod' => 'onSite',
578 'onSite' => true,
579 'cart' => false,
580 'coupons' => true,
581 'couponsCaseInsensitive' => false,
582 'paymentLinks' => [
583 'enabled' => false,
584 'changeBookingStatus' => false,
585 'redirectUrl' => AMELIA_SITE_URL
586 ],
587 'taxes' => [
588 'enabled' => false,
589 'excluded' => true,
590 ],
591 'payPal' => [
592 'enabled' => false,
593 'sandboxMode' => false,
594 'liveApiClientId' => '',
595 'liveApiSecret' => '',
596 'testApiClientId' => '',
597 'testApiSecret' => '',
598 'description' => [
599 'enabled' => false,
600 'appointment' => '',
601 'package' => '',
602 'event' => '',
603 'cart' => '',
604 ],
605 ],
606 'stripe' => [
607 'enabled' => false,
608 'testMode' => false,
609 'livePublishableKey' => '',
610 'liveSecretKey' => '',
611 'testPublishableKey' => '',
612 'testSecretKey' => '',
613 'address' => false,
614 'description' => [
615 'enabled' => false,
616 'appointment' => '',
617 'package' => '',
618 'event' => '',
619 'cart' => '',
620 ],
621 'metaData' => [
622 'enabled' => false,
623 'appointment' => null,
624 'package' => null,
625 'event' => null,
626 'cart' => '',
627 ],
628 'manualCapture' => false,
629 'returnUrl' => '',
630 'connect' => [
631 'enabled' => false,
632 'method' => 'transfer',
633 'amount' => 0,
634 'type' => 'percentage',
635 ],
636 ],
637 'wc' => [
638 'enabled' => false,
639 'productId' => '',
640 'onSiteIfFree' => false,
641 'page' => 'cart',
642 'dashboard' => true,
643 'checkoutData' => [
644 'appointment' => '',
645 'package' => '',
646 'event' => '',
647 'cart' => '',
648 'translations' => [
649 'appointment' => null,
650 'event' => null,
651 'package' => null,
652 'cart' => '',
653 ],
654 ],
655 'skipCheckoutGetValueProcessing' => isset($savedSettings['wc']['skipCheckoutGetValueProcessing']) ?
656 $savedSettings['wc']['skipCheckoutGetValueProcessing'] : true,
657 'skipGetItemDataProcessing' => !isset($savedSettings['wc']),
658 'redirectPage' => 1,
659 'bookMultiple' => false,
660 'bookUnpaid' => empty($savedSettings['wc']),
661 'rules' => [
662 'appointment' => [
663 [
664 'order' => 'on-hold',
665 'booking' => 'default',
666 'payment' => 'paid',
667 'update' => false,
668 ],
669 [
670 'order' => 'processing',
671 'booking' => 'default',
672 'payment' => 'paid',
673 'update' => false,
674 ],
675 [
676 'order' => 'completed',
677 'booking' => 'default',
678 'payment' => 'paid',
679 'update' => false,
680 ],
681 ],
682 'package' => [
683 [
684 'order' => 'on-hold',
685 'booking' => 'approved',
686 'payment' => 'paid',
687 'update' => false,
688 ],
689 [
690 'order' => 'processing',
691 'booking' => 'approved',
692 'payment' => 'paid',
693 'update' => false,
694 ],
695 [
696 'order' => 'completed',
697 'booking' => 'approved',
698 'payment' => 'paid',
699 'update' => false,
700 ],
701 ],
702 'event' => [
703 [
704 'order' => 'on-hold',
705 'booking' => 'approved',
706 'payment' => 'paid',
707 'update' => false,
708 ],
709 [
710 'order' => 'processing',
711 'booking' => 'approved',
712 'payment' => 'paid',
713 'update' => false,
714 ],
715 [
716 'order' => 'completed',
717 'booking' => 'approved',
718 'payment' => 'paid',
719 'update' => false,
720 ],
721 ],
722 ],
723 ],
724 'mollie' => [
725 'enabled' => false,
726 'testMode' => false,
727 'liveApiKey' => '',
728 'testApiKey' => '',
729 'description' => [
730 'enabled' => false,
731 'appointment' => '',
732 'package' => '',
733 'event' => '',
734 'cart' => '',
735 ],
736 'metaData' => [
737 'enabled' => false,
738 'appointment' => null,
739 'package' => null,
740 'event' => null,
741 'cart' => '',
742 ],
743 'method' => [],
744 'cancelBooking' => false
745 ],
746 'razorpay' => [
747 'enabled' => false,
748 'testMode' => false,
749 'liveKeyId' => '',
750 'liveKeySecret' => '',
751 'testKeyId' => '',
752 'testKeySecret' => '',
753 'description' => [
754 'enabled' => false,
755 'appointment' => '',
756 'package' => '',
757 'event' => '',
758 'cart' => '',
759 ],
760 'name' => [
761 'enabled' => false,
762 'appointment' => '',
763 'package' => '',
764 'event' => '',
765 'cart' => '',
766 ],
767 'metaData' => [
768 'enabled' => false,
769 'appointment' => null,
770 'package' => null,
771 'event' => null,
772 'cart' => '',
773 ],
774 ],
775 'square' => [
776 'enabled' => false,
777 'locationId' => '',
778 'accessToken' => '',
779 'testMode' => AMELIA_MIDDLEWARE_IS_SANDBOX,
780 'description' => [
781 'enabled' => false,
782 'appointment' => '',
783 'package' => '',
784 'event' => '',
785 'cart' => ''
786 ],
787 'metaData' => [
788 'enabled' => false,
789 'appointment' => null,
790 'package' => null,
791 'event' => null,
792 'cart' => null
793 ],
794 ],
795 ];
796 }
797
798 /**
799 * Init Payments Settings
800 */
801 private static function initPaymentsSettings()
802 {
803 $settingsService = new SettingsService(new SettingsStorage());
804
805 $savedSettings = $settingsService->getCategorySettings('payments');
806
807 $settings = self::getDefaultPaymentsSettings($savedSettings);
808
809 self::initSettings('payments', $settings);
810
811 self::setNewSettingsToExistingSettings(
812 'payments',
813 [
814 ['stripe', 'connect'],
815 ['stripe', 'description'],
816 ['stripe', 'description', 'package'],
817 ['stripe', 'description', 'cart'],
818 ['stripe', 'metaData'],
819 ['stripe', 'metaData', 'package'],
820 ['stripe', 'metaData', 'cart'],
821 ['stripe', 'manualCapture'],
822 ['stripe', 'returnUrl'],
823 ['stripe', 'address'],
824 ['payPal', 'description'],
825 ['payPal', 'description', 'package'],
826 ['payPal', 'description', 'cart'],
827 ['wc', 'onSiteIfFree'],
828 ['wc', 'page'],
829 ['wc', 'dashboard'],
830 ['wc', 'skipCheckoutGetValueProcessing'],
831 ['wc', 'skipGetItemDataProcessing'],
832 ['wc', 'rules'],
833 ['wc', 'redirectPage'],
834 ['wc', 'bookMultiple'],
835 ['wc', 'bookUnpaid'],
836 ['wc', 'checkoutData'],
837 ['wc', 'checkoutData', 'package'],
838 ['wc', 'checkoutData', 'cart'],
839 ['wc', 'checkoutData', 'translations'],
840 ['wc', 'checkoutData', 'translations', 'appointment'],
841 ['wc', 'checkoutData', 'translations', 'event'],
842 ['wc', 'checkoutData', 'translations', 'package'],
843 ['wc', 'checkoutData', 'translations', 'cart'],
844 ['razorpay', 'name'],
845 ['razorpay', 'description', 'cart'],
846 ['razorpay', 'metaData', 'cart'],
847 ['razorpay', 'name', 'cart'],
848 ['mollie', 'description', 'cart'],
849 ['mollie', 'metaData', 'cart'],
850 ['mollie', 'cancelBooking'],
851 ['square', 'enabled'],
852 ['square', 'description', 'cart'],
853 ['square', 'metaData', 'cart'],
854 ['square', 'locationId'],
855 ['square', 'accessToken'],
856 ['square', 'testMode'],
857 ],
858 $settings
859 );
860 }
861
862 /**
863 * Init Purchase Code Settings
864 */
865 private static function initActivationSettings()
866 {
867 $settingsService = new SettingsService(new SettingsStorage());
868
869 $savedSettings = $settingsService->getCategorySettings('activation');
870
871 $isNewInstallation = empty($savedSettings);
872
873 $settings = [
874 'showActivationSettings' => true,
875 'active' => false,
876 'purchaseCodeStore' => '',
877 'envatoTokenEmail' => '',
878 'version' => '',
879 'deleteTables' => false,
880 'showAmeliaPromoCustomizePopup' => true,
881 'showAmeliaSurvey' => true,
882 'stash' => false,
883 'responseErrorAsConflict' => $savedSettings ? false : true,
884 'hideUnavailableFeatures' => false,
885 'disableUrlParams' => $savedSettings ? false : true,
886 'enableThriveItems' => false,
887 'customUrl' => [
888 'enabled' => false,
889 'pluginPath' => '/wp-content/plugins/ameliabooking/',
890 'ajaxPath' => '/wp-admin/admin-ajax.php',
891 'uploadsPath' => '',
892 ],
893 'v3RelativePath' => false,
894 'v3AsyncLoading' => false,
895 'premiumBannerVisibility' => true,
896 'dismissibleBannerVisibility' => true,
897 ];
898
899 self::initSettings('activation', $settings);
900
901 $savedSettings['showAmeliaPromoCustomizePopup'] = true;
902
903 $savedSettings['isNewInstallation'] = $isNewInstallation;
904
905 self::initSettings('activation', $savedSettings, true);
906 }
907
908 /**
909 * Init Customization Settings
910 *
911 * @throws Exception
912 */
913 private static function initCustomizationSettings()
914 {
915 $settingsService = new SettingsService(new SettingsStorage());
916
917 $settings = $settingsService->getCategorySettings('customization');
918 unset($settings['hash']);
919
920 $lessParserService = new LessParserService(
921 AMELIA_PATH . '/assets/less/frontend/amelia-booking.less',
922 AMELIA_UPLOADS_PATH . '/amelia/css',
923 $settingsService
924 );
925
926 if (!$settings) {
927 $settings = [
928 'primaryColor' => '#1A84EE',
929 'primaryGradient1' => '#1A84EE',
930 'primaryGradient2' => '#0454A2',
931 'textColor' => '#354052',
932 'textColorOnBackground' => '#FFFFFF',
933 'font' => 'Amelia Roboto',
934 'fontUrl' => '',
935 'customFontFamily' => '',
936 'customFontSelected' => 'unselected',
937 'useGenerated' => false,
938 ];
939 }
940
941 if (!isset($settings['fontUrl'])) {
942 $settings = array_merge(
943 $settings,
944 [
945 'fontUrl' => ''
946 ]
947 );
948 }
949
950 if (!isset($settings['customFontFamily'])) {
951 $settings = array_merge(
952 $settings,
953 [
954 'customFontFamily' => ''
955 ]
956 );
957 }
958
959 if (!isset($settings['customFontSelected'])) {
960 $settings = array_merge(
961 $settings,
962 [
963 'customFontSelected' => 'unselected'
964 ]
965 );
966 }
967
968 if (!isset($settings['useGlobalColors'])) {
969 $settings = array_merge(
970 $settings,
971 [
972 'useGlobalColors' => [
973 'stepByStepForm' => false,
974 'catalogForm' => false,
975 'eventListForm' => false,
976 'eventCalendarForm' => false,
977 ]
978 ]
979 );
980 }
981
982 if (!isset($settings['globalColors'])) {
983 $settings = array_merge(
984 $settings,
985 [
986 'globalColors' => [
987 'primaryColor' => $settings['primaryColor'],
988 'formBackgroundColor' => '#FFFFFF',
989 'formTextColor' => $settings['textColor'],
990 'formInputColor' => '#FFFFFF',
991 'formInputTextColor' => $settings['textColor'],
992 'formDropdownColor' => '#FFFFFF',
993 'formDropdownTextColor' => $settings['textColor'],
994 'formGradientColor1' => $settings['primaryGradient1'],
995 'formGradientColor2' => $settings['primaryGradient2'],
996 'formGradientAngle' => 135,
997 'formImageColor' => $settings['primaryColor'],
998 'textColorOnBackground' => $settings['textColorOnBackground'],
999 ]
1000 ]
1001 );
1002 }
1003
1004 if (empty($settings['primaryColor'])) {
1005 $settings['primaryColor']= 'rgba(255,255,255,0)';
1006 $settings['globalColors']['primaryColor'] = 'rgba(255,255,255,0)';
1007 $settings['globalColors']['formImageColor'] = 'rgba(255,255,255,0)';
1008 }
1009
1010 if (empty($settings['primaryGradient1'])) {
1011 $settings['primaryGradient1']= 'rgba(255,255,255,0)';
1012 $settings['globalColors']['formGradientColor1'] = 'rgba(255,255,255,0)';
1013 }
1014
1015 if (empty($settings['primaryGradient2'])) {
1016 $settings['primaryGradient2']= 'rgba(255,255,255,0)';
1017 $settings['globalColors']['formGradientColor2'] = 'rgba(255,255,255,0)';
1018 }
1019
1020 if (empty($settings['textColor'])) {
1021 $settings['textColor']= 'rgba(255,255,255,0)';
1022 $settings['globalColors']['formTextColor'] = 'rgba(255,255,255,0)';
1023 $settings['globalColors']['formInputTextColor'] = 'rgba(255,255,255,0)';
1024 $settings['globalColors']['formDropdownTextColor'] = 'rgba(255,255,255,0)';
1025 }
1026
1027 if (empty($settings['textColorOnBackground'])) {
1028 $settings['textColorOnBackground']= 'rgba(255,255,255,0)';
1029 $settings['globalColors']['textColorOnBackground'] = 'rgba(255,255,255,0)';
1030 }
1031
1032 $globalColors = $settings['globalColors'];
1033
1034 $settingsForm = [];
1035
1036 if (isset($settings['forms']['stepByStepForm'])) {
1037 $useGlobalSbs = $settings['useGlobalColors']['stepByStepForm'];
1038 $colorSbsSsf = $settings['forms']['stepByStepForm']['selectServiceForm']['globalSettings'];
1039 $colorSbsCf = $settings['forms']['stepByStepForm']['calendarDateTimeForm']['globalSettings'];
1040 $colorSbsRsf = $settings['forms']['stepByStepForm']['recurringSetupForm']['globalSettings'];
1041 $colorSbsRdf = $settings['forms']['stepByStepForm']['recurringDatesForm']['globalSettings'];
1042 $colorSbsCaf = $settings['forms']['stepByStepForm']['confirmBookingForm']['appointment']['globalSettings'];
1043 $colorSbsSpf = $settings['forms']['stepByStepForm']['selectPackageForm']['globalSettings'];
1044 $colorSbsPif = $settings['forms']['stepByStepForm']['packageInfoForm']['globalSettings'];
1045 $colorSbsPsf = $settings['forms']['stepByStepForm']['packageSetupForm']['globalSettings'];
1046 $colorSbsPlf = $settings['forms']['stepByStepForm']['packageListForm']['globalSettings'];
1047 $colorSbsCpf = $settings['forms']['stepByStepForm']['confirmBookingForm']['package']['globalSettings'];
1048 $colorSbsCoa = $settings['forms']['stepByStepForm']['congratulationsForm']['appointment']['globalSettings'];
1049 $colorSbsCop = $settings['forms']['stepByStepForm']['congratulationsForm']['package']['globalSettings'];
1050 $settingsForm = array_merge(
1051 $settingsForm,
1052 [
1053 'sbs-ssf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] :$colorSbsSsf['formBackgroundColor'],
1054 'sbs-ssf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsSsf['formTextColor'],
1055 'sbs-ssf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsSsf['formInputColor'],
1056 'sbs-ssf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsSsf['formInputTextColor'],
1057 'sbs-ssf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsSsf['formDropdownColor'],
1058 'sbs-ssf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsSsf['formDropdownTextColor'],
1059 'sbs-cf-gradient1' => $useGlobalSbs ? $globalColors['formGradientColor1'] : $colorSbsCf['formGradientColor1'],
1060 'sbs-cf-gradient2' => $useGlobalSbs ? $globalColors['formGradientColor2'] : $colorSbsCf['formGradientColor2'],
1061 'sbs-cf-gradient-angle' => $useGlobalSbs ? $globalColors['formGradientAngle'].'deg' : $colorSbsCf['formGradientAngle'].'deg',
1062 'sbs-cf-text-color' => $useGlobalSbs ? $globalColors['textColorOnBackground'] : $colorSbsCf['formTextColor'],
1063 'sbs-rsf-gradient1' => $useGlobalSbs ? $globalColors['formGradientColor1'] : $colorSbsRsf['formGradientColor1'],
1064 'sbs-rsf-gradient2' => $useGlobalSbs ? $globalColors['formGradientColor2'] : $colorSbsRsf['formGradientColor2'],
1065 'sbs-rsf-gradient-angle' => $useGlobalSbs ? $globalColors['formGradientAngle'].'deg' : $colorSbsRsf['formGradientAngle'].'deg',
1066 'sbs-rsf-text-color' => $useGlobalSbs ? $globalColors['textColorOnBackground'] : $colorSbsRsf['formTextColor'],
1067 'sbs-rsf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsRsf['formInputColor'],
1068 'sbs-rsf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsRsf['formInputTextColor'],
1069 'sbs-rsf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsRsf['formDropdownColor'],
1070 'sbs-rsf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsRsf['formDropdownTextColor'],
1071 'sbs-rdf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsRdf['formBackgroundColor'],
1072 'sbs-rdf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsRdf['formTextColor'],
1073 'sbs-rdf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsRdf['formInputColor'],
1074 'sbs-rdf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsRdf['formInputTextColor'],
1075 'sbs-rdf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsRdf['formDropdownColor'],
1076 'sbs-rdf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsRdf['formDropdownTextColor'],
1077 'sbs-caf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsCaf['formBackgroundColor'],
1078 'sbs-caf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsCaf['formTextColor'],
1079 'sbs-caf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsCaf['formInputColor'],
1080 'sbs-caf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsCaf['formInputTextColor'],
1081 'sbs-caf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsCaf['formDropdownColor'],
1082 'sbs-caf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsCaf['formDropdownTextColor'],
1083 'sbs-spf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsSpf['formBackgroundColor'],
1084 'sbs-spf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsSpf['formTextColor'],
1085 'sbs-spf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsSpf['formInputColor'],
1086 'sbs-spf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsSpf['formInputTextColor'],
1087 'sbs-spf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsSpf['formDropdownColor'],
1088 'sbs-spf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsSpf['formDropdownTextColor'],
1089 'sbs-pif-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsPif['formBackgroundColor'],
1090 'sbs-pif-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsPif['formTextColor'],
1091 'sbs-psf-gradient1' => $useGlobalSbs ? $globalColors['formGradientColor1'] : $colorSbsPsf['formGradientColor1'],
1092 'sbs-psf-gradient2' => $useGlobalSbs ? $globalColors['formGradientColor2'] : $colorSbsPsf['formGradientColor2'],
1093 'sbs-psf-gradient-angle' => $useGlobalSbs ? $globalColors['formGradientAngle'].'deg' : $colorSbsPsf['formGradientAngle'].'deg',
1094 'sbs-psf-text-color' => $useGlobalSbs ? $globalColors['textColorOnBackground'] : $colorSbsPsf['formTextColor'],
1095 'sbs-psf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsPsf['formInputColor'],
1096 'sbs-psf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsPsf['formInputTextColor'],
1097 'sbs-psf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsPsf['formDropdownColor'],
1098 'sbs-psf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsPsf['formDropdownTextColor'],
1099 'sbs-plf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsPlf['formBackgroundColor'],
1100 'sbs-plf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsPlf['formTextColor'],
1101 'sbs-cpf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsCpf['formBackgroundColor'],
1102 'sbs-cpf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsCpf['formTextColor'],
1103 'sbs-cpf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsCpf['formInputColor'],
1104 'sbs-cpf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsCpf['formInputTextColor'],
1105 'sbs-cpf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsCpf['formDropdownColor'],
1106 'sbs-cpf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsCpf['formDropdownTextColor'],
1107 'sbs-coa-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsCoa['formBackgroundColor'],
1108 'sbs-coa-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsCoa['formTextColor'],
1109 'sbs-coa-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsCoa['formInputColor'],
1110 'sbs-coa-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsCoa['formInputTextColor'],
1111 'sbs-coa-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsCoa['formDropdownColor'],
1112 'sbs-coa-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsCoa['formDropdownTextColor'],
1113 'sbs-cop-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsCop['formBackgroundColor'],
1114 'sbs-cop-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsCop['formTextColor'],
1115 'sbs-cop-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsCop['formInputColor'],
1116 'sbs-cop-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsCop['formInputTextColor'],
1117 'sbs-cop-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsCop['formDropdownColor'],
1118 'sbs-cop-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsCop['formDropdownTextColor'],
1119 ]
1120 );
1121 } else {
1122 $settingsForm = array_merge(
1123 $settingsForm,
1124 [
1125 'sbs-ssf-bgr-color' => $globalColors['formBackgroundColor'],
1126 'sbs-ssf-text-color' => $globalColors['formTextColor'],
1127 'sbs-ssf-input-color' => $globalColors['formInputColor'],
1128 'sbs-ssf-input-text-color' => $globalColors['formInputTextColor'],
1129 'sbs-ssf-dropdown-color' => $globalColors['formDropdownColor'],
1130 'sbs-ssf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1131 'sbs-cf-gradient1' => $globalColors['formGradientColor1'],
1132 'sbs-cf-gradient2' => $globalColors['formGradientColor2'],
1133 'sbs-cf-gradient-angle' => $globalColors['formGradientAngle'].'deg',
1134 'sbs-cf-text-color' => $globalColors['textColorOnBackground'],
1135 'sbs-rsf-gradient1' => $globalColors['formGradientColor1'],
1136 'sbs-rsf-gradient2' => $globalColors['formGradientColor2'],
1137 'sbs-rsf-gradient-angle' => $globalColors['formGradientAngle'].'deg',
1138 'sbs-rsf-text-color' => $globalColors['textColorOnBackground'],
1139 'sbs-rsf-input-color' => $globalColors['formInputColor'],
1140 'sbs-rsf-input-text-color' => $globalColors['formInputTextColor'],
1141 'sbs-rsf-dropdown-color' => $globalColors['formDropdownColor'],
1142 'sbs-rsf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1143 'sbs-rdf-bgr-color' => $globalColors['formBackgroundColor'],
1144 'sbs-rdf-text-color' => $globalColors['formTextColor'],
1145 'sbs-rdf-input-color' => $globalColors['formInputColor'],
1146 'sbs-rdf-input-text-color' => $globalColors['formInputTextColor'],
1147 'sbs-rdf-dropdown-color' => $globalColors['formDropdownColor'],
1148 'sbs-rdf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1149 'sbs-caf-bgr-color' => $globalColors['formBackgroundColor'],
1150 'sbs-caf-text-color' => $globalColors['formTextColor'],
1151 'sbs-caf-input-color' => $globalColors['formInputColor'],
1152 'sbs-caf-input-text-color' => $globalColors['formInputTextColor'],
1153 'sbs-caf-dropdown-color' => $globalColors['formDropdownColor'],
1154 'sbs-caf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1155 'sbs-spf-bgr-color' => $globalColors['formBackgroundColor'],
1156 'sbs-spf-text-color' => $globalColors['formTextColor'],
1157 'sbs-spf-input-color' => $globalColors['formInputColor'],
1158 'sbs-spf-input-text-color' => $globalColors['formInputTextColor'],
1159 'sbs-spf-dropdown-color' => $globalColors['formDropdownColor'],
1160 'sbs-spf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1161 'sbs-pif-bgr-color' => $globalColors['formBackgroundColor'],
1162 'sbs-pif-text-color' => $globalColors['formTextColor'],
1163 'sbs-psf-gradient1' => $globalColors['formGradientColor1'],
1164 'sbs-psf-gradient2' => $globalColors['formGradientColor2'],
1165 'sbs-psf-gradient-angle' => $globalColors['formGradientAngle'].'deg',
1166 'sbs-psf-text-color' => $globalColors['textColorOnBackground'],
1167 'sbs-psf-input-color' => $globalColors['formInputColor'],
1168 'sbs-psf-input-text-color' => $globalColors['formInputTextColor'],
1169 'sbs-psf-dropdown-color' => $globalColors['formDropdownColor'],
1170 'sbs-psf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1171 'sbs-plf-bgr-color' => $globalColors['formBackgroundColor'],
1172 'sbs-plf-text-color' => $globalColors['formTextColor'],
1173 'sbs-cpf-bgr-color' => $globalColors['formBackgroundColor'],
1174 'sbs-cpf-text-color' => $globalColors['formTextColor'],
1175 'sbs-cpf-input-color' => $globalColors['formInputColor'],
1176 'sbs-cpf-input-text-color' => $globalColors['formInputTextColor'],
1177 'sbs-cpf-dropdown-color' => $globalColors['formDropdownColor'],
1178 'sbs-cpf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1179 'sbs-coa-bgr-color' => $globalColors['formBackgroundColor'],
1180 'sbs-coa-text-color' => $globalColors['formTextColor'],
1181 'sbs-coa-input-color' => $globalColors['formInputColor'],
1182 'sbs-coa-input-text-color' => $globalColors['formInputTextColor'],
1183 'sbs-coa-dropdown-color' => $globalColors['formDropdownColor'],
1184 'sbs-coa-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1185 'sbs-cop-bgr-color' => $globalColors['formBackgroundColor'],
1186 'sbs-cop-text-color' => $globalColors['formTextColor'],
1187 'sbs-cop-input-color' => $globalColors['formInputColor'],
1188 'sbs-cop-input-text-color' => $globalColors['formInputTextColor'],
1189 'sbs-cop-dropdown-color' => $globalColors['formDropdownColor'],
1190 'sbs-cop-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1191 ]
1192 );
1193 }
1194
1195 if (isset($settings['forms']['catalogForm'])) {
1196 $useGlobalCf = $settings['useGlobalColors']['catalogForm'];
1197 $colorCfSsf = $settings['forms']['catalogForm']['selectServiceForm']['globalSettings'];
1198 $colorCfCf = $settings['forms']['catalogForm']['calendarDateTimeForm']['globalSettings'];
1199 $colorCfRsf = $settings['forms']['catalogForm']['recurringSetupForm']['globalSettings'];
1200 $colorCfRdf = $settings['forms']['catalogForm']['recurringDatesForm']['globalSettings'];
1201 $colorCfCaf = $settings['forms']['catalogForm']['confirmBookingForm']['appointment']['globalSettings'];
1202 $colorCfPsf = $settings['forms']['catalogForm']['packageSetupForm']['globalSettings'];
1203 $colorCfPlf = $settings['forms']['catalogForm']['packageListForm']['globalSettings'];
1204 $colorCfCpf = $settings['forms']['catalogForm']['confirmBookingForm']['package']['globalSettings'];
1205 $colorCfCoa = $settings['forms']['catalogForm']['congratulationsForm']['appointment']['globalSettings'];
1206 $colorCfCop = $settings['forms']['catalogForm']['congratulationsForm']['package']['globalSettings'];
1207 $settingsForm = array_merge(
1208 $settingsForm,
1209 [
1210 'cf-ssf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfSsf['formBackgroundColor'],
1211 'cf-ssf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfSsf['formTextColor'],
1212 'cf-ssf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfSsf['formInputColor'],
1213 'cf-ssf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfSsf['formInputTextColor'],
1214 'cf-ssf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfSsf['formDropdownColor'],
1215 'cf-ssf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfSsf['formDropdownTextColor'],
1216 'cf-cf-gradient1' => $useGlobalCf ? $globalColors['formGradientColor1'] : $colorCfCf['formGradientColor1'],
1217 'cf-cf-gradient2' => $useGlobalCf ? $globalColors['formGradientColor2'] : $colorCfCf['formGradientColor2'],
1218 'cf-cf-gradient-angle' => $useGlobalCf ? $globalColors['formGradientAngle'].'deg' : $colorCfCf['formGradientAngle'].'deg',
1219 'cf-cf-text-color' => $useGlobalCf ? $globalColors['textColorOnBackground'] : $colorCfCf['formTextColor'],
1220 'cf-rsf-gradient1' => $useGlobalCf ? $globalColors['formGradientColor1'] : $colorCfRsf['formGradientColor1'],
1221 'cf-rsf-gradient2' => $useGlobalCf ? $globalColors['formGradientColor2'] : $colorCfRsf['formGradientColor2'],
1222 'cf-rsf-gradient-angle' => $useGlobalCf ? $globalColors['formGradientAngle'].'deg' : $colorCfRsf['formGradientAngle'].'deg',
1223 'cf-rsf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfRsf['formTextColor'],
1224 'cf-rsf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfRsf['formInputColor'],
1225 'cf-rsf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfRsf['formInputTextColor'],
1226 'cf-rsf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfRsf['formDropdownColor'],
1227 'cf-rsf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfRsf['formDropdownTextColor'],
1228 'cf-rdf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfRdf['formBackgroundColor'],
1229 'cf-rdf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfRdf['formTextColor'],
1230 'cf-rdf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfRdf['formInputColor'],
1231 'cf-rdf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfRdf['formInputTextColor'],
1232 'cf-rdf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfRdf['formDropdownColor'],
1233 'cf-rdf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfRdf['formDropdownTextColor'],
1234 'cf-caf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfCaf['formBackgroundColor'],
1235 'cf-caf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfCaf['formTextColor'],
1236 'cf-caf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfCaf['formInputColor'],
1237 'cf-caf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfCaf['formInputTextColor'],
1238 'cf-caf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfCaf['formDropdownColor'],
1239 'cf-caf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfCaf['formDropdownTextColor'],
1240 'cf-psf-gradient1' => $useGlobalCf ? $globalColors['formGradientColor1'] : $colorCfPsf['formGradientColor1'],
1241 'cf-psf-gradient2' => $useGlobalCf ? $globalColors['formGradientColor2'] : $colorCfPsf['formGradientColor2'],
1242 'cf-psf-gradient-angle' => $useGlobalCf ? $globalColors['formGradientAngle'].'deg' : $colorCfPsf['formGradientAngle'].'deg',
1243 'cf-psf-text-color' => $useGlobalCf ? $globalColors['textColorOnBackground'] : $colorCfPsf['formTextColor'],
1244 'cf-psf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfPsf['formInputColor'],
1245 'cf-psf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfPsf['formInputTextColor'],
1246 'cf-psf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfPsf['formDropdownColor'],
1247 'cf-psf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfPsf['formDropdownTextColor'],
1248 'cf-plf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfPlf['formBackgroundColor'],
1249 'cf-plf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfPlf['formTextColor'],
1250 'cf-cpf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfCpf['formBackgroundColor'],
1251 'cf-cpf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfCpf['formTextColor'],
1252 'cf-cpf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfCpf['formInputColor'],
1253 'cf-cpf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfCpf['formInputTextColor'],
1254 'cf-cpf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfCpf['formDropdownColor'],
1255 'cf-cpf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfCpf['formDropdownTextColor'],
1256 'cf-coa-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfCoa['formBackgroundColor'],
1257 'cf-coa-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfCoa['formTextColor'],
1258 'cf-coa-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfCoa['formInputColor'],
1259 'cf-coa-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfCoa['formInputTextColor'],
1260 'cf-coa-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfCoa['formDropdownColor'],
1261 'cf-coa-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfCoa['formDropdownTextColor'],
1262 'cf-cop-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfCop['formBackgroundColor'],
1263 'cf-cop-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfCop['formTextColor'],
1264 'cf-cop-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfCop['formInputColor'],
1265 'cf-cop-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfCop['formInputTextColor'],
1266 'cf-cop-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfCop['formDropdownColor'],
1267 'cf-cop-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfCop['formDropdownTextColor'],
1268 ]
1269 );
1270 } else {
1271 $settingsForm = array_merge(
1272 $settingsForm,
1273 [
1274 'cf-ssf-bgr-color' => $globalColors['formBackgroundColor'],
1275 'cf-ssf-text-color' => $globalColors['formTextColor'],
1276 'cf-ssf-input-color' => $globalColors['formInputColor'],
1277 'cf-ssf-input-text-color' => $globalColors['formInputTextColor'],
1278 'cf-ssf-dropdown-color' => $globalColors['formDropdownColor'],
1279 'cf-ssf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1280 'cf-cf-gradient1' => $globalColors['formGradientColor1'],
1281 'cf-cf-gradient2' => $globalColors['formGradientColor2'],
1282 'cf-cf-gradient-angle' => $globalColors['formGradientAngle'].'deg',
1283 'cf-cf-text-color' => $globalColors['textColorOnBackground'],
1284 'cf-rsf-gradient1' => $globalColors['formGradientColor1'],
1285 'cf-rsf-gradient2' => $globalColors['formGradientColor2'],
1286 'cf-rsf-gradient-angle' => $globalColors['formGradientAngle'].'deg',
1287 'cf-rsf-text-color' => $globalColors['textColorOnBackground'],
1288 'cf-rsf-input-color' => $globalColors['formInputColor'],
1289 'cf-rsf-input-text-color' => $globalColors['formInputTextColor'],
1290 'cf-rsf-dropdown-color' => $globalColors['formDropdownColor'],
1291 'cf-rsf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1292 'cf-rdf-bgr-color' => $globalColors['formBackgroundColor'],
1293 'cf-rdf-text-color' => $globalColors['formTextColor'],
1294 'cf-rdf-input-color' => $globalColors['formInputColor'],
1295 'cf-rdf-input-text-color' => $globalColors['formInputTextColor'],
1296 'cf-rdf-dropdown-color' => $globalColors['formDropdownColor'],
1297 'cf-rdf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1298 'cf-caf-bgr-color' => $globalColors['formBackgroundColor'],
1299 'cf-caf-text-color' => $globalColors['formTextColor'],
1300 'cf-caf-input-color' => $globalColors['formInputColor'],
1301 'cf-caf-input-text-color' => $globalColors['formInputTextColor'],
1302 'cf-caf-dropdown-color' => $globalColors['formDropdownColor'],
1303 'cf-caf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1304 'cf-psf-gradient1' => $globalColors['formGradientColor1'],
1305 'cf-psf-gradient2' => $globalColors['formGradientColor2'],
1306 'cf-psf-gradient-angle' => $globalColors['formGradientAngle'].'deg',
1307 'cf-psf-text-color' => $globalColors['textColorOnBackground'],
1308 'cf-psf-input-color' => $globalColors['formInputColor'],
1309 'cf-psf-input-text-color' => $globalColors['formInputTextColor'],
1310 'cf-psf-dropdown-color' => $globalColors['formDropdownColor'],
1311 'cf-psf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1312 'cf-plf-bgr-color' => $globalColors['formBackgroundColor'],
1313 'cf-plf-text-color' => $globalColors['formTextColor'],
1314 'cf-cpf-bgr-color' => $globalColors['formBackgroundColor'],
1315 'cf-cpf-text-color' => $globalColors['formTextColor'],
1316 'cf-cpf-input-color' => $globalColors['formInputColor'],
1317 'cf-cpf-input-text-color' => $globalColors['formInputTextColor'],
1318 'cf-cpf-dropdown-color' => $globalColors['formDropdownColor'],
1319 'cf-cpf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1320 'cf-coa-bgr-color' => $globalColors['formBackgroundColor'],
1321 'cf-coa-text-color' => $globalColors['formTextColor'],
1322 'cf-coa-input-color' => $globalColors['formInputColor'],
1323 'cf-coa-input-text-color' => $globalColors['formInputTextColor'],
1324 'cf-coa-dropdown-color' => $globalColors['formDropdownColor'],
1325 'cf-coa-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1326 'cf-cop-bgr-color' => $globalColors['formBackgroundColor'],
1327 'cf-cop-text-color' => $globalColors['formTextColor'],
1328 'cf-cop-input-color' => $globalColors['formInputColor'],
1329 'cf-cop-input-text-color' => $globalColors['formInputTextColor'],
1330 'cf-cop-dropdown-color' => $globalColors['formDropdownColor'],
1331 'cf-cop-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1332 ]
1333 );
1334 }
1335
1336 if (isset($settings['forms']['eventListForm'])) {
1337 $useGlobaElf = $settings['useGlobalColors']['eventListForm'];
1338 $colorElf = $settings['forms']['eventListForm']['globalSettings'];
1339
1340 $settingsForm = array_merge(
1341 $settingsForm,
1342 [
1343 'elf-bgr-color' => $useGlobaElf ? $globalColors['formBackgroundColor'] : $colorElf['formBackgroundColor'],
1344 'elf-text-color' => $useGlobaElf ? $globalColors['formTextColor'] : $colorElf['formTextColor'],
1345 'elf-input-color' => $useGlobaElf ? $globalColors['formInputColor'] : $colorElf['formInputColor'],
1346 'elf-input-text-color' => $useGlobaElf ? $globalColors['formInputTextColor'] : $colorElf['formInputTextColor'],
1347 'elf-dropdown-color' => $useGlobaElf ? $globalColors['formDropdownColor'] : $colorElf['formDropdownColor'],
1348 'elf-dropdown-text-color' => $useGlobaElf ? $globalColors['formDropdownTextColor'] : $colorElf['formDropdownTextColor'],
1349 ]
1350 );
1351 } else {
1352 $settingsForm = array_merge(
1353 $settingsForm,
1354 [
1355 'elf-bgr-color' => $globalColors['formBackgroundColor'],
1356 'elf-text-color' => $globalColors['formTextColor'],
1357 'elf-input-color' => $globalColors['formInputColor'],
1358 'elf-input-text-color' => $globalColors['formInputTextColor'],
1359 'elf-dropdown-color' => $globalColors['formDropdownColor'],
1360 'elf-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1361 ]
1362 );
1363 }
1364
1365 if (isset($settings['forms']['eventCalendarForm'])) {
1366 $useGlobalEcf = $settings['useGlobalColors']['eventCalendarForm'];
1367 $colorEcfCef = $settings['forms']['eventCalendarForm']['confirmBookingForm']['event']['globalSettings'];
1368 $colorEcfCoe = $settings['forms']['eventCalendarForm']['congratulationsForm']['event']['globalSettings'];
1369 $settingsForm = array_merge(
1370 $settingsForm,
1371 [
1372 'ecf-cef-bgr-color' => $useGlobalEcf ? $globalColors['formBackgroundColor'] : $colorEcfCef['formBackgroundColor'],
1373 'ecf-cef-text-color' => $useGlobalEcf ? $globalColors['formTextColor'] : $colorEcfCef['formTextColor'],
1374 'ecf-cef-input-color' => $useGlobalEcf ? $globalColors['formInputColor'] : $colorEcfCef['formInputColor'],
1375 'ecf-cef-input-text-color' => $useGlobalEcf ? $globalColors['formInputTextColor'] : $colorEcfCef['formInputTextColor'],
1376 'ecf-cef-dropdown-color' => $useGlobalEcf ? $globalColors['formDropdownColor'] : $colorEcfCef['formDropdownColor'],
1377 'ecf-cef-dropdown-text-color' => $useGlobalEcf ? $globalColors['formDropdownTextColor'] : $colorEcfCef['formDropdownTextColor'],
1378 'ecf-coe-bgr-color' => $useGlobalEcf ? $globalColors['formBackgroundColor'] : $colorEcfCoe['formBackgroundColor'],
1379 'ecf-coe-text-color' => $useGlobalEcf ? $globalColors['formTextColor'] : $colorEcfCoe['formTextColor'],
1380 'ecf-coe-input-color' => $useGlobalEcf ? $globalColors['formInputColor'] : $colorEcfCoe['formInputColor'],
1381 'ecf-coe-input-text-color' => $useGlobalEcf ? $globalColors['formInputTextColor'] : $colorEcfCoe['formInputTextColor'],
1382 'ecf-coe-dropdown-color' => $useGlobalEcf ? $globalColors['formDropdownColor'] : $colorEcfCoe['formDropdownColor'],
1383 'ecf-coe-dropdown-text-color' => $useGlobalEcf ? $globalColors['formDropdownTextColor'] : $colorEcfCoe['formDropdownTextColor'],
1384 ]
1385 );
1386 } else {
1387 $settingsForm = array_merge(
1388 $settingsForm,
1389 [
1390 'ecf-cef-bgr-color' => $globalColors['formBackgroundColor'],
1391 'ecf-cef-text-color' => $globalColors['formTextColor'],
1392 'ecf-cef-input-color' => $globalColors['formInputColor'],
1393 'ecf-cef-input-text-color' => $globalColors['formInputTextColor'],
1394 'ecf-cef-dropdown-color' => $globalColors['formDropdownColor'],
1395 'ecf-cef-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1396 'ecf-coe-bgr-color' => $globalColors['formBackgroundColor'],
1397 'ecf-coe-text-color' => $globalColors['formTextColor'],
1398 'ecf-coe-input-color' => $globalColors['formInputColor'],
1399 'ecf-coe-input-text-color' => $globalColors['formInputTextColor'],
1400 'ecf-coe-dropdown-color' => $globalColors['formDropdownColor'],
1401 'ecf-coe-dropdown-text-color' => $globalColors['formDropdownTextColor'],
1402 ]
1403 );
1404 }
1405
1406 if ($settingsService->getSetting('customization', 'useGenerated')) {
1407 $hash = $lessParserService->compileAndSave(
1408 array_merge(
1409 [
1410 'color-accent' => $globalColors['primaryColor'],
1411 'color-white' => $globalColors['textColorOnBackground'],
1412 'color-text-prime' => $globalColors['formTextColor'],
1413 'color-text-second' => $globalColors['formTextColor'],
1414 'color-bgr' => $globalColors['formBackgroundColor'],
1415 'color-gradient1' => $globalColors['formGradientColor1'],
1416 'color-gradient2' => $globalColors['formGradientColor2'],
1417 'color-dropdown' => $globalColors['formDropdownColor'],
1418 'color-dropdown-text' => $globalColors['formDropdownTextColor'],
1419 'color-input' => $globalColors['formInputColor'],
1420 'color-input-text' => $globalColors['formInputTextColor'],
1421 'font' => !empty($settings['font']) ? $settings['font'] : '',
1422 'custom-font-selected' => $settings['customFontSelected'],
1423 'font-url' => !empty($settings['fontUrl']) ? $settings['fontUrl'] : '',
1424 ],
1425 $settingsForm
1426 )
1427 );
1428
1429 $settings['hash'] = $hash;
1430 }
1431
1432 $settingsService->fixCustomization($settings);
1433
1434 self::initSettings('customization', $settings, true);
1435 }
1436
1437 /**
1438 * Init Labels Settings
1439 */
1440 private static function initLabelsSettings()
1441 {
1442 $settings = [
1443 'enabled' => true,
1444 'employee' => 'employee',
1445 'employees' => 'employees',
1446 'service' => 'service',
1447 'services' => 'services'
1448 ];
1449
1450 self::initSettings('labels', $settings);
1451 }
1452
1453 /**
1454 * Init Roles Settings
1455 *
1456 * @return array
1457 */
1458 public static function getDefaultRolesSettings()
1459 {
1460 return [
1461 'allowConfigureSchedule' => false,
1462 'allowConfigureDaysOff' => false,
1463 'allowConfigureSpecialDays' => false,
1464 'allowConfigureServices' => false,
1465 'allowWriteAppointments' => false,
1466 'automaticallyCreateCustomer' => true,
1467 'inspectCustomerInfo' => false,
1468 'allowCustomerReschedule' => false,
1469 'allowCustomerCancelPackages' => true,
1470 'allowCustomerDeleteProfile' => false,
1471 'allowWriteEvents' => false,
1472 'allowAdminBookAtAnyTime' => false,
1473 'adminServiceDurationAsSlot' => false,
1474 'enabledHttpAuthorization' => true,
1475 'enableNoShowTag' => true,
1476 'customerCabinet' => [
1477 'enabled' => true,
1478 'headerJwtSecret' => (new Token(null, 20))->getValue(),
1479 'urlJwtSecret' => (new Token(null, 20))->getValue(),
1480 'tokenValidTime' => 2592000,
1481 'pageUrl' => '',
1482 'loginEnabled' => true,
1483 'filterDate' => false,
1484 'translations' => [],
1485 ],
1486 'providerCabinet' => [
1487 'enabled' => true,
1488 'headerJwtSecret' => (new Token(null, 20))->getValue(),
1489 'urlJwtSecret' => (new Token(null, 20))->getValue(),
1490 'tokenValidTime' => 2592000,
1491 'pageUrl' => '',
1492 'loginEnabled' => true,
1493 'filterDate' => false,
1494 ],
1495 'urlAttachment' => [
1496 'enabled' => true,
1497 'headerJwtSecret' => (new Token(null, 20))->getValue(),
1498 'urlJwtSecret' => (new Token(null, 20))->getValue(),
1499 'tokenValidTime' => 2592000,
1500 'pageUrl' => '',
1501 'loginEnabled' => true,
1502 'filterDate' => false,
1503 ],
1504 'limitPerCustomerService' => [
1505 'enabled' => false,
1506 'numberOfApp' => 1,
1507 'timeFrame' => 'day',
1508 'period' => 1,
1509 'from' => 'bookingDate'
1510 ],
1511 'limitPerCustomerPackage' => [
1512 'enabled' => false,
1513 'numberOfApp' => 1,
1514 'timeFrame' => 'day',
1515 'period' => 1,
1516 ],
1517 'limitPerCustomerEvent' => [
1518 'enabled' => false,
1519 'numberOfApp' => 1,
1520 'timeFrame' => 'day',
1521 'period' => 1,
1522 'from' => 'bookingDate'
1523 ],
1524 'limitPerEmployee' => [
1525 'enabled' => false,
1526 'numberOfApp' => 1,
1527 'timeFrame' => 'day',
1528 'period' => 1,
1529 ],
1530 'providerBadges' => [
1531 'counter' => 3,
1532 'badges' => [
1533 [
1534 'id' => 1,
1535 'content' => 'Most Popular',
1536 'color' => '#1246D6'
1537 ],
1538 [
1539 'id' => 2,
1540 'content' => 'Top Performer',
1541 'color' => '#019719'
1542 ],
1543 [
1544 'id' => 3,
1545 'content' => 'Exclusive',
1546 'color' => '#CCA20C'
1547 ],
1548 ]
1549 ],
1550 ];
1551 }
1552
1553 /**
1554 * Init Roles Settings
1555 */
1556 private static function initRolesSettings()
1557 {
1558 $settings = self::getDefaultRolesSettings();
1559
1560 self::initSettings('roles', $settings);
1561
1562 self::setNewSettingsToExistingSettings(
1563 'roles',
1564 [
1565 ['customerCabinet', 'filterDate'],
1566 ['customerCabinet', 'translations'],
1567 ['customerCabinet', 'headerJwtSecret'],
1568 ['customerCabinet', 'urlJwtSecret'],
1569 ['providerCabinet', 'headerJwtSecret'],
1570 ['providerCabinet', 'urlJwtSecret'],
1571 ['urlAttachment', 'headerJwtSecret'],
1572 ['urlAttachment', 'urlJwtSecret'],
1573 ],
1574 $settings
1575 );
1576 }
1577
1578 /**
1579 * Get Appointments Settings
1580 *
1581 * @return array
1582 */
1583 public static function getDefaultAppointmentsSettings()
1584 {
1585 return [
1586 'isGloballyBusySlot' => false,
1587 'bookMultipleTimes' => false,
1588 'allowBookingIfPending' => true,
1589 'allowBookingIfNotMin' => true,
1590 'openedBookingAfterMin' => false,
1591 'cartPlaceholders' => '<!-- Content --><p>DateTime: %appointment_date_time%</p>',
1592 'cartPlaceholdersSms' => 'DateTime: %appointment_date_time%',
1593 'cartPlaceholdersCustomer' => '<!-- Content --><p>DateTime: %appointment_date_time%</p>',
1594 'cartPlaceholdersCustomerSms' => 'DateTime: %appointment_date_time%',
1595 'recurringPlaceholders' => 'DateTime: %appointment_date_time%',
1596 'recurringPlaceholdersSms' => 'DateTime: %appointment_date_time%',
1597 'recurringPlaceholdersCustomer' => 'DateTime: %appointment_date_time%',
1598 'recurringPlaceholdersCustomerSms' => 'DateTime: %appointment_date_time%',
1599 'packagePlaceholders' => 'DateTime: %appointment_date_time%',
1600 'packagePlaceholdersSms' => 'DateTime: %appointment_date_time%',
1601 'packagePlaceholdersCustomer' => 'DateTime: %appointment_date_time%',
1602 'packagePlaceholdersCustomerSms' => 'DateTime: %appointment_date_time%',
1603 'groupAppointmentPlaceholder' => 'Name: %customer_full_name%',
1604 'groupEventPlaceholder' => 'Name: %customer_full_name%',
1605 'groupAppointmentPlaceholderSms' => 'Name: %customer_full_name%',
1606 'groupEventPlaceholderSms' => 'Name: %customer_full_name%',
1607 'translations' => [
1608 'cartPlaceholdersCustomer' => null,
1609 'cartPlaceholdersCustomerSms' => null,
1610 'recurringPlaceholdersCustomer' => null,
1611 'recurringPlaceholdersCustomerSms' => null,
1612 'packagePlaceholdersCustomer' => null,
1613 'packagePlaceholdersCustomerSms' => null,
1614 'groupAppointmentPlaceholder' => 'Name: %customer_full_name%',
1615 'groupEventPlaceholder' => 'Name: %customer_full_name%',
1616 'groupAppointmentPlaceholderSms' => 'Name: %customer_full_name%',
1617 'groupEventPlaceholderSms' => 'Name: %customer_full_name%',
1618 ],
1619 'waitingListEvents' => [
1620 'enabled' => false,
1621 'addingMethod' => 'Manually'
1622 ],
1623 'employeeSelection' => 'random',
1624 'bringingAnyoneLogic' => 'additional',
1625 ];
1626 }
1627
1628 /**
1629 * Init Appointments Settings
1630 */
1631 private static function initAppointmentsSettings()
1632 {
1633 $settings = self::getDefaultAppointmentsSettings();
1634
1635 self::initSettings('appointments', $settings);
1636
1637 self::setNewSettingsToExistingSettings(
1638 'appointments',
1639 [
1640 ['translations', 'cartPlaceholdersCustomer'],
1641 ['translations', 'cartPlaceholdersCustomerSms'],
1642 ],
1643 $settings
1644 );
1645 }
1646
1647 /**
1648 * Init Web Hooks Settings
1649 */
1650 private static function initWebHooksSettings()
1651 {
1652 $settings = [];
1653
1654 self::initSettings('webHooks', $settings);
1655 }
1656
1657 /**
1658 * get Back Link Setting
1659 */
1660 private static function getBackLinkSetting()
1661 {
1662 $settingsService = new SettingsService(new SettingsStorage());
1663
1664 $backLinksLabels = [
1665 'Generated with Amelia - WordPress Booking Plugin',
1666 'Powered by Amelia - WordPress Booking Plugin',
1667 'Booking by Amelia - WordPress Booking Plugin',
1668 'Powered by Amelia - Appointment and Events Booking Plugin',
1669 'Powered by Amelia - Appointment and Event Booking Plugin',
1670 'Powered by Amelia - WordPress Booking Plugin',
1671 'Generated with Amelia - Appointment and Event Booking Plugin',
1672 'Booking Enabled by Amelia - Appointment and Event Booking Plugin',
1673 ];
1674
1675 $backLinksUrls = [
1676 'https://wpamelia.com/?utm_source=lite&utm_medium=websites&utm_campaign=powerdby',
1677 'https://wpamelia.com/demos/?utm_source=lite&utm_medium=website&utm_campaign=powerdby#Features-list',
1678 'https://wpamelia.com/pricing/?utm_source=lite&utm_medium=website&utm_campaign=powerdby',
1679 'https://wpamelia.com/documentation/?utm_source=lite&utm_medium=website&utm_campaign=powerdby',
1680 ];
1681
1682 return [
1683 'enabled' => $settingsService->getCategorySettings('general') === null,
1684 'label' => $backLinksLabels[rand(0, 7)],
1685 'url' => $backLinksUrls[rand(0, 3)],
1686 ];
1687 }
1688
1689 /**
1690 * Add new settings ti global parent settings
1691 *
1692 * @param string $category
1693 * @param array $pathsKeys
1694 * @param array $initSettings
1695 */
1696 private static function setNewSettingsToExistingSettings($category, $pathsKeys, $initSettings)
1697 {
1698 $settingsService = new SettingsService(new SettingsStorage());
1699
1700 $savedSettings = $settingsService->getCategorySettings($category);
1701
1702 $setSettings = false;
1703
1704 foreach ($pathsKeys as $keys) {
1705 $current = &$savedSettings;
1706
1707 $currentInit = &$initSettings;
1708
1709 foreach ((array)$keys as $key) {
1710 if (!isset($current[$key])) {
1711 $current[$key] = !empty($currentInit[$key]) ? $currentInit[$key] : null;
1712
1713 $setSettings = true;
1714
1715 continue 2;
1716 }
1717
1718 $current = &$current[$key];
1719
1720 $currentInit = &$initSettings[$key];
1721 }
1722 }
1723
1724 if ($setSettings) {
1725 self::initSettings($category, $savedSettings, true);
1726 }
1727 }
1728 }
1729