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