PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.11
Booking for Appointments and Events Calendar – Amelia v1.2.11
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Application / Commands / Settings / UpdateSettingsCommandHandler.php
ameliabooking / src / Application / Commands / Settings Last commit date
GetSettingsCommand.php 7 years ago GetSettingsCommandHandler.php 1 year ago UpdateSettingsCommand.php 7 years ago UpdateSettingsCommandHandler.php 1 year ago
UpdateSettingsCommandHandler.php
448 lines
1 <?php
2
3 namespace AmeliaBooking\Application\Commands\Settings;
4
5 use AmeliaBooking\Application\Commands\CommandHandler;
6 use AmeliaBooking\Application\Commands\CommandResult;
7 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
8 use AmeliaBooking\Application\Services\Location\AbstractCurrentLocation;
9 use AmeliaBooking\Application\Services\Stash\StashApplicationService;
10 use AmeliaBooking\Domain\Entity\Entities;
11 use AmeliaBooking\Domain\Entity\User\AbstractUser;
12 use AmeliaBooking\Domain\Services\Api\BasicApiService;
13 use AmeliaBooking\Domain\Services\Settings\SettingsService;
14 use AmeliaBooking\Infrastructure\Services\Frontend\LessParserService;
15 use AmeliaBooking\Infrastructure\Services\LessonSpace\AbstractLessonSpaceService;
16 use AmeliaBooking\Infrastructure\WP\Integrations\WooCommerce\StarterWooCommerceService;
17 use Exception;
18 use Interop\Container\Exception\ContainerException;
19 use Less_Exception_Parser;
20 use Slim\Exception\ContainerValueNotFoundException;
21
22 /**
23 * Class UpdateSettingsCommandHandler
24 *
25 * @package AmeliaBooking\Application\Commands\Settings
26 */
27 class UpdateSettingsCommandHandler extends CommandHandler
28 {
29 /**
30 * @param UpdateSettingsCommand $command
31 *
32 * @return CommandResult
33 * @throws AccessDeniedException
34 * @throws Less_Exception_Parser
35 * @throws ContainerValueNotFoundException
36 * @throws ContainerException
37 * @throws Exception
38 */
39 public function handle(UpdateSettingsCommand $command)
40 {
41 $result = new CommandResult();
42
43 if (!$this->getContainer()->getPermissionsService()->currentUserCanWrite(Entities::SETTINGS)) {
44 /** @var AbstractUser $loggedInUser */
45 $loggedInUser = $this->container->get('logged.in.user');
46
47 if (!$loggedInUser || !(
48 $loggedInUser->getType() === AbstractUser::USER_ROLE_ADMIN ||
49 $loggedInUser->getType() === AbstractUser::USER_ROLE_MANAGER
50 )
51 ) {
52 throw new AccessDeniedException('You are not allowed to write settings.');
53 }
54 }
55
56 /** @var SettingsService $settingsService */
57 $settingsService = $this->getContainer()->get('domain.settings.service');
58
59 /** @var AbstractCurrentLocation $locationService */
60 $locationService = $this->getContainer()->get('application.currentLocation.service');
61
62 /** @var LessParserService $lessParserService */
63 $lessParserService = $this->getContainer()->get('infrastructure.frontend.lessParser.service');
64
65 $settingsFields = $command->getFields();
66
67 if ($command->getField('customization')) {
68 $customizationData = $command->getField('customization');
69
70 $globalColors = $customizationData['globalColors'];
71
72 if (isset($settingsFields['customization']['forms']) && $settingsFields['customization']['forms']) {
73 $settingsService->fixCustomization($settingsFields['customization']);
74 }
75
76 //Sbs - Step by step
77 $useGlobalSbs = $customizationData['useGlobalColors']['stepByStepForm'];
78 $colorSbsSsf = $customizationData['forms']['stepByStepForm']['selectServiceForm']['globalSettings'];
79 $colorSbsCf = $customizationData['forms']['stepByStepForm']['calendarDateTimeForm']['globalSettings'];
80 $colorSbsRsf = $customizationData['forms']['stepByStepForm']['recurringSetupForm']['globalSettings'];
81 $colorSbsRdf = $customizationData['forms']['stepByStepForm']['recurringDatesForm']['globalSettings'];
82 $colorSbsCaf = $customizationData['forms']['stepByStepForm']['confirmBookingForm']['appointment']['globalSettings'];
83 $colorSbsCoa = $customizationData['forms']['stepByStepForm']['congratulationsForm']['appointment']['globalSettings'];
84 $colorSbsSpf = $customizationData['forms']['stepByStepForm']['selectPackageForm']['globalSettings'];
85 $colorSbsPif = $customizationData['forms']['stepByStepForm']['packageInfoForm']['globalSettings'];
86 $colorSbsPsf = $customizationData['forms']['stepByStepForm']['packageSetupForm']['globalSettings'];
87 $colorSbsPlf = $customizationData['forms']['stepByStepForm']['packageListForm']['globalSettings'];
88 $colorSbsCpf = $customizationData['forms']['stepByStepForm']['confirmBookingForm']['package']['globalSettings'];
89 $colorSbsCop = $customizationData['forms']['stepByStepForm']['congratulationsForm']['package']['globalSettings'];
90
91 // Cf - Catalog form
92 $useGlobalCf = $customizationData['useGlobalColors']['catalogForm'];
93 $colorCfSsf = $customizationData['forms']['catalogForm']['selectServiceForm']['globalSettings'];
94 $colorCfCf = $customizationData['forms']['catalogForm']['calendarDateTimeForm']['globalSettings'];
95 $colorCfRsf = $customizationData['forms']['catalogForm']['recurringSetupForm']['globalSettings'];
96 $colorCfRdf = $customizationData['forms']['catalogForm']['recurringDatesForm']['globalSettings'];
97 $colorCfCaf = $customizationData['forms']['catalogForm']['confirmBookingForm']['appointment']['globalSettings'];
98 $colorCfCoa = $customizationData['forms']['catalogForm']['congratulationsForm']['appointment']['globalSettings'];
99 $colorCfPsf = $customizationData['forms']['catalogForm']['packageSetupForm']['globalSettings'];
100 $colorCfPlf = $customizationData['forms']['catalogForm']['packageListForm']['globalSettings'];
101 $colorCfCpf = $customizationData['forms']['catalogForm']['confirmBookingForm']['package']['globalSettings'];
102 $colorCfCop = $customizationData['forms']['catalogForm']['congratulationsForm']['package']['globalSettings'];
103
104 // Elf - Event list form
105 $useGlobalElf = $customizationData['useGlobalColors']['eventListForm'];
106 $colorElf = $customizationData['forms']['eventListForm']['globalSettings'] ;
107
108 // Ecf - Event calendar form
109 $useGlobalEcf = $customizationData['useGlobalColors']['eventCalendarForm'];
110 $colorEcfCef = $customizationData['forms']['eventCalendarForm']['confirmBookingForm']['event']['globalSettings'];
111 $colorEcfCoe = $customizationData['forms']['eventCalendarForm']['congratulationsForm']['event']['globalSettings'];
112
113 $hasCustomFont = !empty($customizationData['customFontSelected']) &&
114 $customizationData['customFontSelected'] === 'selected';
115
116 $hash = $lessParserService->compileAndSave(
117 [
118 'color-accent' => $globalColors['primaryColor'],
119 'color-white' => $globalColors['textColorOnBackground'],
120 'color-text-prime' => $globalColors['formTextColor'],
121 'color-text-second' => $globalColors['formTextColor'],
122 'color-bgr' => $globalColors['formBackgroundColor'],
123 'color-gradient1' => $globalColors['formGradientColor1'],
124 'color-gradient2' => $globalColors['formGradientColor2'],
125 'color-dropdown' => $globalColors['formDropdownColor'],
126 'color-dropdown-text' => $globalColors['formDropdownTextColor'],
127 'color-input' => $globalColors['formInputColor'],
128 'color-input-text' => $globalColors['formInputTextColor'],
129 'font' => !empty($customizationData['font']) ?
130 $customizationData['font'] : '',
131 'custom-font-selected' => $hasCustomFont ? 'selected' : 'unselected',
132 'font-url' => !empty($customizationData['fontUrl']) ?
133 $customizationData['fontUrl'] : '',
134 // step by step
135 'sbs-ssf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsSsf['formBackgroundColor'],
136 'sbs-ssf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsSsf['formTextColor'],
137 'sbs-ssf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsSsf['formInputColor'],
138 'sbs-ssf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsSsf['formInputTextColor'],
139 'sbs-ssf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsSsf['formDropdownColor'],
140 'sbs-ssf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsSsf['formDropdownTextColor'],
141 'sbs-cf-gradient1' => $useGlobalSbs ? $globalColors['formGradientColor1'] : $colorSbsCf['formGradientColor1'],
142 'sbs-cf-gradient2' => $useGlobalSbs ? $globalColors['formGradientColor2'] : $colorSbsCf['formGradientColor2'],
143 'sbs-cf-gradient-angle' => $useGlobalSbs ? $globalColors['formGradientAngle'].'deg' : $colorSbsCf['formGradientAngle'].'deg',
144 'sbs-cf-text-color' => $useGlobalSbs ? $globalColors['textColorOnBackground'] : $colorSbsCf['formTextColor'],
145 'sbs-rsf-gradient1' => $useGlobalSbs ? $globalColors['formGradientColor1'] : $colorSbsRsf['formGradientColor1'],
146 'sbs-rsf-gradient2' => $useGlobalSbs ? $globalColors['formGradientColor2'] : $colorSbsRsf['formGradientColor2'],
147 'sbs-rsf-gradient-angle' => $useGlobalSbs ? $globalColors['formGradientAngle'].'deg' : $colorSbsRsf['formGradientAngle'].'deg',
148 'sbs-rsf-text-color' => $useGlobalSbs ? $globalColors['textColorOnBackground'] : $colorSbsRsf['formTextColor'],
149 'sbs-rsf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsRsf['formInputColor'],
150 'sbs-rsf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsRsf['formInputTextColor'],
151 'sbs-rsf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsRsf['formDropdownColor'],
152 'sbs-rsf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsRsf['formDropdownTextColor'],
153 'sbs-rdf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsRdf['formBackgroundColor'],
154 'sbs-rdf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsRdf['formTextColor'],
155 'sbs-rdf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsRdf['formInputColor'],
156 'sbs-rdf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsRdf['formInputTextColor'],
157 'sbs-rdf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsRdf['formDropdownColor'],
158 'sbs-rdf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsRdf['formDropdownTextColor'],
159 'sbs-caf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsCaf['formBackgroundColor'],
160 'sbs-caf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsCaf['formTextColor'],
161 'sbs-caf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsCaf['formInputColor'],
162 'sbs-caf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsCaf['formInputTextColor'],
163 'sbs-caf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsCaf['formDropdownColor'],
164 'sbs-caf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsCaf['formDropdownTextColor'],
165 'sbs-spf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsSpf['formBackgroundColor'],
166 'sbs-spf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsSpf['formTextColor'],
167 'sbs-spf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsSpf['formInputColor'],
168 'sbs-spf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsSpf['formInputTextColor'],
169 'sbs-spf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsSpf['formDropdownColor'],
170 'sbs-spf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsSpf['formDropdownTextColor'],
171 'sbs-pif-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsPif['formBackgroundColor'],
172 'sbs-pif-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsPif['formTextColor'],
173 'sbs-psf-gradient1' => $useGlobalSbs ? $globalColors['formGradientColor1'] : $colorSbsPsf['formGradientColor1'],
174 'sbs-psf-gradient2' => $useGlobalSbs ? $globalColors['formGradientColor2'] : $colorSbsPsf['formGradientColor2'],
175 'sbs-psf-gradient-angle' => $useGlobalSbs ? $globalColors['formGradientAngle'].'deg' : $colorSbsPsf['formGradientAngle'].'deg',
176 'sbs-psf-text-color' => $useGlobalSbs ? $globalColors['textColorOnBackground'] : $colorSbsPsf['formTextColor'],
177 'sbs-psf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsPsf['formInputColor'],
178 'sbs-psf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsPsf['formInputTextColor'],
179 'sbs-psf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsPsf['formDropdownColor'],
180 'sbs-psf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsPsf['formDropdownTextColor'],
181 'sbs-plf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsPlf['formBackgroundColor'],
182 'sbs-plf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsPlf['formTextColor'],
183 'sbs-cpf-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsCpf['formBackgroundColor'],
184 'sbs-cpf-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsCpf['formTextColor'],
185 'sbs-cpf-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsCpf['formInputColor'],
186 'sbs-cpf-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsCpf['formInputTextColor'],
187 'sbs-cpf-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsCpf['formDropdownColor'],
188 'sbs-cpf-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsCpf['formDropdownTextColor'],
189 'sbs-coa-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsCoa['formBackgroundColor'],
190 'sbs-coa-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsCoa['formTextColor'],
191 'sbs-coa-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsCoa['formInputColor'],
192 'sbs-coa-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsCoa['formInputTextColor'],
193 'sbs-coa-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsCoa['formDropdownColor'],
194 'sbs-coa-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsCoa['formDropdownTextColor'],
195 'sbs-cop-bgr-color' => $useGlobalSbs ? $globalColors['formBackgroundColor'] : $colorSbsCop['formBackgroundColor'],
196 'sbs-cop-text-color' => $useGlobalSbs ? $globalColors['formTextColor'] : $colorSbsCop['formTextColor'],
197 'sbs-cop-input-color' => $useGlobalSbs ? $globalColors['formInputColor'] : $colorSbsCop['formInputColor'],
198 'sbs-cop-input-text-color' => $useGlobalSbs ? $globalColors['formInputTextColor'] : $colorSbsCop['formInputTextColor'],
199 'sbs-cop-dropdown-color' => $useGlobalSbs ? $globalColors['formDropdownColor'] : $colorSbsCop['formDropdownColor'],
200 'sbs-cop-dropdown-text-color' => $useGlobalSbs ? $globalColors['formDropdownTextColor'] : $colorSbsCop['formDropdownTextColor'],
201 // catalog
202 'cf-ssf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfSsf['formBackgroundColor'],
203 'cf-ssf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfSsf['formTextColor'],
204 'cf-ssf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfSsf['formInputColor'],
205 'cf-ssf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfSsf['formInputTextColor'],
206 'cf-ssf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfSsf['formDropdownColor'],
207 'cf-ssf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfSsf['formDropdownTextColor'],
208 'cf-cf-gradient1' => $useGlobalCf ? $globalColors['formGradientColor1'] : $colorCfCf['formGradientColor1'],
209 'cf-cf-gradient2' => $useGlobalCf ? $globalColors['formGradientColor2'] : $colorCfCf['formGradientColor2'],
210 'cf-cf-gradient-angle' => $useGlobalCf ? $globalColors['formGradientAngle'].'deg' : $colorCfCf['formGradientAngle'].'deg',
211 'cf-cf-text-color' => $useGlobalCf ? $globalColors['textColorOnBackground'] : $colorCfCf['formTextColor'],
212 'cf-rsf-gradient1' => $useGlobalCf ? $globalColors['formGradientColor1'] : $colorCfRsf['formGradientColor1'],
213 'cf-rsf-gradient2' => $useGlobalCf ? $globalColors['formGradientColor2'] : $colorCfRsf['formGradientColor2'],
214 'cf-rsf-gradient-angle' => $useGlobalCf ? $globalColors['formGradientAngle'].'deg' : $colorCfRsf['formGradientAngle'].'deg',
215 'cf-rsf-text-color' => $useGlobalCf ? $globalColors['textColorOnBackground'] : $colorCfRsf['formTextColor'],
216 'cf-rsf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfRsf['formInputColor'],
217 'cf-rsf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfRsf['formInputTextColor'],
218 'cf-rsf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfRsf['formDropdownColor'],
219 'cf-rsf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfRsf['formDropdownTextColor'],
220 'cf-rdf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfRdf['formBackgroundColor'],
221 'cf-rdf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfRdf['formTextColor'],
222 'cf-rdf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfRdf['formInputColor'],
223 'cf-rdf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfRdf['formInputTextColor'],
224 'cf-rdf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfRdf['formDropdownColor'],
225 'cf-rdf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfRdf['formDropdownTextColor'],
226 'cf-caf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfCaf['formBackgroundColor'],
227 'cf-caf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfCaf['formTextColor'],
228 'cf-caf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfCaf['formInputColor'],
229 'cf-caf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfCaf['formInputTextColor'],
230 'cf-caf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfCaf['formDropdownColor'],
231 'cf-caf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfCaf['formDropdownTextColor'],
232 'cf-psf-gradient1' => $useGlobalCf ? $globalColors['formGradientColor1'] : $colorCfPsf['formGradientColor1'],
233 'cf-psf-gradient2' => $useGlobalCf ? $globalColors['formGradientColor2'] : $colorCfPsf['formGradientColor2'],
234 'cf-psf-gradient-angle' => $useGlobalCf ? $globalColors['formGradientAngle'].'deg' : $colorCfPsf['formGradientAngle'].'deg',
235 'cf-psf-text-color' => $useGlobalCf ? $globalColors['textColorOnBackground'] : $colorCfPsf['formTextColor'],
236 'cf-psf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfPsf['formInputColor'],
237 'cf-psf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfPsf['formInputTextColor'],
238 'cf-psf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfPsf['formDropdownColor'],
239 'cf-psf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfPsf['formDropdownTextColor'],
240 'cf-plf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfPlf['formBackgroundColor'],
241 'cf-plf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfPlf['formTextColor'],
242 'cf-cpf-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfCpf['formBackgroundColor'],
243 'cf-cpf-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfCpf['formTextColor'],
244 'cf-cpf-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfCpf['formInputColor'],
245 'cf-cpf-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfCpf['formInputTextColor'],
246 'cf-cpf-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfCpf['formDropdownColor'],
247 'cf-cpf-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfCpf['formDropdownTextColor'],
248 'cf-coa-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfCoa['formBackgroundColor'],
249 'cf-coa-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfCoa['formTextColor'],
250 'cf-coa-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfCoa['formInputColor'],
251 'cf-coa-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfCoa['formInputTextColor'],
252 'cf-coa-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfCoa['formDropdownColor'],
253 'cf-coa-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfCoa['formDropdownTextColor'],
254 'cf-cop-bgr-color' => $useGlobalCf ? $globalColors['formBackgroundColor'] : $colorCfCop['formBackgroundColor'],
255 'cf-cop-text-color' => $useGlobalCf ? $globalColors['formTextColor'] : $colorCfCop['formTextColor'],
256 'cf-cop-input-color' => $useGlobalCf ? $globalColors['formInputColor'] : $colorCfCop['formInputColor'],
257 'cf-cop-input-text-color' => $useGlobalCf ? $globalColors['formInputTextColor'] : $colorCfCop['formInputTextColor'],
258 'cf-cop-dropdown-color' => $useGlobalCf ? $globalColors['formDropdownColor'] : $colorCfCop['formDropdownColor'],
259 'cf-cop-dropdown-text-color' => $useGlobalCf ? $globalColors['formDropdownTextColor'] : $colorCfCop['formDropdownTextColor'],
260 // event list
261 'elf-bgr-color' => $useGlobalElf ? $globalColors['formBackgroundColor'] : $colorElf['formBackgroundColor'],
262 'elf-text-color' => $useGlobalElf ? $globalColors['formTextColor'] : $colorElf['formTextColor'],
263 'elf-input-color' => $useGlobalElf ? $globalColors['formInputColor'] : $colorElf['formInputColor'],
264 'elf-input-text-color' => $useGlobalElf ? $globalColors['formInputTextColor'] : $colorElf['formInputTextColor'],
265 'elf-dropdown-color' => $useGlobalElf ? $globalColors['formDropdownColor'] : $colorElf['formDropdownColor'],
266 'elf-dropdown-text-color' => $useGlobalElf ? $globalColors['formDropdownTextColor'] : $colorElf['formDropdownTextColor'],
267 // event calendar
268 'ecf-cef-bgr-color' => $useGlobalEcf ? $globalColors['formBackgroundColor'] : $colorEcfCef['formBackgroundColor'],
269 'ecf-cef-text-color' => $useGlobalEcf ? $globalColors['formTextColor'] : $colorEcfCef['formTextColor'],
270 'ecf-cef-input-color' => $useGlobalEcf ? $globalColors['formInputColor'] : $colorEcfCef['formInputColor'],
271 'ecf-cef-input-text-color' => $useGlobalEcf ? $globalColors['formInputTextColor'] : $colorEcfCef['formInputTextColor'],
272 'ecf-cef-dropdown-color' => $useGlobalEcf ? $globalColors['formDropdownColor'] : $colorEcfCef['formDropdownColor'],
273 'ecf-cef-dropdown-text-color' => $useGlobalEcf ? $globalColors['formDropdownTextColor'] : $colorEcfCef['formDropdownTextColor'],
274 'ecf-coe-bgr-color' => $useGlobalEcf ? $globalColors['formBackgroundColor'] : $colorEcfCoe['formBackgroundColor'],
275 'ecf-coe-text-color' => $useGlobalEcf ? $globalColors['formTextColor'] : $colorEcfCoe['formTextColor'],
276 'ecf-coe-input-color' => $useGlobalEcf ? $globalColors['formInputColor'] : $colorEcfCoe['formInputColor'],
277 'ecf-coe-input-text-color' => $useGlobalEcf ? $globalColors['formInputTextColor'] : $colorEcfCoe['formInputTextColor'],
278 'ecf-coe-dropdown-color' => $useGlobalEcf ? $globalColors['formDropdownColor'] : $colorEcfCoe['formDropdownColor'],
279 'ecf-coe-dropdown-text-color' => $useGlobalEcf ? $globalColors['formDropdownTextColor'] : $colorEcfCoe['formDropdownTextColor'],
280 ]
281 );
282
283 $settingsFields['customization']['hash'] = $hash;
284
285 $settingsFields['customization']['useGenerated'] = isset($customizationData['useGenerated']) ?
286 $customizationData['useGenerated'] : true;
287 }
288
289 if (StarterWooCommerceService::isEnabled() &&
290 $command->getField('payments') &&
291 $command->getField('payments')['wc']['enabled']
292 ) {
293 $settingsFields['payments']['wc']['productId'] = StarterWooCommerceService::getIdForExistingOrNewProduct(
294 $settingsService->getCategorySettings('payments')['wc']['productId']
295 );
296 }
297
298 if ($command->getField('sendAllCF') !== null) {
299 $notificationsSettings = $settingsService->getCategorySettings('notifications');
300
301 $settingsFields['notifications'] = $notificationsSettings;
302
303 $settingsFields['notifications']['sendAllCF'] = $command->getField('sendAllCF');
304
305 unset($settingsFields['sendAllCF']);
306 }
307
308 if ($command->getField('providerBadges') !== null) {
309 $rolesSettings = $settingsService->getCategorySettings('roles');
310
311 $settingsFields['roles'] = $rolesSettings;
312
313 $settingsFields['roles']['providerBadges'] = $command->getField('providerBadges');
314
315 unset($settingsFields['providerBadges']);
316 }
317
318 if (!$settingsService->getCategorySettings('activation')['stash'] &&
319 !empty($settingsFields['activation']['stash'])
320 ) {
321 /** @var StashApplicationService $stashApplicationService */
322 $stashApplicationService = $this->container->get('application.stash.service');
323
324 $stashApplicationService->setStash();
325 }
326
327 if (isset($settingsFields['daysOff']) &&
328 $settingsService->getCategorySettings('activation')['stash'] &&
329 $settingsService->getCategorySettings('daysOff') !== $settingsFields['daysOff'] &&
330 $command->getField('daysOff') !== null
331 ) {
332 /** @var StashApplicationService $stashApplicationService */
333 $stashApplicationService = $this->container->get('application.stash.service');
334
335 $stashApplicationService->setStash($settingsFields['daysOff']);
336 }
337
338 $settingsFields['activation'] = array_merge(
339 $settingsService->getCategorySettings('activation'),
340 isset($settingsFields['activation']['deleteTables']) ? [
341 'deleteTables' => $settingsFields['activation']['deleteTables'] ? true : false
342 ] : [],
343 isset($settingsFields['activation']['envatoTokenEmail']) ? [
344 'envatoTokenEmail' => $settingsFields['activation']['envatoTokenEmail']
345 ] : [],
346 isset($settingsFields['activation']['active']) ? [
347 'active' => $settingsFields['activation']['active']
348 ] : [],
349 isset($settingsFields['activation']['stash']) ? [
350 'stash' => $settingsFields['activation']['stash']
351 ] : [],
352 isset($settingsFields['activation']['showAmeliaPromoCustomizePopup']) ? [
353 'showAmeliaPromoCustomizePopup' => $settingsFields['activation']['showAmeliaPromoCustomizePopup']
354 ] : [],
355 isset($settingsFields['activation']['showAmeliaSurvey']) ? [
356 'showAmeliaSurvey' => $settingsFields['activation']['showAmeliaSurvey']
357 ] : [],
358 isset($settingsFields['activation']['customUrl']) ? [
359 'customUrl' => $settingsFields['activation']['customUrl']
360 ] : [],
361 isset($settingsFields['activation']['v3AsyncLoading']) ? [
362 'v3AsyncLoading' => $settingsFields['activation']['v3AsyncLoading']
363 ] : [],
364 isset($settingsFields['activation']['v3RelativePath']) ? [
365 'v3RelativePath' => $settingsFields['activation']['v3RelativePath']
366 ] : [],
367 isset($settingsFields['activation']['enableThriveItems']) ? [
368 'enableThriveItems' => $settingsFields['activation']['enableThriveItems']
369 ] : [],
370 isset($settingsFields['activation']['responseErrorAsConflict']) ? [
371 'responseErrorAsConflict' => $settingsFields['activation']['responseErrorAsConflict']
372 ] : [],
373 isset($settingsFields['activation']['disableUrlParams']) ? [
374 'disableUrlParams' => $settingsFields['activation']['disableUrlParams']
375 ] : [],
376 isset($settingsFields['activation']['hideUnavailableFeatures']) ? [
377 'hideUnavailableFeatures' => $settingsFields['activation']['hideUnavailableFeatures']
378 ] : [],
379 isset($settingsFields['activation']['premiumBannerVisibility']) ? [
380 'premiumBannerVisibility' => $settingsFields['activation']['premiumBannerVisibility']
381 ] : [],
382 isset($settingsFields['activation']['dismissibleBannerVisibility']) ? [
383 'dismissibleBannerVisibility' => $settingsFields['activation']['dismissibleBannerVisibility']
384 ] : []
385 );
386
387 if ($command->getField('usedLanguages') !== null) {
388 $generalSettings = $settingsService->getCategorySettings('general');
389
390 $settingsFields['general'] = $generalSettings;
391
392 $settingsFields['general']['usedLanguages'] = $command->getField('usedLanguages');
393
394 unset($settingsFields['usedLanguages']);
395 }
396
397 if ($command->getField('lessonSpace') !== null && $settingsFields['lessonSpace']['apiKey']) {
398 if (!$settingsService->getCategorySettings('lessonSpace')['companyId']) {
399 /** @var AbstractLessonSpaceService $lessonSpaceService */
400 $lessonSpaceService = $this->container->get('infrastructure.lesson.space.service');
401
402 $companyDetails = $lessonSpaceService->getCompanyId($settingsFields['lessonSpace']['apiKey']);
403
404 $settingsFields['lessonSpace']['companyId'] = $companyDetails['id'];
405 } else {
406 $settingsFields['lessonSpace']['companyId'] = $settingsService->getCategorySettings('lessonSpace')['companyId'];
407 }
408 }
409
410 if ($command->getField('payments') && !empty($command->getFields('payments')['square'])) {
411 $settingsFields['payments']['square']['accessToken'] = $settingsService->getCategorySettings('payments')['square']['accessToken'];
412 }
413
414 if (isset($settingsFields['apiKeys']) && isset($settingsFields['apiKeys']['apiKeys'])) {
415 /** @var BasicApiService $apiService */
416 $apiService = $this->getContainer()->get('domain.api.service');
417 foreach ($settingsFields['apiKeys']['apiKeys'] as $index => $apiKey) {
418 if (!empty($apiKey['isNew'])) {
419 $settingsFields['apiKeys']['apiKeys'][$index]['key'] = $apiService->createHash($settingsFields['apiKeys']['apiKeys'][$index]['key']);
420 }
421 unset($settingsFields['apiKeys']['apiKeys'][$index]['isNew']);
422 }
423 }
424
425 $settingsFields = apply_filters('amelia_before_settings_updated_filter', $settingsFields);
426
427 do_action('amelia_before_settings_updated', $settingsFields);
428
429 $settingsService->setAllSettings($settingsFields);
430
431 $settings = $settingsService->getAllSettingsCategorized();
432 $settings['general']['phoneDefaultCountryCode'] = $settings['general']['phoneDefaultCountryCode'] === 'auto' ?
433 $locationService->getCurrentLocationCountryIso($settings['general']['ipLocateApiKey']) : $settings['general']['phoneDefaultCountryCode'];
434
435 do_action('amelia_after_settings_updated', $settingsFields);
436
437 $result->setResult(CommandResult::RESULT_SUCCESS);
438 $result->setMessage('Successfully updated settings.');
439 $result->setData(
440 [
441 'settings' => $settings
442 ]
443 );
444
445 return $result;
446 }
447 }
448