PluginProbe
JCH Optimize / trunk
JCH Optimize vtrunk
6.0.2 6.0.1 trunk 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.2.0 1.2.1 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.1.0 2.10.0 2.2.0 2.2.1 All 58 releases
jch-optimize / src / Controller / ToggleSetting.php

ToggleSetting.php in JCH Optimize trunk, at src/Controller/ToggleSetting.php

104 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * JCH Optimize - Performs several front-end optimizations for fast downloads
5 *
6 * @package jchoptimize/wordpress-platform
7 * @author Samuel Marshall <samuel@jch-optimize.net>
8 * @copyright Copyright (c) 2021 Samuel Marshall / JCH Optimize
9 * @license GNU/GPLv3, or later. See LICENSE file
10 *
11 * If LICENSE file missing, see <http://www.gnu.org/licenses/>.
12 */
13
14 namespace JchOptimize\WordPress\Controller;
15
16 use _JchOptimizeVendor\V91\Joomla\Input\Input;
17 use JchOptimize\Core\Admin\Icons;
18 use JchOptimize\Core\Mvc\Controller;
19 use JchOptimize\Core\Platform\CacheInterface;
20 use JchOptimize\WordPress\Model\Configure;
21
22 use function array_column;
23 use function array_intersect_key;
24 use function array_map;
25 use function array_merge;
26 use function array_values;
27 use function check_ajax_referer;
28 use function json_encode;
29
30 class ToggleSetting extends Controller
31 {
32 use AuthorizesAdminRequestsTrait;
33
34 public function __construct(private Configure $model, private CacheInterface $cache, ?Input $input)
35 {
36 parent::__construct($input);
37 }
38
39 public function execute(): bool
40 {
41 $this->authorizeManageOptions();
42 /** @var Input $input */
43 $input = $this->getInput();
44 /** @var string|null $setting */
45 $setting = $input->get('setting');
46
47 if (check_ajax_referer($setting)) {
48 $this->model->toggleSetting($setting);
49 }
50
51 /** @var string|null $currentSettingValue */
52 $currentSettingValue = $this->model->getState()->get($setting);
53
54 if ($setting == 'integrated_page_cache_enable') {
55 $currentSettingValue = $this->cache->isPageCacheEnabled($this->model->getState());
56 }
57
58 $class = $currentSettingValue ? 'enabled' : 'disabled';
59 $class2 = '';
60 $auto = false;
61
62 if ($setting == 'pro_reduce_unused_css') {
63 $class2 = $this->model->getState()->get('optimizeCssDelivery_enable') ? 'enabled' : 'disabled';
64 }
65
66 if ($setting == 'optimizeCssDelivery_enable') {
67 $class2 = $this->model->getState()->get('pro_reduce_unused_css') ? 'enabled' : 'disabled';
68 }
69
70 if ($setting == 'combine_files_enable' && $currentSettingValue) {
71 $auto = $this->getEnabledAutoSetting();
72 }
73
74 echo json_encode(['class' => $class, 'class2' => $class2, 'auto' => $auto]);
75
76 return true;
77 }
78
79 private function getEnabledAutoSetting(): ?string
80 {
81 $autoSettingsMap = Icons::autoSettingsArrayMap();
82
83 /** @psalm-suppress TooManyArguments */
84 $autoSettingsInitialized = array_map(function () {
85 return '0';
86 }, $autoSettingsMap);
87
88 $currentAutoSettings = array_intersect_key($this->model->getState()->toArray(), $autoSettingsInitialized);
89 //order array
90 $orderedCurrentAutoSettings = array_merge($autoSettingsInitialized, $currentAutoSettings);
91
92 $autoSettings = ['minimum', 'intermediate', 'average', 'deluxe', 'premium', 'optimum'];
93
94 for ($j = 0; $j < 6; $j++) {
95 if (array_values($orderedCurrentAutoSettings) === array_column($autoSettingsMap, 's' . ($j + 1))) {
96 return $autoSettings[$j];
97 }
98 }
99
100 //No auto setting configured
101 return null;
102 }
103 }
104