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