PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / 3.6.0
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance v3.6.0
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.6.0, at minify/class-wp-optimize-minify-admin.php

313 lines 10.0 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_analytics', array($this, 'output_analytics_settings'), 20);
49 add_action('wp_optimize_admin_page_wpo_minify_css', array($this, 'output_css_settings'), 20);
50 add_action('wp_optimize_admin_page_wpo_minify_js', array($this, 'output_js_settings'), 20);
51 add_action('wp_optimize_admin_page_wpo_minify_preload', array($this, 'output_preload_settings'), 20);
52 }
53
54 /**
55 * Load scripts for controlling the admin pages
56 *
57 * @param string $hook
58 * @return void
59 */
60 public function admin_enqueue_scripts($hook) {
61 $enqueue_version = WP_Optimize()->get_enqueue_version();
62 $min_or_not_internal = WP_Optimize()->get_min_or_not_internal_string();
63 if (preg_match('/wp\-optimize/i', $hook)) {
64 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);
65 }
66 }
67
68 /**
69 * Conditionally runs upon the WP action admin_notices to display errors
70 *
71 * @return void
72 */
73 public function admin_notices_activation_errors() {
74 global $wp_version;
75 include ABSPATH . WPINC . '/version.php';
76 $errors = array();
77
78 if (!WPO_MINIFY_PHP_VERSION_MET) {
79 $errors[] = __('WP-Optimize Minify requires PHP 5.4 or higher.', 'wp-optimize') . ' ' . sprintf(__("You're using version %s.", 'wp-optimize'), PHP_VERSION);
80 }
81
82 if (!extension_loaded('mbstring')) {
83 $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');
84 }
85
86 if (version_compare($wp_version, $this->wp_version_required, '<')) {
87 $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);
88 }
89
90 foreach ($errors as $error) {
91 ?>
92 <div class="notice notice-error wpo-warning">
93 <p><?php echo $error; ?></p>
94 </div>
95 <?php
96 }
97 }
98
99 /**
100 * Display an admin notice if the user has inadequate filesystem permissions
101 *
102 * @return void
103 */
104 public function check_permissions_admin_notices() {
105 // get cache path
106 $cache_path = WP_Optimize_Minify_Cache_Functions::cache_path();
107 $cache_dir = $cache_path['cachedir'];
108 if (is_dir($cache_dir) && !is_writable($cache_dir)) {
109 $chmod = substr(sprintf('%o', fileperms($cache_dir)), -4);
110 ?>
111 <div class="notice notice-error wpo-warning">
112 <p>
113 <?php printf(__('WP-Optimize Minify needs write permissions on the folder %s.', 'wp-optimize'), "<strong>".htmlspecialchars($cache_dir)."</strpmg>"); ?>
114 </p>
115 </div>
116 <div class="notice notice-error wpo-warning">
117 <p>
118 <?php printf(__('The current permissions for WP-Optimize Minify are chmod %s.', 'wp-optimize'), "<strong>$chmod</strong>"); ?>
119 </p>
120 </div>
121 <div class="notice notice-error wpo-warning">
122 <p>
123 <?php
124 printf(__('If you need something more than %s for it to work, then your server is probably misconfigured.', 'wp-optimize'), '<strong>775</strong>');
125 echo " ";
126 _e('Please contact your hosting provider.', 'wp-optimize');
127 ?>
128 </p>
129 </div>
130 <?php
131 }
132 }
133
134 /**
135 * Minify - Outputs the status tab
136 *
137 * @return void
138 */
139 public function output_status() {
140 $found_incompatible_plugins = WP_Optimize_Detect_Minify_Plugins::get_instance()->get_active_minify_plugins();
141 $wpo_minify_options = wp_optimize_minify_config()->get();
142 $cache_path = WP_Optimize_Minify_Cache_Functions::cache_path();
143 WP_Optimize()->include_template(
144 'minify/status-tab.php',
145 false,
146 array(
147 'wpo_minify_options' => $wpo_minify_options,
148 'show_information_notice' => !get_user_meta(get_current_user_id(), 'wpo-hide-minify-information-notice', true),
149 'cache_dir' => $cache_path['cachedir'],
150 'can_purge_the_cache' => WP_Optimize()->get_minify()->can_purge_cache(),
151 'active_minify_plugins' => apply_filters('wpo_minify_found_incompatible_plugins', $found_incompatible_plugins),
152 )
153 );
154 }
155
156 /**
157 * Minify - Outputs the font settings tab
158 *
159 * @return void
160 */
161 public function output_font_settings() {
162 $wpo_minify_options = wp_optimize_minify_config()->get();
163 WP_Optimize()->include_template(
164 'minify/font-settings-tab.php',
165 false,
166 array(
167 'wpo_minify_options' => $wpo_minify_options
168 )
169 );
170 }
171
172 /**
173 * Minify - Outputs the analytics settings tab
174 *
175 * @return void
176 */
177 public function output_analytics_settings() {
178 $config = wp_optimize_minify_config()->get();
179 $id = isset($config['tracking_id']) ? $config['tracking_id'] : '';
180 $method = isset($config['analytics_method']) ? $config['analytics_method'] : '';
181 $is_enabled = isset($config['enable_analytics']) ? $config['enable_analytics'] : false;
182
183 WP_Optimize()->include_template(
184 'minify/analytics-settings-tab.php',
185 false,
186 array(
187 'id' => $id,
188 'method'=> $method,
189 'is_enabled'=> $is_enabled
190 )
191 );
192 }
193
194 /**
195 * Minify - Outputs the CSS settings tab
196 *
197 * @return void
198 */
199 public function output_css_settings() {
200 $wpo_minify_options = wp_optimize_minify_config()->get();
201 WP_Optimize()->include_template(
202 'minify/css-settings-tab.php',
203 false,
204 array(
205 'wpo_minify_options' => $wpo_minify_options
206 )
207 );
208 }
209
210 /**
211 * Minify - Outputs the JS settings tab
212 *
213 * @return void
214 */
215 public function output_js_settings() {
216 $wpo_minify_options = wp_optimize_minify_config()->get();
217 WP_Optimize()->include_template(
218 'minify/js-settings-tab.php',
219 false,
220 array(
221 'wpo_minify_options' => $wpo_minify_options
222 )
223 );
224 }
225
226 /**
227 * Minify - Outputs the settings tab
228 *
229 * @return void
230 */
231 public function output_settings() {
232 $wpo_minify_options = wp_optimize_minify_config()->get();
233 $url = parse_url(get_home_url());
234 WP_Optimize()->include_template(
235 'minify/settings-tab.php',
236 false,
237 array(
238 'wpo_minify_options' => $wpo_minify_options,
239 'default_protocol' => $url['scheme']
240 )
241 );
242 }
243
244 /**
245 * Minify - Outputs the settings tab
246 *
247 * @return void
248 */
249 public function output_assets_preload_placeholder($wpo_minify_options) {
250 WP_Optimize()->include_template(
251 'minify/asset-preload.php',
252 false,
253 array(
254 'wpo_minify_options' => $wpo_minify_options
255 )
256 );
257 }
258
259 /**
260 * Minify - Outputs the preload tab
261 *
262 * @return void
263 */
264 public function output_preload_settings() {
265 $wpo_minify_preloader = WP_Optimize_Minify_Preloader::instance();
266 $is_running = $wpo_minify_preloader->is_running();
267 $status = $wpo_minify_preloader->get_status_info();
268 $cache_config = WPO_Cache_Config::instance();
269 WP_Optimize()->include_template(
270 'minify/preload-tab.php',
271 false,
272 array(
273 'is_cache_enabled' => $cache_config->get_option('enable_page_caching'),
274 'is_running' => $is_running,
275 'status_message' => isset($status['message']) ? $status['message'] : '',
276 )
277 );
278 }
279
280 /**
281 * Minify - Outputs the advanced tab
282 *
283 * @return void
284 */
285 public function output_advanced() {
286 $wpo_minify_options = wp_optimize_minify_config()->get();
287 $files = false;
288 if (apply_filters('wpo_minify_status_show_files_on_load', true) && WPO_MINIFY_PHP_VERSION_MET) {
289 $files = WP_Optimize_Minify_Cache_Functions::get_cached_files();
290 }
291
292 // WP_Optimize_Minify_Functions is only loaded when Minify is active
293 if (class_exists('WP_Optimize_Minify_Functions')) {
294 $default_ignore = WP_Optimize_Minify_Functions::get_default_ignore();
295 $default_ie_blacklist = WP_Optimize_Minify_Functions::get_default_ie_blacklist();
296 } else {
297 $default_ignore = array();
298 $default_ie_blacklist = array();
299 }
300
301 WP_Optimize()->include_template(
302 'minify/advanced-tab.php',
303 false,
304 array(
305 'wpo_minify_options' => $wpo_minify_options,
306 'files' => $files,
307 'default_ignore' => $default_ignore,
308 'default_ie_blacklist' => $default_ie_blacklist
309 )
310 );
311 }
312 }
313