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