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 / Model / Configure.php

Configure.php in JCH Optimize trunk, at src/Model/Configure.php

100 lines 3.1 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) 2020 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\Model;
15
16 use JchOptimize\Core\Admin\Icons;
17 use JchOptimize\Core\Mvc\Model;
18 use JchOptimize\Core\PageCache\CaptureCache;
19 use JchOptimize\Core\Platform\CacheInterface;
20
21 use function abs;
22 use function array_column;
23 use function array_combine;
24 use function array_keys;
25 use function in_array;
26 use function is_null;
27
28 class Configure extends Model
29 {
30 public function __construct(private CacheInterface $cache)
31 {
32 }
33
34 public function applyAutoSetting(string $autoSetting): bool
35 {
36 $autoSettingsMap = Icons::autoSettingsArrayMap();
37
38 //$autoSetting = $this->state->get( 'autosetting', 's1' );
39
40 if (! in_array($autoSetting, ['s1', 's2', 's3', 's4', 's5', 's6'])) {
41 return false;
42 }
43
44 //Get array of settings that correspond to the selected auto setting
45 $settingsArray = array_column($autoSettingsMap, $autoSetting);
46
47 //Map settings array to name of settings
48 $indexedSettingsArray = array_combine(array_keys($autoSettingsMap), $settingsArray);
49
50 //Save each setting to state
51 foreach ($indexedSettingsArray as $name => $value) {
52 $this->state->set($name, $value);
53 }
54
55 $this->state->set('combine_files_enable', '1');
56
57 //Save state to plugin options in database
58 return update_option('jch-optimize_settings', $this->state->toArray());
59 }
60
61 public function toggleSetting(?string $setting): bool
62 {
63 if (is_null($setting)) {
64 return false;
65 }
66
67 //Get the currently saved setting from state
68 $currentSetting = (int)$this->state->get($setting);
69 //Calculate the inverse to 'toggle'
70 $newSetting = (string)abs($currentSetting - 1);
71
72 //Reduce unused CSS only works if Optimize CSS Delivery is enabled
73 if ($setting == 'pro_reduce_unused_css' && $newSetting == '1') {
74 $this->state->set('optimizeCssDelivery_enable', '1');
75 }
76
77 if ($setting == 'optimizeCssDelivery_enable' && $newSetting == '0') {
78 $this->state->set('pro_reduce_unused_css', '0');
79 }
80
81 if ($setting == 'integrated_page_cache_enable') {
82 $bCurrentSetting = $this->cache->isPageCacheEnabled($this->state);
83 $newSetting = (string)(! $bCurrentSetting);
84
85 $this->state->set('cache_enable', $newSetting);
86
87 if (JCH_PRO) {
88 /** @see CaptureCache::updateHtaccess() */
89 $this->getContainer()->get(CaptureCache::class)->updateHtaccess();
90 }
91 }
92
93 //Update new setting in model state
94 $this->state->set($setting, $newSetting);
95
96 //save state to plugin options in database
97 return update_option('jch-optimize_settings', $this->state->toArray());
98 }
99 }
100