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