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