PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / 3.2.22
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance v3.2.22
4.7.0 4.6.1 4.6.0 4.5.5 4.5.4 4.5.3 4.5.2 3.2.20 3.2.21 3.2.22 3.2.3 3.2.5 3.2.6 3.2.7 3.2.9 3.3.0 3.3.1 3.3.2 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.7.0 3.7.1 All 111 releases
wp-optimize / minify / class-wp-optimize-minify-admin.php

class-wp-optimize-minify-admin.php in WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance 3.2.22, at minify/class-wp-optimize-minify-admin.php

290 lines 9.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if (!defined('ABSPATH')) die('No direct access allowed');
3
4 class WP_Optimize_Minify_Admin {
5
6 private $wp_version_required = '4.5';
7
8 /**
9 * Initialize, add actions and filters
10 *
11 * @return void
12 */
13 public function __construct() {
14 if (WPO_MINIFY_PHP_VERSION_MET) {
15 // exclude processing for editors and administrators (fix editors)
16 add_action('wp_optimize_admin_page_wpo_minify_status', array($this, 'check_permissions_admin_notices'));
17 }
18
19 add_action('wp_optimize_admin_page_wpo_minify_status', array($this, 'admin_notices_activation_errors'));
20
21 add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
22
23 // This function runs when WordPress updates or installs/remove something. Forces new cache
24 add_action('upgrader_process_complete', array('WP_Optimize_Minify_Cache_Functions', 'cache_increment'));
25 // This function runs when an active theme or plugin is updated
26 add_action('wpo_active_plugin_or_theme_updated', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
27 add_action('upgrader_overwrote_package', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
28 add_action('after_switch_theme', array('WP_Optimize_Minify_Cache_Functions', 'cache_increment'));
29 add_action('updraftcentral_version_updated', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
30 add_action('elementor/editor/after_save', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
31 add_action('fusion_cache_reset_after', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
32 // Output asset preload placeholder, replaced by premium
33 add_action('wpo_minify_settings_tabs', array($this, 'output_assets_preload_placeholder'), 10, 1);
34
35 add_action('wp_optimize_register_admin_content', array($this, 'register_content'));
36 }
37
38 /**
39 * Register the content
40 *
41 * @return void
42 */
43 public function register_content() {
44 add_action('wp_optimize_admin_page_wpo_minify_status', array($this, 'output_status'), 20);
45 add_action('wp_optimize_admin_page_wpo_minify_settings', array($this, 'output_settings'), 20);
46 add_action('wp_optimize_admin_page_wpo_minify_advanced', array($this, 'output_advanced'), 20);
47 add_action('wp_optimize_admin_page_wpo_minify_font', array($this, 'output_font_settings'), 20);
48 add_action('wp_optimize_admin_page_wpo_minify_css', array($this, 'output_css_settings'), 20);
49 add_action('wp_optimize_admin_page_wpo_minify_js', array($this, 'output_js_settings'), 20);
50 add_action('wp_optimize_admin_page_wpo_minify_preload', array($this, 'output_preload_settings'), 20);
51 }
52
53 /**
54 * Load scripts for controlling the admin pages
55 *
56 * @param string $hook
57 * @return void
58 */
59 public function admin_enqueue_scripts($hook) {
60 $enqueue_version = WP_Optimize()->get_enqueue_version();
61 $min_or_not_internal = WP_Optimize()->get_min_or_not_internal_string();
62 if (preg_match('/wp\-optimize/i', $hook)) {
63 wp_enqueue_script('wp-optimize-min-js', WPO_PLUGIN_URL.'js/minify' . $min_or_not_internal . '.js', array('jquery', 'wp-optimize-admin-js'), $enqueue_version);
64 }
65 }
66
67 /**
68 * Conditionally runs upon the WP action admin_notices to display errors
69 *
70 * @return void
71 */
72 public function admin_notices_activation_errors() {
73 global $wp_version;
74 include ABSPATH . WPINC . '/version.php';
75 $errors = array();
76
77 if (!WPO_MINIFY_PHP_VERSION_MET) {
78 $errors[] = __('WP-Optimize Minify requires PHP 5.4 or higher.', 'wp-optimize') . ' ' . sprintf(__("You're using version %s.", 'wp-optimize'), PHP_VERSION);
79 }
80
81 if (!extension_loaded('mbstring')) {
82 $errors[] = __('WP-Optimize Minify requires the PHP mbstring module to be installed on the server; please ask your web hosting company for advice on how to enable it on your server.', 'wp-optimize');
83 }
84
85 if (version_compare($wp_version, $this->wp_version_required, '<')) {
86 $errors[] = sprintf(__('WP-Optimize Minify requires WordPress version %s or higher.', 'wp-optimize'), $this->wp_version_required) . ' ' . sprintf(__("You're using version %s.", 'wp-optimize'), $wp_version);
87 }
88
89 foreach ($errors as $error) {
90 ?>
91 <div class="notice notice-error wpo-warning">
92 <p><?php echo $error; ?></p>
93 </div>
94 <?php
95 }
96 }
97
98 /**
99 * Display an admin notice if the user has inadequate filesystem permissions
100 *
101 * @return void
102 */
103 public function check_permissions_admin_notices() {
104 // get cache path
105 $cache_path = WP_Optimize_Minify_Cache_Functions::cache_path();
106 $cache_dir = $cache_path['cachedir'];
107 if (is_dir($cache_dir) && !is_writable($cache_dir)) {
108 $chmod = substr(sprintf('%o', fileperms($cache_dir)), -4);
109 ?>
110 <div class="notice notice-error wpo-warning">
111 <p>
112 <?php printf(__('WP-Optimize Minify needs write permissions on the folder %s.', 'wp-optimize'), "<strong>".htmlspecialchars($cache_dir)."</strpmg>"); ?>
113 </p>
114 </div>
115 <div class="notice notice-error wpo-warning">
116 <p>
117 <?php printf(__('The current permissions for WP-Optimize Minify are chmod %s.', 'wp-optimize'), "<strong>$chmod</strong>"); ?>
118 </p>
119 </div>
120 <div class="notice notice-error wpo-warning">
121 <p>
122 <?php
123 printf(__('If you need something more than %s for it to work, then your server is probably misconfigured.', 'wp-optimize'), '<strong>775</strong>');
124 echo " ";
125 _e('Please contact your hosting provider.', 'wp-optimize');
126 ?>
127 </p>
128 </div>
129 <?php
130 }
131 }
132
133 /**
134 * Minify - Outputs the status tab
135 *
136 * @return void
137 */
138 public function output_status() {
139 $found_incompatible_plugins = WP_Optimize_Detect_Minify_Plugins::get_instance()->get_active_minify_plugins();
140 $wpo_minify_options = wp_optimize_minify_config()->get();
141 $cache_path = WP_Optimize_Minify_Cache_Functions::cache_path();
142 WP_Optimize()->include_template(
143 'minify/status-tab.php',
144 false,
145 array(
146 'wpo_minify_options' => $wpo_minify_options,
147 'show_information_notice' => !get_user_meta(get_current_user_id(), 'wpo-hide-minify-information-notice', true),
148 'cache_dir' => $cache_path['cachedir'],
149 'can_purge_the_cache' => WP_Optimize()->get_minify()->can_purge_cache(),
150 'active_minify_plugins' => apply_filters('wpo_minify_found_incompatible_plugins', $found_incompatible_plugins),
151 )
152 );
153 }
154
155 /**
156 * Minify - Outputs the font settings tab
157 *
158 * @return void
159 */
160 public function output_font_settings() {
161 $wpo_minify_options = wp_optimize_minify_config()->get();
162 WP_Optimize()->include_template(
163 'minify/font-settings-tab.php',
164 false,
165 array(
166 'wpo_minify_options' => $wpo_minify_options
167 )
168 );
169 }
170
171 /**
172 * Minify - Outputs the CSS settings tab
173 *
174 * @return void
175 */
176 public function output_css_settings() {
177 $wpo_minify_options = wp_optimize_minify_config()->get();
178 WP_Optimize()->include_template(
179 'minify/css-settings-tab.php',
180 false,
181 array(
182 'wpo_minify_options' => $wpo_minify_options
183 )
184 );
185 }
186
187 /**
188 * Minify - Outputs the JS settings tab
189 *
190 * @return void
191 */
192 public function output_js_settings() {
193 $wpo_minify_options = wp_optimize_minify_config()->get();
194 WP_Optimize()->include_template(
195 'minify/js-settings-tab.php',
196 false,
197 array(
198 'wpo_minify_options' => $wpo_minify_options
199 )
200 );
201 }
202
203 /**
204 * Minify - Outputs the settings tab
205 *
206 * @return void
207 */
208 public function output_settings() {
209 $wpo_minify_options = wp_optimize_minify_config()->get();
210 $url = parse_url(get_home_url());
211 WP_Optimize()->include_template(
212 'minify/settings-tab.php',
213 false,
214 array(
215 'wpo_minify_options' => $wpo_minify_options,
216 'default_protocol' => $url['scheme']
217 )
218 );
219 }
220
221 /**
222 * Minify - Outputs the settings tab
223 *
224 * @return void
225 */
226 public function output_assets_preload_placeholder($wpo_minify_options) {
227 WP_Optimize()->include_template(
228 'minify/asset-preload.php',
229 false,
230 array(
231 'wpo_minify_options' => $wpo_minify_options
232 )
233 );
234 }
235
236 /**
237 * Minify - Outputs the preload tab
238 *
239 * @return void
240 */
241 public function output_preload_settings() {
242 $wpo_minify_preloader = WP_Optimize_Minify_Preloader::instance();
243 $is_running = $wpo_minify_preloader->is_running();
244 $status = $wpo_minify_preloader->get_status_info();
245 $cache_config = WPO_Cache_Config::instance();
246 WP_Optimize()->include_template(
247 'minify/preload-tab.php',
248 false,
249 array(
250 'is_cache_enabled' => $cache_config->get_option('enable_page_caching'),
251 'is_running' => $is_running,
252 'status_message' => isset($status['message']) ? $status['message'] : '',
253 )
254 );
255 }
256
257 /**
258 * Minify - Outputs the advanced tab
259 *
260 * @return void
261 */
262 public function output_advanced() {
263 $wpo_minify_options = wp_optimize_minify_config()->get();
264 $files = false;
265 if (apply_filters('wpo_minify_status_show_files_on_load', true) && WPO_MINIFY_PHP_VERSION_MET) {
266 $files = WP_Optimize_Minify_Cache_Functions::get_cached_files();
267 }
268
269 // WP_Optimize_Minify_Functions is only loaded when Minify is active
270 if (class_exists('WP_Optimize_Minify_Functions')) {
271 $default_ignore = WP_Optimize_Minify_Functions::get_default_ignore();
272 $default_ie_blacklist = WP_Optimize_Minify_Functions::get_default_ie_blacklist();
273 } else {
274 $default_ignore = array();
275 $default_ie_blacklist = array();
276 }
277
278 WP_Optimize()->include_template(
279 'minify/advanced-tab.php',
280 false,
281 array(
282 'wpo_minify_options' => $wpo_minify_options,
283 'files' => $files,
284 'default_ignore' => $default_ignore,
285 'default_ie_blacklist' => $default_ie_blacklist
286 )
287 );
288 }
289 }
290