PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.8
Booking for Appointments and Events Calendar – Amelia v2.4.8
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 / GetSettingsCommandHandler.php
ameliabooking / src / Application / Commands / Settings Last commit date
FeaturesIntegrations 1 week ago ExportDataTransferCommand.php 1 month ago ExportDataTransferCommandHandler.php 1 month ago GetSettingsCommand.php 1 year ago GetSettingsCommandHandler.php 1 week ago ProcessImportDataTransferCommand.php 1 month ago ProcessImportDataTransferCommandHandler.php 1 month ago StartImportDataTransferCommand.php 1 month ago StartImportDataTransferCommandHandler.php 1 month ago UpdateSettingsCategoriesCommand.php 7 months ago UpdateSettingsCategoriesCommandHandler.php 1 week ago UpdateSettingsCommand.php 1 year ago UpdateSettingsCommandHandler.php 1 week ago
GetSettingsCommandHandler.php
99 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\Domain\Entity\Entities;
9 use AmeliaBooking\Domain\Services\Settings\SettingsService;
10 use AmeliaBooking\Infrastructure\Services\Mailchimp\AbstractMailchimpService;
11 use AmeliaBooking\Infrastructure\WP\Integrations\IvyForms\IvyFormsService;
12 use AmeliaBooking\Infrastructure\WP\UserRoles\SuperAdminRoleService;
13 use AmeliaVendor\Melograno\UsageTracker\Core\UsageTracker;
14 use Interop\Container\Exception\ContainerException;
15 use AmeliaVendor\Melograno\UsageTracker\Collectors\Plugin\AmeliaCollector;
16
17 /**
18 * Class GetSettingsCommandHandler
19 *
20 * @package AmeliaBooking\Application\Commands\Settings
21 */
22 class GetSettingsCommandHandler extends CommandHandler
23 {
24 /**
25 * @return CommandResult
26 * @throws ContainerException
27 * @throws AccessDeniedException
28 */
29 public function handle(GetSettingsCommand $command)
30 {
31 $result = new CommandResult();
32
33 if (!$command->getPermissionService()->currentUserCanRead(Entities::SETTINGS)) {
34 throw new AccessDeniedException('You are not allowed to read settings.');
35 }
36
37 /** @var SettingsService $settingsService */
38 $settingsService = $this->getContainer()->get('domain.settings.service');
39
40 $settings = $settingsService->getAllSettingsCategorized();
41
42 $superAdminService = new SuperAdminRoleService();
43 $settings['isSuperAdmin'] = $superAdminService->isCurrentUserSuperAdmin();
44 $settings['isSuperAdminRoleAvailable'] = SuperAdminRoleService::isAvailable();
45 $settings['superAdminCount'] = $superAdminService->countSuperAdmins();
46
47 if ($settings['activation']['purchaseCodeStore'] !== '' && $settings['activation']['active']) {
48 $settings['activation']['purchaseCodeStore'] = null;
49 }
50
51 if (!$superAdminService->canAccessActivationSettings()) {
52 $settings['activation']['purchaseCodeStore'] = null;
53 $settings['activation']['envatoTokenEmail'] = '';
54 $settings['activation']['licence'] = null;
55 $settings['activation']['licenseActivatorUserId'] = null;
56 }
57
58 if (!empty($settings['payments']['square'])) {
59 $settings['payments']['square']['phpVersion'] = phpversion();
60 }
61
62 $mailchimpLists = [];
63 if ($settingsService->isFeatureEnabled('mailchimp') && !empty($settings['mailchimp']['accessToken'])) {
64 /** @var AbstractMailchimpService $mailchimpService */
65 $mailchimpService = $this->getContainer()->get('infrastructure.mailchimp.service');
66 $mailchimpLists = $mailchimpService->getLists();
67 if (!empty($mailchimpLists)) {
68 if (!$settings['mailchimp']['list']) {
69 $settings['mailchimp']['list'] = $mailchimpLists[0]['id'];
70 $settingsService->setCategorySettings('mailchimp', $settings['mailchimp']);
71 }
72 }
73 }
74
75 $result->setResult(CommandResult::RESULT_SUCCESS);
76 $result->setMessage('Successfully retrieved settings.');
77
78 if (isset($settings['general'])) {
79 $settings['general'] = array_merge($settings['general'], UsageTracker::getSettings(new AmeliaCollector()));
80 }
81
82 $settings = apply_filters('amelia_get_settings_filter', $settings);
83
84 do_action('amelia_get_settings', $settings);
85
86 $result->setData(
87 [
88 'settings' => $settings,
89 'additionalData' => [
90 'mailchimpLists' => $mailchimpLists,
91 'ivyForms' => IvyFormsService::getForms(),
92 ]
93 ]
94 );
95
96 return $result;
97 }
98 }
99