Completed
Push — master ( 2ef6f7...6fcb0f )
by frank
01:45
created
classes/autoptimizeMain.php 1 patch
Spacing   +178 added lines, -178 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Wraps base plugin logic/hooks and handles activation/deactivation/uninstall.
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -33,7 +33,7 @@  discard block
 block discarded – undo
33 33
      * @param string $version Version.
34 34
      * @param string $filepath Filepath. Needed for activation/deactivation/uninstall hooks.
35 35
      */
36
-    public function __construct( $version, $filepath )
36
+    public function __construct($version, $filepath)
37 37
     {
38 38
         $this->version  = $version;
39 39
         $this->filepath = $filepath;
@@ -50,102 +50,102 @@  discard block
 block discarded – undo
50 50
 
51 51
     protected function add_hooks()
52 52
     {
53
-        if ( ! defined( 'AUTOPTIMIZE_SETUP_INITHOOK' ) ) {
54
-            define( 'AUTOPTIMIZE_SETUP_INITHOOK', 'plugins_loaded' );
53
+        if (!defined('AUTOPTIMIZE_SETUP_INITHOOK')) {
54
+            define('AUTOPTIMIZE_SETUP_INITHOOK', 'plugins_loaded');
55 55
         }
56 56
 
57
-        add_action( AUTOPTIMIZE_SETUP_INITHOOK, array( $this, 'setup' ) );
58
-        add_action( AUTOPTIMIZE_SETUP_INITHOOK, array( $this, 'hook_page_cache_purge' ) );
57
+        add_action(AUTOPTIMIZE_SETUP_INITHOOK, array($this, 'setup'));
58
+        add_action(AUTOPTIMIZE_SETUP_INITHOOK, array($this, 'hook_page_cache_purge'));
59 59
 
60
-        add_action( 'autoptimize_setup_done', array( $this, 'version_upgrades_check' ) );
61
-        add_action( 'autoptimize_setup_done', array( $this, 'check_cache_and_run' ) );
62
-        add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_ao_extra' ), 15 );
63
-        add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_partners_tab' ), 20 );
64
-        add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_criticalcss' ), 11 );
65
-        add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_notfound_fallback' ), 10 );
60
+        add_action('autoptimize_setup_done', array($this, 'version_upgrades_check'));
61
+        add_action('autoptimize_setup_done', array($this, 'check_cache_and_run'));
62
+        add_action('autoptimize_setup_done', array($this, 'maybe_run_ao_extra'), 15);
63
+        add_action('autoptimize_setup_done', array($this, 'maybe_run_partners_tab'), 20);
64
+        add_action('autoptimize_setup_done', array($this, 'maybe_run_criticalcss'), 11);
65
+        add_action('autoptimize_setup_done', array($this, 'maybe_run_notfound_fallback'), 10);
66 66
 
67
-        add_action( 'init', array( $this, 'load_textdomain' ) );
68
-        add_action( 'admin_init', array( 'PAnD', 'init' ) );
67
+        add_action('init', array($this, 'load_textdomain'));
68
+        add_action('admin_init', array('PAnD', 'init'));
69 69
 
70
-        if ( is_multisite() && is_admin() ) {
70
+        if (is_multisite() && is_admin()) {
71 71
             // Only if multisite and if in admin we want to check if we need to save options on network level.
72
-            add_action( 'init', 'autoptimizeOptionWrapper::check_multisite_on_saving_options' );
72
+            add_action('init', 'autoptimizeOptionWrapper::check_multisite_on_saving_options');
73 73
         }
74 74
 
75 75
         // register uninstall & deactivation hooks.
76
-        register_uninstall_hook( $this->filepath, 'autoptimizeMain::on_uninstall' );
77
-        register_deactivation_hook( $this->filepath, 'autoptimizeMain::on_deactivation' );
76
+        register_uninstall_hook($this->filepath, 'autoptimizeMain::on_uninstall');
77
+        register_deactivation_hook($this->filepath, 'autoptimizeMain::on_deactivation');
78 78
     }
79 79
 
80 80
     public function load_textdomain()
81 81
     {
82
-        load_plugin_textdomain( 'autoptimize' );
82
+        load_plugin_textdomain('autoptimize');
83 83
     }
84 84
 
85 85
     public function setup()
86 86
     {
87 87
         // Do we gzip in php when caching or is the webserver doing it?
88
-        define( 'AUTOPTIMIZE_CACHE_NOGZIP', (bool) autoptimizeOptionWrapper::get_option( 'autoptimize_cache_nogzip' ) );
88
+        define('AUTOPTIMIZE_CACHE_NOGZIP', (bool) autoptimizeOptionWrapper::get_option('autoptimize_cache_nogzip'));
89 89
 
90 90
         // These can be overridden by specifying them in wp-config.php or such.
91
-        if ( ! defined( 'AUTOPTIMIZE_WP_CONTENT_NAME' ) ) {
92
-            define( 'AUTOPTIMIZE_WP_CONTENT_NAME', '/' . wp_basename( WP_CONTENT_DIR ) );
91
+        if (!defined('AUTOPTIMIZE_WP_CONTENT_NAME')) {
92
+            define('AUTOPTIMIZE_WP_CONTENT_NAME', '/'.wp_basename(WP_CONTENT_DIR));
93 93
         }
94
-        if ( ! defined( 'AUTOPTIMIZE_CACHE_CHILD_DIR' ) ) {
95
-            define( 'AUTOPTIMIZE_CACHE_CHILD_DIR', '/cache/autoptimize/' );
94
+        if (!defined('AUTOPTIMIZE_CACHE_CHILD_DIR')) {
95
+            define('AUTOPTIMIZE_CACHE_CHILD_DIR', '/cache/autoptimize/');
96 96
         }
97
-        if ( ! defined( 'AUTOPTIMIZE_CACHEFILE_PREFIX' ) ) {
98
-            define( 'AUTOPTIMIZE_CACHEFILE_PREFIX', 'autoptimize_' );
97
+        if (!defined('AUTOPTIMIZE_CACHEFILE_PREFIX')) {
98
+            define('AUTOPTIMIZE_CACHEFILE_PREFIX', 'autoptimize_');
99 99
         }
100 100
         // Note: trailing slash is not optional!
101
-        if ( ! defined( 'AUTOPTIMIZE_CACHE_DIR' ) ) {
102
-            define( 'AUTOPTIMIZE_CACHE_DIR', autoptimizeCache::get_pathname() );
101
+        if (!defined('AUTOPTIMIZE_CACHE_DIR')) {
102
+            define('AUTOPTIMIZE_CACHE_DIR', autoptimizeCache::get_pathname());
103 103
         }
104 104
 
105
-        define( 'WP_ROOT_DIR', substr( WP_CONTENT_DIR, 0, strlen( WP_CONTENT_DIR ) - strlen( AUTOPTIMIZE_WP_CONTENT_NAME ) ) );
105
+        define('WP_ROOT_DIR', substr(WP_CONTENT_DIR, 0, strlen(WP_CONTENT_DIR) - strlen(AUTOPTIMIZE_WP_CONTENT_NAME)));
106 106
 
107
-        if ( ! defined( 'AUTOPTIMIZE_WP_SITE_URL' ) ) {
108
-            if ( function_exists( 'domain_mapping_siteurl' ) ) {
109
-                define( 'AUTOPTIMIZE_WP_SITE_URL', domain_mapping_siteurl( get_current_blog_id() ) );
107
+        if (!defined('AUTOPTIMIZE_WP_SITE_URL')) {
108
+            if (function_exists('domain_mapping_siteurl')) {
109
+                define('AUTOPTIMIZE_WP_SITE_URL', domain_mapping_siteurl(get_current_blog_id()));
110 110
             } else {
111
-                define( 'AUTOPTIMIZE_WP_SITE_URL', site_url() );
111
+                define('AUTOPTIMIZE_WP_SITE_URL', site_url());
112 112
             }
113 113
         }
114
-        if ( ! defined( 'AUTOPTIMIZE_WP_CONTENT_URL' ) ) {
115
-            if ( function_exists( 'get_original_url' ) ) {
116
-                define( 'AUTOPTIMIZE_WP_CONTENT_URL', str_replace( get_original_url( AUTOPTIMIZE_WP_SITE_URL ), AUTOPTIMIZE_WP_SITE_URL, content_url() ) );
114
+        if (!defined('AUTOPTIMIZE_WP_CONTENT_URL')) {
115
+            if (function_exists('get_original_url')) {
116
+                define('AUTOPTIMIZE_WP_CONTENT_URL', str_replace(get_original_url(AUTOPTIMIZE_WP_SITE_URL), AUTOPTIMIZE_WP_SITE_URL, content_url()));
117 117
             } else {
118
-                define( 'AUTOPTIMIZE_WP_CONTENT_URL', content_url() );
118
+                define('AUTOPTIMIZE_WP_CONTENT_URL', content_url());
119 119
             }
120 120
         }
121
-        if ( ! defined( 'AUTOPTIMIZE_CACHE_URL' ) ) {
122
-            if ( is_multisite() && apply_filters( 'autoptimize_separate_blog_caches', true ) ) {
121
+        if (!defined('AUTOPTIMIZE_CACHE_URL')) {
122
+            if (is_multisite() && apply_filters('autoptimize_separate_blog_caches', true)) {
123 123
                 $blog_id = get_current_blog_id();
124
-                define( 'AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL . AUTOPTIMIZE_CACHE_CHILD_DIR . $blog_id . '/' );
124
+                define('AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL.AUTOPTIMIZE_CACHE_CHILD_DIR.$blog_id.'/');
125 125
             } else {
126
-                define( 'AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL . AUTOPTIMIZE_CACHE_CHILD_DIR );
126
+                define('AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL.AUTOPTIMIZE_CACHE_CHILD_DIR);
127 127
             }
128 128
         }
129
-        if ( ! defined( 'AUTOPTIMIZE_WP_ROOT_URL' ) ) {
130
-            define( 'AUTOPTIMIZE_WP_ROOT_URL', str_replace( AUTOPTIMIZE_WP_CONTENT_NAME, '', AUTOPTIMIZE_WP_CONTENT_URL ) );
129
+        if (!defined('AUTOPTIMIZE_WP_ROOT_URL')) {
130
+            define('AUTOPTIMIZE_WP_ROOT_URL', str_replace(AUTOPTIMIZE_WP_CONTENT_NAME, '', AUTOPTIMIZE_WP_CONTENT_URL));
131 131
         }
132
-        if ( ! defined( 'AUTOPTIMIZE_HASH' ) ) {
133
-            define( 'AUTOPTIMIZE_HASH', wp_hash( AUTOPTIMIZE_CACHE_URL ) );
132
+        if (!defined('AUTOPTIMIZE_HASH')) {
133
+            define('AUTOPTIMIZE_HASH', wp_hash(AUTOPTIMIZE_CACHE_URL));
134 134
         }
135
-        if ( ! defined( 'AUTOPTIMIZE_SITE_DOMAIN' ) ) {
136
-            define( 'AUTOPTIMIZE_SITE_DOMAIN', parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ) );
135
+        if (!defined('AUTOPTIMIZE_SITE_DOMAIN')) {
136
+            define('AUTOPTIMIZE_SITE_DOMAIN', parse_url(AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST));
137 137
         }
138 138
 
139 139
         // Multibyte-capable string replacements are available with a filter.
140 140
         // Also requires 'mbstring' extension.
141
-        $with_mbstring = apply_filters( 'autoptimize_filter_main_use_mbstring', false );
142
-        if ( $with_mbstring ) {
143
-            autoptimizeUtils::mbstring_available( \extension_loaded( 'mbstring' ) );
141
+        $with_mbstring = apply_filters('autoptimize_filter_main_use_mbstring', false);
142
+        if ($with_mbstring) {
143
+            autoptimizeUtils::mbstring_available(\extension_loaded('mbstring'));
144 144
         } else {
145
-            autoptimizeUtils::mbstring_available( false );
145
+            autoptimizeUtils::mbstring_available(false);
146 146
         }
147 147
 
148
-        do_action( 'autoptimize_setup_done' );
148
+        do_action('autoptimize_setup_done');
149 149
     }
150 150
 
151 151
     /**
@@ -155,61 +155,61 @@  discard block
 block discarded – undo
155 155
      */
156 156
     public function version_upgrades_check()
157 157
     {
158
-        autoptimizeVersionUpdatesHandler::check_installed_and_update( $this->version );
158
+        autoptimizeVersionUpdatesHandler::check_installed_and_update($this->version);
159 159
     }
160 160
 
161 161
     public function check_cache_and_run()
162 162
     {
163
-        if ( autoptimizeCache::cacheavail() ) {
163
+        if (autoptimizeCache::cacheavail()) {
164 164
             $conf = autoptimizeConfig::instance();
165
-            if ( $conf->get( 'autoptimize_html' ) || $conf->get( 'autoptimize_js' ) || $conf->get( 'autoptimize_css' ) || autoptimizeImages::imgopt_active() || autoptimizeImages::should_lazyload_wrapper() ) {
166
-                if ( ! defined( 'AUTOPTIMIZE_NOBUFFER_OPTIMIZE' ) ) {
165
+            if ($conf->get('autoptimize_html') || $conf->get('autoptimize_js') || $conf->get('autoptimize_css') || autoptimizeImages::imgopt_active() || autoptimizeImages::should_lazyload_wrapper()) {
166
+                if (!defined('AUTOPTIMIZE_NOBUFFER_OPTIMIZE')) {
167 167
                     // Hook into WordPress frontend.
168
-                    if ( defined( 'AUTOPTIMIZE_INIT_EARLIER' ) ) {
168
+                    if (defined('AUTOPTIMIZE_INIT_EARLIER')) {
169 169
                         add_action(
170 170
                             'init',
171
-                            array( $this, 'start_buffering' ),
171
+                            array($this, 'start_buffering'),
172 172
                             self::INIT_EARLIER_PRIORITY
173 173
                         );
174 174
                     } else {
175
-                        if ( ! defined( 'AUTOPTIMIZE_HOOK_INTO' ) ) {
176
-                            define( 'AUTOPTIMIZE_HOOK_INTO', 'template_redirect' );
175
+                        if (!defined('AUTOPTIMIZE_HOOK_INTO')) {
176
+                            define('AUTOPTIMIZE_HOOK_INTO', 'template_redirect');
177 177
                         }
178 178
                         add_action(
179
-                            constant( 'AUTOPTIMIZE_HOOK_INTO' ),
180
-                            array( $this, 'start_buffering' ),
179
+                            constant('AUTOPTIMIZE_HOOK_INTO'),
180
+                            array($this, 'start_buffering'),
181 181
                             self::DEFAULT_HOOK_PRIORITY
182 182
                         );
183 183
                     }
184 184
                 }
185 185
 
186 186
                 // And disable Jetpack's site accelerator if JS or CSS opt. are active.
187
-                if ( class_exists( 'Jetpack' ) && apply_filters( 'autoptimize_filter_main_disable_jetpack_cdn', true ) && ( $conf->get( 'autoptimize_js' ) || $conf->get( 'autoptimize_css' ) ) ) {
188
-                    add_filter( 'jetpack_force_disable_site_accelerator', '__return_true' );
187
+                if (class_exists('Jetpack') && apply_filters('autoptimize_filter_main_disable_jetpack_cdn', true) && ($conf->get('autoptimize_js') || $conf->get('autoptimize_css'))) {
188
+                    add_filter('jetpack_force_disable_site_accelerator', '__return_true');
189 189
                 }
190 190
             }
191 191
         } else {
192
-            add_action( 'admin_notices', 'autoptimizeMain::notice_cache_unavailable' );
192
+            add_action('admin_notices', 'autoptimizeMain::notice_cache_unavailable');
193 193
         }
194 194
     }
195 195
 
196 196
     public function maybe_run_ao_extra()
197 197
     {
198
-        if ( apply_filters( 'autoptimize_filter_extra_activate', true ) ) {
198
+        if (apply_filters('autoptimize_filter_extra_activate', true)) {
199 199
             $ao_imgopt = new autoptimizeImages();
200 200
             $ao_imgopt->run();
201 201
             $ao_extra = new autoptimizeExtra();
202 202
             $ao_extra->run();
203 203
 
204 204
             // And show the imgopt notice.
205
-            add_action( 'admin_notices', 'autoptimizeMain::notice_plug_imgopt' );
205
+            add_action('admin_notices', 'autoptimizeMain::notice_plug_imgopt');
206 206
         }
207 207
     }
208 208
 
209 209
     public function maybe_run_partners_tab()
210 210
     {
211 211
         // Loads partners tab code if in admin (and not in admin-ajax.php)!
212
-        if ( autoptimizeConfig::is_admin_and_not_ajax() ) {
212
+        if (autoptimizeConfig::is_admin_and_not_ajax()) {
213 213
             new autoptimizePartners();
214 214
         }
215 215
     }
@@ -217,22 +217,22 @@  discard block
 block discarded – undo
217 217
     public function maybe_run_criticalcss()
218 218
     {
219 219
         // Loads criticalcss if the power-up is not active and if the filter returns true.
220
-        if ( apply_filters( 'autoptimize_filter_criticalcss_active', true ) && ! autoptimizeUtils::is_plugin_active( 'autoptimize-criticalcss/ao_criticss_aas.php' ) ) {
220
+        if (apply_filters('autoptimize_filter_criticalcss_active', true) && !autoptimizeUtils::is_plugin_active('autoptimize-criticalcss/ao_criticss_aas.php')) {
221 221
             new autoptimizeCriticalCSSBase();
222 222
         }
223 223
     }
224 224
 
225 225
     public function maybe_run_notfound_fallback()
226 226
     {
227
-        if ( autoptimizeCache::do_fallback() ) {
228
-            add_action( 'template_redirect', array( 'autoptimizeCache', 'wordpress_notfound_fallback' ) );
227
+        if (autoptimizeCache::do_fallback()) {
228
+            add_action('template_redirect', array('autoptimizeCache', 'wordpress_notfound_fallback'));
229 229
         }
230 230
     }
231 231
 
232 232
     public function hook_page_cache_purge()
233 233
     {
234 234
         // hook into a collection of page cache purge actions if filter allows.
235
-        if ( apply_filters( 'autoptimize_filter_main_hookpagecachepurge', true ) ) {
235
+        if (apply_filters('autoptimize_filter_main_hookpagecachepurge', true)) {
236 236
             $page_cache_purge_actions = array(
237 237
                 'after_rocket_clean_domain', // exists.
238 238
                 'hyper_cache_purged', // Stefano confirmed this will be added.
@@ -247,9 +247,9 @@  discard block
 block discarded – undo
247 247
                 'wpo_cache_flush', // wp-optimize.
248 248
                 'rt_nginx_helper_after_fastcgi_purge_all', // nginx helper.
249 249
             );
250
-            $page_cache_purge_actions = apply_filters( 'autoptimize_filter_main_pagecachepurgeactions', $page_cache_purge_actions );
251
-            foreach ( $page_cache_purge_actions as $purge_action ) {
252
-                add_action( $purge_action, 'autoptimizeCache::clearall_actionless' );
250
+            $page_cache_purge_actions = apply_filters('autoptimize_filter_main_pagecachepurgeactions', $page_cache_purge_actions);
251
+            foreach ($page_cache_purge_actions as $purge_action) {
252
+                add_action($purge_action, 'autoptimizeCache::clearall_actionless');
253 253
             }
254 254
         }
255 255
     }
@@ -261,38 +261,38 @@  discard block
 block discarded – undo
261 261
      */
262 262
     public function start_buffering()
263 263
     {
264
-        if ( $this->should_buffer() ) {
264
+        if ($this->should_buffer()) {
265 265
 
266 266
             // Load speedupper conditionally (true by default).
267
-            if ( apply_filters( 'autoptimize_filter_speedupper', true ) ) {
267
+            if (apply_filters('autoptimize_filter_speedupper', true)) {
268 268
                 $ao_speedupper = new autoptimizeSpeedupper();
269 269
             }
270 270
 
271 271
             $conf = autoptimizeConfig::instance();
272 272
 
273
-            if ( $conf->get( 'autoptimize_js' ) ) {
274
-                if ( ! defined( 'CONCATENATE_SCRIPTS' ) ) {
275
-                    define( 'CONCATENATE_SCRIPTS', false );
273
+            if ($conf->get('autoptimize_js')) {
274
+                if (!defined('CONCATENATE_SCRIPTS')) {
275
+                    define('CONCATENATE_SCRIPTS', false);
276 276
                 }
277
-                if ( ! defined( 'COMPRESS_SCRIPTS' ) ) {
278
-                    define( 'COMPRESS_SCRIPTS', false );
277
+                if (!defined('COMPRESS_SCRIPTS')) {
278
+                    define('COMPRESS_SCRIPTS', false);
279 279
                 }
280 280
             }
281 281
 
282
-            if ( $conf->get( 'autoptimize_css' ) ) {
283
-                if ( ! defined( 'COMPRESS_CSS' ) ) {
284
-                    define( 'COMPRESS_CSS', false );
282
+            if ($conf->get('autoptimize_css')) {
283
+                if (!defined('COMPRESS_CSS')) {
284
+                    define('COMPRESS_CSS', false);
285 285
                 }
286 286
             }
287 287
 
288
-            if ( apply_filters( 'autoptimize_filter_obkiller', false ) ) {
289
-                while ( ob_get_level() > 0 ) {
288
+            if (apply_filters('autoptimize_filter_obkiller', false)) {
289
+                while (ob_get_level() > 0) {
290 290
                     ob_end_clean();
291 291
                 }
292 292
             }
293 293
 
294 294
             // Now, start the real thing!
295
-            ob_start( array( $this, 'end_buffering' ) );
295
+            ob_start(array($this, 'end_buffering'));
296 296
         }
297 297
     }
298 298
 
@@ -303,31 +303,31 @@  discard block
 block discarded – undo
303 303
      *                          deciding once per request (for use in tests).
304 304
      * @return bool
305 305
      */
306
-    public static function should_buffer( $doing_tests = false )
306
+    public static function should_buffer($doing_tests = false)
307 307
     {
308 308
         static $do_buffering = null;
309 309
 
310 310
         // Only check once in case we're called multiple times by others but
311 311
         // still allows multiple calls when doing tests.
312
-        if ( null === $do_buffering || $doing_tests ) {
312
+        if (null === $do_buffering || $doing_tests) {
313 313
 
314 314
             $ao_noptimize = false;
315 315
 
316 316
             // Checking for DONOTMINIFY constant as used by e.g. WooCommerce POS.
317
-            if ( defined( 'DONOTMINIFY' ) && ( constant( 'DONOTMINIFY' ) === true || constant( 'DONOTMINIFY' ) === 'true' ) ) {
317
+            if (defined('DONOTMINIFY') && (constant('DONOTMINIFY') === true || constant('DONOTMINIFY') === 'true')) {
318 318
                 $ao_noptimize = true;
319 319
             }
320 320
 
321 321
             // Skip checking query strings if they're disabled.
322
-            if ( apply_filters( 'autoptimize_filter_honor_qs_noptimize', true ) ) {
322
+            if (apply_filters('autoptimize_filter_honor_qs_noptimize', true)) {
323 323
                 // Check for `ao_noptimize` (and other) keys in the query string
324 324
                 // to get non-optimized page for debugging.
325 325
                 $keys = array(
326 326
                     'ao_noptimize',
327 327
                     'ao_noptirocket',
328 328
                 );
329
-                foreach ( $keys as $key ) {
330
-                    if ( array_key_exists( $key, $_GET ) && '1' === $_GET[ $key ] ) {
329
+                foreach ($keys as $key) {
330
+                    if (array_key_exists($key, $_GET) && '1' === $_GET[$key]) {
331 331
                         $ao_noptimize = true;
332 332
                         break;
333 333
                     }
@@ -336,25 +336,25 @@  discard block
 block discarded – undo
336 336
 
337 337
             // also honor PageSpeed=off parameter as used by mod_pagespeed, in use by some pagebuilders,
338 338
             // see https://www.modpagespeed.com/doc/experiment#ModPagespeed for info on that.
339
-            if ( false === $ao_noptimize && array_key_exists( 'PageSpeed', $_GET ) && 'off' === $_GET['PageSpeed'] ) {
339
+            if (false === $ao_noptimize && array_key_exists('PageSpeed', $_GET) && 'off' === $_GET['PageSpeed']) {
340 340
                 $ao_noptimize = true;
341 341
             }
342 342
 
343 343
             // and make sure Thrive editor doesn't get optimized HTML.
344
-            if ( false === $ao_noptimize && array_key_exists( 'tve', $_GET ) && 'true' === $_GET['tve'] ) {
344
+            if (false === $ao_noptimize && array_key_exists('tve', $_GET) && 'true' === $_GET['tve']) {
345 345
                 $ao_noptimize = true;
346 346
             }
347 347
 
348 348
             // If setting says not to optimize logged in user and user is logged in...
349
-            if ( false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_optimize_logged', 'on' ) && is_user_logged_in() && current_user_can( 'edit_posts' ) ) {
349
+            if (false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option('autoptimize_optimize_logged', 'on') && is_user_logged_in() && current_user_can('edit_posts')) {
350 350
                 $ao_noptimize = true;
351 351
             }
352 352
 
353 353
             // If setting says not to optimize cart/checkout.
354
-            if ( false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_optimize_checkout', 'off' ) ) {
354
+            if (false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option('autoptimize_optimize_checkout', 'off')) {
355 355
                 // Checking for woocommerce, easy digital downloads and wp ecommerce...
356
-                foreach ( array( 'is_checkout', 'is_cart', 'is_account_page', 'edd_is_checkout', 'wpsc_is_cart', 'wpsc_is_checkout' ) as $func ) {
357
-                    if ( function_exists( $func ) && $func() ) {
356
+                foreach (array('is_checkout', 'is_cart', 'is_account_page', 'edd_is_checkout', 'wpsc_is_cart', 'wpsc_is_checkout') as $func) {
357
+                    if (function_exists($func) && $func()) {
358 358
                         $ao_noptimize = true;
359 359
                         break;
360 360
                     }
@@ -362,11 +362,11 @@  discard block
 block discarded – undo
362 362
             }
363 363
 
364 364
             // Allows blocking of autoptimization on your own terms regardless of above decisions.
365
-            $ao_noptimize = (bool) apply_filters( 'autoptimize_filter_noptimize', $ao_noptimize );
365
+            $ao_noptimize = (bool) apply_filters('autoptimize_filter_noptimize', $ao_noptimize);
366 366
 
367 367
             // Check for site being previewed in the Customizer (available since WP 4.0).
368 368
             $is_customize_preview = false;
369
-            if ( function_exists( 'is_customize_preview' ) && is_customize_preview() ) {
369
+            if (function_exists('is_customize_preview') && is_customize_preview()) {
370 370
                 $is_customize_preview = is_customize_preview();
371 371
             }
372 372
 
@@ -377,7 +377,7 @@  discard block
 block discarded – undo
377 377
              * while the main query hasn't been ran yet. Thats why we use
378 378
              * AUTOPTIMIZE_INIT_EARLIER in tests.
379 379
              */
380
-            $do_buffering = ( ! is_admin() && ! is_feed() && ! is_embed() && ! $ao_noptimize && ! $is_customize_preview );
380
+            $do_buffering = (!is_admin() && !is_feed() && !is_embed() && !$ao_noptimize && !$is_customize_preview);
381 381
         }
382 382
 
383 383
         return $do_buffering;
@@ -390,25 +390,25 @@  discard block
 block discarded – undo
390 390
      *
391 391
      * @return bool
392 392
      */
393
-    public function is_valid_buffer( $content )
393
+    public function is_valid_buffer($content)
394 394
     {
395 395
         // Defaults to true.
396 396
         $valid = true;
397 397
 
398
-        $has_no_html_tag    = ( false === stripos( $content, '<html' ) );
399
-        $has_xsl_stylesheet = ( false !== stripos( $content, '<xsl:stylesheet' ) || false !== stripos( $content, '<?xml-stylesheet' ) );
400
-        $has_html5_doctype  = ( preg_match( '/^<!DOCTYPE.+html>/i', ltrim( $content ) ) > 0 );
401
-        $has_noptimize_page = ( false !== stripos( $content, '<!-- noptimize-page -->' ) );
398
+        $has_no_html_tag    = (false === stripos($content, '<html'));
399
+        $has_xsl_stylesheet = (false !== stripos($content, '<xsl:stylesheet') || false !== stripos($content, '<?xml-stylesheet'));
400
+        $has_html5_doctype  = (preg_match('/^<!DOCTYPE.+html>/i', ltrim($content)) > 0);
401
+        $has_noptimize_page = (false !== stripos($content, '<!-- noptimize-page -->'));
402 402
 
403
-        if ( $has_no_html_tag ) {
403
+        if ($has_no_html_tag) {
404 404
             // Can't be valid amp markup without an html tag preceding it.
405 405
             $is_amp_markup = false;
406 406
         } else {
407
-            $is_amp_markup = self::is_amp_markup( $content );
407
+            $is_amp_markup = self::is_amp_markup($content);
408 408
         }
409 409
 
410 410
         // If it's not html, or if it's amp or contains xsl stylesheets we don't touch it.
411
-        if ( $has_no_html_tag && ! $has_html5_doctype || $is_amp_markup || $has_xsl_stylesheet || $has_noptimize_page ) {
411
+        if ($has_no_html_tag && !$has_html5_doctype || $is_amp_markup || $has_xsl_stylesheet || $has_noptimize_page) {
412 412
             $valid = false;
413 413
         }
414 414
 
@@ -423,14 +423,14 @@  discard block
 block discarded – undo
423 423
      *
424 424
      * @return bool
425 425
      */
426
-    public static function is_amp_markup( $content )
426
+    public static function is_amp_markup($content)
427 427
     {
428 428
         // Short-circuit when a function is available to determine whether the response is (or will be) an AMP page.
429
-        if ( function_exists( 'is_amp_endpoint' ) ) {
429
+        if (function_exists('is_amp_endpoint')) {
430 430
             return is_amp_endpoint();
431 431
         }
432 432
 
433
-        $is_amp_markup = preg_match( '/<html[^>]*(?:amp|⚡)/i', $content );
433
+        $is_amp_markup = preg_match('/<html[^>]*(?:amp|⚡)/i', $content);
434 434
 
435 435
         return (bool) $is_amp_markup;
436 436
     }
@@ -443,10 +443,10 @@  discard block
 block discarded – undo
443 443
      *
444 444
      * @return string
445 445
      */
446
-    public function end_buffering( $content )
446
+    public function end_buffering($content)
447 447
     {
448 448
         // Bail early without modifying anything if we can't handle the content.
449
-        if ( ! $this->is_valid_buffer( $content ) ) {
449
+        if (!$this->is_valid_buffer($content)) {
450 450
             return $content;
451 451
         }
452 452
 
@@ -454,73 +454,73 @@  discard block
 block discarded – undo
454 454
 
455 455
         // Determine what needs to be ran.
456 456
         $classes = array();
457
-        if ( $conf->get( 'autoptimize_js' ) ) {
457
+        if ($conf->get('autoptimize_js')) {
458 458
             $classes[] = 'autoptimizeScripts';
459 459
         }
460
-        if ( $conf->get( 'autoptimize_css' ) ) {
460
+        if ($conf->get('autoptimize_css')) {
461 461
             $classes[] = 'autoptimizeStyles';
462 462
         }
463
-        if ( $conf->get( 'autoptimize_html' ) ) {
463
+        if ($conf->get('autoptimize_html')) {
464 464
             $classes[] = 'autoptimizeHTML';
465 465
         }
466 466
 
467 467
         $classoptions = array(
468 468
             'autoptimizeScripts' => array(
469
-                'aggregate'       => $conf->get( 'autoptimize_js_aggregate' ),
470
-                'justhead'        => $conf->get( 'autoptimize_js_justhead' ),
471
-                'forcehead'       => $conf->get( 'autoptimize_js_forcehead' ),
472
-                'trycatch'        => $conf->get( 'autoptimize_js_trycatch' ),
473
-                'js_exclude'      => $conf->get( 'autoptimize_js_exclude' ),
474
-                'cdn_url'         => $conf->get( 'autoptimize_cdn_url' ),
475
-                'include_inline'  => $conf->get( 'autoptimize_js_include_inline' ),
476
-                'minify_excluded' => $conf->get( 'autoptimize_minify_excluded' ),
469
+                'aggregate'       => $conf->get('autoptimize_js_aggregate'),
470
+                'justhead'        => $conf->get('autoptimize_js_justhead'),
471
+                'forcehead'       => $conf->get('autoptimize_js_forcehead'),
472
+                'trycatch'        => $conf->get('autoptimize_js_trycatch'),
473
+                'js_exclude'      => $conf->get('autoptimize_js_exclude'),
474
+                'cdn_url'         => $conf->get('autoptimize_cdn_url'),
475
+                'include_inline'  => $conf->get('autoptimize_js_include_inline'),
476
+                'minify_excluded' => $conf->get('autoptimize_minify_excluded'),
477 477
             ),
478 478
             'autoptimizeStyles'  => array(
479
-                'aggregate'       => $conf->get( 'autoptimize_css_aggregate' ),
480
-                'justhead'        => $conf->get( 'autoptimize_css_justhead' ),
481
-                'datauris'        => $conf->get( 'autoptimize_css_datauris' ),
482
-                'defer'           => $conf->get( 'autoptimize_css_defer' ),
483
-                'defer_inline'    => $conf->get( 'autoptimize_css_defer_inline' ),
484
-                'inline'          => $conf->get( 'autoptimize_css_inline' ),
485
-                'css_exclude'     => $conf->get( 'autoptimize_css_exclude' ),
486
-                'cdn_url'         => $conf->get( 'autoptimize_cdn_url' ),
487
-                'include_inline'  => $conf->get( 'autoptimize_css_include_inline' ),
488
-                'nogooglefont'    => $conf->get( 'autoptimize_css_nogooglefont' ),
489
-                'minify_excluded' => $conf->get( 'autoptimize_minify_excluded' ),
479
+                'aggregate'       => $conf->get('autoptimize_css_aggregate'),
480
+                'justhead'        => $conf->get('autoptimize_css_justhead'),
481
+                'datauris'        => $conf->get('autoptimize_css_datauris'),
482
+                'defer'           => $conf->get('autoptimize_css_defer'),
483
+                'defer_inline'    => $conf->get('autoptimize_css_defer_inline'),
484
+                'inline'          => $conf->get('autoptimize_css_inline'),
485
+                'css_exclude'     => $conf->get('autoptimize_css_exclude'),
486
+                'cdn_url'         => $conf->get('autoptimize_cdn_url'),
487
+                'include_inline'  => $conf->get('autoptimize_css_include_inline'),
488
+                'nogooglefont'    => $conf->get('autoptimize_css_nogooglefont'),
489
+                'minify_excluded' => $conf->get('autoptimize_minify_excluded'),
490 490
             ),
491 491
             'autoptimizeHTML'    => array(
492
-                'keepcomments' => $conf->get( 'autoptimize_html_keepcomments' ),
492
+                'keepcomments' => $conf->get('autoptimize_html_keepcomments'),
493 493
             ),
494 494
         );
495 495
 
496
-        $content = apply_filters( 'autoptimize_filter_html_before_minify', $content );
496
+        $content = apply_filters('autoptimize_filter_html_before_minify', $content);
497 497
 
498 498
         // Run the classes!
499
-        foreach ( $classes as $name ) {
500
-            $instance = new $name( $content );
501
-            if ( $instance->read( $classoptions[ $name ] ) ) {
499
+        foreach ($classes as $name) {
500
+            $instance = new $name($content);
501
+            if ($instance->read($classoptions[$name])) {
502 502
                 $instance->minify();
503 503
                 $instance->cache();
504 504
                 $content = $instance->getcontent();
505 505
             }
506
-            unset( $instance );
506
+            unset($instance);
507 507
         }
508 508
 
509
-        $content = apply_filters( 'autoptimize_html_after_minify', $content );
509
+        $content = apply_filters('autoptimize_html_after_minify', $content);
510 510
 
511 511
         return $content;
512 512
     }
513 513
 
514
-    public static function autoptimize_nobuffer_optimize( $html_in ) {
514
+    public static function autoptimize_nobuffer_optimize($html_in) {
515 515
         $html_out = $html_in;
516 516
 
517
-        if ( apply_filters( 'autoptimize_filter_speedupper', true ) ) {
517
+        if (apply_filters('autoptimize_filter_speedupper', true)) {
518 518
             $ao_speedupper = new autoptimizeSpeedupper();
519 519
         }
520 520
 
521
-        $self = new self( AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE );
522
-        if ( $self->should_buffer() ) {
523
-            $html_out = $self->end_buffering( $html_in );
521
+        $self = new self(AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE);
522
+        if ($self->should_buffer()) {
523
+            $html_out = $self->end_buffering($html_in);
524 524
         }
525 525
         return $html_out;
526 526
     }
@@ -581,45 +581,45 @@  discard block
 block discarded – undo
581 581
             'autoptimize_ccss_domain',
582 582
         );
583 583
 
584
-        if ( ! is_multisite() ) {
585
-            foreach ( $delete_options as $del_opt ) {
586
-                delete_option( $del_opt );
584
+        if (!is_multisite()) {
585
+            foreach ($delete_options as $del_opt) {
586
+                delete_option($del_opt);
587 587
             }
588 588
             autoptimizeMain::remove_cronjobs();
589 589
         } else {
590 590
             global $wpdb;
591
-            $blog_ids         = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
591
+            $blog_ids         = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
592 592
             $original_blog_id = get_current_blog_id();
593
-            foreach ( $blog_ids as $blog_id ) {
594
-                switch_to_blog( $blog_id );
595
-                foreach ( $delete_options as $del_opt ) {
596
-                    delete_option( $del_opt );
593
+            foreach ($blog_ids as $blog_id) {
594
+                switch_to_blog($blog_id);
595
+                foreach ($delete_options as $del_opt) {
596
+                    delete_option($del_opt);
597 597
                 }
598 598
                 autoptimizeMain::remove_cronjobs();
599 599
             }
600
-            switch_to_blog( $original_blog_id );
600
+            switch_to_blog($original_blog_id);
601 601
         }
602 602
 
603 603
         // Remove AO CCSS cached files and directory.
604
-        $ao_ccss_dir = WP_CONTENT_DIR . '/uploads/ao_ccss/';
605
-        if ( file_exists( $ao_ccss_dir ) && is_dir( $ao_ccss_dir ) ) {
604
+        $ao_ccss_dir = WP_CONTENT_DIR.'/uploads/ao_ccss/';
605
+        if (file_exists($ao_ccss_dir) && is_dir($ao_ccss_dir)) {
606 606
             // fixme: should check for subdirs when in multisite and remove contents of those as well.
607
-            array_map( 'unlink', glob( AO_CCSS_DIR . '*.{css,html,json,log,zip,lock}', GLOB_BRACE ) );
608
-            rmdir( AO_CCSS_DIR );
607
+            array_map('unlink', glob(AO_CCSS_DIR.'*.{css,html,json,log,zip,lock}', GLOB_BRACE));
608
+            rmdir(AO_CCSS_DIR);
609 609
         }
610 610
     }
611 611
 
612 612
     public static function on_deactivation()
613 613
     {
614
-        if ( is_multisite() && is_network_admin() ) {
614
+        if (is_multisite() && is_network_admin()) {
615 615
             global $wpdb;
616
-            $blog_ids         = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
616
+            $blog_ids         = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
617 617
             $original_blog_id = get_current_blog_id();
618
-            foreach ( $blog_ids as $blog_id ) {
619
-                switch_to_blog( $blog_id );
618
+            foreach ($blog_ids as $blog_id) {
619
+                switch_to_blog($blog_id);
620 620
                 autoptimizeMain::remove_cronjobs();
621 621
             }
622
-            switch_to_blog( $original_blog_id );
622
+            switch_to_blog($original_blog_id);
623 623
         } else {
624 624
             autoptimizeMain::remove_cronjobs();
625 625
         }
@@ -628,9 +628,9 @@  discard block
 block discarded – undo
628 628
 
629 629
     public static function remove_cronjobs() {
630 630
         // Remove scheduled events.
631
-        foreach ( array( 'ao_cachechecker', 'ao_ccss_queue', 'ao_ccss_maintenance' ) as $_event ) {
632
-            if ( wp_get_schedule( $_event ) ) {
633
-                wp_clear_scheduled_hook( $_event );
631
+        foreach (array('ao_cachechecker', 'ao_ccss_queue', 'ao_ccss_maintenance') as $_event) {
632
+            if (wp_get_schedule($_event)) {
633
+                wp_clear_scheduled_hook($_event);
634 634
             }
635 635
         }
636 636
     }
@@ -639,35 +639,35 @@  discard block
 block discarded – undo
639 639
     {
640 640
         echo '<div class="error"><p>';
641 641
         // Translators: %s is the cache directory location.
642
-        printf( __( 'Autoptimize cannot write to the cache directory (%s), please fix to enable CSS/ JS optimization!', 'autoptimize' ), AUTOPTIMIZE_CACHE_DIR );
642
+        printf(__('Autoptimize cannot write to the cache directory (%s), please fix to enable CSS/ JS optimization!', 'autoptimize'), AUTOPTIMIZE_CACHE_DIR);
643 643
         echo '</p></div>';
644 644
     }
645 645
 
646 646
     public static function notice_installed()
647 647
     {
648 648
         echo '<div class="updated"><p>';
649
-        _e( 'Thank you for installing and activating Autoptimize. Please configure it under "Settings" -> "Autoptimize" to start improving your site\'s performance.', 'autoptimize' );
649
+        _e('Thank you for installing and activating Autoptimize. Please configure it under "Settings" -> "Autoptimize" to start improving your site\'s performance.', 'autoptimize');
650 650
         echo '</p></div>';
651 651
     }
652 652
 
653 653
     public static function notice_updated()
654 654
     {
655 655
         echo '<div class="updated"><p>';
656
-        _e( 'Autoptimize has just been updated. Please <strong>test your site now</strong> and adapt Autoptimize config if needed.', 'autoptimize' );
656
+        _e('Autoptimize has just been updated. Please <strong>test your site now</strong> and adapt Autoptimize config if needed.', 'autoptimize');
657 657
         echo '</p></div>';
658 658
     }
659 659
 
660 660
     public static function notice_plug_imgopt()
661 661
     {
662 662
         // Translators: the URL added points to the Autopmize Extra settings.
663
-        $_ao_imgopt_plug_notice      = sprintf( __( 'Did you know Autoptimize includes on-the-fly image optimization (with support for WebP) and CDN via ShortPixel? Check out the %1$sAutoptimize Image settings%2$s to activate this option.', 'autoptimize' ), '<a href="options-general.php?page=autoptimize_imgopt">', '</a>' );
664
-        $_ao_imgopt_plug_notice      = apply_filters( 'autoptimize_filter_main_imgopt_plug_notice', $_ao_imgopt_plug_notice );
663
+        $_ao_imgopt_plug_notice      = sprintf(__('Did you know Autoptimize includes on-the-fly image optimization (with support for WebP) and CDN via ShortPixel? Check out the %1$sAutoptimize Image settings%2$s to activate this option.', 'autoptimize'), '<a href="options-general.php?page=autoptimize_imgopt">', '</a>');
664
+        $_ao_imgopt_plug_notice      = apply_filters('autoptimize_filter_main_imgopt_plug_notice', $_ao_imgopt_plug_notice);
665 665
         $_ao_imgopt_launch_ok        = autoptimizeImages::launch_ok_wrapper();
666 666
         $_ao_imgopt_plug_dismissible = 'ao-img-opt-plug-123';
667 667
         $_ao_imgopt_active           = autoptimizeImages::imgopt_active();
668 668
 
669
-        if ( current_user_can( 'manage_options' ) && '' !== $_ao_imgopt_plug_notice && ! $_ao_imgopt_active && $_ao_imgopt_launch_ok && PAnD::is_admin_notice_active( $_ao_imgopt_plug_dismissible ) ) {
670
-            echo '<div class="notice notice-info is-dismissible" data-dismissible="' . $_ao_imgopt_plug_dismissible . '"><p>';
669
+        if (current_user_can('manage_options') && '' !== $_ao_imgopt_plug_notice && !$_ao_imgopt_active && $_ao_imgopt_launch_ok && PAnD::is_admin_notice_active($_ao_imgopt_plug_dismissible)) {
670
+            echo '<div class="notice notice-info is-dismissible" data-dismissible="'.$_ao_imgopt_plug_dismissible.'"><p>';
671 671
             echo $_ao_imgopt_plug_notice;
672 672
             echo '</p></div>';
673 673
         }
Please login to merge, or discard this patch.
classes/autoptimizeExtra.php 1 patch
Spacing   +200 added lines, -200 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Handles autoptimizeExtra frontend features + admin options page
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -28,9 +28,9 @@  discard block
 block discarded – undo
28 28
      *
29 29
      * @param array $options Optional. Allows overriding options without having to specify them via admin options page.
30 30
      */
31
-    public function __construct( $options = array() )
31
+    public function __construct($options = array())
32 32
     {
33
-        if ( empty( $options ) ) {
33
+        if (empty($options)) {
34 34
             $options = self::fetch_options();
35 35
         }
36 36
 
@@ -47,7 +47,7 @@  discard block
 block discarded – undo
47 47
      */
48 48
     public static function instance()
49 49
     {
50
-        if ( null === self::$instance ) {
50
+        if (null === self::$instance) {
51 51
             self::$instance = new self();
52 52
         }
53 53
 
@@ -56,19 +56,19 @@  discard block
 block discarded – undo
56 56
 
57 57
     public function run()
58 58
     {
59
-        if ( is_admin() ) {
60
-            if ( is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) {
61
-                add_action( 'network_admin_menu', array( $this, 'admin_menu' ) );
59
+        if (is_admin()) {
60
+            if (is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network()) {
61
+                add_action('network_admin_menu', array($this, 'admin_menu'));
62 62
             } else {
63
-                add_action( 'admin_menu', array( $this, 'admin_menu' ) );
63
+                add_action('admin_menu', array($this, 'admin_menu'));
64 64
             }
65
-            add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_extra_tab' ) );
65
+            add_filter('autoptimize_filter_settingsscreen_tabs', array($this, 'add_extra_tab'));
66 66
         } else {
67
-            add_action( 'wp', array( $this, 'run_on_frontend' ) );
67
+            add_action('wp', array($this, 'run_on_frontend'));
68 68
         }
69 69
     }
70 70
 
71
-    public function set_options( array $options )
71
+    public function set_options(array $options)
72 72
     {
73 73
         $this->options = $options;
74 74
 
@@ -77,8 +77,8 @@  discard block
 block discarded – undo
77 77
 
78 78
     public static function fetch_options()
79 79
     {
80
-        $value = autoptimizeOptionWrapper::get_option( 'autoptimize_extra_settings' );
81
-        if ( empty( $value ) ) {
80
+        $value = autoptimizeOptionWrapper::get_option('autoptimize_extra_settings');
81
+        if (empty($value)) {
82 82
             // Fallback to returning defaults when no stored option exists yet.
83 83
             $value = autoptimizeConfig::get_ao_extra_default_options();
84 84
         }
@@ -89,55 +89,55 @@  discard block
 block discarded – undo
89 89
     public function disable_emojis()
90 90
     {
91 91
         // Removing all actions related to emojis!
92
-        remove_action( 'admin_print_styles', 'print_emoji_styles' );
93
-        remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
94
-        remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
95
-        remove_action( 'wp_print_styles', 'print_emoji_styles' );
96
-        remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
97
-        remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
98
-        remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
92
+        remove_action('admin_print_styles', 'print_emoji_styles');
93
+        remove_action('wp_head', 'print_emoji_detection_script', 7);
94
+        remove_action('admin_print_scripts', 'print_emoji_detection_script');
95
+        remove_action('wp_print_styles', 'print_emoji_styles');
96
+        remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
97
+        remove_filter('the_content_feed', 'wp_staticize_emoji');
98
+        remove_filter('comment_text_rss', 'wp_staticize_emoji');
99 99
 
100 100
         // Removes TinyMCE emojis.
101
-        add_filter( 'tiny_mce_plugins', array( $this, 'filter_disable_emojis_tinymce' ) );
101
+        add_filter('tiny_mce_plugins', array($this, 'filter_disable_emojis_tinymce'));
102 102
 
103 103
         // Removes emoji dns-preftech.
104
-        add_filter( 'wp_resource_hints', array( $this, 'filter_remove_emoji_dns_prefetch' ), 10, 2 );
104
+        add_filter('wp_resource_hints', array($this, 'filter_remove_emoji_dns_prefetch'), 10, 2);
105 105
     }
106 106
 
107
-    public function filter_disable_emojis_tinymce( $plugins )
107
+    public function filter_disable_emojis_tinymce($plugins)
108 108
     {
109
-        if ( is_array( $plugins ) ) {
110
-            return array_diff( $plugins, array( 'wpemoji' ) );
109
+        if (is_array($plugins)) {
110
+            return array_diff($plugins, array('wpemoji'));
111 111
         } else {
112 112
             return array();
113 113
         }
114 114
     }
115 115
 
116
-    public function filter_remove_qs( $src )
116
+    public function filter_remove_qs($src)
117 117
     {
118
-        if ( strpos( $src, '?ver=' ) ) {
119
-            $src = remove_query_arg( 'ver', $src );
118
+        if (strpos($src, '?ver=')) {
119
+            $src = remove_query_arg('ver', $src);
120 120
         }
121 121
 
122 122
         return $src;
123 123
     }
124 124
 
125
-    public function extra_async_js( $in )
125
+    public function extra_async_js($in)
126 126
     {
127 127
         $exclusions = array();
128
-        if ( ! empty( $in ) ) {
129
-            $exclusions = array_fill_keys( array_filter( array_map( 'trim', explode( ',', $in ) ) ), '' );
128
+        if (!empty($in)) {
129
+            $exclusions = array_fill_keys(array_filter(array_map('trim', explode(',', $in))), '');
130 130
         }
131 131
 
132 132
         $settings = $this->options['autoptimize_extra_text_field_3'];
133
-        $async    = array_fill_keys( array_filter( array_map( 'trim', explode( ',', $settings ) ) ), '' );
134
-        $attr     = apply_filters( 'autoptimize_filter_extra_async', 'async' );
135
-        foreach ( $async as $k => $v ) {
136
-            $async[ $k ] = $attr;
133
+        $async    = array_fill_keys(array_filter(array_map('trim', explode(',', $settings))), '');
134
+        $attr     = apply_filters('autoptimize_filter_extra_async', 'async');
135
+        foreach ($async as $k => $v) {
136
+            $async[$k] = $attr;
137 137
         }
138 138
 
139 139
         // Merge exclusions & asyncs in one array and return to AO API.
140
-        $merged = array_merge( $exclusions, $async );
140
+        $merged = array_merge($exclusions, $async);
141 141
 
142 142
         return $merged;
143 143
     }
@@ -148,68 +148,68 @@  discard block
 block discarded – undo
148 148
         // for optimizations are met, this to ensure e.g. removing querystrings
149 149
         // is not done when optimizing for logged in users is off, breaking
150 150
         // some pagebuilders (Divi & Elementor).
151
-        if ( false === autoptimizeMain::should_buffer() ) {
151
+        if (false === autoptimizeMain::should_buffer()) {
152 152
             return;
153 153
         }
154 154
 
155 155
         $options = $this->options;
156 156
 
157 157
         // Disable emojis if specified.
158
-        if ( ! empty( $options['autoptimize_extra_checkbox_field_1'] ) ) {
158
+        if (!empty($options['autoptimize_extra_checkbox_field_1'])) {
159 159
             $this->disable_emojis();
160 160
         }
161 161
 
162 162
         // Remove version query parameters.
163
-        if ( ! empty( $options['autoptimize_extra_checkbox_field_0'] ) ) {
164
-            add_filter( 'script_loader_src', array( $this, 'filter_remove_qs' ), 15, 1 );
165
-            add_filter( 'style_loader_src', array( $this, 'filter_remove_qs' ), 15, 1 );
163
+        if (!empty($options['autoptimize_extra_checkbox_field_0'])) {
164
+            add_filter('script_loader_src', array($this, 'filter_remove_qs'), 15, 1);
165
+            add_filter('style_loader_src', array($this, 'filter_remove_qs'), 15, 1);
166 166
         }
167 167
 
168 168
         // Avoiding conflicts of interest when async-javascript plugin is active!
169
-        $async_js_plugin_active = autoptimizeUtils::is_plugin_active( 'async-javascript/async-javascript.php' );
170
-        if ( ! empty( $options['autoptimize_extra_text_field_3'] ) && ! $async_js_plugin_active ) {
171
-            add_filter( 'autoptimize_filter_js_exclude', array( $this, 'extra_async_js' ), 10, 1 );
169
+        $async_js_plugin_active = autoptimizeUtils::is_plugin_active('async-javascript/async-javascript.php');
170
+        if (!empty($options['autoptimize_extra_text_field_3']) && !$async_js_plugin_active) {
171
+            add_filter('autoptimize_filter_js_exclude', array($this, 'extra_async_js'), 10, 1);
172 172
         }
173 173
 
174 174
         // Optimize google fonts!
175
-        if ( ! empty( $options['autoptimize_extra_radio_field_4'] ) && ( '1' !== $options['autoptimize_extra_radio_field_4'] ) ) {
176
-            add_filter( 'wp_resource_hints', array( $this, 'filter_remove_gfonts_dnsprefetch' ), 10, 2 );
177
-            add_filter( 'autoptimize_html_after_minify', array( $this, 'filter_optimize_google_fonts' ), 10, 1 );
178
-            add_filter( 'autoptimize_extra_filter_tobepreconn', array( $this, 'filter_preconnect_google_fonts' ), 10, 1 );
175
+        if (!empty($options['autoptimize_extra_radio_field_4']) && ('1' !== $options['autoptimize_extra_radio_field_4'])) {
176
+            add_filter('wp_resource_hints', array($this, 'filter_remove_gfonts_dnsprefetch'), 10, 2);
177
+            add_filter('autoptimize_html_after_minify', array($this, 'filter_optimize_google_fonts'), 10, 1);
178
+            add_filter('autoptimize_extra_filter_tobepreconn', array($this, 'filter_preconnect_google_fonts'), 10, 1);
179 179
         }
180 180
 
181 181
         // Preconnect!
182
-        if ( ! empty( $options['autoptimize_extra_text_field_2'] ) || has_filter( 'autoptimize_extra_filter_tobepreconn' ) ) {
183
-            add_filter( 'wp_resource_hints', array( $this, 'filter_preconnect' ), 10, 2 );
182
+        if (!empty($options['autoptimize_extra_text_field_2']) || has_filter('autoptimize_extra_filter_tobepreconn')) {
183
+            add_filter('wp_resource_hints', array($this, 'filter_preconnect'), 10, 2);
184 184
         }
185 185
 
186 186
         // Preload!
187
-        if ( ! empty( $options['autoptimize_extra_text_field_7'] ) ) {
188
-            add_filter( 'autoptimize_html_after_minify', array( $this, 'filter_preload' ), 10, 2 );
187
+        if (!empty($options['autoptimize_extra_text_field_7'])) {
188
+            add_filter('autoptimize_html_after_minify', array($this, 'filter_preload'), 10, 2);
189 189
         }
190 190
     }
191 191
 
192
-    public function filter_remove_emoji_dns_prefetch( $urls, $relation_type )
192
+    public function filter_remove_emoji_dns_prefetch($urls, $relation_type)
193 193
     {
194
-        $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/' );
194
+        $emoji_svg_url = apply_filters('emoji_svg_url', 'https://s.w.org/images/core/emoji/');
195 195
 
196
-        return $this->filter_remove_dns_prefetch( $urls, $relation_type, $emoji_svg_url );
196
+        return $this->filter_remove_dns_prefetch($urls, $relation_type, $emoji_svg_url);
197 197
     }
198 198
 
199
-    public function filter_remove_gfonts_dnsprefetch( $urls, $relation_type )
199
+    public function filter_remove_gfonts_dnsprefetch($urls, $relation_type)
200 200
     {
201
-        return $this->filter_remove_dns_prefetch( $urls, $relation_type, 'fonts.googleapis.com' );
201
+        return $this->filter_remove_dns_prefetch($urls, $relation_type, 'fonts.googleapis.com');
202 202
     }
203 203
 
204
-    public function filter_remove_dns_prefetch( $urls, $relation_type, $url_to_remove )
204
+    public function filter_remove_dns_prefetch($urls, $relation_type, $url_to_remove)
205 205
     {
206 206
         $url_to_remove = (string) $url_to_remove;
207 207
 
208
-        if ( ! empty( $url_to_remove ) && 'dns-prefetch' === $relation_type ) {
208
+        if (!empty($url_to_remove) && 'dns-prefetch' === $relation_type) {
209 209
             $cnt = 0;
210
-            foreach ( $urls as $url ) {
211
-                if ( false !== strpos( $url, $url_to_remove ) ) {
212
-                    unset( $urls[ $cnt ] );
210
+            foreach ($urls as $url) {
211
+                if (false !== strpos($url, $url_to_remove)) {
212
+                    unset($urls[$cnt]);
213 213
                 }
214 214
                 $cnt++;
215 215
             }
@@ -218,156 +218,156 @@  discard block
 block discarded – undo
218 218
         return $urls;
219 219
     }
220 220
 
221
-    public function filter_optimize_google_fonts( $in )
221
+    public function filter_optimize_google_fonts($in)
222 222
     {
223 223
         // Extract fonts, partly based on wp rocket's extraction code.
224
-        $markup = preg_replace( '/<!--(.*)-->/Uis', '', $in );
225
-        preg_match_all( '#<link(?:\s+(?:(?!href\s*=\s*)[^>])+)?(?:\s+href\s*=\s*([\'"])((?:https?:)?\/\/fonts\.googleapis\.com\/css(?:(?!\1).)+)\1)(?:\s+[^>]*)?>#iU', $markup, $matches );
224
+        $markup = preg_replace('/<!--(.*)-->/Uis', '', $in);
225
+        preg_match_all('#<link(?:\s+(?:(?!href\s*=\s*)[^>])+)?(?:\s+href\s*=\s*([\'"])((?:https?:)?\/\/fonts\.googleapis\.com\/css(?:(?!\1).)+)\1)(?:\s+[^>]*)?>#iU', $markup, $matches);
226 226
 
227 227
         $fonts_collection = array();
228
-        if ( ! $matches[2] ) {
228
+        if (!$matches[2]) {
229 229
             return $in;
230 230
         }
231 231
 
232 232
         // Store them in $fonts array.
233 233
         $i = 0;
234
-        foreach ( $matches[2] as $font ) {
235
-            if ( ! preg_match( '/rel=["\']dns-prefetch["\']/', $matches[0][ $i ] ) ) {
234
+        foreach ($matches[2] as $font) {
235
+            if (!preg_match('/rel=["\']dns-prefetch["\']/', $matches[0][$i])) {
236 236
                 // Get fonts name.
237
-                $font = str_replace( array( '%7C', '%7c' ), '|', $font );
238
-                if ( strpos( $font, 'fonts.googleapis.com/css2' ) !== false ) {
237
+                $font = str_replace(array('%7C', '%7c'), '|', $font);
238
+                if (strpos($font, 'fonts.googleapis.com/css2') !== false) {
239 239
                     // (Somewhat) change Google Fonts APIv2 syntax back to v1.
240
-                    $font = str_replace( array( 'wght@', 'wght%40', ';', '%3B' ), array( '', '', ',', ',' ), $font );
240
+                    $font = str_replace(array('wght@', 'wght%40', ';', '%3B'), array('', '', ',', ','), $font);
241 241
                 }
242
-                $font = explode( 'family=', $font );
243
-                $font = ( isset( $font[1] ) ) ? explode( '&', $font[1] ) : array();
242
+                $font = explode('family=', $font);
243
+                $font = (isset($font[1])) ? explode('&', $font[1]) : array();
244 244
                 // Add font to $fonts[$i] but make sure not to pollute with an empty family!
245
-                $_thisfont = array_values( array_filter( explode( '|', reset( $font ) ) ) );
246
-                if ( ! empty( $_thisfont ) ) {
247
-                    $fonts_collection[ $i ]['fonts'] = $_thisfont;
245
+                $_thisfont = array_values(array_filter(explode('|', reset($font))));
246
+                if (!empty($_thisfont)) {
247
+                    $fonts_collection[$i]['fonts'] = $_thisfont;
248 248
                     // And add subset if any!
249
-                    $subset = ( is_array( $font ) ) ? end( $font ) : '';
250
-                    if ( false !== strpos( $subset, 'subset=' ) ) {
251
-                        $subset                            = str_replace( array( '%2C', '%2c' ), ',', $subset );
252
-                        $subset                            = explode( 'subset=', $subset );
253
-                        $fonts_collection[ $i ]['subsets'] = explode( ',', $subset[1] );
249
+                    $subset = (is_array($font)) ? end($font) : '';
250
+                    if (false !== strpos($subset, 'subset=')) {
251
+                        $subset                            = str_replace(array('%2C', '%2c'), ',', $subset);
252
+                        $subset                            = explode('subset=', $subset);
253
+                        $fonts_collection[$i]['subsets'] = explode(',', $subset[1]);
254 254
                     }
255 255
                 }
256 256
                 // And remove Google Fonts.
257
-                $in = str_replace( $matches[0][ $i ], '', $in );
257
+                $in = str_replace($matches[0][$i], '', $in);
258 258
             }
259 259
             $i++;
260 260
         }
261 261
 
262 262
         $options      = $this->options;
263 263
         $fonts_markup = '';
264
-        if ( '2' === $options['autoptimize_extra_radio_field_4'] ) {
264
+        if ('2' === $options['autoptimize_extra_radio_field_4']) {
265 265
             // Remove Google Fonts.
266
-            unset( $fonts_collection );
266
+            unset($fonts_collection);
267 267
             return $in;
268
-        } elseif ( '3' === $options['autoptimize_extra_radio_field_4'] || '5' === $options['autoptimize_extra_radio_field_4'] ) {
268
+        } elseif ('3' === $options['autoptimize_extra_radio_field_4'] || '5' === $options['autoptimize_extra_radio_field_4']) {
269 269
             // Aggregate & link!
270 270
             $fonts_string  = '';
271 271
             $subset_string = '';
272
-            foreach ( $fonts_collection as $font ) {
273
-                $fonts_string .= '|' . trim( implode( '|', $font['fonts'] ), '|' );
274
-                if ( ! empty( $font['subsets'] ) ) {
275
-                    $subset_string .= ',' . trim( implode( ',', $font['subsets'] ), ',' );
272
+            foreach ($fonts_collection as $font) {
273
+                $fonts_string .= '|'.trim(implode('|', $font['fonts']), '|');
274
+                if (!empty($font['subsets'])) {
275
+                    $subset_string .= ','.trim(implode(',', $font['subsets']), ',');
276 276
                 }
277 277
             }
278 278
 
279
-            if ( ! empty( $subset_string ) ) {
280
-                $subset_string = str_replace( ',', '%2C', ltrim( $subset_string, ',' ) );
281
-                $fonts_string  = $fonts_string . '&#038;subset=' . $subset_string;
279
+            if (!empty($subset_string)) {
280
+                $subset_string = str_replace(',', '%2C', ltrim($subset_string, ','));
281
+                $fonts_string  = $fonts_string.'&#038;subset='.$subset_string;
282 282
             }
283 283
 
284
-            $fonts_string = apply_filters( 'autoptimize_filter_extra_gfont_fontstring', str_replace( '|', '%7C', ltrim( $fonts_string, '|' ) ) );
284
+            $fonts_string = apply_filters('autoptimize_filter_extra_gfont_fontstring', str_replace('|', '%7C', ltrim($fonts_string, '|')));
285 285
             // only add display parameter if there is none in $fonts_string (by virtue of the filter).
286
-            if ( strpos( $fonts_string, 'display=' ) === false ) {
287
-                $fonts_string .= apply_filters( 'autoptimize_filter_extra_gfont_display', '&amp;display=swap' );
286
+            if (strpos($fonts_string, 'display=') === false) {
287
+                $fonts_string .= apply_filters('autoptimize_filter_extra_gfont_display', '&amp;display=swap');
288 288
             }
289 289
 
290
-            if ( ! empty( $fonts_string ) ) {
291
-                if ( '5' === $options['autoptimize_extra_radio_field_4'] ) {
292
-                    $rel_string = 'rel="preload" as="style" onload="' . autoptimizeConfig::get_ao_css_preload_onload() . '"';
290
+            if (!empty($fonts_string)) {
291
+                if ('5' === $options['autoptimize_extra_radio_field_4']) {
292
+                    $rel_string = 'rel="preload" as="style" onload="'.autoptimizeConfig::get_ao_css_preload_onload().'"';
293 293
                 } else {
294 294
                     $rel_string = 'rel="stylesheet"';
295 295
                 }
296
-                $fonts_markup = '<link ' . $rel_string . ' id="ao_optimized_gfonts" href="https://fonts.googleapis.com/css?family=' . $fonts_string . '" />';
296
+                $fonts_markup = '<link '.$rel_string.' id="ao_optimized_gfonts" href="https://fonts.googleapis.com/css?family='.$fonts_string.'" />';
297 297
             }
298
-        } elseif ( '4' === $options['autoptimize_extra_radio_field_4'] ) {
298
+        } elseif ('4' === $options['autoptimize_extra_radio_field_4']) {
299 299
             // Aggregate & load async (webfont.js impl.)!
300 300
             $fonts_array = array();
301
-            foreach ( $fonts_collection as $_fonts ) {
302
-                if ( ! empty( $_fonts['subsets'] ) ) {
303
-                    $_subset = implode( ',', $_fonts['subsets'] );
304
-                    foreach ( $_fonts['fonts'] as $key => $_one_font ) {
305
-                        $_one_font               = $_one_font . ':' . $_subset;
306
-                        $_fonts['fonts'][ $key ] = $_one_font;
301
+            foreach ($fonts_collection as $_fonts) {
302
+                if (!empty($_fonts['subsets'])) {
303
+                    $_subset = implode(',', $_fonts['subsets']);
304
+                    foreach ($_fonts['fonts'] as $key => $_one_font) {
305
+                        $_one_font               = $_one_font.':'.$_subset;
306
+                        $_fonts['fonts'][$key] = $_one_font;
307 307
                     }
308 308
                 }
309
-                $fonts_array = array_merge( $fonts_array, $_fonts['fonts'] );
309
+                $fonts_array = array_merge($fonts_array, $_fonts['fonts']);
310 310
             }
311 311
 
312
-            $fonts_array = array_map( 'urldecode', $fonts_array );
312
+            $fonts_array = array_map('urldecode', $fonts_array);
313 313
             $fonts_array = array_map(
314
-                function( $_f ) {
315
-                    return trim( $_f, ',' );
314
+                function($_f) {
315
+                    return trim($_f, ',');
316 316
                 },
317 317
                 $fonts_array
318 318
             );
319 319
 
320 320
             // type attrib on <script not added by default.
321 321
             $type_js = '';
322
-            if ( apply_filters( 'autoptimize_filter_cssjs_addtype', false ) ) {
322
+            if (apply_filters('autoptimize_filter_cssjs_addtype', false)) {
323 323
                 $type_js = 'type="text/javascript" ';
324 324
             }
325 325
 
326
-            $fonts_markup         = '<script ' . $type_js . 'data-cfasync="false" id="ao_optimized_gfonts_config">WebFontConfig={google:{families:' . wp_json_encode( $fonts_array ) . ' },classes:false, events:false, timeout:1500};</script>';
327
-            $fonts_library_markup = '<script ' . $type_js . 'data-cfasync="false" id="ao_optimized_gfonts_webfontloader">(function() {var wf = document.createElement(\'script\');wf.src=\'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js\';wf.type=\'text/javascript\';wf.async=\'true\';var s=document.getElementsByTagName(\'script\')[0];s.parentNode.insertBefore(wf, s);})();</script>';
328
-            $in                   = substr_replace( $in, $fonts_library_markup . '</head>', strpos( $in, '</head>' ), strlen( '</head>' ) );
326
+            $fonts_markup         = '<script '.$type_js.'data-cfasync="false" id="ao_optimized_gfonts_config">WebFontConfig={google:{families:'.wp_json_encode($fonts_array).' },classes:false, events:false, timeout:1500};</script>';
327
+            $fonts_library_markup = '<script '.$type_js.'data-cfasync="false" id="ao_optimized_gfonts_webfontloader">(function() {var wf = document.createElement(\'script\');wf.src=\'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js\';wf.type=\'text/javascript\';wf.async=\'true\';var s=document.getElementsByTagName(\'script\')[0];s.parentNode.insertBefore(wf, s);})();</script>';
328
+            $in                   = substr_replace($in, $fonts_library_markup.'</head>', strpos($in, '</head>'), strlen('</head>'));
329 329
         }
330 330
 
331 331
         // Replace back in markup.
332
-        $inject_point = apply_filters( 'autoptimize_filter_extra_gfont_injectpoint', '<link' );
333
-        $out          = substr_replace( $in, $fonts_markup . $inject_point, strpos( $in, $inject_point ), strlen( $inject_point ) );
334
-        unset( $fonts_collection );
332
+        $inject_point = apply_filters('autoptimize_filter_extra_gfont_injectpoint', '<link');
333
+        $out          = substr_replace($in, $fonts_markup.$inject_point, strpos($in, $inject_point), strlen($inject_point));
334
+        unset($fonts_collection);
335 335
 
336 336
         // and insert preload polyfill if "link preload" and if the polyfill isn't there yet (courtesy of inline&defer).
337 337
         $preload_polyfill = autoptimizeConfig::get_ao_css_preload_polyfill();
338
-        if ( '5' === $options['autoptimize_extra_radio_field_4'] && strpos( $out, $preload_polyfill ) === false ) {
339
-            $out = str_replace( '</body>', $preload_polyfill . '</body>', $out );
338
+        if ('5' === $options['autoptimize_extra_radio_field_4'] && strpos($out, $preload_polyfill) === false) {
339
+            $out = str_replace('</body>', $preload_polyfill.'</body>', $out);
340 340
         }
341 341
         return $out;
342 342
     }
343 343
 
344
-    public function filter_preconnect( $hints, $relation_type )
344
+    public function filter_preconnect($hints, $relation_type)
345 345
     {
346 346
         $options  = $this->options;
347 347
         $preconns = array();
348 348
 
349 349
         // Get settings and store in array.
350
-        if ( array_key_exists( 'autoptimize_extra_text_field_2', $options ) ) {
351
-            $preconns = array_filter( array_map( 'trim', explode( ',', $options['autoptimize_extra_text_field_2'] ) ) );
350
+        if (array_key_exists('autoptimize_extra_text_field_2', $options)) {
351
+            $preconns = array_filter(array_map('trim', explode(',', $options['autoptimize_extra_text_field_2'])));
352 352
         }
353
-        $preconns = apply_filters( 'autoptimize_extra_filter_tobepreconn', $preconns );
353
+        $preconns = apply_filters('autoptimize_extra_filter_tobepreconn', $preconns);
354 354
 
355 355
         // Walk array, extract domain and add to new array with crossorigin attribute.
356
-        foreach ( $preconns as $preconn ) {
356
+        foreach ($preconns as $preconn) {
357 357
             $domain = '';
358
-            $parsed = parse_url( $preconn );
359
-            if ( is_array( $parsed ) && ! empty( $parsed['host'] ) && empty( $parsed['scheme'] ) ) {
360
-                $domain = '//' . $parsed['host'];
361
-            } elseif ( is_array( $parsed ) && ! empty( $parsed['host'] ) ) {
362
-                $domain = $parsed['scheme'] . '://' . $parsed['host'];
358
+            $parsed = parse_url($preconn);
359
+            if (is_array($parsed) && !empty($parsed['host']) && empty($parsed['scheme'])) {
360
+                $domain = '//'.$parsed['host'];
361
+            } elseif (is_array($parsed) && !empty($parsed['host'])) {
362
+                $domain = $parsed['scheme'].'://'.$parsed['host'];
363 363
             }
364 364
 
365
-            if ( ! empty( $domain ) ) {
366
-                $hint = array( 'href' => $domain );
365
+            if (!empty($domain)) {
366
+                $hint = array('href' => $domain);
367 367
                 // Fonts don't get preconnected unless crossorigin flag is set, non-fonts don't get preconnected if origin flag is set
368 368
                 // so hardcode fonts.gstatic.com to come with crossorigin and have filter to add other domains if needed.
369
-                $crossorigins = apply_filters( 'autoptimize_extra_filter_preconn_crossorigin', array( 'https://fonts.gstatic.com' ) );
370
-                if ( in_array( $domain, $crossorigins ) ) {
369
+                $crossorigins = apply_filters('autoptimize_extra_filter_preconn_crossorigin', array('https://fonts.gstatic.com'));
370
+                if (in_array($domain, $crossorigins)) {
371 371
                     $hint['crossorigin'] = 'anonymous';
372 372
                 }
373 373
                 $new_hints[] = $hint;
@@ -375,21 +375,21 @@  discard block
 block discarded – undo
375 375
         }
376 376
 
377 377
         // Merge in WP's preconnect hints.
378
-        if ( 'preconnect' === $relation_type && ! empty( $new_hints ) ) {
379
-            $hints = array_merge( $hints, $new_hints );
378
+        if ('preconnect' === $relation_type && !empty($new_hints)) {
379
+            $hints = array_merge($hints, $new_hints);
380 380
         }
381 381
 
382 382
         return $hints;
383 383
     }
384 384
 
385
-    public function filter_preconnect_google_fonts( $in )
385
+    public function filter_preconnect_google_fonts($in)
386 386
     {
387
-        if ( '2' !== $this->options['autoptimize_extra_radio_field_4'] ) {
387
+        if ('2' !== $this->options['autoptimize_extra_radio_field_4']) {
388 388
             // Preconnect to fonts.gstatic.com unless we remove gfonts.
389 389
             $in[] = 'https://fonts.gstatic.com';
390 390
         }
391 391
 
392
-        if ( '4' === $this->options['autoptimize_extra_radio_field_4'] ) {
392
+        if ('4' === $this->options['autoptimize_extra_radio_field_4']) {
393 393
             // Preconnect even more hosts for webfont.js!
394 394
             $in[] = 'https://ajax.googleapis.com';
395 395
             $in[] = 'https://fonts.googleapis.com';
@@ -398,76 +398,76 @@  discard block
 block discarded – undo
398 398
         return $in;
399 399
     }
400 400
 
401
-    public function filter_preload( $in ) {
401
+    public function filter_preload($in) {
402 402
         // make array from comma separated list.
403 403
         $options  = $this->options;
404 404
         $preloads = array();
405
-        if ( array_key_exists( 'autoptimize_extra_text_field_7', $options ) ) {
406
-            $preloads = array_filter( array_map( 'trim', explode( ',', $options['autoptimize_extra_text_field_7'] ) ) );
405
+        if (array_key_exists('autoptimize_extra_text_field_7', $options)) {
406
+            $preloads = array_filter(array_map('trim', explode(',', $options['autoptimize_extra_text_field_7'])));
407 407
         }
408
-        $preloads = apply_filters( 'autoptimize_filter_extra_tobepreloaded', $preloads );
408
+        $preloads = apply_filters('autoptimize_filter_extra_tobepreloaded', $preloads);
409 409
 
410 410
         // immediately return if nothing to be preloaded.
411
-        if ( empty( $preloads ) ) {
411
+        if (empty($preloads)) {
412 412
             return $in;
413 413
         }
414 414
 
415 415
         // iterate through array and add preload link to tmp string.
416 416
         $preload_output = '';
417
-        foreach ( $preloads as $preload ) {
417
+        foreach ($preloads as $preload) {
418 418
             $crossorigin = '';
419 419
             $preload_as  = '';
420 420
             $mime_type   = '';
421
-            $_preload    = strtok( $preload, '?' );
421
+            $_preload    = strtok($preload, '?');
422 422
 
423
-            if ( autoptimizeUtils::str_ends_in( $_preload, '.css' ) ) {
423
+            if (autoptimizeUtils::str_ends_in($_preload, '.css')) {
424 424
                 $preload_as = 'style';
425
-            } elseif ( autoptimizeUtils::str_ends_in( $_preload, '.js' ) ) {
425
+            } elseif (autoptimizeUtils::str_ends_in($_preload, '.js')) {
426 426
                 $preload_as = 'script';
427
-            } elseif ( autoptimizeUtils::str_ends_in( $_preload, '.woff' ) || autoptimizeUtils::str_ends_in( $_preload, '.woff2' ) || autoptimizeUtils::str_ends_in( $_preload, '.ttf' ) || autoptimizeUtils::str_ends_in( $_preload, '.eot' ) ) {
427
+            } elseif (autoptimizeUtils::str_ends_in($_preload, '.woff') || autoptimizeUtils::str_ends_in($_preload, '.woff2') || autoptimizeUtils::str_ends_in($_preload, '.ttf') || autoptimizeUtils::str_ends_in($_preload, '.eot')) {
428 428
                 $preload_as  = 'font';
429 429
                 $crossorigin = ' crossorigin';
430
-                $mime_type   = ' type="font/' . pathinfo( $_preload, PATHINFO_EXTENSION ) . '"';
431
-                if ( ' type="font/eot"' === $mime_type ) {
430
+                $mime_type   = ' type="font/'.pathinfo($_preload, PATHINFO_EXTENSION).'"';
431
+                if (' type="font/eot"' === $mime_type) {
432 432
                     $mime_type = 'application/vnd.ms-fontobject';
433 433
                 }
434
-            } elseif ( autoptimizeUtils::str_ends_in( $_preload, '.jpeg' ) || autoptimizeUtils::str_ends_in( $_preload, '.jpg' ) || autoptimizeUtils::str_ends_in( $_preload, '.webp' ) || autoptimizeUtils::str_ends_in( $_preload, '.png' ) || autoptimizeUtils::str_ends_in( $_preload, '.gif' ) ) {
434
+            } elseif (autoptimizeUtils::str_ends_in($_preload, '.jpeg') || autoptimizeUtils::str_ends_in($_preload, '.jpg') || autoptimizeUtils::str_ends_in($_preload, '.webp') || autoptimizeUtils::str_ends_in($_preload, '.png') || autoptimizeUtils::str_ends_in($_preload, '.gif')) {
435 435
                 $preload_as = 'image';
436 436
             } else {
437 437
                 $preload_as = 'other';
438 438
             }
439 439
 
440
-            $preload_output .= '<link rel="preload" href="' . $preload . '" as="' . $preload_as . '"' . $mime_type . $crossorigin . '>';
440
+            $preload_output .= '<link rel="preload" href="'.$preload.'" as="'.$preload_as.'"'.$mime_type.$crossorigin.'>';
441 441
         }
442
-        $preload_output = apply_filters( 'autoptimize_filter_extra_preload_output', $preload_output );
442
+        $preload_output = apply_filters('autoptimize_filter_extra_preload_output', $preload_output);
443 443
 
444 444
         // add string to head (before first link node by default).
445
-        $preload_inject = apply_filters( 'autoptimize_filter_extra_preload_inject', '<link' );
446
-        $position       = autoptimizeUtils::strpos( $in, $preload_inject );
445
+        $preload_inject = apply_filters('autoptimize_filter_extra_preload_inject', '<link');
446
+        $position       = autoptimizeUtils::strpos($in, $preload_inject);
447 447
 
448
-        return autoptimizeUtils::substr_replace( $in, $preload_output . $preload_inject, $position, strlen( $preload_inject ) );
448
+        return autoptimizeUtils::substr_replace($in, $preload_output.$preload_inject, $position, strlen($preload_inject));
449 449
     }
450 450
 
451 451
     public function admin_menu()
452 452
     {
453 453
         // no acces if multisite and not network admin and no site config allowed.
454
-        if ( autoptimizeConfig::should_show_menu_tabs() ) {
454
+        if (autoptimizeConfig::should_show_menu_tabs()) {
455 455
             add_submenu_page(
456 456
                 null,
457 457
                 'autoptimize_extra',
458 458
                 'autoptimize_extra',
459 459
                 'manage_options',
460 460
                 'autoptimize_extra',
461
-                array( $this, 'options_page' )
461
+                array($this, 'options_page')
462 462
             );
463 463
         }
464
-        register_setting( 'autoptimize_extra_settings', 'autoptimize_extra_settings' );
464
+        register_setting('autoptimize_extra_settings', 'autoptimize_extra_settings');
465 465
     }
466 466
 
467
-    public function add_extra_tab( $in )
467
+    public function add_extra_tab($in)
468 468
     {
469
-        if ( autoptimizeConfig::should_show_menu_tabs() ) {
470
-            $in = array_merge( $in, array( 'autoptimize_extra' => __( 'Extra', 'autoptimize' ) ) );
469
+        if (autoptimizeConfig::should_show_menu_tabs()) {
470
+            $in = array_merge($in, array('autoptimize_extra' => __('Extra', 'autoptimize')));
471 471
         }
472 472
 
473 473
         return $in;
@@ -487,97 +487,97 @@  discard block
 block discarded – undo
487 487
         #ao_settings_form .form-table th {font-weight: normal;}
488 488
         #autoptimize_extra_descr{font-size: 120%;}
489 489
     </style>
490
-    <script>document.title = "Autoptimize: <?php _e( 'Extra', 'autoptimize' ); ?> " + document.title;</script>
490
+    <script>document.title = "Autoptimize: <?php _e('Extra', 'autoptimize'); ?> " + document.title;</script>
491 491
     <div class="wrap">
492
-    <h1><?php _e( 'Autoptimize Settings', 'autoptimize' ); ?></h1>
492
+    <h1><?php _e('Autoptimize Settings', 'autoptimize'); ?></h1>
493 493
         <?php echo autoptimizeConfig::ao_admin_tabs(); ?>
494
-        <?php if ( 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_js' ) && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_css' ) && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_html' ) && ! autoptimizeImages::imgopt_active() ) { ?>
494
+        <?php if ('on' !== autoptimizeOptionWrapper::get_option('autoptimize_js') && 'on' !== autoptimizeOptionWrapper::get_option('autoptimize_css') && 'on' !== autoptimizeOptionWrapper::get_option('autoptimize_html') && !autoptimizeImages::imgopt_active()) { ?>
495 495
             <div class="notice-warning notice"><p>
496
-            <?php _e( 'Most of below Extra optimizations require at least one of HTML, JS, CSS or Image autoptimizations being active.', 'autoptimize' ); ?>
496
+            <?php _e('Most of below Extra optimizations require at least one of HTML, JS, CSS or Image autoptimizations being active.', 'autoptimize'); ?>
497 497
             </p></div>
498 498
         <?php } ?>
499 499
 
500
-    <form id='ao_settings_form' action='<?php echo admin_url( 'options.php' ); ?>' method='post'>
501
-        <?php settings_fields( 'autoptimize_extra_settings' ); ?>
502
-        <h2><?php _e( 'Extra Auto-Optimizations', 'autoptimize' ); ?></h2>
503
-        <span id='autoptimize_extra_descr'><?php _e( 'The following settings can improve your site\'s performance even more.', 'autoptimize' ); ?></span>
500
+    <form id='ao_settings_form' action='<?php echo admin_url('options.php'); ?>' method='post'>
501
+        <?php settings_fields('autoptimize_extra_settings'); ?>
502
+        <h2><?php _e('Extra Auto-Optimizations', 'autoptimize'); ?></h2>
503
+        <span id='autoptimize_extra_descr'><?php _e('The following settings can improve your site\'s performance even more.', 'autoptimize'); ?></span>
504 504
         <table class="form-table">
505 505
             <tr>
506
-                <th scope="row"><?php _e( 'Google Fonts', 'autoptimize' ); ?></th>
506
+                <th scope="row"><?php _e('Google Fonts', 'autoptimize'); ?></th>
507 507
                 <td>
508
-                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="1" <?php if ( ! in_array( $gfonts, array( 2, 3, 4, 5 ) ) ) { echo 'checked'; } ?> ><?php _e( 'Leave as is', 'autoptimize' ); ?><br/>
509
-                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="2" <?php checked( 2, $gfonts, true ); ?> ><?php _e( 'Remove Google Fonts', 'autoptimize' ); ?><br/>
508
+                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="1" <?php if (!in_array($gfonts, array(2, 3, 4, 5))) { echo 'checked'; } ?> ><?php _e('Leave as is', 'autoptimize'); ?><br/>
509
+                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="2" <?php checked(2, $gfonts, true); ?> ><?php _e('Remove Google Fonts', 'autoptimize'); ?><br/>
510 510
                     <?php // translators: "display:swap" should remain untranslated, will be shown in code tags. ?>
511
-                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="3" <?php checked( 3, $gfonts, true ); ?> ><?php echo __( 'Combine and link in head (fonts load fast but are render-blocking)', 'autoptimize' ) . ', ' . sprintf( __( 'includes %1$sdisplay:swap%2$s.', 'autoptimize' ), '<code>', '</code>' ); ?><br/>
511
+                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="3" <?php checked(3, $gfonts, true); ?> ><?php echo __('Combine and link in head (fonts load fast but are render-blocking)', 'autoptimize').', '.sprintf(__('includes %1$sdisplay:swap%2$s.', 'autoptimize'), '<code>', '</code>'); ?><br/>
512 512
                     <?php // translators: "display:swap" should remain untranslated, will be shown in code tags. ?>
513
-                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="5" <?php checked( 5, $gfonts, true ); ?> ><?php echo __( 'Combine and preload in head (fonts load late, but are not render-blocking)', 'autoptimize' ) . ', ' . sprintf( __( 'includes %1$sdisplay:swap%2$s.', 'autoptimize' ), '<code>', '</code>' ); ?><br/>
514
-                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="4" <?php checked( 4, $gfonts, true ); ?> ><?php _e( 'Combine and load fonts asynchronously with <a href="https://github.com/typekit/webfontloader#readme" target="_blank">webfont.js</a>', 'autoptimize' ); ?><br/>
513
+                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="5" <?php checked(5, $gfonts, true); ?> ><?php echo __('Combine and preload in head (fonts load late, but are not render-blocking)', 'autoptimize').', '.sprintf(__('includes %1$sdisplay:swap%2$s.', 'autoptimize'), '<code>', '</code>'); ?><br/>
514
+                    <input type="radio" name="autoptimize_extra_settings[autoptimize_extra_radio_field_4]" value="4" <?php checked(4, $gfonts, true); ?> ><?php _e('Combine and load fonts asynchronously with <a href="https://github.com/typekit/webfontloader#readme" target="_blank">webfont.js</a>', 'autoptimize'); ?><br/>
515 515
                 </td>
516 516
             </tr>
517 517
             <tr>
518
-                <th scope="row"><?php _e( 'Remove emojis', 'autoptimize' ); ?></th>
518
+                <th scope="row"><?php _e('Remove emojis', 'autoptimize'); ?></th>
519 519
                 <td>
520
-                    <label><input type='checkbox' name='autoptimize_extra_settings[autoptimize_extra_checkbox_field_1]' <?php if ( ! empty( $options['autoptimize_extra_checkbox_field_1'] ) && '1' === $options['autoptimize_extra_checkbox_field_1'] ) { echo 'checked="checked"'; } ?> value='1'><?php _e( 'Removes WordPress\' core emojis\' inline CSS, inline JavaScript, and an otherwise un-autoptimized JavaScript file.', 'autoptimize' ); ?></label>
520
+                    <label><input type='checkbox' name='autoptimize_extra_settings[autoptimize_extra_checkbox_field_1]' <?php if (!empty($options['autoptimize_extra_checkbox_field_1']) && '1' === $options['autoptimize_extra_checkbox_field_1']) { echo 'checked="checked"'; } ?> value='1'><?php _e('Removes WordPress\' core emojis\' inline CSS, inline JavaScript, and an otherwise un-autoptimized JavaScript file.', 'autoptimize'); ?></label>
521 521
                 </td>
522 522
             </tr>
523 523
             <tr>
524
-                <th scope="row"><?php _e( 'Remove query strings from static resources', 'autoptimize' ); ?></th>
524
+                <th scope="row"><?php _e('Remove query strings from static resources', 'autoptimize'); ?></th>
525 525
                 <td>
526
-                    <label><input type='checkbox' name='autoptimize_extra_settings[autoptimize_extra_checkbox_field_0]' <?php if ( ! empty( $options['autoptimize_extra_checkbox_field_0'] ) && '1' === $options['autoptimize_extra_checkbox_field_0'] ) { echo 'checked="checked"'; } ?> value='1'><?php _e( 'Removing query strings (or more specifically the <code>ver</code> parameter) will not improve load time, but might improve performance scores.', 'autoptimize' ); ?></label>
526
+                    <label><input type='checkbox' name='autoptimize_extra_settings[autoptimize_extra_checkbox_field_0]' <?php if (!empty($options['autoptimize_extra_checkbox_field_0']) && '1' === $options['autoptimize_extra_checkbox_field_0']) { echo 'checked="checked"'; } ?> value='1'><?php _e('Removing query strings (or more specifically the <code>ver</code> parameter) will not improve load time, but might improve performance scores.', 'autoptimize'); ?></label>
527 527
                 </td>
528 528
             </tr>
529 529
             <tr>
530
-                <th scope="row"><?php _e( 'Preconnect to 3rd party domains <em>(advanced users)</em>', 'autoptimize' ); ?></th>
530
+                <th scope="row"><?php _e('Preconnect to 3rd party domains <em>(advanced users)</em>', 'autoptimize'); ?></th>
531 531
                 <td>
532
-                    <label><input type='text' style='width:80%' name='autoptimize_extra_settings[autoptimize_extra_text_field_2]' value='<?php if ( array_key_exists( 'autoptimize_extra_text_field_2', $options ) ) { echo esc_attr( $options['autoptimize_extra_text_field_2'] ); } ?>'><br /><?php _e( 'Add 3rd party domains you want the browser to <a href="https://www.keycdn.com/support/preconnect/#primary" target="_blank">preconnect</a> to, separated by comma\'s. Make sure to include the correct protocol (HTTP or HTTPS).', 'autoptimize' ); ?></label>
532
+                    <label><input type='text' style='width:80%' name='autoptimize_extra_settings[autoptimize_extra_text_field_2]' value='<?php if (array_key_exists('autoptimize_extra_text_field_2', $options)) { echo esc_attr($options['autoptimize_extra_text_field_2']); } ?>'><br /><?php _e('Add 3rd party domains you want the browser to <a href="https://www.keycdn.com/support/preconnect/#primary" target="_blank">preconnect</a> to, separated by comma\'s. Make sure to include the correct protocol (HTTP or HTTPS).', 'autoptimize'); ?></label>
533 533
                 </td>
534 534
             </tr>
535 535
             <tr>
536
-                <th scope="row"><?php _e( 'Preload specific requests <em>(advanced users)</em>', 'autoptimize' ); ?></th>
536
+                <th scope="row"><?php _e('Preload specific requests <em>(advanced users)</em>', 'autoptimize'); ?></th>
537 537
                 <td>
538
-                    <label><input type='text' style='width:80%' name='autoptimize_extra_settings[autoptimize_extra_text_field_7]' value='<?php if ( array_key_exists( 'autoptimize_extra_text_field_7', $options ) ) { echo esc_attr( $options['autoptimize_extra_text_field_7'] ); } ?>'><br /><?php _e( 'Comma-separated list with full URL\'s of to to-be-preloaded resources. To be used sparingly!', 'autoptimize' ); ?></label>
538
+                    <label><input type='text' style='width:80%' name='autoptimize_extra_settings[autoptimize_extra_text_field_7]' value='<?php if (array_key_exists('autoptimize_extra_text_field_7', $options)) { echo esc_attr($options['autoptimize_extra_text_field_7']); } ?>'><br /><?php _e('Comma-separated list with full URL\'s of to to-be-preloaded resources. To be used sparingly!', 'autoptimize'); ?></label>
539 539
                 </td>
540 540
             </tr>
541 541
             <tr>
542
-                <th scope="row"><?php _e( 'Async Javascript-files <em>(advanced users)</em>', 'autoptimize' ); ?></th>
542
+                <th scope="row"><?php _e('Async Javascript-files <em>(advanced users)</em>', 'autoptimize'); ?></th>
543 543
                 <td>
544 544
                     <?php
545
-                    if ( autoptimizeUtils::is_plugin_active( 'async-javascript/async-javascript.php' ) ) {
545
+                    if (autoptimizeUtils::is_plugin_active('async-javascript/async-javascript.php')) {
546 546
                         // translators: link points Async Javascript settings page.
547
-                        printf( __( 'You have "Async JavaScript" installed, %1$sconfiguration of async javascript is best done there%2$s.', 'autoptimize' ), '<a href="' . 'options-general.php?page=async-javascript' . '">', '</a>' );
547
+                        printf(__('You have "Async JavaScript" installed, %1$sconfiguration of async javascript is best done there%2$s.', 'autoptimize'), '<a href="'.'options-general.php?page=async-javascript'.'">', '</a>');
548 548
                     } else {
549 549
                     ?>
550
-                        <input type='text' style='width:80%' name='autoptimize_extra_settings[autoptimize_extra_text_field_3]' value='<?php if ( array_key_exists( 'autoptimize_extra_text_field_3', $options ) ) { echo esc_attr( $options['autoptimize_extra_text_field_3'] ); } ?>'>
550
+                        <input type='text' style='width:80%' name='autoptimize_extra_settings[autoptimize_extra_text_field_3]' value='<?php if (array_key_exists('autoptimize_extra_text_field_3', $options)) { echo esc_attr($options['autoptimize_extra_text_field_3']); } ?>'>
551 551
                         <br />
552 552
                         <?php
553
-                            _e( 'Comma-separated list of local or 3rd party JS-files that should loaded with the <code>async</code> flag. JS-files from your own site will be automatically excluded if added here. ', 'autoptimize' );
553
+                            _e('Comma-separated list of local or 3rd party JS-files that should loaded with the <code>async</code> flag. JS-files from your own site will be automatically excluded if added here. ', 'autoptimize');
554 554
                             // translators: %s will be replaced by a link to the "async javascript" plugin.
555
-                            echo sprintf( __( 'Configuration of async javascript is easier and more flexible using the %s plugin.', 'autoptimize' ), '"<a href="https://wordpress.org/plugins/async-javascript" target="_blank">Async Javascript</a>"' );
556
-                            $asj_install_url = network_admin_url() . 'plugin-install.php?s=async+javascript&tab=search&type=term';
557
-                            echo sprintf( ' <a href="' . $asj_install_url . '">%s</a>', __( 'Click here to install and activate it.', 'autoptimize' ) );
555
+                            echo sprintf(__('Configuration of async javascript is easier and more flexible using the %s plugin.', 'autoptimize'), '"<a href="https://wordpress.org/plugins/async-javascript" target="_blank">Async Javascript</a>"');
556
+                            $asj_install_url = network_admin_url().'plugin-install.php?s=async+javascript&tab=search&type=term';
557
+                            echo sprintf(' <a href="'.$asj_install_url.'">%s</a>', __('Click here to install and activate it.', 'autoptimize'));
558 558
                     }
559 559
                     ?>
560 560
                 </td>
561 561
             </tr>
562 562
             <tr>
563
-                <th scope="row"><?php _e( 'Optimize YouTube videos', 'autoptimize' ); ?></th>
563
+                <th scope="row"><?php _e('Optimize YouTube videos', 'autoptimize'); ?></th>
564 564
                 <td>
565 565
                     <?php
566
-                    if ( autoptimizeUtils::is_plugin_active( 'wp-youtube-lyte/wp-youtube-lyte.php' ) ) {
567
-                        _e( 'Great, you have WP YouTube Lyte installed.', 'autoptimize' );
566
+                    if (autoptimizeUtils::is_plugin_active('wp-youtube-lyte/wp-youtube-lyte.php')) {
567
+                        _e('Great, you have WP YouTube Lyte installed.', 'autoptimize');
568 568
                         $lyte_config_url = 'options-general.php?page=lyte_settings_page';
569
-                        echo sprintf( ' <a href="' . $lyte_config_url . '">%s</a>', __( 'Click here to configure it.', 'autoptimize' ) );
569
+                        echo sprintf(' <a href="'.$lyte_config_url.'">%s</a>', __('Click here to configure it.', 'autoptimize'));
570 570
                     } else {
571 571
                         // translators: %s will be replaced by a link to "wp youtube lyte" plugin.
572
-                        echo sprintf( __( '%s allows you to “lazy load” your videos, by inserting responsive “Lite YouTube Embeds". ', 'autoptimize' ), '<a href="https://wordpress.org/plugins/wp-youtube-lyte" target="_blank">WP YouTube Lyte</a>' );
573
-                        $lyte_install_url = network_admin_url() . 'plugin-install.php?s=lyte&tab=search&type=term';
574
-                        echo sprintf( ' <a href="' . $lyte_install_url . '">%s</a>', __( 'Click here to install and activate it.', 'autoptimize' ) );
572
+                        echo sprintf(__('%s allows you to “lazy load” your videos, by inserting responsive “Lite YouTube Embeds". ', 'autoptimize'), '<a href="https://wordpress.org/plugins/wp-youtube-lyte" target="_blank">WP YouTube Lyte</a>');
573
+                        $lyte_install_url = network_admin_url().'plugin-install.php?s=lyte&tab=search&type=term';
574
+                        echo sprintf(' <a href="'.$lyte_install_url.'">%s</a>', __('Click here to install and activate it.', 'autoptimize'));
575 575
                     }
576 576
                     ?>
577 577
                 </td>
578 578
             </tr>
579 579
         </table>
580
-        <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e( 'Save Changes', 'autoptimize' ); ?>" /></p>
580
+        <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Changes', 'autoptimize'); ?>" /></p>
581 581
     </form>
582 582
         <?php
583 583
     }
Please login to merge, or discard this patch.
classes/autoptimizeImages.php 1 patch
Spacing   +338 added lines, -338 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Handles optimizing images.
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -23,17 +23,17 @@  discard block
 block discarded – undo
23 23
      */
24 24
     protected static $instance = null;
25 25
 
26
-    public function __construct( array $options = array() )
26
+    public function __construct(array $options = array())
27 27
     {
28 28
         // If options are not provided, fetch them.
29
-        if ( empty( $options ) ) {
29
+        if (empty($options)) {
30 30
             $options = $this->fetch_options();
31 31
         }
32 32
 
33
-        $this->set_options( $options );
33
+        $this->set_options($options);
34 34
     }
35 35
 
36
-    public function set_options( array $options )
36
+    public function set_options(array $options)
37 37
     {
38 38
         $this->options = $options;
39 39
 
@@ -42,17 +42,17 @@  discard block
 block discarded – undo
42 42
 
43 43
     public static function fetch_options()
44 44
     {
45
-        $value = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_settings' );
46
-        if ( empty( $value ) ) {
45
+        $value = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_settings');
46
+        if (empty($value)) {
47 47
             // Fallback to returning defaults when no stored option exists yet.
48 48
             $value = autoptimizeConfig::get_ao_imgopt_default_options();
49 49
         }
50 50
 
51 51
         // get service availability and add it to the options-array.
52
-        $value['availabilities'] = autoptimizeOptionWrapper::get_option( 'autoptimize_service_availablity' );
52
+        $value['availabilities'] = autoptimizeOptionWrapper::get_option('autoptimize_service_availablity');
53 53
 
54
-        if ( empty( $value['availabilities'] ) ) {
55
-            $value['availabilities'] = autoptimizeUtils::check_service_availability( true );
54
+        if (empty($value['availabilities'])) {
55
+            $value['availabilities'] = autoptimizeUtils::check_service_availability(true);
56 56
         }
57 57
 
58 58
         return $value;
@@ -65,9 +65,9 @@  discard block
 block discarded – undo
65 65
         // and does not use/ request the availablity data (which could slow things down).
66 66
         static $imgopt_active = null;
67 67
 
68
-        if ( null === $imgopt_active ) {
69
-            $opts = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_settings', '' );
70
-            if ( ! empty( $opts ) && is_array( $opts ) && array_key_exists( 'autoptimize_imgopt_checkbox_field_1', $opts ) && ! empty( $opts['autoptimize_imgopt_checkbox_field_1'] ) && '1' === $opts['autoptimize_imgopt_checkbox_field_1'] ) {
68
+        if (null === $imgopt_active) {
69
+            $opts = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_settings', '');
70
+            if (!empty($opts) && is_array($opts) && array_key_exists('autoptimize_imgopt_checkbox_field_1', $opts) && !empty($opts['autoptimize_imgopt_checkbox_field_1']) && '1' === $opts['autoptimize_imgopt_checkbox_field_1']) {
71 71
                 $imgopt_active = true;
72 72
             } else {
73 73
                 $imgopt_active = false;
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
      */
88 88
     public static function instance()
89 89
     {
90
-        if ( null === self::$instance ) {
90
+        if (null === self::$instance) {
91 91
             self::$instance = new self();
92 92
         }
93 93
 
@@ -96,34 +96,34 @@  discard block
 block discarded – undo
96 96
 
97 97
     public function run()
98 98
     {
99
-        if ( is_admin() ) {
100
-            if ( is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) {
101
-                add_action( 'network_admin_menu', array( $this, 'imgopt_admin_menu' ) );
99
+        if (is_admin()) {
100
+            if (is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network()) {
101
+                add_action('network_admin_menu', array($this, 'imgopt_admin_menu'));
102 102
             } else {
103
-                add_action( 'admin_menu', array( $this, 'imgopt_admin_menu' ) );
103
+                add_action('admin_menu', array($this, 'imgopt_admin_menu'));
104 104
             }
105
-            add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_imgopt_tab' ), 9 );
105
+            add_filter('autoptimize_filter_settingsscreen_tabs', array($this, 'add_imgopt_tab'), 9);
106 106
         } else {
107
-            add_action( 'wp', array( $this, 'run_on_frontend' ) );
107
+            add_action('wp', array($this, 'run_on_frontend'));
108 108
         }
109 109
     }
110 110
 
111 111
     public function run_on_frontend() {
112
-        if ( ! $this->should_run() ) {
113
-            if ( $this->should_lazyload() ) {
112
+        if (!$this->should_run()) {
113
+            if ($this->should_lazyload()) {
114 114
                 add_filter(
115 115
                     'wp_lazy_loading_enabled',
116 116
                     '__return_false'
117 117
                 );
118 118
                 add_filter(
119 119
                     'autoptimize_html_after_minify',
120
-                    array( $this, 'filter_lazyload_images' ),
120
+                    array($this, 'filter_lazyload_images'),
121 121
                     10,
122 122
                     1
123 123
                 );
124 124
                 add_action(
125 125
                     'wp_footer',
126
-                    array( $this, 'add_lazyload_js_footer' ),
126
+                    array($this, 'add_lazyload_js_footer'),
127 127
                     10,
128 128
                     0
129 129
                 );
@@ -133,43 +133,43 @@  discard block
 block discarded – undo
133 133
 
134 134
         $active = false;
135 135
 
136
-        if ( apply_filters( 'autoptimize_filter_imgopt_do', true ) ) {
136
+        if (apply_filters('autoptimize_filter_imgopt_do', true)) {
137 137
             add_filter(
138 138
                 'autoptimize_html_after_minify',
139
-                array( $this, 'filter_optimize_images' ),
139
+                array($this, 'filter_optimize_images'),
140 140
                 10,
141 141
                 1
142 142
             );
143 143
             $active = true;
144 144
         }
145 145
 
146
-        if ( apply_filters( 'autoptimize_filter_imgopt_do_css', true ) ) {
146
+        if (apply_filters('autoptimize_filter_imgopt_do_css', true)) {
147 147
             add_filter(
148 148
                 'autoptimize_filter_base_replace_cdn',
149
-                array( $this, 'filter_optimize_css_images' ),
149
+                array($this, 'filter_optimize_css_images'),
150 150
                 10,
151 151
                 1
152 152
             );
153 153
             $active = true;
154 154
         }
155 155
 
156
-        if ( $active ) {
156
+        if ($active) {
157 157
             add_filter(
158 158
                 'autoptimize_extra_filter_tobepreconn',
159
-                array( $this, 'filter_preconnect_imgopt_url' ),
159
+                array($this, 'filter_preconnect_imgopt_url'),
160 160
                 10,
161 161
                 1
162 162
             );
163 163
         }
164 164
 
165
-        if ( $this->should_lazyload() ) {
165
+        if ($this->should_lazyload()) {
166 166
             add_filter(
167 167
                 'wp_lazy_loading_enabled',
168 168
                 '__return_false'
169 169
             );
170 170
             add_action(
171 171
                 'wp_footer',
172
-                array( $this, 'add_lazyload_js_footer' ),
172
+                array($this, 'add_lazyload_js_footer'),
173 173
                 10,
174 174
                 0
175 175
             );
@@ -184,12 +184,12 @@  discard block
 block discarded – undo
184 184
     protected function should_run()
185 185
     {
186 186
         $opts              = $this->options;
187
-        $service_not_down  = ( 'down' !== $opts['availabilities']['extra_imgopt']['status'] );
188
-        $not_launch_status = ( 'launch' !== $opts['availabilities']['extra_imgopt']['status'] );
187
+        $service_not_down  = ('down' !== $opts['availabilities']['extra_imgopt']['status']);
188
+        $not_launch_status = ('launch' !== $opts['availabilities']['extra_imgopt']['status']);
189 189
 
190 190
         $do_cdn      = true;
191 191
         $_userstatus = $this->get_imgopt_provider_userstatus();
192
-        if ( isset( $_userstatus['Status'] ) && ( -2 == $_userstatus['Status'] || -3 == $_userstatus['Status'] ) ) {
192
+        if (isset($_userstatus['Status']) && ( -2 == $_userstatus['Status'] || -3 == $_userstatus['Status'] )) {
193 193
             // don't even attempt to put images on CDN if heavily exceeded threshold or if site not reachable.
194 194
             $do_cdn = false;
195 195
         }
@@ -198,7 +198,7 @@  discard block
 block discarded – undo
198 198
             $this->imgopt_active()
199 199
             && $do_cdn
200 200
             && $service_not_down
201
-            && ( $not_launch_status || $this->launch_ok() )
201
+            && ($not_launch_status || $this->launch_ok())
202 202
         ) {
203 203
             return true;
204 204
         }
@@ -209,13 +209,13 @@  discard block
 block discarded – undo
209 209
     {
210 210
         static $imgopt_host = null;
211 211
 
212
-        if ( null === $imgopt_host ) {
212
+        if (null === $imgopt_host) {
213 213
             $imgopt_host  = 'https://cdn.shortpixel.ai/';
214 214
             $avail_imgopt = $this->options['availabilities']['extra_imgopt'];
215
-            if ( ! empty( $avail_imgopt ) && array_key_exists( 'hosts', $avail_imgopt ) && is_array( $avail_imgopt['hosts'] ) ) {
216
-                $imgopt_host = array_rand( array_flip( $avail_imgopt['hosts'] ) );
215
+            if (!empty($avail_imgopt) && array_key_exists('hosts', $avail_imgopt) && is_array($avail_imgopt['hosts'])) {
216
+                $imgopt_host = array_rand(array_flip($avail_imgopt['hosts']));
217 217
             }
218
-            $imgopt_host = apply_filters( 'autoptimize_filter_imgopt_host', $imgopt_host );
218
+            $imgopt_host = apply_filters('autoptimize_filter_imgopt_host', $imgopt_host);
219 219
         }
220 220
 
221 221
         return $imgopt_host;
@@ -230,7 +230,7 @@  discard block
 block discarded – undo
230 230
 
231 231
     public static function get_service_url_suffix()
232 232
     {
233
-        $suffix = '/af/GWRGFLW109483/' . AUTOPTIMIZE_SITE_DOMAIN;
233
+        $suffix = '/af/GWRGFLW109483/'.AUTOPTIMIZE_SITE_DOMAIN;
234 234
 
235 235
         return $suffix;
236 236
     }
@@ -239,12 +239,12 @@  discard block
 block discarded – undo
239 239
     {
240 240
         static $quality = null;
241 241
 
242
-        if ( null === $quality ) {
242
+        if (null === $quality) {
243 243
             $q_array = $this->get_img_quality_array();
244 244
             $setting = $this->get_img_quality_setting();
245 245
             $quality = apply_filters(
246 246
                 'autoptimize_filter_imgopt_quality',
247
-                'q_' . $q_array[ $setting ]
247
+                'q_'.$q_array[$setting]
248 248
             );
249 249
         }
250 250
 
@@ -255,7 +255,7 @@  discard block
 block discarded – undo
255 255
     {
256 256
         static $map = null;
257 257
 
258
-        if ( null === $map ) {
258
+        if (null === $map) {
259 259
             $map = array(
260 260
                 '1' => 'lossy',
261 261
                 '2' => 'glossy',
@@ -274,12 +274,12 @@  discard block
 block discarded – undo
274 274
     {
275 275
         static $q = null;
276 276
 
277
-        if ( null === $q ) {
278
-            if ( is_array( $this->options ) && array_key_exists( 'autoptimize_imgopt_select_field_2', $this->options ) ) {
277
+        if (null === $q) {
278
+            if (is_array($this->options) && array_key_exists('autoptimize_imgopt_select_field_2', $this->options)) {
279 279
                 $setting = $this->options['autoptimize_imgopt_select_field_2'];
280 280
             }
281 281
 
282
-            if ( ! isset( $setting ) || empty( $setting ) || ( '1' !== $setting && '3' !== $setting ) ) {
282
+            if (!isset($setting) || empty($setting) || ('1' !== $setting && '3' !== $setting)) {
283 283
                 // default image opt. value is 2 ("glossy").
284 284
                 $q = '2';
285 285
             } else {
@@ -290,10 +290,10 @@  discard block
 block discarded – undo
290 290
         return $q;
291 291
     }
292 292
 
293
-    public function filter_preconnect_imgopt_url( array $in )
293
+    public function filter_preconnect_imgopt_url(array $in)
294 294
     {
295
-        $url_parts = parse_url( $this->get_imgopt_base_url() );
296
-        $in[]      = $url_parts['scheme'] . '://' . $url_parts['host'];
295
+        $url_parts = parse_url($this->get_imgopt_base_url());
296
+        $in[]      = $url_parts['scheme'].'://'.$url_parts['host'];
297 297
 
298 298
         return $in;
299 299
     }
@@ -306,20 +306,20 @@  discard block
 block discarded – undo
306 306
      *
307 307
      * @return string
308 308
      */
309
-    private function normalize_img_url( $in )
309
+    private function normalize_img_url($in)
310 310
     {
311 311
         // Only parse the site url once.
312 312
         static $parsed_site_url = null;
313
-        if ( null === $parsed_site_url ) {
314
-            $parsed_site_url = parse_url( site_url() );
313
+        if (null === $parsed_site_url) {
314
+            $parsed_site_url = parse_url(site_url());
315 315
         }
316 316
 
317 317
         // get CDN domain once.
318 318
         static $cdn_domain = null;
319
-        if ( is_null( $cdn_domain ) ) {
319
+        if (is_null($cdn_domain)) {
320 320
             $cdn_url = $this->get_cdn_url();
321
-            if ( ! empty( $cdn_url ) ) {
322
-                $cdn_domain = parse_url( $cdn_url, PHP_URL_HOST );
321
+            if (!empty($cdn_url)) {
322
+                $cdn_domain = parse_url($cdn_url, PHP_URL_HOST);
323 323
             } else {
324 324
                 $cdn_domain = '';
325 325
             }
@@ -335,44 +335,44 @@  discard block
 block discarded – undo
335 335
          * identical string operations).
336 336
          */
337 337
         static $cache = null;
338
-        if ( null === $cache ) {
338
+        if (null === $cache) {
339 339
             $cache = array();
340 340
         }
341 341
 
342 342
         // Do the work on cache miss only.
343
-        if ( ! isset( $cache[ $in ] ) ) {
343
+        if (!isset($cache[$in])) {
344 344
             // Default to (the trimmed version of) what was given to us.
345
-            $result = trim( $in );
345
+            $result = trim($in);
346 346
 
347 347
             // Some silly plugins wrap background images in html-encoded quotes, so remove those from the img url.
348
-            if ( strpos( $result, '&quot;' ) !== false ) {
349
-                $result = str_replace( '&quot;', '', $result );
348
+            if (strpos($result, '&quot;') !== false) {
349
+                $result = str_replace('&quot;', '', $result);
350 350
             }
351 351
 
352
-            if ( autoptimizeUtils::is_protocol_relative( $result ) ) {
353
-                $result = $parsed_site_url['scheme'] . ':' . $result;
354
-            } elseif ( 0 === strpos( $result, '/' ) ) {
352
+            if (autoptimizeUtils::is_protocol_relative($result)) {
353
+                $result = $parsed_site_url['scheme'].':'.$result;
354
+            } elseif (0 === strpos($result, '/')) {
355 355
                 // Root-relative...
356
-                $result = $parsed_site_url['scheme'] . '://' . $parsed_site_url['host'] . $result;
357
-            } elseif ( ! empty( $cdn_domain ) && strpos( $result, $cdn_domain ) !== 0 ) {
358
-                $result = str_replace( $cdn_domain, $parsed_site_url['host'], $result );
356
+                $result = $parsed_site_url['scheme'].'://'.$parsed_site_url['host'].$result;
357
+            } elseif (!empty($cdn_domain) && strpos($result, $cdn_domain) !== 0) {
358
+                $result = str_replace($cdn_domain, $parsed_site_url['host'], $result);
359 359
             }
360 360
 
361
-            $result = apply_filters( 'autoptimize_filter_imgopt_normalized_url', $result );
361
+            $result = apply_filters('autoptimize_filter_imgopt_normalized_url', $result);
362 362
 
363 363
             // Store in cache.
364
-            $cache[ $in ] = $result;
364
+            $cache[$in] = $result;
365 365
         }
366 366
 
367
-        return $cache[ $in ];
367
+        return $cache[$in];
368 368
     }
369 369
 
370
-    public function filter_optimize_css_images( $in )
370
+    public function filter_optimize_css_images($in)
371 371
     {
372
-        $in = $this->normalize_img_url( $in );
372
+        $in = $this->normalize_img_url($in);
373 373
 
374
-        if ( $this->can_optimize_image( $in ) ) {
375
-            return $this->build_imgopt_url( $in, '', '' );
374
+        if ($this->can_optimize_image($in)) {
375
+            return $this->build_imgopt_url($in, '', '');
376 376
         } else {
377 377
             return $in;
378 378
         }
@@ -382,50 +382,50 @@  discard block
 block discarded – undo
382 382
     {
383 383
         static $imgopt_base_url = null;
384 384
 
385
-        if ( null === $imgopt_base_url ) {
385
+        if (null === $imgopt_base_url) {
386 386
             $imgopt_host     = $this->get_imgopt_host();
387 387
             $quality         = $this->get_img_quality_string();
388
-            $ret_val         = apply_filters( 'autoptimize_filter_imgopt_wait', 'ret_img' ); // values: ret_wait, ret_img, ret_json, ret_blank.
389
-            $imgopt_base_url = $imgopt_host . 'client/' . $quality . ',' . $ret_val;
390
-            $imgopt_base_url = apply_filters( 'autoptimize_filter_imgopt_base_url', $imgopt_base_url );
388
+            $ret_val         = apply_filters('autoptimize_filter_imgopt_wait', 'ret_img'); // values: ret_wait, ret_img, ret_json, ret_blank.
389
+            $imgopt_base_url = $imgopt_host.'client/'.$quality.','.$ret_val;
390
+            $imgopt_base_url = apply_filters('autoptimize_filter_imgopt_base_url', $imgopt_base_url);
391 391
         }
392 392
 
393 393
         return $imgopt_base_url;
394 394
     }
395 395
 
396
-    private function can_optimize_image( $url )
396
+    private function can_optimize_image($url)
397 397
     {
398 398
         static $cdn_url      = null;
399 399
         static $nopti_images = null;
400 400
 
401
-        if ( null === $cdn_url ) {
401
+        if (null === $cdn_url) {
402 402
             $cdn_url = apply_filters(
403 403
                 'autoptimize_filter_base_cdnurl',
404
-                autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url', '' )
404
+                autoptimizeOptionWrapper::get_option('autoptimize_cdn_url', '')
405 405
             );
406 406
         }
407 407
 
408
-        if ( null === $nopti_images ) {
409
-            $nopti_images = apply_filters( 'autoptimize_filter_imgopt_noptimize', '' );
408
+        if (null === $nopti_images) {
409
+            $nopti_images = apply_filters('autoptimize_filter_imgopt_noptimize', '');
410 410
         }
411 411
 
412 412
         $site_host  = AUTOPTIMIZE_SITE_DOMAIN;
413
-        $url        = $this->normalize_img_url( $url );
414
-        $url_parsed = parse_url( $url );
413
+        $url        = $this->normalize_img_url($url);
414
+        $url_parsed = parse_url($url);
415 415
 
416
-        if ( array_key_exists( 'host', $url_parsed ) && $url_parsed['host'] !== $site_host && empty( $cdn_url ) ) {
416
+        if (array_key_exists('host', $url_parsed) && $url_parsed['host'] !== $site_host && empty($cdn_url)) {
417 417
             return false;
418
-        } elseif ( ! empty( $cdn_url ) && strpos( $url, $cdn_url ) === false && array_key_exists( 'host', $url_parsed ) && $url_parsed['host'] !== $site_host ) {
418
+        } elseif (!empty($cdn_url) && strpos($url, $cdn_url) === false && array_key_exists('host', $url_parsed) && $url_parsed['host'] !== $site_host) {
419 419
             return false;
420
-        } elseif ( strpos( $url, '.php' ) !== false ) {
420
+        } elseif (strpos($url, '.php') !== false) {
421 421
             return false;
422
-        } elseif ( str_ireplace( array( '.png', '.gif', '.jpg', '.jpeg', '.webp' ), '', $url_parsed['path'] ) === $url_parsed['path'] ) {
422
+        } elseif (str_ireplace(array('.png', '.gif', '.jpg', '.jpeg', '.webp'), '', $url_parsed['path']) === $url_parsed['path']) {
423 423
             // fixme: better check against end of string.
424 424
             return false;
425
-        } elseif ( ! empty( $nopti_images ) ) {
426
-            $nopti_images_array = array_filter( array_map( 'trim', explode( ',', $nopti_images ) ) );
427
-            foreach ( $nopti_images_array as $nopti_image ) {
428
-                if ( strpos( $url, $nopti_image ) !== false ) {
425
+        } elseif (!empty($nopti_images)) {
426
+            $nopti_images_array = array_filter(array_map('trim', explode(',', $nopti_images)));
427
+            foreach ($nopti_images_array as $nopti_image) {
428
+                if (strpos($url, $nopti_image) !== false) {
429 429
                     return false;
430 430
                 }
431 431
             }
@@ -433,13 +433,13 @@  discard block
 block discarded – undo
433 433
         return true;
434 434
     }
435 435
 
436
-    private function build_imgopt_url( $orig_url, $width = 0, $height = 0 )
436
+    private function build_imgopt_url($orig_url, $width = 0, $height = 0)
437 437
     {
438 438
         // sanitize width and height.
439
-        if ( strpos( $width, '%' ) !== false ) {
439
+        if (strpos($width, '%') !== false) {
440 440
             $width = 0;
441 441
         }
442
-        if ( strpos( $height, '%' ) !== false ) {
442
+        if (strpos($height, '%') !== false) {
443 443
             $height = 0;
444 444
         }
445 445
         $width  = (int) $width;
@@ -453,43 +453,43 @@  discard block
 block discarded – undo
453 453
         );
454 454
 
455 455
         // If filter modified the url, return that.
456
-        if ( $filtered_url !== $orig_url ) {
456
+        if ($filtered_url !== $orig_url) {
457 457
             return $filtered_url;
458 458
         }
459 459
 
460
-        $orig_url        = $this->normalize_img_url( $orig_url );
460
+        $orig_url        = $this->normalize_img_url($orig_url);
461 461
         $imgopt_base_url = $this->get_imgopt_base_url();
462 462
         $imgopt_size     = '';
463 463
 
464
-        if ( $width && 0 !== $width ) {
465
-            $imgopt_size = ',w_' . $width;
464
+        if ($width && 0 !== $width) {
465
+            $imgopt_size = ',w_'.$width;
466 466
         }
467 467
 
468
-        if ( $height && 0 !== $height ) {
469
-            $imgopt_size .= ',h_' . $height;
468
+        if ($height && 0 !== $height) {
469
+            $imgopt_size .= ',h_'.$height;
470 470
         }
471 471
 
472
-        $url = $imgopt_base_url . $imgopt_size . '/' . $orig_url;
472
+        $url = $imgopt_base_url.$imgopt_size.'/'.$orig_url;
473 473
 
474 474
         return $url;
475 475
     }
476 476
 
477
-    public function replace_data_thumbs( $matches )
477
+    public function replace_data_thumbs($matches)
478 478
     {
479
-        return $this->replace_img_callback( $matches, 150, 150 );
479
+        return $this->replace_img_callback($matches, 150, 150);
480 480
     }
481 481
 
482
-    public function replace_img_callback( $matches, $width = 0, $height = 0 )
482
+    public function replace_img_callback($matches, $width = 0, $height = 0)
483 483
     {
484
-        $_normalized_img_url = $this->normalize_img_url( $matches[1] );
485
-        if ( $this->can_optimize_image( $matches[1] ) ) {
486
-            return str_replace( $matches[1], $this->build_imgopt_url( $_normalized_img_url, $width, $height ), $matches[0] );
484
+        $_normalized_img_url = $this->normalize_img_url($matches[1]);
485
+        if ($this->can_optimize_image($matches[1])) {
486
+            return str_replace($matches[1], $this->build_imgopt_url($_normalized_img_url, $width, $height), $matches[0]);
487 487
         } else {
488 488
             return $matches[0];
489 489
         }
490 490
     }
491 491
 
492
-    public function filter_optimize_images( $in )
492
+    public function filter_optimize_images($in)
493 493
     {
494 494
         /*
495 495
          * potential future functional improvements:
@@ -499,7 +499,7 @@  discard block
 block discarded – undo
499 499
         $to_replace = array();
500 500
 
501 501
         // hide noscript tags to avoid nesting noscript tags (as lazyloaded images add noscript).
502
-        if ( $this->should_lazyload() ) {
502
+        if ($this->should_lazyload()) {
503 503
             $in = autoptimizeBase::replace_contents_with_marker_if_exists(
504 504
                 'SCRIPT',
505 505
                 '<script',
@@ -509,25 +509,25 @@  discard block
 block discarded – undo
509 509
         }
510 510
 
511 511
         // extract img tags.
512
-        if ( preg_match_all( '#<img[^>]*src[^>]*>#Usmi', $in, $matches ) ) {
513
-            foreach ( $matches[0] as $tag ) {
512
+        if (preg_match_all('#<img[^>]*src[^>]*>#Usmi', $in, $matches)) {
513
+            foreach ($matches[0] as $tag) {
514 514
                 $orig_tag = $tag;
515 515
                 $imgopt_w = '';
516 516
                 $imgopt_h = '';
517 517
 
518 518
                 // first do (data-)srcsets.
519
-                if ( preg_match_all( '#srcset=("|\')(.*)("|\')#Usmi', $tag, $allsrcsets, PREG_SET_ORDER ) ) {
520
-                    foreach ( $allsrcsets as $srcset ) {
519
+                if (preg_match_all('#srcset=("|\')(.*)("|\')#Usmi', $tag, $allsrcsets, PREG_SET_ORDER)) {
520
+                    foreach ($allsrcsets as $srcset) {
521 521
                         $srcset  = $srcset[2];
522
-                        $srcsets = explode( ',', $srcset );
523
-                        foreach ( $srcsets as $indiv_srcset ) {
524
-                            $indiv_srcset_parts = explode( ' ', trim( $indiv_srcset ) );
525
-                            if ( isset( $indiv_srcset_parts[1] ) && rtrim( $indiv_srcset_parts[1], 'w' ) !== $indiv_srcset_parts[1] ) {
526
-                                $imgopt_w = rtrim( $indiv_srcset_parts[1], 'w' );
522
+                        $srcsets = explode(',', $srcset);
523
+                        foreach ($srcsets as $indiv_srcset) {
524
+                            $indiv_srcset_parts = explode(' ', trim($indiv_srcset));
525
+                            if (isset($indiv_srcset_parts[1]) && rtrim($indiv_srcset_parts[1], 'w') !== $indiv_srcset_parts[1]) {
526
+                                $imgopt_w = rtrim($indiv_srcset_parts[1], 'w');
527 527
                             }
528
-                            if ( $this->can_optimize_image( $indiv_srcset_parts[0] ) ) {
529
-                                $imgopt_url = $this->build_imgopt_url( $indiv_srcset_parts[0], $imgopt_w, '' );
530
-                                $tag        = str_replace( $indiv_srcset_parts[0], $imgopt_url, $tag );
528
+                            if ($this->can_optimize_image($indiv_srcset_parts[0])) {
529
+                                $imgopt_url = $this->build_imgopt_url($indiv_srcset_parts[0], $imgopt_w, '');
530
+                                $tag        = str_replace($indiv_srcset_parts[0], $imgopt_url, $tag);
531 531
                             }
532 532
                         }
533 533
                     }
@@ -535,124 +535,124 @@  discard block
 block discarded – undo
535 535
 
536 536
                 // proceed with img src.
537 537
                 // get width and height and add to $imgopt_size.
538
-                $_get_size = $this->get_size_from_tag( $tag );
538
+                $_get_size = $this->get_size_from_tag($tag);
539 539
                 $imgopt_w  = $_get_size['width'];
540 540
                 $imgopt_h  = $_get_size['height'];
541 541
 
542 542
                 // then start replacing images src.
543
-                if ( preg_match_all( '#src=(?:"|\')(?!data)(.*)(?:"|\')#Usmi', $tag, $urls, PREG_SET_ORDER ) ) {
544
-                    foreach ( $urls as $url ) {
543
+                if (preg_match_all('#src=(?:"|\')(?!data)(.*)(?:"|\')#Usmi', $tag, $urls, PREG_SET_ORDER)) {
544
+                    foreach ($urls as $url) {
545 545
                         $full_src_orig = $url[0];
546 546
                         $url           = $url[1];
547
-                        if ( $this->can_optimize_image( $url ) ) {
548
-                            $imgopt_url      = $this->build_imgopt_url( $url, $imgopt_w, $imgopt_h );
549
-                            $full_imgopt_src = str_replace( $url, $imgopt_url, $full_src_orig );
550
-                            $tag             = str_replace( $full_src_orig, $full_imgopt_src, $tag );
547
+                        if ($this->can_optimize_image($url)) {
548
+                            $imgopt_url      = $this->build_imgopt_url($url, $imgopt_w, $imgopt_h);
549
+                            $full_imgopt_src = str_replace($url, $imgopt_url, $full_src_orig);
550
+                            $tag             = str_replace($full_src_orig, $full_imgopt_src, $tag);
551 551
                         }
552 552
                     }
553 553
                 }
554 554
 
555 555
                 // do lazyload stuff.
556
-                if ( $this->should_lazyload( $in ) && ! empty( $url ) ) {
556
+                if ($this->should_lazyload($in) && !empty($url)) {
557 557
                     // first do lpiq placeholder logic.
558
-                    if ( strpos( $url, $this->get_imgopt_host() ) === 0 ) {
558
+                    if (strpos($url, $this->get_imgopt_host()) === 0) {
559 559
                         // if all img src have been replaced during srcset, we have to extract the
560 560
                         // origin url from the imgopt one to be able to set a lqip placeholder.
561
-                        $_url = substr( $url, strpos( $url, '/http' ) + 1 );
561
+                        $_url = substr($url, strpos($url, '/http') + 1);
562 562
                     } else {
563 563
                         $_url = $url;
564 564
                     }
565 565
 
566
-                    $_url = $this->normalize_img_url( $_url );
566
+                    $_url = $this->normalize_img_url($_url);
567 567
 
568 568
                     $placeholder = '';
569
-                    if ( $this->can_optimize_image( $_url ) && apply_filters( 'autoptimize_filter_imgopt_lazyload_dolqip', true ) ) {
569
+                    if ($this->can_optimize_image($_url) && apply_filters('autoptimize_filter_imgopt_lazyload_dolqip', true)) {
570 570
                         $lqip_w = '';
571 571
                         $lqip_h = '';
572
-                        if ( isset( $imgopt_w ) && ! empty( $imgopt_w ) ) {
573
-                            $lqip_w = ',w_' . $imgopt_w;
572
+                        if (isset($imgopt_w) && !empty($imgopt_w)) {
573
+                            $lqip_w = ',w_'.$imgopt_w;
574 574
                         }
575
-                        if ( isset( $imgopt_h ) && ! empty( $imgopt_h ) ) {
576
-                            $lqip_h = ',h_' . $imgopt_h;
575
+                        if (isset($imgopt_h) && !empty($imgopt_h)) {
576
+                            $lqip_h = ',h_'.$imgopt_h;
577 577
                         }
578
-                        $placeholder = $this->get_imgopt_host() . 'client/q_lqip,ret_wait' . $lqip_w . $lqip_h . '/' . $_url;
578
+                        $placeholder = $this->get_imgopt_host().'client/q_lqip,ret_wait'.$lqip_w.$lqip_h.'/'.$_url;
579 579
                     }
580 580
                     // then call add_lazyload-function with lpiq placeholder if set.
581
-                    $tag = $this->add_lazyload( $tag, $placeholder );
581
+                    $tag = $this->add_lazyload($tag, $placeholder);
582 582
                 }
583 583
 
584 584
                 // and add tag to array for later replacement.
585
-                if ( $tag !== $orig_tag ) {
586
-                    $to_replace[ $orig_tag ] = $tag;
585
+                if ($tag !== $orig_tag) {
586
+                    $to_replace[$orig_tag] = $tag;
587 587
                 }
588 588
             }
589 589
         }
590 590
 
591 591
         // and replace all.
592
-        $out = str_replace( array_keys( $to_replace ), array_values( $to_replace ), $in );
592
+        $out = str_replace(array_keys($to_replace), array_values($to_replace), $in);
593 593
 
594 594
         // img thumbnails in e.g. woocommerce.
595
-        if ( strpos( $out, 'data-thumb' ) !== false && apply_filters( 'autoptimize_filter_imgopt_datathumbs', true ) ) {
595
+        if (strpos($out, 'data-thumb') !== false && apply_filters('autoptimize_filter_imgopt_datathumbs', true)) {
596 596
             $out = preg_replace_callback(
597 597
                 '/\<div(?:[^>]?)\sdata-thumb\=(?:\"|\')(.+?)(?:\"|\')(?:[^>]*)?\>/s',
598
-                array( $this, 'replace_data_thumbs' ),
598
+                array($this, 'replace_data_thumbs'),
599 599
                 $out
600 600
             );
601 601
         }
602 602
 
603 603
         // background-image in inline style.
604
-        if ( strpos( $out, 'background-image:' ) !== false && apply_filters( 'autoptimize_filter_imgopt_backgroundimages', true ) ) {
604
+        if (strpos($out, 'background-image:') !== false && apply_filters('autoptimize_filter_imgopt_backgroundimages', true)) {
605 605
             $out = preg_replace_callback(
606 606
                 '/style=(?:"|\')[^<>]*?background-image:\s?url\((?:"|\')?([^"\')]*)(?:"|\')?\)/',
607
-                array( $this, 'replace_img_callback' ),
607
+                array($this, 'replace_img_callback'),
608 608
                 $out
609 609
             );
610 610
         }
611 611
 
612 612
         // lazyload: restore noscript tags + lazyload picture source tags and bgimage.
613
-        if ( $this->should_lazyload() ) {
613
+        if ($this->should_lazyload()) {
614 614
             $out = autoptimizeBase::restore_marked_content(
615 615
                 'SCRIPT',
616 616
                 $out
617 617
             );
618 618
 
619
-            $out = $this->process_picture_tag( $out, true, true );
620
-            $out = $this->process_bgimage( $out );
619
+            $out = $this->process_picture_tag($out, true, true);
620
+            $out = $this->process_bgimage($out);
621 621
         } else {
622
-            $out = $this->process_picture_tag( $out, true, false );
622
+            $out = $this->process_picture_tag($out, true, false);
623 623
         }
624 624
 
625 625
         return $out;
626 626
     }
627 627
 
628
-    public function get_size_from_tag( $tag ) {
628
+    public function get_size_from_tag($tag) {
629 629
         // reusable function to extract widht and height from an image tag
630 630
         // enforcing a filterable maximum width and height (default 4999X4999).
631 631
         $width  = '';
632 632
         $height = '';
633 633
 
634
-        if ( preg_match( '#width=("|\')(.*)("|\')#Usmi', $tag, $_width ) ) {
635
-            if ( strpos( $_width[2], '%' ) === false ) {
634
+        if (preg_match('#width=("|\')(.*)("|\')#Usmi', $tag, $_width)) {
635
+            if (strpos($_width[2], '%') === false) {
636 636
                 $width = (int) $_width[2];
637 637
             }
638 638
         }
639
-        if ( preg_match( '#height=("|\')(.*)("|\')#Usmi', $tag, $_height ) ) {
640
-            if ( strpos( $_height[2], '%' ) === false ) {
639
+        if (preg_match('#height=("|\')(.*)("|\')#Usmi', $tag, $_height)) {
640
+            if (strpos($_height[2], '%') === false) {
641 641
                 $height = (int) $_height[2];
642 642
             }
643 643
         }
644 644
 
645 645
         // check for and enforce (filterable) max sizes.
646
-        $_max_width = apply_filters( 'autoptimize_filter_imgopt_max_width', 4999 );
647
-        if ( $width > $_max_width ) {
646
+        $_max_width = apply_filters('autoptimize_filter_imgopt_max_width', 4999);
647
+        if ($width > $_max_width) {
648 648
             $_width = $_max_width;
649
-            $height = $_width / $width * $height;
649
+            $height = $_width/$width*$height;
650 650
             $width  = $_width;
651 651
         }
652
-        $_max_height = apply_filters( 'autoptimize_filter_imgopt_max_height', 4999 );
653
-        if ( $height > $_max_height ) {
652
+        $_max_height = apply_filters('autoptimize_filter_imgopt_max_height', 4999);
653
+        if ($height > $_max_height) {
654 654
             $_height = $_max_height;
655
-            $width   = $_height / $height * $width;
655
+            $width   = $_height/$height*$width;
656 656
             $height  = $_height;
657 657
         }
658 658
 
@@ -671,26 +671,26 @@  discard block
 block discarded – undo
671 671
         return $self->should_lazyload();
672 672
     }
673 673
 
674
-    public function should_lazyload( $context = '' ) {
675
-        if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_3'] ) && false === $this->check_nolazy() ) {
674
+    public function should_lazyload($context = '') {
675
+        if (!empty($this->options['autoptimize_imgopt_checkbox_field_3']) && false === $this->check_nolazy()) {
676 676
             $lazyload_return = true;
677 677
         } else {
678 678
             $lazyload_return = false;
679 679
         }
680
-        $lazyload_return = apply_filters( 'autoptimize_filter_imgopt_should_lazyload', $lazyload_return, $context );
680
+        $lazyload_return = apply_filters('autoptimize_filter_imgopt_should_lazyload', $lazyload_return, $context);
681 681
 
682 682
         return $lazyload_return;
683 683
     }
684 684
 
685 685
     public function check_nolazy() {
686
-        if ( array_key_exists( 'ao_nolazy', $_GET ) && '1' === $_GET['ao_nolazy'] ) {
686
+        if (array_key_exists('ao_nolazy', $_GET) && '1' === $_GET['ao_nolazy']) {
687 687
             return true;
688 688
         } else {
689 689
             return false;
690 690
         }
691 691
     }
692 692
 
693
-    public function filter_lazyload_images( $in )
693
+    public function filter_lazyload_images($in)
694 694
     {
695 695
         // only used is image optimization is NOT active but lazyload is.
696 696
         $to_replace = array();
@@ -704,20 +704,20 @@  discard block
 block discarded – undo
704 704
         );
705 705
 
706 706
         // extract img tags and add lazyload attribs.
707
-        if ( preg_match_all( '#<img[^>]*src[^>]*>#Usmi', $out, $matches ) ) {
708
-            foreach ( $matches[0] as $tag ) {
709
-                if ( $this->should_lazyload( $out ) ) {
710
-                    $to_replace[ $tag ] = $this->add_lazyload( $tag );
707
+        if (preg_match_all('#<img[^>]*src[^>]*>#Usmi', $out, $matches)) {
708
+            foreach ($matches[0] as $tag) {
709
+                if ($this->should_lazyload($out)) {
710
+                    $to_replace[$tag] = $this->add_lazyload($tag);
711 711
                 }
712 712
             }
713
-            $out = str_replace( array_keys( $to_replace ), array_values( $to_replace ), $out );
713
+            $out = str_replace(array_keys($to_replace), array_values($to_replace), $out);
714 714
         }
715 715
 
716 716
         // and also lazyload picture tag.
717
-        $out = $this->process_picture_tag( $out, false, true );
717
+        $out = $this->process_picture_tag($out, false, true);
718 718
 
719 719
         // and inline style blocks with background-image.
720
-        $out = $this->process_bgimage( $out );
720
+        $out = $this->process_bgimage($out);
721 721
 
722 722
         // restore noscript tags.
723 723
         $out = autoptimizeBase::restore_marked_content(
@@ -728,84 +728,84 @@  discard block
 block discarded – undo
728 728
         return $out;
729 729
     }
730 730
 
731
-    public function add_lazyload( $tag, $placeholder = '' ) {
731
+    public function add_lazyload($tag, $placeholder = '') {
732 732
         // adds actual lazyload-attributes to an image node.
733
-        if ( str_ireplace( $this->get_lazyload_exclusions(), '', $tag ) === $tag ) {
734
-            $tag = $this->maybe_fix_missing_quotes( $tag );
733
+        if (str_ireplace($this->get_lazyload_exclusions(), '', $tag) === $tag) {
734
+            $tag = $this->maybe_fix_missing_quotes($tag);
735 735
 
736 736
             // store original tag for use in noscript version.
737
-            $noscript_tag = '<noscript>' . autoptimizeUtils::remove_id_from_node( $tag ) . '</noscript>';
737
+            $noscript_tag = '<noscript>'.autoptimizeUtils::remove_id_from_node($tag).'</noscript>';
738 738
 
739
-            $lazyload_class = apply_filters( 'autoptimize_filter_imgopt_lazyload_class', 'lazyload' );
739
+            $lazyload_class = apply_filters('autoptimize_filter_imgopt_lazyload_class', 'lazyload');
740 740
 
741 741
             // insert lazyload class.
742
-            $tag = $this->inject_classes_in_tag( $tag, "$lazyload_class " );
742
+            $tag = $this->inject_classes_in_tag($tag, "$lazyload_class ");
743 743
 
744
-            if ( ! $placeholder || empty( $placeholder ) ) {
744
+            if (!$placeholder || empty($placeholder)) {
745 745
                 // get image width & heigth for placeholder fun (and to prevent content reflow).
746
-                $_get_size = $this->get_size_from_tag( $tag );
746
+                $_get_size = $this->get_size_from_tag($tag);
747 747
                 $width     = $_get_size['width'];
748 748
                 $height    = $_get_size['height'];
749
-                if ( false === $width || empty( $width ) ) {
749
+                if (false === $width || empty($width)) {
750 750
                     $width = 210; // default width for SVG placeholder.
751 751
                 }
752
-                if ( false === $height || empty( $height ) ) {
753
-                    $height = $width / 3 * 2; // if no height, base it on width using the 3/2 aspect ratio.
752
+                if (false === $height || empty($height)) {
753
+                    $height = $width/3*2; // if no height, base it on width using the 3/2 aspect ratio.
754 754
                 }
755 755
 
756 756
                 // insert the actual lazyload stuff.
757 757
                 // see https://css-tricks.com/preventing-content-reflow-from-lazy-loaded-images/ for great read on why we're using empty svg's.
758
-                $placeholder = apply_filters( 'autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder( $width, $height ) );
758
+                $placeholder = apply_filters('autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder($width, $height));
759 759
             }
760 760
 
761
-            $tag = preg_replace( '/(\s)src=/', ' src=\'' . $placeholder . '\' data-src=', $tag );
762
-            $tag = preg_replace( '/(\s)srcset=/', ' data-srcset=', $tag );
761
+            $tag = preg_replace('/(\s)src=/', ' src=\''.$placeholder.'\' data-src=', $tag);
762
+            $tag = preg_replace('/(\s)srcset=/', ' data-srcset=', $tag);
763 763
 
764 764
             // move sizes to data-sizes unless filter says no.
765
-            if ( apply_filters( 'autoptimize_filter_imgopt_lazyload_move_sizes', true ) ) {
766
-                $tag = str_replace( ' sizes=', ' data-sizes=', $tag );
765
+            if (apply_filters('autoptimize_filter_imgopt_lazyload_move_sizes', true)) {
766
+                $tag = str_replace(' sizes=', ' data-sizes=', $tag);
767 767
             }
768 768
 
769 769
             // add the noscript-tag from earlier.
770
-            $tag = $noscript_tag . $tag;
771
-            $tag = apply_filters( 'autoptimize_filter_imgopt_lazyloaded_img', $tag );
770
+            $tag = $noscript_tag.$tag;
771
+            $tag = apply_filters('autoptimize_filter_imgopt_lazyloaded_img', $tag);
772 772
         }
773 773
 
774 774
         return $tag;
775 775
     }
776 776
 
777 777
     public function add_lazyload_js_footer() {
778
-        if ( false === autoptimizeMain::should_buffer() ) {
778
+        if (false === autoptimizeMain::should_buffer()) {
779 779
             return;
780 780
         }
781 781
 
782 782
         // The JS will by default be excluded form autoptimization but this can be changed with a filter.
783 783
         $noptimize_flag = '';
784
-        if ( apply_filters( 'autoptimize_filter_imgopt_lazyload_js_noptimize', true ) ) {
784
+        if (apply_filters('autoptimize_filter_imgopt_lazyload_js_noptimize', true)) {
785 785
             $noptimize_flag = ' data-noptimize="1"';
786 786
         }
787 787
 
788
-        $lazysizes_js = plugins_url( 'external/js/lazysizes.min.js?ao_version=' . AUTOPTIMIZE_PLUGIN_VERSION, __FILE__ );
788
+        $lazysizes_js = plugins_url('external/js/lazysizes.min.js?ao_version='.AUTOPTIMIZE_PLUGIN_VERSION, __FILE__);
789 789
         $cdn_url      = $this->get_cdn_url();
790
-        if ( ! empty( $cdn_url ) ) {
791
-            $lazysizes_js = str_replace( AUTOPTIMIZE_WP_SITE_URL, $cdn_url, $lazysizes_js );
790
+        if (!empty($cdn_url)) {
791
+            $lazysizes_js = str_replace(AUTOPTIMIZE_WP_SITE_URL, $cdn_url, $lazysizes_js);
792 792
         }
793 793
 
794 794
         $type_js = '';
795
-        if ( apply_filters( 'autoptimize_filter_cssjs_addtype', false ) ) {
795
+        if (apply_filters('autoptimize_filter_cssjs_addtype', false)) {
796 796
             $type_js = ' type="text/javascript"';
797 797
         }
798 798
 
799 799
         // Adds lazyload CSS & JS to footer, using echo because wp_enqueue_script seems not to support pushing attributes (async).
800
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_cssoutput', '<style>.lazyload,.lazyloading{opacity:0;}.lazyloaded{opacity:1;transition:opacity 300ms;}</style><noscript><style>.lazyload{display:none;}</style></noscript>' );
801
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_jsconfig', '<script' . $type_js . $noptimize_flag . '>window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script>' );
802
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_js', '<script async' . $type_js . $noptimize_flag . ' src=\'' . $lazysizes_js . '\'></script>' );
800
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_cssoutput', '<style>.lazyload,.lazyloading{opacity:0;}.lazyloaded{opacity:1;transition:opacity 300ms;}</style><noscript><style>.lazyload{display:none;}</style></noscript>');
801
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_jsconfig', '<script'.$type_js.$noptimize_flag.'>window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script>');
802
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_js', '<script async'.$type_js.$noptimize_flag.' src=\''.$lazysizes_js.'\'></script>');
803 803
 
804 804
         // And add webp detection and loading JS.
805
-        if ( $this->should_webp() ) {
805
+        if ($this->should_webp()) {
806 806
             $_webp_detect = "function c_webp(A){var n=new Image;n.onload=function(){var e=0<n.width&&0<n.height;A(e)},n.onerror=function(){A(!1)},n.src='data:image/webp;base64,UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA=='}function s_webp(e){window.supportsWebP=e}c_webp(s_webp);";
807 807
             $_webp_load   = "document.addEventListener('lazybeforeunveil',function({target:c}){supportsWebP&&['data-src','data-srcset'].forEach(function(a){attr=c.getAttribute(a),null!==attr&&c.setAttribute(a,attr.replace(/\/client\//,'/client/to_webp,'))})});";
808
-            echo apply_filters( 'autoptimize_filter_imgopt_webp_js', '<script' . $type_js . $noptimize_flag . '>' . $_webp_detect . $_webp_load . '</script>' );
808
+            echo apply_filters('autoptimize_filter_imgopt_webp_js', '<script'.$type_js.$noptimize_flag.'>'.$_webp_detect.$_webp_load.'</script>');
809 809
         }
810 810
     }
811 811
 
@@ -813,10 +813,10 @@  discard block
 block discarded – undo
813 813
         // getting CDN url here to avoid having to make bigger changes to autoptimizeBase.
814 814
         static $cdn_url = null;
815 815
 
816
-        if ( null === $cdn_url ) {
817
-            $cdn_url = autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url', '' );
818
-            $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed( $cdn_url );
819
-            $cdn_url = apply_filters( 'autoptimize_filter_base_cdnurl', $cdn_url );
816
+        if (null === $cdn_url) {
817
+            $cdn_url = autoptimizeOptionWrapper::get_option('autoptimize_cdn_url', '');
818
+            $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed($cdn_url);
819
+            $cdn_url = apply_filters('autoptimize_filter_base_cdnurl', $cdn_url);
820 820
         }
821 821
 
822 822
         return $cdn_url;
@@ -826,47 +826,47 @@  discard block
 block discarded – undo
826 826
         // returns array of strings that if found in an <img tag will stop the img from being lazy-loaded.
827 827
         static $exclude_lazyload_array = null;
828 828
 
829
-        if ( null === $exclude_lazyload_array ) {
829
+        if (null === $exclude_lazyload_array) {
830 830
             $options = $this->options;
831 831
 
832 832
             // set default exclusions.
833
-            $exclude_lazyload_array = array( 'skip-lazy', 'data-no-lazy', 'notlazy', 'data-src', 'data-srcset', 'data:image/', 'data-lazyload', 'rev-slidebg', 'loading="eager"' );
833
+            $exclude_lazyload_array = array('skip-lazy', 'data-no-lazy', 'notlazy', 'data-src', 'data-srcset', 'data:image/', 'data-lazyload', 'rev-slidebg', 'loading="eager"');
834 834
 
835 835
             // add from setting.
836
-            if ( array_key_exists( 'autoptimize_imgopt_text_field_5', $options ) ) {
836
+            if (array_key_exists('autoptimize_imgopt_text_field_5', $options)) {
837 837
                 $exclude_lazyload_option = $options['autoptimize_imgopt_text_field_5'];
838
-                if ( ! empty( $exclude_lazyload_option ) ) {
839
-                    $exclude_lazyload_array = array_merge( $exclude_lazyload_array, array_filter( array_map( 'trim', explode( ',', $options['autoptimize_imgopt_text_field_5'] ) ) ) );
838
+                if (!empty($exclude_lazyload_option)) {
839
+                    $exclude_lazyload_array = array_merge($exclude_lazyload_array, array_filter(array_map('trim', explode(',', $options['autoptimize_imgopt_text_field_5']))));
840 840
                 }
841 841
             }
842 842
 
843 843
             // and filter for developer-initiated changes.
844
-            $exclude_lazyload_array = apply_filters( 'autoptimize_filter_imgopt_lazyload_exclude_array', $exclude_lazyload_array );
844
+            $exclude_lazyload_array = apply_filters('autoptimize_filter_imgopt_lazyload_exclude_array', $exclude_lazyload_array);
845 845
         }
846 846
 
847 847
         return $exclude_lazyload_array;
848 848
     }
849 849
 
850
-    public function inject_classes_in_tag( $tag, $target_class ) {
851
-        if ( strpos( $tag, 'class=' ) !== false ) {
852
-            $tag = preg_replace( '/(\sclass\s?=\s?("|\'))/', '$1' . $target_class, $tag );
850
+    public function inject_classes_in_tag($tag, $target_class) {
851
+        if (strpos($tag, 'class=') !== false) {
852
+            $tag = preg_replace('/(\sclass\s?=\s?("|\'))/', '$1'.$target_class, $tag);
853 853
         } else {
854
-            $tag = preg_replace( '/(<img)\s/', '$1 class="' . trim( $target_class ) . '" ', $tag );
854
+            $tag = preg_replace('/(<img)\s/', '$1 class="'.trim($target_class).'" ', $tag);
855 855
         }
856 856
 
857 857
         return $tag;
858 858
     }
859 859
 
860
-    public function get_default_lazyload_placeholder( $imgopt_w, $imgopt_h ) {
861
-        return 'data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20' . $imgopt_w . '%20' . $imgopt_h . '%22%3E%3C/svg%3E';
860
+    public function get_default_lazyload_placeholder($imgopt_w, $imgopt_h) {
861
+        return 'data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20'.$imgopt_w.'%20'.$imgopt_h.'%22%3E%3C/svg%3E';
862 862
     }
863 863
 
864 864
     public function should_webp() {
865 865
         static $webp_return = null;
866 866
 
867
-        if ( is_null( $webp_return ) ) {
867
+        if (is_null($webp_return)) {
868 868
             // webp only works if imgopt and lazyload are also active.
869
-            if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_4'] ) && ! empty( $this->options['autoptimize_imgopt_checkbox_field_3'] ) && $this->imgopt_active() ) {
869
+            if (!empty($this->options['autoptimize_imgopt_checkbox_field_4']) && !empty($this->options['autoptimize_imgopt_checkbox_field_3']) && $this->imgopt_active()) {
870 870
                 $webp_return = true;
871 871
             } else {
872 872
                 $webp_return = false;
@@ -876,9 +876,9 @@  discard block
 block discarded – undo
876 876
         return $webp_return;
877 877
     }
878 878
 
879
-    public function process_picture_tag( $in, $imgopt = false, $lazy = false ) {
879
+    public function process_picture_tag($in, $imgopt = false, $lazy = false) {
880 880
         // check if "<picture" is present and if filter allows us to process <picture>.
881
-        if ( strpos( $in, '<picture' ) === false || apply_filters( 'autoptimize_filter_imgopt_dopicture', true ) === false ) {
881
+        if (strpos($in, '<picture') === false || apply_filters('autoptimize_filter_imgopt_dopicture', true) === false) {
882 882
             return $in;
883 883
         }
884 884
 
@@ -886,37 +886,37 @@  discard block
 block discarded – undo
886 886
         $to_replace_pict = array();
887 887
 
888 888
         // extract and process each picture-node.
889
-        preg_match_all( '#<picture.*</picture>#Usmi', $in, $_pictures, PREG_SET_ORDER );
890
-        foreach ( $_pictures as $_picture ) {
891
-            $_picture = $this->maybe_fix_missing_quotes( $_picture );
892
-            if ( strpos( $_picture[0], '<source ' ) !== false && preg_match_all( '#<source .*srcset=(?:"|\')(?!data)(.*)(?:"|\').*>#Usmi', $_picture[0], $_sources, PREG_SET_ORDER ) !== false ) {
893
-                foreach ( $_sources as $_source ) {
889
+        preg_match_all('#<picture.*</picture>#Usmi', $in, $_pictures, PREG_SET_ORDER);
890
+        foreach ($_pictures as $_picture) {
891
+            $_picture = $this->maybe_fix_missing_quotes($_picture);
892
+            if (strpos($_picture[0], '<source ') !== false && preg_match_all('#<source .*srcset=(?:"|\')(?!data)(.*)(?:"|\').*>#Usmi', $_picture[0], $_sources, PREG_SET_ORDER) !== false) {
893
+                foreach ($_sources as $_source) {
894 894
                     $_picture_replacement = $_source[0];
895 895
 
896 896
                     // should we optimize the image?
897
-                    if ( $imgopt && $this->can_optimize_image( $_source[1] ) ) {
898
-                        $_picture_replacement = str_replace( $_source[1], $this->build_imgopt_url( $_source[1] ), $_picture_replacement );
897
+                    if ($imgopt && $this->can_optimize_image($_source[1])) {
898
+                        $_picture_replacement = str_replace($_source[1], $this->build_imgopt_url($_source[1]), $_picture_replacement);
899 899
                     }
900 900
                     // should we lazy-load?
901
-                    if ( $lazy && $this->should_lazyload() && str_ireplace( $_exclusions, '', $_picture_replacement ) === $_picture_replacement ) {
902
-                        $_picture_replacement = str_replace( ' srcset=', ' data-srcset=', $_picture_replacement );
901
+                    if ($lazy && $this->should_lazyload() && str_ireplace($_exclusions, '', $_picture_replacement) === $_picture_replacement) {
902
+                        $_picture_replacement = str_replace(' srcset=', ' data-srcset=', $_picture_replacement);
903 903
                     }
904
-                    $to_replace_pict[ $_source[0] ] = $_picture_replacement;
904
+                    $to_replace_pict[$_source[0]] = $_picture_replacement;
905 905
                 }
906 906
             }
907 907
         }
908 908
 
909 909
         // and return the fully procesed $in.
910
-        $out = str_replace( array_keys( $to_replace_pict ), array_values( $to_replace_pict ), $in );
910
+        $out = str_replace(array_keys($to_replace_pict), array_values($to_replace_pict), $in);
911 911
 
912 912
         return $out;
913 913
     }
914 914
 
915
-    public function process_bgimage( $in ) {
916
-        if ( strpos( $in, 'background-image:' ) !== false && apply_filters( 'autoptimize_filter_imgopt_lazyload_backgroundimages', true ) ) {
915
+    public function process_bgimage($in) {
916
+        if (strpos($in, 'background-image:') !== false && apply_filters('autoptimize_filter_imgopt_lazyload_backgroundimages', true)) {
917 917
             $out = preg_replace_callback(
918 918
                 '/(<(?:article|aside|body|div|footer|header|p|section|table)[^>]*)\sstyle=(?:"|\')[^<>]*?background-image:\s?url\((?:"|\')?([^"\')]*)(?:"|\')?\)[^>]*/',
919
-                array( $this, 'lazyload_bgimg_callback' ),
919
+                array($this, 'lazyload_bgimg_callback'),
920 920
                 $in
921 921
             );
922 922
             return $out;
@@ -924,27 +924,27 @@  discard block
 block discarded – undo
924 924
         return $in;
925 925
     }
926 926
 
927
-    public function lazyload_bgimg_callback( $matches ) {
928
-        if ( str_ireplace( $this->get_lazyload_exclusions(), '', $matches[0] ) === $matches[0] ) {
927
+    public function lazyload_bgimg_callback($matches) {
928
+        if (str_ireplace($this->get_lazyload_exclusions(), '', $matches[0]) === $matches[0]) {
929 929
             // get placeholder & lazyload class strings.
930
-            $placeholder    = apply_filters( 'autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder( 500, 300 ) );
931
-            $lazyload_class = apply_filters( 'autoptimize_filter_imgopt_lazyload_class', 'lazyload' );
930
+            $placeholder    = apply_filters('autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder(500, 300));
931
+            $lazyload_class = apply_filters('autoptimize_filter_imgopt_lazyload_class', 'lazyload');
932 932
             // replace background-image URL with SVG placeholder.
933
-            $out = str_replace( $matches[2], $placeholder, $matches[0] );
933
+            $out = str_replace($matches[2], $placeholder, $matches[0]);
934 934
             // add data-bg attribute with real background-image URL for lazyload to pick up.
935
-            $out = str_replace( $matches[1], $matches[1] . ' data-bg="' . trim( str_replace( "\r\n", '', $matches[2] ) ) . '"', $out );
935
+            $out = str_replace($matches[1], $matches[1].' data-bg="'.trim(str_replace("\r\n", '', $matches[2])).'"', $out);
936 936
             // add lazyload class to tag.
937
-            $out = $this->inject_classes_in_tag( $out, "$lazyload_class " );
937
+            $out = $this->inject_classes_in_tag($out, "$lazyload_class ");
938 938
             return $out;
939 939
         }
940 940
         return $matches[0];
941 941
     }
942 942
 
943
-    public function maybe_fix_missing_quotes( $tag_in ) {
943
+    public function maybe_fix_missing_quotes($tag_in) {
944 944
         // W3TC's Minify_HTML class removes quotes around attribute value, this re-adds them for the class and width/height attributes so we can lazyload properly.
945
-        if ( file_exists( WP_PLUGIN_DIR . '/w3-total-cache/w3-total-cache.php' ) && class_exists( 'Minify_HTML' ) && apply_filters( 'autoptimize_filter_imgopt_fixquotes', true ) ) {
946
-            $tag_out = preg_replace( '/class\s?=([^("|\')]*)(\s|>)/U', 'class=\'$1\'$2', $tag_in );
947
-            $tag_out = preg_replace( '/\s(width|height)=(?:"|\')?([^\s"\'>]*)(?:"|\')?/', ' $1=\'$2\'', $tag_out );
945
+        if (file_exists(WP_PLUGIN_DIR.'/w3-total-cache/w3-total-cache.php') && class_exists('Minify_HTML') && apply_filters('autoptimize_filter_imgopt_fixquotes', true)) {
946
+            $tag_out = preg_replace('/class\s?=([^("|\')]*)(\s|>)/U', 'class=\'$1\'$2', $tag_in);
947
+            $tag_out = preg_replace('/\s(width|height)=(?:"|\')?([^\s"\'>]*)(?:"|\')?/', ' $1=\'$2\'', $tag_out);
948 948
             return $tag_out;
949 949
         } else {
950 950
             return $tag_in;
@@ -957,23 +957,23 @@  discard block
 block discarded – undo
957 957
     public function imgopt_admin_menu()
958 958
     {
959 959
         // no acces if multisite and not network admin and no site config allowed.
960
-        if ( autoptimizeConfig::should_show_menu_tabs() ) {
960
+        if (autoptimizeConfig::should_show_menu_tabs()) {
961 961
             add_submenu_page(
962 962
                 null,
963 963
                 'autoptimize_imgopt',
964 964
                 'autoptimize_imgopt',
965 965
                 'manage_options',
966 966
                 'autoptimize_imgopt',
967
-                array( $this, 'imgopt_options_page' )
967
+                array($this, 'imgopt_options_page')
968 968
             );
969 969
         }
970
-        register_setting( 'autoptimize_imgopt_settings', 'autoptimize_imgopt_settings' );
970
+        register_setting('autoptimize_imgopt_settings', 'autoptimize_imgopt_settings');
971 971
     }
972 972
 
973
-    public function add_imgopt_tab( $in )
973
+    public function add_imgopt_tab($in)
974 974
     {
975
-        if ( autoptimizeConfig::should_show_menu_tabs() ) {
976
-            $in = array_merge( $in, array( 'autoptimize_imgopt' => __( 'Images', 'autoptimize' ) ) );
975
+        if (autoptimizeConfig::should_show_menu_tabs()) {
976
+            $in = array_merge($in, array('autoptimize_imgopt' => __('Images', 'autoptimize')));
977 977
         }
978 978
 
979 979
         return $in;
@@ -982,7 +982,7 @@  discard block
 block discarded – undo
982 982
     public function imgopt_options_page()
983 983
     {
984 984
         // Check querystring for "refreshCacheChecker" and call cachechecker if so.
985
-        if ( array_key_exists( 'refreshImgProvStats', $_GET ) && 1 == $_GET['refreshImgProvStats'] ) {
985
+        if (array_key_exists('refreshImgProvStats', $_GET) && 1 == $_GET['refreshImgProvStats']) {
986 986
             $this->query_img_provider_stats();
987 987
         }
988 988
 
@@ -994,47 +994,47 @@  discard block
 block discarded – undo
994 994
         #ao_settings_form .form-table th {font-weight: normal;}
995 995
         #autoptimize_imgopt_descr{font-size: 120%;}
996 996
     </style>
997
-    <script>document.title = "Autoptimize: <?php _e( 'Images', 'autoptimize' ); ?> " + document.title;</script>
997
+    <script>document.title = "Autoptimize: <?php _e('Images', 'autoptimize'); ?> " + document.title;</script>
998 998
     <div class="wrap">
999
-    <h1><?php _e( 'Autoptimize Settings', 'autoptimize' ); ?></h1>
999
+    <h1><?php _e('Autoptimize Settings', 'autoptimize'); ?></h1>
1000 1000
         <?php echo autoptimizeConfig::ao_admin_tabs(); ?>
1001
-        <?php if ( 'down' === $options['availabilities']['extra_imgopt']['status'] ) { ?>
1001
+        <?php if ('down' === $options['availabilities']['extra_imgopt']['status']) { ?>
1002 1002
             <div class="notice-warning notice"><p>
1003 1003
             <?php
1004 1004
             // translators: "Autoptimize support forum" will appear in a "a href".
1005
-            echo sprintf( __( 'The image optimization service is currently down, image optimization will be skipped until further notice. Check the %1$sAutoptimize support forum%2$s for more info.', 'autoptimize' ), '<a href="https://wordpress.org/support/plugin/autoptimize/" target="_blank">', '</a>' );
1005
+            echo sprintf(__('The image optimization service is currently down, image optimization will be skipped until further notice. Check the %1$sAutoptimize support forum%2$s for more info.', 'autoptimize'), '<a href="https://wordpress.org/support/plugin/autoptimize/" target="_blank">', '</a>');
1006 1006
             ?>
1007 1007
             </p></div>
1008 1008
         <?php } ?>
1009 1009
 
1010
-        <?php if ( 'launch' === $options['availabilities']['extra_imgopt']['status'] && ! autoptimizeImages::instance()->launch_ok() ) { ?>
1010
+        <?php if ('launch' === $options['availabilities']['extra_imgopt']['status'] && !autoptimizeImages::instance()->launch_ok()) { ?>
1011 1011
             <div class="notice-warning notice"><p>
1012
-            <?php _e( 'The image optimization service is launching, but not yet available for this domain, it should become available in the next couple of days.', 'autoptimize' ); ?>
1012
+            <?php _e('The image optimization service is launching, but not yet available for this domain, it should become available in the next couple of days.', 'autoptimize'); ?>
1013 1013
             </p></div>
1014 1014
         <?php } ?>
1015 1015
 
1016
-        <?php if ( class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'get_active_modules' ) && in_array( 'photon', Jetpack::get_active_modules() ) ) { ?>
1016
+        <?php if (class_exists('Jetpack') && method_exists('Jetpack', 'get_active_modules') && in_array('photon', Jetpack::get_active_modules())) { ?>
1017 1017
             <div class="notice-warning notice"><p>
1018 1018
             <?php
1019 1019
             // translators: "disable  Jetpack's site accelerator for images" will appear in a "a href" linking to the jetpack settings page.
1020
-            echo sprintf( __( 'Please %1$sdisable Jetpack\'s site accelerator for images%2$s to be able to use Autoptomize\'s advanced image optimization features below.', 'autoptimize' ), '<a href="admin.php?page=jetpack#/settings">', '</a>' );
1020
+            echo sprintf(__('Please %1$sdisable Jetpack\'s site accelerator for images%2$s to be able to use Autoptomize\'s advanced image optimization features below.', 'autoptimize'), '<a href="admin.php?page=jetpack#/settings">', '</a>');
1021 1021
             ?>
1022 1022
             </p></div>
1023 1023
         <?php } ?>
1024
-    <form id='ao_settings_form' action='<?php echo admin_url( 'options.php' ); ?>' method='post'>
1025
-        <?php settings_fields( 'autoptimize_imgopt_settings' ); ?>
1026
-        <h2><?php _e( 'Image optimization', 'autoptimize' ); ?></h2>
1027
-        <span id='autoptimize_imgopt_descr'><?php _e( 'Make your site significantly faster by just ticking a couple of checkboxes to optimize and lazy load your images, WebP support included!', 'autoptimize' ); ?></span>
1024
+    <form id='ao_settings_form' action='<?php echo admin_url('options.php'); ?>' method='post'>
1025
+        <?php settings_fields('autoptimize_imgopt_settings'); ?>
1026
+        <h2><?php _e('Image optimization', 'autoptimize'); ?></h2>
1027
+        <span id='autoptimize_imgopt_descr'><?php _e('Make your site significantly faster by just ticking a couple of checkboxes to optimize and lazy load your images, WebP support included!', 'autoptimize'); ?></span>
1028 1028
         <table class="form-table">
1029 1029
             <tr>
1030
-                <th scope="row"><?php _e( 'Optimize Images', 'autoptimize' ); ?></th>
1030
+                <th scope="row"><?php _e('Optimize Images', 'autoptimize'); ?></th>
1031 1031
                 <td>
1032
-                    <label><input id='autoptimize_imgopt_checkbox' type='checkbox' name='autoptimize_imgopt_settings[autoptimize_imgopt_checkbox_field_1]' <?php if ( ! empty( $options['autoptimize_imgopt_checkbox_field_1'] ) && '1' === $options['autoptimize_imgopt_checkbox_field_1'] ) { echo 'checked="checked"'; } ?> value='1'><?php _e( 'Optimize images on the fly and serve them from Shortpixel\'s global CDN.', 'autoptimize' ); ?></label>
1032
+                    <label><input id='autoptimize_imgopt_checkbox' type='checkbox' name='autoptimize_imgopt_settings[autoptimize_imgopt_checkbox_field_1]' <?php if (!empty($options['autoptimize_imgopt_checkbox_field_1']) && '1' === $options['autoptimize_imgopt_checkbox_field_1']) { echo 'checked="checked"'; } ?> value='1'><?php _e('Optimize images on the fly and serve them from Shortpixel\'s global CDN.', 'autoptimize'); ?></label>
1033 1033
                     <?php
1034 1034
                     // show shortpixel status.
1035 1035
                     $_notice = autoptimizeImages::instance()->get_imgopt_status_notice();
1036
-                    if ( $_notice ) {
1037
-                        switch ( $_notice['status'] ) {
1036
+                    if ($_notice) {
1037
+                        switch ($_notice['status']) {
1038 1038
                             case 2:
1039 1039
                                 $_notice_color = 'green';
1040 1040
                                 break;
@@ -1049,29 +1049,29 @@  discard block
 block discarded – undo
1049 1049
                             default:
1050 1050
                                 $_notice_color = 'green';
1051 1051
                         }
1052
-                        echo apply_filters( 'autoptimize_filter_imgopt_settings_status', '<p><strong><span style="color:' . $_notice_color . ';">' . __( 'Shortpixel status: ', 'autoptimize' ) . '</span></strong>' . $_notice['notice'] . '</p>' );
1052
+                        echo apply_filters('autoptimize_filter_imgopt_settings_status', '<p><strong><span style="color:'.$_notice_color.';">'.__('Shortpixel status: ', 'autoptimize').'</span></strong>'.$_notice['notice'].'</p>');
1053 1053
                     } else {
1054 1054
                         // translators: link points to shortpixel.
1055
-                        $upsell_msg_1 = '<p>' . sprintf( __( 'Get more Google love and improve your website\'s loading speed by having your publicly available images optimized on the fly (also in the "next-gen" WebP image format) by %1$sShortPixel%2$s and then cached and served fast from Shortpixel\'s global CDN.', 'autoptimize' ), '<a href="https://shortpixel.com/aospai' . $sp_url_suffix . '" target="_blank">', '</a>' );
1056
-                        if ( 'launch' === $options['availabilities']['extra_imgopt']['status'] ) {
1057
-                            $upsell_msg_2 = __( 'For a limited time only, this service is offered free for all Autoptimize users, <b>don\'t miss the chance to test it</b> and see how much it could improve your site\'s speed.', 'autoptimize' );
1055
+                        $upsell_msg_1 = '<p>'.sprintf(__('Get more Google love and improve your website\'s loading speed by having your publicly available images optimized on the fly (also in the "next-gen" WebP image format) by %1$sShortPixel%2$s and then cached and served fast from Shortpixel\'s global CDN.', 'autoptimize'), '<a href="https://shortpixel.com/aospai'.$sp_url_suffix.'" target="_blank">', '</a>');
1056
+                        if ('launch' === $options['availabilities']['extra_imgopt']['status']) {
1057
+                            $upsell_msg_2 = __('For a limited time only, this service is offered free for all Autoptimize users, <b>don\'t miss the chance to test it</b> and see how much it could improve your site\'s speed.', 'autoptimize');
1058 1058
                         } else {
1059 1059
                             // translators: link points to shortpixel.
1060
-                            $upsell_msg_2 = sprintf( __( '%1$sSign-up now%2$s to receive a 1 000 bonus + 50&#37; more image optimization credits regardless of the traffic used. More image optimizations can be purchased starting with $4.99.', 'autoptimize' ), '<a href="https://shortpixel.com/aospai' . $sp_url_suffix . '" target="_blank">', '</a>' );
1060
+                            $upsell_msg_2 = sprintf(__('%1$sSign-up now%2$s to receive a 1 000 bonus + 50&#37; more image optimization credits regardless of the traffic used. More image optimizations can be purchased starting with $4.99.', 'autoptimize'), '<a href="https://shortpixel.com/aospai'.$sp_url_suffix.'" target="_blank">', '</a>');
1061 1061
                         }
1062
-                        echo apply_filters( 'autoptimize_imgopt_imgopt_settings_copy', $upsell_msg_1 . ' ' . $upsell_msg_2 . '</p>' );
1062
+                        echo apply_filters('autoptimize_imgopt_imgopt_settings_copy', $upsell_msg_1.' '.$upsell_msg_2.'</p>');
1063 1063
                     }
1064 1064
                     // translators: link points to shortpixel FAQ.
1065
-                    $faqcopy = sprintf( __( '<strong>Questions</strong>? Have a look at the %1$sShortPixel FAQ%2$s!', 'autoptimize' ), '<strong><a href="https://shortpixel.helpscoutdocs.com/category/60-shortpixel-ai-cdn" target="_blank">', '</strong></a>' );
1066
-                    $faqcopy = $faqcopy . ' ' . __( 'Only works for sites/ images that are publicly available.', 'autoptimize' );
1065
+                    $faqcopy = sprintf(__('<strong>Questions</strong>? Have a look at the %1$sShortPixel FAQ%2$s!', 'autoptimize'), '<strong><a href="https://shortpixel.helpscoutdocs.com/category/60-shortpixel-ai-cdn" target="_blank">', '</strong></a>');
1066
+                    $faqcopy = $faqcopy.' '.__('Only works for sites/ images that are publicly available.', 'autoptimize');
1067 1067
                     // translators: links points to shortpixel TOS & Privacy Policy.
1068
-                    $toscopy = sprintf( __( 'Usage of this feature is subject to Shortpixel\'s %1$sTerms of Use%2$s and %3$sPrivacy policy%4$s.', 'autoptimize' ), '<a href="https://shortpixel.com/tos' . $sp_url_suffix . '" target="_blank">', '</a>', '<a href="https://shortpixel.com/pp' . $sp_url_suffix . '" target="_blank">', '</a>' );
1069
-                    echo apply_filters( 'autoptimize_imgopt_imgopt_settings_tos', '<p>' . $faqcopy . ' ' . $toscopy . '</p>' );
1068
+                    $toscopy = sprintf(__('Usage of this feature is subject to Shortpixel\'s %1$sTerms of Use%2$s and %3$sPrivacy policy%4$s.', 'autoptimize'), '<a href="https://shortpixel.com/tos'.$sp_url_suffix.'" target="_blank">', '</a>', '<a href="https://shortpixel.com/pp'.$sp_url_suffix.'" target="_blank">', '</a>');
1069
+                    echo apply_filters('autoptimize_imgopt_imgopt_settings_tos', '<p>'.$faqcopy.' '.$toscopy.'</p>');
1070 1070
                     ?>
1071 1071
                 </td>
1072 1072
             </tr>
1073
-            <tr id='autoptimize_imgopt_quality' <?php if ( ! array_key_exists( 'autoptimize_imgopt_checkbox_field_1', $options ) || ( isset( $options['autoptimize_imgopt_checkbox_field_1'] ) && '1' !== $options['autoptimize_imgopt_checkbox_field_1'] ) ) { echo 'class="hidden"'; } ?>>
1074
-                <th scope="row"><?php _e( 'Image Optimization quality', 'autoptimize' ); ?></th>
1073
+            <tr id='autoptimize_imgopt_quality' <?php if (!array_key_exists('autoptimize_imgopt_checkbox_field_1', $options) || (isset($options['autoptimize_imgopt_checkbox_field_1']) && '1' !== $options['autoptimize_imgopt_checkbox_field_1'])) { echo 'class="hidden"'; } ?>>
1074
+                <th scope="row"><?php _e('Image Optimization quality', 'autoptimize'); ?></th>
1075 1075
                 <td>
1076 1076
                     <label>
1077 1077
                     <select name='autoptimize_imgopt_settings[autoptimize_imgopt_select_field_2]'>
@@ -1079,12 +1079,12 @@  discard block
 block discarded – undo
1079 1079
                         $_imgopt_array = autoptimizeImages::instance()->get_img_quality_array();
1080 1080
                         $_imgopt_val   = autoptimizeImages::instance()->get_img_quality_setting();
1081 1081
 
1082
-                        foreach ( $_imgopt_array as $key => $value ) {
1083
-                            echo '<option value="' . $key . '"';
1084
-                            if ( $_imgopt_val == $key ) {
1082
+                        foreach ($_imgopt_array as $key => $value) {
1083
+                            echo '<option value="'.$key.'"';
1084
+                            if ($_imgopt_val == $key) {
1085 1085
                                 echo ' selected';
1086 1086
                             }
1087
-                            echo '>' . ucfirst( $value ) . '</option>';
1087
+                            echo '>'.ucfirst($value).'</option>';
1088 1088
                         }
1089 1089
                         echo "\n";
1090 1090
                         ?>
@@ -1093,31 +1093,31 @@  discard block
 block discarded – undo
1093 1093
                     <p>
1094 1094
                         <?php
1095 1095
                             // translators: link points to shortpixel image test page.
1096
-                            echo apply_filters( 'autoptimize_imgopt_imgopt_quality_copy', sprintf( __( 'You can %1$stest compression levels here%2$s.', 'autoptimize' ), '<a href="https://shortpixel.com/oic' . $sp_url_suffix . '" target="_blank">', '</a>' ) );
1096
+                            echo apply_filters('autoptimize_imgopt_imgopt_quality_copy', sprintf(__('You can %1$stest compression levels here%2$s.', 'autoptimize'), '<a href="https://shortpixel.com/oic'.$sp_url_suffix.'" target="_blank">', '</a>'));
1097 1097
                         ?>
1098 1098
                     </p>
1099 1099
                 </td>
1100 1100
             </tr>
1101
-            <tr id='autoptimize_imgopt_webp' <?php if ( ! array_key_exists( 'autoptimize_imgopt_checkbox_field_1', $options ) || ( isset( $options['autoptimize_imgopt_checkbox_field_1'] ) && '1' !== $options['autoptimize_imgopt_checkbox_field_1'] ) ) { echo 'class="hidden"'; } ?>>
1102
-                <th scope="row"><?php _e( 'Load WebP in supported browsers?', 'autoptimize' ); ?></th>
1101
+            <tr id='autoptimize_imgopt_webp' <?php if (!array_key_exists('autoptimize_imgopt_checkbox_field_1', $options) || (isset($options['autoptimize_imgopt_checkbox_field_1']) && '1' !== $options['autoptimize_imgopt_checkbox_field_1'])) { echo 'class="hidden"'; } ?>>
1102
+                <th scope="row"><?php _e('Load WebP in supported browsers?', 'autoptimize'); ?></th>
1103 1103
                 <td>
1104
-                    <label><input type='checkbox' id='autoptimize_imgopt_webp_checkbox' name='autoptimize_imgopt_settings[autoptimize_imgopt_checkbox_field_4]' <?php if ( ! empty( $options['autoptimize_imgopt_checkbox_field_4'] ) && '1' === $options['autoptimize_imgopt_checkbox_field_3'] ) { echo 'checked="checked"'; } ?> value='1'><?php _e( 'Automatically serve "next-gen" WebP image format to any browser that supports it (requires lazy load to be active).', 'autoptimize' ); ?></label>
1104
+                    <label><input type='checkbox' id='autoptimize_imgopt_webp_checkbox' name='autoptimize_imgopt_settings[autoptimize_imgopt_checkbox_field_4]' <?php if (!empty($options['autoptimize_imgopt_checkbox_field_4']) && '1' === $options['autoptimize_imgopt_checkbox_field_3']) { echo 'checked="checked"'; } ?> value='1'><?php _e('Automatically serve "next-gen" WebP image format to any browser that supports it (requires lazy load to be active).', 'autoptimize'); ?></label>
1105 1105
                 </td>
1106 1106
             </tr>
1107 1107
             <tr>
1108
-                <th scope="row"><?php _e( 'Lazy-load images?', 'autoptimize' ); ?></th>
1108
+                <th scope="row"><?php _e('Lazy-load images?', 'autoptimize'); ?></th>
1109 1109
                 <td>
1110
-                    <label><input type='checkbox' id='autoptimize_imgopt_lazyload_checkbox' name='autoptimize_imgopt_settings[autoptimize_imgopt_checkbox_field_3]' <?php if ( ! empty( $options['autoptimize_imgopt_checkbox_field_3'] ) && '1' === $options['autoptimize_imgopt_checkbox_field_3'] ) { echo 'checked="checked"'; } ?> value='1'><?php _e( 'Image lazy-loading will delay the loading of non-visible images to allow the browser to optimally load all resources for the "above the fold"-page first.', 'autoptimize' ); ?></label>
1110
+                    <label><input type='checkbox' id='autoptimize_imgopt_lazyload_checkbox' name='autoptimize_imgopt_settings[autoptimize_imgopt_checkbox_field_3]' <?php if (!empty($options['autoptimize_imgopt_checkbox_field_3']) && '1' === $options['autoptimize_imgopt_checkbox_field_3']) { echo 'checked="checked"'; } ?> value='1'><?php _e('Image lazy-loading will delay the loading of non-visible images to allow the browser to optimally load all resources for the "above the fold"-page first.', 'autoptimize'); ?></label>
1111 1111
                 </td>
1112 1112
             </tr>
1113
-            <tr id='autoptimize_imgopt_lazyload_exclusions' <?php if ( ! array_key_exists( 'autoptimize_imgopt_checkbox_field_3', $options ) || ( isset( $options['autoptimize_imgopt_checkbox_field_3'] ) && '1' !== $options['autoptimize_imgopt_checkbox_field_3'] ) ) { echo 'class="hidden"'; } ?>>
1114
-                <th scope="row"><?php _e( 'Lazy-load exclusions', 'autoptimize' ); ?></th>
1113
+            <tr id='autoptimize_imgopt_lazyload_exclusions' <?php if (!array_key_exists('autoptimize_imgopt_checkbox_field_3', $options) || (isset($options['autoptimize_imgopt_checkbox_field_3']) && '1' !== $options['autoptimize_imgopt_checkbox_field_3'])) { echo 'class="hidden"'; } ?>>
1114
+                <th scope="row"><?php _e('Lazy-load exclusions', 'autoptimize'); ?></th>
1115 1115
                 <td>
1116
-                    <label><input type='text' style='width:80%' id='autoptimize_imgopt_lazyload_exclusions' name='autoptimize_imgopt_settings[autoptimize_imgopt_text_field_5]' value='<?php if ( ! empty( $options['autoptimize_imgopt_text_field_5'] ) ) { echo esc_attr( $options['autoptimize_imgopt_text_field_5'] ); } ?>'><br /><?php _e( 'Comma-separated list of to be excluded image classes or filenames.', 'autoptimize' ); ?></label>
1116
+                    <label><input type='text' style='width:80%' id='autoptimize_imgopt_lazyload_exclusions' name='autoptimize_imgopt_settings[autoptimize_imgopt_text_field_5]' value='<?php if (!empty($options['autoptimize_imgopt_text_field_5'])) { echo esc_attr($options['autoptimize_imgopt_text_field_5']); } ?>'><br /><?php _e('Comma-separated list of to be excluded image classes or filenames.', 'autoptimize'); ?></label>
1117 1117
                 </td>
1118 1118
             </tr>
1119 1119
         </table>
1120
-        <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e( 'Save Changes', 'autoptimize' ); ?>" /></p>
1120
+        <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Changes', 'autoptimize'); ?>" /></p>
1121 1121
     </form>
1122 1122
     <script>
1123 1123
         jQuery(document).ready(function() {
@@ -1153,50 +1153,50 @@  discard block
 block discarded – undo
1153 1153
      * Ïmg opt status as used on dashboard.
1154 1154
      */
1155 1155
     public function get_imgopt_status_notice() {
1156
-        if ( $this->imgopt_active() ) {
1156
+        if ($this->imgopt_active()) {
1157 1157
             $_imgopt_notice  = '';
1158
-            $_stat           = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' );
1158
+            $_stat           = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_provider_stat', '');
1159 1159
             $_site_host      = AUTOPTIMIZE_SITE_DOMAIN;
1160
-            $_imgopt_upsell  = 'https://shortpixel.com/aospai/af/GWRGFLW109483/' . $_site_host;
1160
+            $_imgopt_upsell  = 'https://shortpixel.com/aospai/af/GWRGFLW109483/'.$_site_host;
1161 1161
             $_imgopt_assoc   = 'https://shortpixel.helpscoutdocs.com/article/94-how-to-associate-a-domain-to-my-account';
1162 1162
             $_imgopt_unreach = 'https://shortpixel.helpscoutdocs.com/article/148-why-are-my-images-redirected-from-cdn-shortpixel-ai';
1163 1163
 
1164
-            if ( is_array( $_stat ) ) {
1165
-                if ( 1 == $_stat['Status'] ) {
1164
+            if (is_array($_stat)) {
1165
+                if (1 == $_stat['Status']) {
1166 1166
                     // translators: "add more credits" will appear in a "a href".
1167
-                    $_imgopt_notice = sprintf( __( 'Your ShortPixel image optimization and CDN quota is almost used, make sure you %1$sadd more credits%2$s to avoid slowing down your website.', 'autoptimize' ), '<a href="' . $_imgopt_upsell . '" target="_blank">', '</a>' );
1167
+                    $_imgopt_notice = sprintf(__('Your ShortPixel image optimization and CDN quota is almost used, make sure you %1$sadd more credits%2$s to avoid slowing down your website.', 'autoptimize'), '<a href="'.$_imgopt_upsell.'" target="_blank">', '</a>');
1168 1168
                 } elseif ( -1 == $_stat['Status'] || -2 == $_stat['Status'] ) {
1169 1169
                     // translators: "add more credits" will appear in a "a href".
1170
-                    $_imgopt_notice = sprintf( __( 'Your ShortPixel image optimization and CDN quota was used, %1$sadd more credits%2$s to keep fast serving optimized images on your site', 'autoptimize' ), '<a href="' . $_imgopt_upsell . '" target="_blank">', '</a>' );
1170
+                    $_imgopt_notice = sprintf(__('Your ShortPixel image optimization and CDN quota was used, %1$sadd more credits%2$s to keep fast serving optimized images on your site', 'autoptimize'), '<a href="'.$_imgopt_upsell.'" target="_blank">', '</a>');
1171 1171
                     // translators: "associate your domain" will appear in a "a href".
1172
-                    $_imgopt_notice = $_imgopt_notice . ' ' . sprintf( __( 'If you already have enough credits then you may need to %1$sassociate your domain%2$s to your Shortpixel account.', 'autoptimize' ), '<a rel="noopener noreferrer" href="' . $_imgopt_assoc . '" target="_blank">', '</a>' );
1172
+                    $_imgopt_notice = $_imgopt_notice.' '.sprintf(__('If you already have enough credits then you may need to %1$sassociate your domain%2$s to your Shortpixel account.', 'autoptimize'), '<a rel="noopener noreferrer" href="'.$_imgopt_assoc.'" target="_blank">', '</a>');
1173 1173
                 } elseif ( -3 == $_stat['Status'] ) {
1174 1174
                     // translators: "check the documentation here" will appear in a "a href".
1175
-                    $_imgopt_notice = sprintf( __( 'It seems ShortPixel image optimization is not able to fetch images from your site, %1$scheck the documentation here%2$s for more information', 'autoptimize' ), '<a href="' . $_imgopt_unreach . '" target="_blank">', '</a>' );
1175
+                    $_imgopt_notice = sprintf(__('It seems ShortPixel image optimization is not able to fetch images from your site, %1$scheck the documentation here%2$s for more information', 'autoptimize'), '<a href="'.$_imgopt_unreach.'" target="_blank">', '</a>');
1176 1176
                 } else {
1177 1177
                     $_imgopt_upsell = 'https://shortpixel.com/g/af/GWRGFLW109483';
1178 1178
                     // translators: "log in to check your account" will appear in a "a href".
1179
-                    $_imgopt_notice = sprintf( __( 'Your ShortPixel image optimization and CDN quota are in good shape, %1$slog in to check your account%2$s.', 'autoptimize' ), '<a href="' . $_imgopt_upsell . '" target="_blank">', '</a>' );
1179
+                    $_imgopt_notice = sprintf(__('Your ShortPixel image optimization and CDN quota are in good shape, %1$slog in to check your account%2$s.', 'autoptimize'), '<a href="'.$_imgopt_upsell.'" target="_blank">', '</a>');
1180 1180
                 }
1181 1181
 
1182 1182
                 // add info on freshness + refresh link if status is not 2 (good shape).
1183
-                if ( 2 != $_stat['Status'] ) {
1184
-                    $_imgopt_stats_refresh_url = add_query_arg( array(
1183
+                if (2 != $_stat['Status']) {
1184
+                    $_imgopt_stats_refresh_url = add_query_arg(array(
1185 1185
                         'page'                => 'autoptimize_imgopt',
1186 1186
                         'refreshImgProvStats' => '1',
1187
-                    ), admin_url( 'options-general.php' ) );
1188
-                    if ( $_stat && array_key_exists( 'timestamp', $_stat ) && ! empty( $_stat['timestamp'] ) ) {
1189
-                        $_imgopt_stats_last_run = __( 'based on status at ', 'autoptimize' ) . date_i18n( autoptimizeOptionWrapper::get_option( 'time_format' ), $_stat['timestamp'] );
1187
+                    ), admin_url('options-general.php'));
1188
+                    if ($_stat && array_key_exists('timestamp', $_stat) && !empty($_stat['timestamp'])) {
1189
+                        $_imgopt_stats_last_run = __('based on status at ', 'autoptimize').date_i18n(autoptimizeOptionWrapper::get_option('time_format'), $_stat['timestamp']);
1190 1190
                     } else {
1191
-                        $_imgopt_stats_last_run = __( 'based on previously fetched data', 'autoptimize' );
1191
+                        $_imgopt_stats_last_run = __('based on previously fetched data', 'autoptimize');
1192 1192
                     }
1193
-                    $_imgopt_notice .= ' (' . $_imgopt_stats_last_run . ', ';
1193
+                    $_imgopt_notice .= ' ('.$_imgopt_stats_last_run.', ';
1194 1194
                     // translators: "here to refresh" links to the Autoptimize Extra page and forces a refresh of the img opt stats.
1195
-                    $_imgopt_notice .= sprintf( __( 'click %1$shere to refresh%2$s', 'autoptimize' ), '<a href="' . $_imgopt_stats_refresh_url . '">', '</a>).' );
1195
+                    $_imgopt_notice .= sprintf(__('click %1$shere to refresh%2$s', 'autoptimize'), '<a href="'.$_imgopt_stats_refresh_url.'">', '</a>).');
1196 1196
                 }
1197 1197
 
1198 1198
                 // and make the full notice filterable.
1199
-                $_imgopt_notice = apply_filters( 'autoptimize_filter_imgopt_notice', $_imgopt_notice );
1199
+                $_imgopt_notice = apply_filters('autoptimize_filter_imgopt_notice', $_imgopt_notice);
1200 1200
 
1201 1201
                 return array(
1202 1202
                     'status' => $_stat['Status'],
@@ -1217,14 +1217,14 @@  discard block
 block discarded – undo
1217 1217
      * Get img provider stats (used to display notice).
1218 1218
      */
1219 1219
     public function query_img_provider_stats() {
1220
-        if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_1'] ) ) {
1220
+        if (!empty($this->options['autoptimize_imgopt_checkbox_field_1'])) {
1221 1221
             $url      = '';
1222
-            $endpoint = $this->get_imgopt_host() . 'read-domain/';
1222
+            $endpoint = $this->get_imgopt_host().'read-domain/';
1223 1223
             $domain   = AUTOPTIMIZE_SITE_DOMAIN;
1224 1224
 
1225 1225
             // make sure parse_url result makes sense, keeping $url empty if not.
1226
-            if ( $domain && ! empty( $domain ) ) {
1227
-                $url = $endpoint . $domain;
1226
+            if ($domain && !empty($domain)) {
1227
+                $url = $endpoint.$domain;
1228 1228
             }
1229 1229
 
1230 1230
             $url = apply_filters(
@@ -1234,12 +1234,12 @@  discard block
 block discarded – undo
1234 1234
 
1235 1235
             // only do the remote call if $url is not empty to make sure no parse_url
1236 1236
             // weirdness results in useless calls.
1237
-            if ( ! empty( $url ) ) {
1238
-                $response = wp_remote_get( $url );
1239
-                if ( ! is_wp_error( $response ) ) {
1240
-                    if ( '200' == wp_remote_retrieve_response_code( $response ) ) {
1241
-                        $stats = json_decode( wp_remote_retrieve_body( $response ), true );
1242
-                        autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_provider_stat', $stats );
1237
+            if (!empty($url)) {
1238
+                $response = wp_remote_get($url);
1239
+                if (!is_wp_error($response)) {
1240
+                    if ('200' == wp_remote_retrieve_response_code($response)) {
1241
+                        $stats = json_decode(wp_remote_retrieve_body($response), true);
1242
+                        autoptimizeOptionWrapper::update_option('autoptimize_imgopt_provider_stat', $stats);
1243 1243
                     }
1244 1244
                 }
1245 1245
             }
@@ -1262,15 +1262,15 @@  discard block
 block discarded – undo
1262 1262
     {
1263 1263
         static $launch_status = null;
1264 1264
 
1265
-        if ( null === $launch_status ) {
1265
+        if (null === $launch_status) {
1266 1266
             $avail_imgopt  = $this->options['availabilities']['extra_imgopt'];
1267
-            $magic_number  = intval( substr( md5( parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ) ), 0, 3 ), 16 );
1268
-            $has_launched  = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_launched', '' );
1267
+            $magic_number  = intval(substr(md5(parse_url(AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST)), 0, 3), 16);
1268
+            $has_launched  = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_launched', '');
1269 1269
             $launch_status = false;
1270
-            if ( $has_launched || ( is_array( $avail_imgopt ) && array_key_exists( 'launch-threshold', $avail_imgopt ) && $magic_number < $avail_imgopt['launch-threshold'] ) ) {
1270
+            if ($has_launched || (is_array($avail_imgopt) && array_key_exists('launch-threshold', $avail_imgopt) && $magic_number < $avail_imgopt['launch-threshold'])) {
1271 1271
                 $launch_status = true;
1272
-                if ( ! $has_launched ) {
1273
-                    autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_launched', 'on' );
1272
+                if (!$has_launched) {
1273
+                    autoptimizeOptionWrapper::update_option('autoptimize_imgopt_launched', 'on');
1274 1274
                 }
1275 1275
             }
1276 1276
         }
@@ -1287,16 +1287,16 @@  discard block
 block discarded – undo
1287 1287
     public function get_imgopt_provider_userstatus() {
1288 1288
         static $_provider_userstatus = null;
1289 1289
 
1290
-        if ( is_null( $_provider_userstatus ) ) {
1291
-            $_stat = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' );
1292
-            if ( is_array( $_stat ) ) {
1293
-                if ( array_key_exists( 'Status', $_stat ) ) {
1290
+        if (is_null($_provider_userstatus)) {
1291
+            $_stat = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_provider_stat', '');
1292
+            if (is_array($_stat)) {
1293
+                if (array_key_exists('Status', $_stat)) {
1294 1294
                     $_provider_userstatus['Status'] = $_stat['Status'];
1295 1295
                 } else {
1296 1296
                     // if no stats then we assume all is well.
1297 1297
                     $_provider_userstatus['Status'] = 2;
1298 1298
                 }
1299
-                if ( array_key_exists( 'timestamp', $_stat ) ) {
1299
+                if (array_key_exists('timestamp', $_stat)) {
1300 1300
                     $_provider_userstatus['timestamp'] = $_stat['timestamp'];
1301 1301
                 } else {
1302 1302
                     // if no timestamp then we return "".
Please login to merge, or discard this patch.
classes/autoptimizeCriticalCSSEnqueue.php 1 patch
Spacing   +66 added lines, -66 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Critical CSS job enqueue logic.
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -12,27 +12,27 @@  discard block
 block discarded – undo
12 12
     {
13 13
         // fetch all options at once and populate them individually explicitely as globals.
14 14
         $all_options = autoptimizeCriticalCSSBase::fetch_options();
15
-        foreach ( $all_options as $_option => $_value ) {
15
+        foreach ($all_options as $_option => $_value) {
16 16
             global ${$_option};
17 17
             ${$_option} = $_value;
18 18
         }
19 19
     }
20 20
 
21
-    public static function ao_ccss_enqueue( $hash ) {
21
+    public static function ao_ccss_enqueue($hash) {
22 22
         $self = new self();
23 23
         // Get key status.
24
-        $key = autoptimizeCriticalCSSCore::ao_ccss_key_status( false );
24
+        $key = autoptimizeCriticalCSSCore::ao_ccss_key_status(false);
25 25
 
26 26
         // Queue is available to anyone...
27 27
         $enqueue = true;
28 28
 
29 29
         // ... which are not the ones below.
30
-        if ( is_user_logged_in() || is_feed() || is_404() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || $self->ao_ccss_ua() || 'nokey' == $key['status'] || 'invalid' == $key['status'] ) {
30
+        if (is_user_logged_in() || is_feed() || is_404() || (defined('DOING_AJAX') && DOING_AJAX) || $self->ao_ccss_ua() || 'nokey' == $key['status'] || 'invalid' == $key['status']) {
31 31
             $enqueue = false;
32
-            autoptimizeCriticalCSSCore::ao_ccss_log( "Job queuing is not available for WordPress's logged in users, feeds, error pages, ajax calls, to criticalcss.com itself or when a valid API key is not found", 3 );
32
+            autoptimizeCriticalCSSCore::ao_ccss_log("Job queuing is not available for WordPress's logged in users, feeds, error pages, ajax calls, to criticalcss.com itself or when a valid API key is not found", 3);
33 33
         }
34 34
 
35
-        if ( $enqueue ) {
35
+        if ($enqueue) {
36 36
             // Continue if queue is available
37 37
             // Attach required arrays/ vars.
38 38
             global $ao_ccss_rules;
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
             global $ao_ccss_forcepath;
42 42
 
43 43
             // Get request path and page type, and initialize the queue update flag.
44
-            $req_path        = strtok( $_SERVER['REQUEST_URI'], '?' );
44
+            $req_path        = strtok($_SERVER['REQUEST_URI'], '?');
45 45
             $req_type        = $self->ao_ccss_get_type();
46 46
             $job_qualify     = false;
47 47
             $target_rule     = false;
@@ -49,21 +49,21 @@  discard block
 block discarded – undo
49 49
             $queue_update    = false;
50 50
 
51 51
             // Match for paths in rules.
52
-            foreach ( $ao_ccss_rules['paths'] as $path => $props ) {
52
+            foreach ($ao_ccss_rules['paths'] as $path => $props) {
53 53
 
54 54
                 // Prepare rule target and log.
55
-                $target_rule = 'paths|' . $path;
56
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Qualifying path <' . $req_path . '> for job submission by rule <' . $target_rule . '>', 3 );
55
+                $target_rule = 'paths|'.$path;
56
+                autoptimizeCriticalCSSCore::ao_ccss_log('Qualifying path <'.$req_path.'> for job submission by rule <'.$target_rule.'>', 3);
57 57
 
58 58
                 // Path match
59 59
                 // -> exact match needed for AUTO rules
60 60
                 // -> partial match OK for MANUAL rules (which have empty hash and a file with CCSS).
61
-                if ( $path === $req_path || ( false == $props['hash'] && false != $props['file'] && preg_match( '|' . $path . '|', $req_path ) ) ) {
61
+                if ($path === $req_path || (false == $props['hash'] && false != $props['file'] && preg_match('|'.$path.'|', $req_path))) {
62 62
 
63 63
                     // There's a path match in the rule, so job QUALIFIES with a path rule match.
64 64
                     $job_qualify     = true;
65 65
                     $rule_properties = $props;
66
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Path <' . $req_path . '> QUALIFIED for job submission by rule <' . $target_rule . '>', 3 );
66
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Path <'.$req_path.'> QUALIFIED for job submission by rule <'.$target_rule.'>', 3);
67 67
 
68 68
                     // Stop processing other path rules.
69 69
                     break;
@@ -71,19 +71,19 @@  discard block
 block discarded – undo
71 71
             }
72 72
 
73 73
             // Match for types in rules if no path rule matches and if we're not enforcing paths.
74
-            if ( ! $job_qualify && ( ! $ao_ccss_forcepath || ! in_array( $req_type, apply_filters( 'autoptimize_filter_ccss_coreenqueue_forcepathfortype', array( 'is_page' ) ) ) ) ) {
75
-                foreach ( $ao_ccss_rules['types'] as $type => $props ) {
74
+            if (!$job_qualify && (!$ao_ccss_forcepath || !in_array($req_type, apply_filters('autoptimize_filter_ccss_coreenqueue_forcepathfortype', array('is_page'))))) {
75
+                foreach ($ao_ccss_rules['types'] as $type => $props) {
76 76
 
77 77
                     // Prepare rule target and log.
78
-                    $target_rule = 'types|' . $type;
79
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Qualifying page type <' . $req_type . '> on path <' . $req_path . '> for job submission by rule <' . $target_rule . '>', 3 );
78
+                    $target_rule = 'types|'.$type;
79
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Qualifying page type <'.$req_type.'> on path <'.$req_path.'> for job submission by rule <'.$target_rule.'>', 3);
80 80
 
81
-                    if ( $req_type == $type ) {
81
+                    if ($req_type == $type) {
82 82
                         // Type match.
83 83
                         // There's a type match in the rule, so job QUALIFIES with a type rule match.
84 84
                         $job_qualify     = true;
85 85
                         $rule_properties = $props;
86
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Page type <' . $req_type . '> on path <' . $req_path . '> QUALIFIED for job submission by rule <' . $target_rule . '>', 3 );
86
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Page type <'.$req_type.'> on path <'.$req_path.'> QUALIFIED for job submission by rule <'.$target_rule.'>', 3);
87 87
 
88 88
                         // Stop processing other type rules.
89 89
                         break;
@@ -91,11 +91,11 @@  discard block
 block discarded – undo
91 91
                 }
92 92
             }
93 93
 
94
-            if ( $job_qualify && false == $rule_properties['hash'] && false != $rule_properties['file'] ) {
94
+            if ($job_qualify && false == $rule_properties['hash'] && false != $rule_properties['file']) {
95 95
                 // If job qualifies but rule hash is false and file isn't false  (MANUAL rule), job does not qualify despite what previous evaluations says.
96 96
                 $job_qualify = false;
97
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job submission DISQUALIFIED by MANUAL rule <' . $target_rule . '> with hash <' . $rule_properties['hash'] . '> and file <' . $rule_properties['file'] . '>', 3 );
98
-            } elseif ( ! $job_qualify && empty( $rule_properties ) ) {
97
+                autoptimizeCriticalCSSCore::ao_ccss_log('Job submission DISQUALIFIED by MANUAL rule <'.$target_rule.'> with hash <'.$rule_properties['hash'].'> and file <'.$rule_properties['file'].'>', 3);
98
+            } elseif (!$job_qualify && empty($rule_properties)) {
99 99
                 // But if job does not qualify and rule properties are set, job qualifies as there is no matching rule for it yet
100 100
                 // Fill-in the new target rule.
101 101
                 $job_qualify = true;
@@ -103,28 +103,28 @@  discard block
 block discarded – undo
103 103
                 // Should we switch to path-base AUTO-rules? Conditions:
104 104
                 // 1. forcepath option has to be enabled (off by default)
105 105
                 // 2. request type should be (by default, but filterable) one of is_page (removed for now: woo_is_product or woo_is_product_category).
106
-                if ( $ao_ccss_forcepath && in_array( $req_type, apply_filters( 'autoptimize_filter_ccss_coreenqueue_forcepathfortype', array( 'is_page' ) ) ) ) {
107
-                    if ( '/' !== $req_path ) {
108
-                        $target_rule = 'paths|' . $req_path;
106
+                if ($ao_ccss_forcepath && in_array($req_type, apply_filters('autoptimize_filter_ccss_coreenqueue_forcepathfortype', array('is_page')))) {
107
+                    if ('/' !== $req_path) {
108
+                        $target_rule = 'paths|'.$req_path;
109 109
                     } else {
110 110
                         // Exception; we don't want a path-based rule for "/" as that messes things up, hard-switch this to a type-based is_front_page rule.
111
-                        $target_rule = 'types|' . 'is_front_page';
111
+                        $target_rule = 'types|'.'is_front_page';
112 112
                     }
113 113
                 } else {
114
-                    $target_rule = 'types|' . $req_type;
114
+                    $target_rule = 'types|'.$req_type;
115 115
                 }
116
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job submission QUALIFIED by MISSING rule for page type <' . $req_type . '> on path <' . $req_path . '>, new rule target is <' . $target_rule . '>', 3 );
116
+                autoptimizeCriticalCSSCore::ao_ccss_log('Job submission QUALIFIED by MISSING rule for page type <'.$req_type.'> on path <'.$req_path.'>, new rule target is <'.$target_rule.'>', 3);
117 117
             } else {
118 118
                 // Or just log a job qualified by a matching rule.
119
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job submission QUALIFIED by AUTO rule <' . $target_rule . '> with hash <' . $rule_properties['hash'] . '> and file <' . $rule_properties['file'] . '>', 3 );
119
+                autoptimizeCriticalCSSCore::ao_ccss_log('Job submission QUALIFIED by AUTO rule <'.$target_rule.'> with hash <'.$rule_properties['hash'].'> and file <'.$rule_properties['file'].'>', 3);
120 120
             }
121 121
 
122 122
             // Submit job.
123
-            if ( $job_qualify ) {
124
-                if ( ! array_key_exists( $req_path, $ao_ccss_queue ) ) {
123
+            if ($job_qualify) {
124
+                if (!array_key_exists($req_path, $ao_ccss_queue)) {
125 125
                     // This is a NEW job
126 126
                     // Merge job into the queue.
127
-                    $ao_ccss_queue[ $req_path ] = $self->ao_ccss_define_job(
127
+                    $ao_ccss_queue[$req_path] = $self->ao_ccss_define_job(
128 128
                         $req_path,
129 129
                         $target_rule,
130 130
                         $req_type,
@@ -140,30 +140,30 @@  discard block
 block discarded – undo
140 140
                 } else {
141 141
                     // This is an existing job
142 142
                     // The job is still NEW, most likely this is extra CSS file for the same page that needs a hash.
143
-                    if ( 'NEW' == $ao_ccss_queue[ $req_path ]['jqstat'] ) {
143
+                    if ('NEW' == $ao_ccss_queue[$req_path]['jqstat']) {
144 144
                         // Add hash if it's not already in the job.
145
-                        if ( ! in_array( $hash, $ao_ccss_queue[ $req_path ]['hashes'] ) ) {
145
+                        if (!in_array($hash, $ao_ccss_queue[$req_path]['hashes'])) {
146 146
                             // Push new hash to its array and update flag.
147
-                            $queue_update = array_push( $ao_ccss_queue[ $req_path ]['hashes'], $hash );
147
+                            $queue_update = array_push($ao_ccss_queue[$req_path]['hashes'], $hash);
148 148
 
149 149
                             // Log job update.
150
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Hashes UPDATED on local job id <' . $ao_ccss_queue[ $req_path ]['ljid'] . '>, job status NEW, target rule <' . $ao_ccss_queue[ $req_path ]['rtarget'] . '>, hash added: ' . $hash, 3 );
150
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Hashes UPDATED on local job id <'.$ao_ccss_queue[$req_path]['ljid'].'>, job status NEW, target rule <'.$ao_ccss_queue[$req_path]['rtarget'].'>, hash added: '.$hash, 3);
151 151
 
152 152
                             // Return from here as the hash array is already updated.
153 153
                             return true;
154 154
                         }
155
-                    } elseif ( 'NEW' != $ao_ccss_queue[ $req_path ]['jqstat'] && 'JOB_QUEUED' != $ao_ccss_queue[ $req_path ]['jqstat'] && 'JOB_ONGOING' != $ao_ccss_queue[ $req_path ]['jqstat'] ) {
155
+                    } elseif ('NEW' != $ao_ccss_queue[$req_path]['jqstat'] && 'JOB_QUEUED' != $ao_ccss_queue[$req_path]['jqstat'] && 'JOB_ONGOING' != $ao_ccss_queue[$req_path]['jqstat']) {
156 156
                         // Allow requeuing jobs that are not NEW, JOB_QUEUED or JOB_ONGOING
157 157
                         // Merge new job keeping some previous job values.
158
-                        $ao_ccss_queue[ $req_path ] = $self->ao_ccss_define_job(
158
+                        $ao_ccss_queue[$req_path] = $self->ao_ccss_define_job(
159 159
                             $req_path,
160 160
                             $target_rule,
161 161
                             $req_type,
162 162
                             $hash,
163
-                            $ao_ccss_queue[ $req_path ]['file'],
164
-                            $ao_ccss_queue[ $req_path ]['jid'],
165
-                            $ao_ccss_queue[ $req_path ]['jrstat'],
166
-                            $ao_ccss_queue[ $req_path ]['jvstat'],
163
+                            $ao_ccss_queue[$req_path]['file'],
164
+                            $ao_ccss_queue[$req_path]['jid'],
165
+                            $ao_ccss_queue[$req_path]['jrstat'],
166
+                            $ao_ccss_queue[$req_path]['jvstat'],
167 167
                             false
168 168
                         );
169 169
                         // Set update flag.
@@ -171,14 +171,14 @@  discard block
 block discarded – undo
171 171
                     }
172 172
                 }
173 173
 
174
-                if ( $queue_update ) {
174
+                if ($queue_update) {
175 175
                     // Persist the job to the queue and return.
176
-                    $ao_ccss_queue_raw = json_encode( $ao_ccss_queue );
177
-                    update_option( 'autoptimize_ccss_queue', $ao_ccss_queue_raw, false );
176
+                    $ao_ccss_queue_raw = json_encode($ao_ccss_queue);
177
+                    update_option('autoptimize_ccss_queue', $ao_ccss_queue_raw, false);
178 178
                     return true;
179 179
                 } else {
180 180
                     // Or just return false if no job was added.
181
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'A job for path <' . $req_path . '> already exist with NEW or PENDING status, skipping job creation', 3 );
181
+                    autoptimizeCriticalCSSCore::ao_ccss_log('A job for path <'.$req_path.'> already exist with NEW or PENDING status, skipping job creation', 3);
182 182
                     return false;
183 183
                 }
184 184
             }
@@ -194,22 +194,22 @@  discard block
 block discarded – undo
194 194
         $page_type = false;
195 195
 
196 196
         // Iterates over the array to match a type.
197
-        foreach ( $ao_ccss_types as $type ) {
198
-            if ( strpos( $type, 'custom_post_' ) !== false ) {
197
+        foreach ($ao_ccss_types as $type) {
198
+            if (strpos($type, 'custom_post_') !== false) {
199 199
                 // Match custom post types.
200
-                if ( get_post_type( get_the_ID() ) === substr( $type, 12 ) ) {
200
+                if (get_post_type(get_the_ID()) === substr($type, 12)) {
201 201
                     $page_type = $type;
202 202
                     break;
203 203
                 }
204
-            } elseif ( strpos( $type, 'template_' ) !== false ) {
204
+            } elseif (strpos($type, 'template_') !== false) {
205 205
                 // If templates; don't break, templates become manual-only rules.
206 206
             } else {
207 207
                 // Match all other existing types
208 208
                 // but remove prefix to be able to check if the function exists & returns true.
209
-                $_type = str_replace( array( 'woo_', 'bp_', 'bbp_', 'edd_' ), '', $type );
210
-                if ( function_exists( $_type ) && call_user_func( $_type ) ) {
209
+                $_type = str_replace(array('woo_', 'bp_', 'bbp_', 'edd_'), '', $type);
210
+                if (function_exists($_type) && call_user_func($_type)) {
211 211
                     // Make sure we only return is_front_page (and is_home) for one page, not for the "paged frontpage" (/page/2 ..).
212
-                    if ( ( 'is_front_page' !== $_type && 'is_home' !== $_type ) || ! is_paged() ) {
212
+                    if (('is_front_page' !== $_type && 'is_home' !== $_type) || !is_paged()) {
213 213
                         $page_type = $type;
214 214
                         break;
215 215
                     }
@@ -221,44 +221,44 @@  discard block
 block discarded – undo
221 221
         return $page_type;
222 222
     }
223 223
 
224
-    public function ao_ccss_define_job( $path, $target, $type, $hash, $file, $jid, $jrstat, $jvstat, $create ) {
224
+    public function ao_ccss_define_job($path, $target, $type, $hash, $file, $jid, $jrstat, $jvstat, $create) {
225 225
         // Define a job entry to be created or updated
226 226
         // Define commom job properties.
227 227
         $path            = array();
228 228
         $path['ljid']    = $this->ao_ccss_job_id();
229 229
         $path['rtarget'] = $target;
230 230
         $path['ptype']   = $type;
231
-        $path['hashes']  = array( $hash );
231
+        $path['hashes']  = array($hash);
232 232
         $path['hash']    = $hash;
233 233
         $path['file']    = $file;
234 234
         $path['jid']     = $jid;
235 235
         $path['jqstat']  = 'NEW';
236 236
         $path['jrstat']  = $jrstat;
237 237
         $path['jvstat']  = $jvstat;
238
-        $path['jctime']  = microtime( true );
238
+        $path['jctime']  = microtime(true);
239 239
         $path['jftime']  = null;
240 240
 
241 241
         // Set operation requested.
242
-        if ( $create ) {
242
+        if ($create) {
243 243
             $operation = 'CREATED';
244 244
         } else {
245 245
             $operation = 'UPDATED';
246 246
         }
247 247
 
248 248
         // Log job creation.
249
-        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job ' . $operation . ' with local job id <' . $path['ljid'] . '> for target rule <' . $target . '>', 3 );
249
+        autoptimizeCriticalCSSCore::ao_ccss_log('Job '.$operation.' with local job id <'.$path['ljid'].'> for target rule <'.$target.'>', 3);
250 250
 
251 251
         return $path;
252 252
     }
253 253
 
254
-    public function ao_ccss_job_id( $length = 6 ) {
254
+    public function ao_ccss_job_id($length = 6) {
255 255
         // Generate random strings for the local job ID
256 256
         // Based on https://stackoverflow.com/a/4356295 .
257 257
         $characters        = '0123456789abcdefghijklmnopqrstuvwxyz';
258
-        $characters_length = strlen( $characters );
258
+        $characters_length = strlen($characters);
259 259
         $random_string     = 'j-';
260
-        for ( $i = 0; $i < $length; $i++ ) {
261
-            $random_string .= $characters[ rand( 0, $characters_length - 1 ) ];
260
+        for ($i = 0; $i < $length; $i++) {
261
+            $random_string .= $characters[rand(0, $characters_length - 1)];
262 262
         }
263 263
         return $random_string;
264 264
     }
@@ -266,17 +266,17 @@  discard block
 block discarded – undo
266 266
     public function ao_ccss_ua() {
267 267
         // Check for criticalcss.com user agent.
268 268
         $agent = '';
269
-        if ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) {
269
+        if (isset($_SERVER['HTTP_USER_AGENT'])) {
270 270
             $agent = $_SERVER['HTTP_USER_AGENT'];
271 271
         }
272 272
 
273 273
         // Check for UA and return TRUE when criticalcss.com is the detected UA, false when not.
274
-        $rtn = strpos( $agent, AO_CCSS_URL );
275
-        if ( 0 === $rtn ) {
274
+        $rtn = strpos($agent, AO_CCSS_URL);
275
+        if (0 === $rtn) {
276 276
             $rtn = true;
277 277
         } else {
278 278
             $rtn = false;
279 279
         }
280
-        return ( $rtn );
280
+        return ($rtn);
281 281
     }
282 282
 }
Please login to merge, or discard this patch.
classes/critcss-inc/admin_settings_explain.php 1 patch
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -12,28 +12,28 @@
 block discarded – undo
12 12
         .ao_settings_div {background: white;border: 1px solid #ccc;padding: 1px 15px;margin: 15px 10px 10px 0;}
13 13
         .ao_settings_div .form-table th {font-weight: normal;}
14 14
     </style>
15
-    <script>document.title = "Autoptimize: <?php _e( 'Critical CSS', 'autoptimize' ); ?> " + document.title;</script>
15
+    <script>document.title = "Autoptimize: <?php _e('Critical CSS', 'autoptimize'); ?> " + document.title;</script>
16 16
     <ul id="explain-panel">
17 17
         <div class="ao_settings_div">
18 18
             <?php
19 19
             $ccss_explanation = '';
20 20
 
21 21
             // get the HTML with the explanation of what critical CSS is.
22
-            if ( apply_filters( 'autoptimize_settingsscreen_remotehttp', true ) ) {
23
-                $ccss_explanation = get_transient( 'ao_ccss_explain' );
24
-                if ( empty( $ccss_explanation ) ) {
25
-                    $ccss_expl_resp = wp_remote_get( 'https://misc.optimizingmatters.com/autoptimize_ccss_explain.html?ao_ver=' . AUTOPTIMIZE_PLUGIN_VERSION );
26
-                    if ( ! is_wp_error( $ccss_expl_resp ) ) {
27
-                        if ( '200' == wp_remote_retrieve_response_code( $ccss_expl_resp ) ) {
28
-                            $ccss_explanation = wp_kses_post( wp_remote_retrieve_body( $ccss_expl_resp ) );
29
-                            set_transient( 'ao_ccss_explain', $ccss_explanation, WEEK_IN_SECONDS );
22
+            if (apply_filters('autoptimize_settingsscreen_remotehttp', true)) {
23
+                $ccss_explanation = get_transient('ao_ccss_explain');
24
+                if (empty($ccss_explanation)) {
25
+                    $ccss_expl_resp = wp_remote_get('https://misc.optimizingmatters.com/autoptimize_ccss_explain.html?ao_ver='.AUTOPTIMIZE_PLUGIN_VERSION);
26
+                    if (!is_wp_error($ccss_expl_resp)) {
27
+                        if ('200' == wp_remote_retrieve_response_code($ccss_expl_resp)) {
28
+                            $ccss_explanation = wp_kses_post(wp_remote_retrieve_body($ccss_expl_resp));
29
+                            set_transient('ao_ccss_explain', $ccss_explanation, WEEK_IN_SECONDS);
30 30
                         }
31 31
                     }
32 32
                 }
33 33
             }
34 34
 
35 35
             // placeholder text in case HTML is empty.
36
-            if ( empty( $ccss_explanation ) ) {
36
+            if (empty($ccss_explanation)) {
37 37
                 $ccss_explanation = '<h2>Fix render-blocking CSS!</h2><p>Significantly improve your first-paint times by making CSS non-render-blocking.</p><p>The next step is to sign up at <a href="https://criticalcss.com/?aff=1" target="_blank">https://criticalcss.com</a> (this is a premium service, priced 2 GBP/month for membership and 5 GBP/month per domain) <strong>and get the API key, which you can copy from <a href="https://criticalcss.com/account/api-keys?aff=1" target="_blank">the API-keys page</a></strong> and paste below.</p><p>If you have any questions or need support, head on over to <a href="https://wordpress.org/support/plugin/autoptimize" target="_blank">our support forum</a> and we\'ll help you get up and running in no time!</p>';
38 38
             }
39 39
 
Please login to merge, or discard this patch.
classes/critcss-inc/admin_settings_queue.php 1 patch
Spacing   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -11,21 +11,21 @@  discard block
 block discarded – undo
11 11
     global $ao_ccss_queue;
12 12
 
13 13
     // Prepare the queue object.
14
-    if ( empty( $ao_ccss_queue ) ) {
14
+    if (empty($ao_ccss_queue)) {
15 15
         $ao_ccss_queue = '';
16 16
     } else {
17
-        $ao_ccss_queue = json_encode( $ao_ccss_queue );
17
+        $ao_ccss_queue = json_encode($ao_ccss_queue);
18 18
     }
19 19
 ?>
20 20
 
21 21
     <ul id="queue-panel">
22 22
         <li class="itemDetail">
23
-            <h2 class="itemTitle fleft"><?php _e( 'Job Queue', 'autoptimize' ); ?></h2>
23
+            <h2 class="itemTitle fleft"><?php _e('Job Queue', 'autoptimize'); ?></h2>
24 24
             <button type="button" class="toggle-btn">
25 25
                 <span class="toggle-indicator dashicons dashicons-arrow-up dashicons-arrow-down"></span>
26 26
             </button>
27 27
             <?php
28
-            if ( autoptimizeCriticalCSSSettings::ao_ccss_has_autorules() ) {
28
+            if (autoptimizeCriticalCSSSettings::ao_ccss_has_autorules()) {
29 29
                 $_queue_visibility = 'hidden';
30 30
             } else {
31 31
                 $_queue_visibility = 'visible';
@@ -34,54 +34,54 @@  discard block
 block discarded – undo
34 34
             <div class="collapsible <?php echo $_queue_visibility; ?>">
35 35
                 <!-- BEGIN Queue dialogs -->
36 36
                 <!-- Retry dialog -->
37
-                <div id="queue-confirm-retry" title="<?php _e( 'Retry Job', 'autoptimize' ); ?>" class="hidden">
38
-                    <p><?php _e( 'Are you sure you want to retry this job?', 'autoptimize' ); ?></p>
37
+                <div id="queue-confirm-retry" title="<?php _e('Retry Job', 'autoptimize'); ?>" class="hidden">
38
+                    <p><?php _e('Are you sure you want to retry this job?', 'autoptimize'); ?></p>
39 39
                 </div>
40 40
 
41 41
                 <!-- Remove dialog -->
42
-                <div id="queue-confirm-rm" title="<?php _e( 'Delete Job', 'autoptimize' ); ?>" class="hidden">
43
-                    <p><?php _e( 'Are you sure you want to delete this job?', 'autoptimize' ); ?></p>
42
+                <div id="queue-confirm-rm" title="<?php _e('Delete Job', 'autoptimize'); ?>" class="hidden">
43
+                    <p><?php _e('Are you sure you want to delete this job?', 'autoptimize'); ?></p>
44 44
                 </div>
45 45
 
46 46
                 <!-- Remove all dialog -->
47
-                <div id="queue-confirm-rm-all" title="<?php _e( 'Delete all jobs', 'autoptimize' ); ?>" class="hidden">
48
-                    <p><?php _e( 'This will delete all jobs, are you sure?', 'autoptimize' ); ?></p>
47
+                <div id="queue-confirm-rm-all" title="<?php _e('Delete all jobs', 'autoptimize'); ?>" class="hidden">
48
+                    <p><?php _e('This will delete all jobs, are you sure?', 'autoptimize'); ?></p>
49 49
                 </div>
50 50
                 <!-- END Queue dialogs -->
51 51
 
52 52
                 <!-- BEGIN Queue UI -->
53 53
                 <div class="howto">
54 54
                     <div class="title-wrap">
55
-                        <h4 class="title"><?php _e( 'How To Use Autoptimize CriticalCSS Power-Up Queue', 'autoptimize' ); ?></h4>
56
-                        <p class="subtitle"><?php _e( 'Click the side arrow to toggle instructions', 'autoptimize' ); ?></p>
55
+                        <h4 class="title"><?php _e('How To Use Autoptimize CriticalCSS Power-Up Queue', 'autoptimize'); ?></h4>
56
+                        <p class="subtitle"><?php _e('Click the side arrow to toggle instructions', 'autoptimize'); ?></p>
57 57
                     </div>
58 58
                     <button type="button" class="toggle-btn">
59 59
                         <span class="toggle-indicator dashicons dashicons-arrow-up dashicons-arrow-down"></span>
60 60
                     </button>
61 61
                     <div class="howto-wrap hidden">
62
-                        <p><?php _e( 'TL;DR:<br /><strong>Queue runs every 10 minutes.</strong> Job statuses are <span class="badge new">N</span> for NEW, <span class="badge pending">P</span> for PENDING, <span class="badge error">E</span> for ERROR and <span class="badge unknown">U</span> for UNKOWN.', 'autoptimize' ); ?></p>
62
+                        <p><?php _e('TL;DR:<br /><strong>Queue runs every 10 minutes.</strong> Job statuses are <span class="badge new">N</span> for NEW, <span class="badge pending">P</span> for PENDING, <span class="badge error">E</span> for ERROR and <span class="badge unknown">U</span> for UNKOWN.', 'autoptimize'); ?></p>
63 63
                         <ol>
64
-                            <li><?php _e( 'The queue operates <strong>automatically, asynchronously and on regular intervals of 10 minutes.</strong> To view updated queue status, refresh this page.', 'autoptimize' ); ?></li>
65
-                            <li><?php _e( 'When the conditions to create a job are met (i.e. user not logged in, no matching <span class="badge manual">MANUAL</span> rule or CSS files has changed for an <span class="badge auto">AUTO</span> rule), a <span class="badge new">N</span> job is created in the queue.', 'autoptimize' ); ?></li>
66
-                            <li><?php _e( "Autoptimize CriticalCSS Power-Up constantly query the queue for <span class='badge new'>N</span> jobs. When it finds one, gears spins and jobs becomes <span class='badge pending'>P</span> while they are running and <a href='https://criticalcss.com/?aff=1' target='_blank'>criticalcss.com</a> doesn't return a result.", 'autoptimize' ); ?></li>
67
-                            <li><?php _e( 'As soon as <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> returns a valid critical CSS file, the job is then finished and removed from the queue.', 'autoptimize' ); ?></li>
68
-                            <li><?php _e( 'When things go wrong, a job is marked as <span class="badge error">E</span>. You can retry faulty jobs, delete them or get in touch with <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> for assistance.', 'autoptimize' ); ?></li>
69
-                            <li><?php _e( 'Sometimes an unknown condition can happen. In this case, the job status becomes <span class="badge unknown">U</span> and you may want to ask <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> for help or just delete it.', 'autoptimize' ); ?></li>
70
-                            <li><?php _e( 'To get more information about jobs statuses, specially the ones with <span class="badge error">E</span> and <span class="badge unknown">U</span> status, hover your mouse in the status badge of that job. This information might be crucial when contacting <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> for assistance.', 'autoptimize' ); ?></li>
71
-                            <li><?php _e( '<strong>A word about WordPress cron:</strong> Autoptimize CriticalCSS Power-Up watch the queue by using WordPress Cron (or WP-Cron for short.) It <a href="https://www.smashingmagazine.com/2013/10/schedule-events-using-wordpress-cron/#limitations-of-wordpress-cron-and-solutions-to-fix-em" target="_blank">could be faulty</a> on very light or very heavy loads. If your site receives just a few or thousands visits a day, it might be a good idea to <a href="https://developer.wordpress.org/plugins/cron/hooking-into-the-system-task-scheduler/" target="_blank">turn WP-Cron off and use your system task scheduler</a> to fire it instead.', 'autoptimize' ); ?></li>
64
+                            <li><?php _e('The queue operates <strong>automatically, asynchronously and on regular intervals of 10 minutes.</strong> To view updated queue status, refresh this page.', 'autoptimize'); ?></li>
65
+                            <li><?php _e('When the conditions to create a job are met (i.e. user not logged in, no matching <span class="badge manual">MANUAL</span> rule or CSS files has changed for an <span class="badge auto">AUTO</span> rule), a <span class="badge new">N</span> job is created in the queue.', 'autoptimize'); ?></li>
66
+                            <li><?php _e("Autoptimize CriticalCSS Power-Up constantly query the queue for <span class='badge new'>N</span> jobs. When it finds one, gears spins and jobs becomes <span class='badge pending'>P</span> while they are running and <a href='https://criticalcss.com/?aff=1' target='_blank'>criticalcss.com</a> doesn't return a result.", 'autoptimize'); ?></li>
67
+                            <li><?php _e('As soon as <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> returns a valid critical CSS file, the job is then finished and removed from the queue.', 'autoptimize'); ?></li>
68
+                            <li><?php _e('When things go wrong, a job is marked as <span class="badge error">E</span>. You can retry faulty jobs, delete them or get in touch with <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> for assistance.', 'autoptimize'); ?></li>
69
+                            <li><?php _e('Sometimes an unknown condition can happen. In this case, the job status becomes <span class="badge unknown">U</span> and you may want to ask <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> for help or just delete it.', 'autoptimize'); ?></li>
70
+                            <li><?php _e('To get more information about jobs statuses, specially the ones with <span class="badge error">E</span> and <span class="badge unknown">U</span> status, hover your mouse in the status badge of that job. This information might be crucial when contacting <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> for assistance.', 'autoptimize'); ?></li>
71
+                            <li><?php _e('<strong>A word about WordPress cron:</strong> Autoptimize CriticalCSS Power-Up watch the queue by using WordPress Cron (or WP-Cron for short.) It <a href="https://www.smashingmagazine.com/2013/10/schedule-events-using-wordpress-cron/#limitations-of-wordpress-cron-and-solutions-to-fix-em" target="_blank">could be faulty</a> on very light or very heavy loads. If your site receives just a few or thousands visits a day, it might be a good idea to <a href="https://developer.wordpress.org/plugins/cron/hooking-into-the-system-task-scheduler/" target="_blank">turn WP-Cron off and use your system task scheduler</a> to fire it instead.', 'autoptimize'); ?></li>
72 72
                         </ol>
73 73
                     </div>
74 74
                 </div>
75 75
                 <table id="queue-tbl" class="queue tablesorter" cellspacing="0">
76 76
                     <thead>
77
-                        <tr><th class="status"><?php _e( 'Status', 'autoptimize' ); ?></th><th><?php _e( 'Target Rule', 'autoptimize' ); ?></th><th><?php _e( 'Page Path', 'autoptimize' ); ?></th><th><?php _e( 'Page Type', 'autoptimize' ); ?></th><th><?php _e( 'Creation Date', 'autoptimize' ); ?></th><th><?php _e( 'Finish Date', 'autoptimize' ); ?></th><th class="btn"><?php _e( 'Actions', 'autoptimize' ); ?></th></tr>
77
+                        <tr><th class="status"><?php _e('Status', 'autoptimize'); ?></th><th><?php _e('Target Rule', 'autoptimize'); ?></th><th><?php _e('Page Path', 'autoptimize'); ?></th><th><?php _e('Page Type', 'autoptimize'); ?></th><th><?php _e('Creation Date', 'autoptimize'); ?></th><th><?php _e('Finish Date', 'autoptimize'); ?></th><th class="btn"><?php _e('Actions', 'autoptimize'); ?></th></tr>
78 78
                     </thead>
79 79
                     <tbody id="queue"></tbody>
80 80
                 </table>
81
-                <input class="hidden" type="text" id="ao-ccss-queue" name="autoptimize_ccss_queue" value='<?php echo( $ao_ccss_queue ); ?>'>
81
+                <input class="hidden" type="text" id="ao-ccss-queue" name="autoptimize_ccss_queue" value='<?php echo($ao_ccss_queue); ?>'>
82 82
                 <div class="submit jobs-btn">
83 83
                     <div class="alignright">
84
-                        <span id="removeAllJobs" class="button-secondary" style="color:red;"><?php _e( 'Remove all jobs', 'autoptimize' ); ?></span>
84
+                        <span id="removeAllJobs" class="button-secondary" style="color:red;"><?php _e('Remove all jobs', 'autoptimize'); ?></span>
85 85
                     </div>
86 86
                 </div>
87 87
             </div>
Please login to merge, or discard this patch.
classes/critcss-inc/admin_settings_queue.js.php 1 patch
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -20,7 +20,7 @@  discard block
 block discarded – undo
20 20
                                 "empty" :
21 21
                                 aoCssQueue;
22 22
         <?php
23
-        if ( $ao_ccss_debug ) {
23
+        if ($ao_ccss_debug) {
24 24
             echo "console.log( 'Queue Object:', aoCssQueueLog );\n";
25 25
         }
26 26
         ?>
@@ -62,34 +62,34 @@  discard block
 block discarded – undo
62 62
             // Status: NEW (N, sort order 1)
63 63
             status      = '<span class="hidden">1</span>N';
64 64
             statusClass = 'new';
65
-            title       = '<?php _e( 'New', 'autoptimize' ); ?> (' + ljid + ')';
66
-            buttons     = '<?php _e( 'None', 'autoptimize' ); ?>';
65
+            title       = '<?php _e('New', 'autoptimize'); ?> (' + ljid + ')';
66
+            buttons     = '<?php _e('None', 'autoptimize'); ?>';
67 67
         } else if (keys.jqstat === 'JOB_QUEUED' || keys.jqstat === 'JOB_ONGOING') {
68 68
             // Status: PENDING (P, sort order 2)
69 69
             status      = '<span class="hidden">2</span>P';
70 70
             statusClass = 'pending';
71
-            title       = '<?php _e( 'PENDING', 'autoptimize' ); ?> (' + ljid + ')';
72
-            buttons     = '<?php _e( 'None', 'autoptimize' ); ?>';
71
+            title       = '<?php _e('PENDING', 'autoptimize'); ?> (' + ljid + ')';
72
+            buttons     = '<?php _e('None', 'autoptimize'); ?>';
73 73
         } else if (keys.jqstat === 'JOB_DONE' && keys.jrstat === 'GOOD' && (keys.jvstat === 'WARN' || keys.jvstat === 'BAD')) {
74 74
             // Status: REVIEW (R, sort order 5)
75 75
             status      = '<span class="hidden">5</span>R';
76 76
             statusClass = 'review';
77
-            title       = "<?php _e( 'REVIEW', 'autoptimize' ); ?> (" + ljid + ")\n<?php _e( 'Info from criticalcss.com:', 'autoptimize' ); ?>\n<?php _e( '- Job ID: ', 'autoptimize' ); ?>" + keys.jid + "\n<?php _e( '- Status: ', 'autoptimize' ); ?>" + keys.jqstat + "\n<?php _e( '- Result: ', 'autoptimize' ); ?>" + keys.jrstat + "\n<?php _e( '- Validation: ', 'autoptimize' ); ?>" + keys.jvstat;
78
-            buttons     = '<span class="button-secondary" id="' + ljid + '_remove" title="<?php _e( 'Delete Job', 'autoptimize' ); ?>"><span class="dashicons dashicons-trash"></span></span>';
77
+            title       = "<?php _e('REVIEW', 'autoptimize'); ?> (" + ljid + ")\n<?php _e('Info from criticalcss.com:', 'autoptimize'); ?>\n<?php _e('- Job ID: ', 'autoptimize'); ?>" + keys.jid + "\n<?php _e('- Status: ', 'autoptimize'); ?>" + keys.jqstat + "\n<?php _e('- Result: ', 'autoptimize'); ?>" + keys.jrstat + "\n<?php _e('- Validation: ', 'autoptimize'); ?>" + keys.jvstat;
78
+            buttons     = '<span class="button-secondary" id="' + ljid + '_remove" title="<?php _e('Delete Job', 'autoptimize'); ?>"><span class="dashicons dashicons-trash"></span></span>';
79 79
             dbtn        = true;
80 80
         } else if (keys.jqstat === 'JOB_DONE') {
81 81
             // Status: DONE (D, sort order 6)
82 82
             status      = '<span class="hidden">6</span>D';
83 83
             statusClass = 'done';
84
-            title       = '<?php _e( 'DONE', 'autoptimize' ); ?> (' + ljid + ')';
85
-            buttons     = '<span class="button-secondary" id="' + ljid + '_remove" title="<?php _e( 'Delete Job', 'autoptimize' ); ?>"><span class="dashicons dashicons-trash"></span></span>';
84
+            title       = '<?php _e('DONE', 'autoptimize'); ?> (' + ljid + ')';
85
+            buttons     = '<span class="button-secondary" id="' + ljid + '_remove" title="<?php _e('Delete Job', 'autoptimize'); ?>"><span class="dashicons dashicons-trash"></span></span>';
86 86
             dbtn        = true;
87 87
         } else if (keys.jqstat === 'JOB_FAILED' || keys.jqstat === 'STATUS_JOB_BAD' || keys.jqstat === 'INVALID_JWT_TOKEN' || keys.jqstat === 'NO_CSS' || keys.jqstat === 'NO_RESPONSE') {
88 88
         // Status: ERROR (E, sort order 4)
89 89
             status      = '<span class="hidden">4</span>E';
90 90
             statusClass = 'error';
91
-            title       = "<?php _e( 'ERROR', 'autoptimize' ); ?> (" + ljid + ")\n<?php _e( 'Info from criticalcss.com:', 'autoptimize' ); ?>\n<?php _e( '- Job ID: ', 'autoptimize' ); ?>" + keys.jid + "\n<?php _e( '- Status: ', 'autoptimize' ); ?>" + keys.jqstat + "\n<?php _e( '- Result: ', 'autoptimize' ); ?>" + keys.jrstat + "\n<?php _e( '- Validation: ', 'autoptimize' ); ?>" + keys.jvstat;
92
-            buttons     = '<span class="button-secondary" id="' + ljid + '_retry" title="<?php _e( 'Retry Job', 'autoptimize' ); ?>"><span class="dashicons dashicons-update"></span></span><span class="button-secondary to-right" id="' + ljid + '_remove" title="<?php _e( 'Delete Job', 'autoptimize' ); ?>"><span class="dashicons dashicons-trash"></span></span><span class="button-secondary to-right" id="' + ljid + '_help" title="<?php _e( 'Get Help', 'autoptimize' ); ?>"><span class="dashicons dashicons-sos"></span></span>';
91
+            title       = "<?php _e('ERROR', 'autoptimize'); ?> (" + ljid + ")\n<?php _e('Info from criticalcss.com:', 'autoptimize'); ?>\n<?php _e('- Job ID: ', 'autoptimize'); ?>" + keys.jid + "\n<?php _e('- Status: ', 'autoptimize'); ?>" + keys.jqstat + "\n<?php _e('- Result: ', 'autoptimize'); ?>" + keys.jrstat + "\n<?php _e('- Validation: ', 'autoptimize'); ?>" + keys.jvstat;
92
+            buttons     = '<span class="button-secondary" id="' + ljid + '_retry" title="<?php _e('Retry Job', 'autoptimize'); ?>"><span class="dashicons dashicons-update"></span></span><span class="button-secondary to-right" id="' + ljid + '_remove" title="<?php _e('Delete Job', 'autoptimize'); ?>"><span class="dashicons dashicons-trash"></span></span><span class="button-secondary to-right" id="' + ljid + '_help" title="<?php _e('Get Help', 'autoptimize'); ?>"><span class="dashicons dashicons-sos"></span></span>';
93 93
             rbtn        = true;
94 94
             dbtn        = true;
95 95
             hbtn        = true;
@@ -97,21 +97,21 @@  discard block
 block discarded – undo
97 97
             // Status: UNKNOWN (U, sort order 5)
98 98
             status      = '<span class="hidden">5</span>U';
99 99
             statusClass = 'unknown';
100
-            title       = "<?php _e( 'UNKNOWN', 'autoptimize' ); ?> (" + ljid + ")\n<?php _e( 'Info from criticalcss.com:', 'autoptimize' ); ?>\n<?php _e( '- Job ID: ', 'autoptimize' ); ?>" + keys.jid + "\n<?php _e( '- Status: ', 'autoptimize' ); ?>" + keys.jqstat + "\n<?php _e( '- Result: ', 'autoptimize' ); ?>" + keys.jrstat + "\n<?php _e( '- Validation: ', 'autoptimize' ); ?>" + keys.jvstat;
101
-            buttons     = '<span class="button-secondary" id="' + ljid + '_remove" title="<?php _e( 'Delete Job', 'autoptimize' ); ?>"><span class="dashicons dashicons-trash"></span></span><span class="button-secondary to-right" id="' + ljid + '_help" title="<?php _e( 'Get Help', 'autoptimize' ); ?>"><span class="dashicons dashicons-sos"></span></span>';
100
+            title       = "<?php _e('UNKNOWN', 'autoptimize'); ?> (" + ljid + ")\n<?php _e('Info from criticalcss.com:', 'autoptimize'); ?>\n<?php _e('- Job ID: ', 'autoptimize'); ?>" + keys.jid + "\n<?php _e('- Status: ', 'autoptimize'); ?>" + keys.jqstat + "\n<?php _e('- Result: ', 'autoptimize'); ?>" + keys.jrstat + "\n<?php _e('- Validation: ', 'autoptimize'); ?>" + keys.jvstat;
101
+            buttons     = '<span class="button-secondary" id="' + ljid + '_remove" title="<?php _e('Delete Job', 'autoptimize'); ?>"><span class="dashicons dashicons-trash"></span></span><span class="button-secondary to-right" id="' + ljid + '_help" title="<?php _e('Get Help', 'autoptimize'); ?>"><span class="dashicons dashicons-sos"></span></span>';
102 102
             dbtn        = true;
103 103
             hbtn        = true;
104 104
         }
105 105
 
106 106
         // Prepare job finish time
107 107
         if (keys.jftime === null) {
108
-            ftime = '<?php _e( 'N/A', 'autoptimize' ); ?>';
108
+            ftime = '<?php _e('N/A', 'autoptimize'); ?>';
109 109
         } else {
110 110
             ftime = EpochToDate(keys.jftime);
111 111
         }
112 112
 
113 113
         // Append job entry
114
-        jQuery("#queue").append("<tr id='" + ljid + "' class='job " + statusClass + "'><td class='status'><span class='badge " + statusClass + "' title='<?php _e( 'Job status is ', 'autoptimize' ); ?>" + title + "'>" + status + "</span></td><td>" + target.replace(/(woo_|template_|custom_post_|edd_|bp_|bbp_)/,'') + "</td><td>" + path + "</td><td>" + type.replace(/(woo_|template_|custom_post_|edd_|bp_|bbp_)/,'') + "</td><td>" + ctime + "</td><td>" + ftime + "</td><td class='btn'>" + buttons + "</td></tr>");
114
+        jQuery("#queue").append("<tr id='" + ljid + "' class='job " + statusClass + "'><td class='status'><span class='badge " + statusClass + "' title='<?php _e('Job status is ', 'autoptimize'); ?>" + title + "'>" + status + "</span></td><td>" + target.replace(/(woo_|template_|custom_post_|edd_|bp_|bbp_)/,'') + "</td><td>" + path + "</td><td>" + type.replace(/(woo_|template_|custom_post_|edd_|bp_|bbp_)/,'') + "</td><td>" + ctime + "</td><td>" + ftime + "</td><td class='btn'>" + buttons + "</td></tr>");
115 115
 
116 116
         // Attach button actions
117 117
         if (rbtn) {
@@ -134,12 +134,12 @@  discard block
 block discarded – undo
134 134
         height: 180,
135 135
         modal: true,
136 136
         buttons: {
137
-            <?php _e( 'Delete', 'autoptimize' ); ?>: function() {
137
+            <?php _e('Delete', 'autoptimize'); ?>: function() {
138 138
                 delete queue[jpath];
139 139
                 updateQueue(queue);
140 140
                 jQuery(this).dialog('close' );
141 141
             },
142
-            <?php _e( 'Cancel', 'autoptimize' ); ?>: function() {
142
+            <?php _e('Cancel', 'autoptimize'); ?>: function() {
143 143
                 jQuery(this).dialog('close' );
144 144
             }
145 145
         }
@@ -152,12 +152,12 @@  discard block
 block discarded – undo
152 152
         height:235,
153 153
         modal: true,
154 154
         buttons: {
155
-            "<?php _e( 'Delete all jobs?', 'autoptimize' ); ?>": function() {
155
+            "<?php _e('Delete all jobs?', 'autoptimize'); ?>": function() {
156 156
                 queue=[];
157 157
                 updateQueue(queue);
158 158
                 jQuery( this ).dialog( "close" );
159 159
             },
160
-            "<?php _e( 'Cancel', 'autoptimize' ); ?>": function() {
160
+            "<?php _e('Cancel', 'autoptimize'); ?>": function() {
161 161
                 jQuery( this ).dialog( "close" );
162 162
             }
163 163
         }
@@ -172,9 +172,9 @@  discard block
 block discarded – undo
172 172
         height: 180,
173 173
         modal: true,
174 174
         buttons: {
175
-            <?php _e( 'Retry', 'autoptimize' ); ?>: function() {
175
+            <?php _e('Retry', 'autoptimize'); ?>: function() {
176 176
                 <?php
177
-                if ( $ao_ccss_debug ) {
177
+                if ($ao_ccss_debug) {
178 178
                     echo "console.log( 'SHOULD retry job:', jid[0], jpath );\n";
179 179
                 }
180 180
                 ?>
@@ -187,7 +187,7 @@  discard block
 block discarded – undo
187 187
                 updateQueue(queue);
188 188
                 jQuery(this).dialog('close' );
189 189
             },
190
-            <?php _e( 'Cancel', 'autoptimize' ); ?>: function() {
190
+            <?php _e('Cancel', 'autoptimize'); ?>: function() {
191 191
                 jQuery(this).dialog('close' );
192 192
             }
193 193
         }
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
     jQuery('#unSavedWarning').show();
202 202
     document.getElementById('ao_title_and_button').scrollIntoView();  
203 203
     <?php
204
-    if ( $ao_ccss_debug ) {
204
+    if ($ao_ccss_debug) {
205 205
         echo "console.log('Updated Queue Object:', queue);\n";
206 206
     }
207 207
     ?>
Please login to merge, or discard this patch.
classes/critcss-inc/admin_settings_adv.php 1 patch
Spacing   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
     global $ao_ccss_domain;
19 19
 
20 20
     // In case domain is not set yet (done in cron.php).
21
-    if ( empty( $ao_ccss_domain ) ) {
21
+    if (empty($ao_ccss_domain)) {
22 22
         $ao_ccss_domain = get_site_url();
23 23
     }
24 24
 
@@ -27,7 +27,7 @@  discard block
 block discarded – undo
27 27
 ?>
28 28
     <ul id="adv-panel">
29 29
         <li class="itemDetail">
30
-            <h2 class="itemTitle fleft"><?php _e( 'Advanced Settings', 'autoptimize' ); ?></h2>
30
+            <h2 class="itemTitle fleft"><?php _e('Advanced Settings', 'autoptimize'); ?></h2>
31 31
             <button type="button" class="toggle-btn">
32 32
                 <span class="toggle-indicator dashicons dashicons-arrow-up dashicons-arrow-down"></span>
33 33
             </button>
@@ -35,103 +35,103 @@  discard block
 block discarded – undo
35 35
                 <table id="key" class="form-table">
36 36
                     <tr>
37 37
                         <th scope="row">
38
-                            <?php _e( 'Viewport Size', 'autoptimize' ); ?>
38
+                            <?php _e('Viewport Size', 'autoptimize'); ?>
39 39
                         </th>
40 40
                         <td>
41
-                            <label for="autoptimize_ccss_vw"><?php _e( 'Width', 'autoptimize' ); ?>:</label> <input type="number" id="autoptimize_ccss_vw" name="autoptimize_ccss_viewport[w]" min="800" max="4096" placeholder="1400" value="<?php echo $viewport['w']; ?>" />&nbsp;&nbsp;
42
-                            <label for="autoptimize_ccss_vh"><?php _e( 'Height', 'autoptimize' ); ?>:</label> <input type="number" id="autoptimize_ccss_vh" name="autoptimize_ccss_viewport[h]" min="600" max="2160" placeholder="1080" value="<?php echo $viewport['h']; ?>" />
41
+                            <label for="autoptimize_ccss_vw"><?php _e('Width', 'autoptimize'); ?>:</label> <input type="number" id="autoptimize_ccss_vw" name="autoptimize_ccss_viewport[w]" min="800" max="4096" placeholder="1400" value="<?php echo $viewport['w']; ?>" />&nbsp;&nbsp;
42
+                            <label for="autoptimize_ccss_vh"><?php _e('Height', 'autoptimize'); ?>:</label> <input type="number" id="autoptimize_ccss_vh" name="autoptimize_ccss_viewport[h]" min="600" max="2160" placeholder="1080" value="<?php echo $viewport['h']; ?>" />
43 43
                             <p class="notes">
44
-                                <?php _e( '<a href="https://criticalcss.com/account/api-keys?aff=1" target="_blank">criticalcss.com</a> default viewport size is 1400x1080 pixels (width x height). You can change this size by typing a desired width and height values above. Allowed value ranges are from 800 to 4096 for width and from 600 to 2160 for height.', 'autoptimize' ); ?>
44
+                                <?php _e('<a href="https://criticalcss.com/account/api-keys?aff=1" target="_blank">criticalcss.com</a> default viewport size is 1400x1080 pixels (width x height). You can change this size by typing a desired width and height values above. Allowed value ranges are from 800 to 4096 for width and from 600 to 2160 for height.', 'autoptimize'); ?>
45 45
                             </p>
46 46
                         </td>
47 47
                     </tr>
48 48
                     <tr>
49 49
                         <th scope="row">
50
-                            <?php _e( 'Force Include CSS selectors', 'autoptimize' ); ?>
50
+                            <?php _e('Force Include CSS selectors', 'autoptimize'); ?>
51 51
                         </th>
52 52
                         <td>
53
-                            <textarea id="autoptimize_ccss_finclude" name="autoptimize_ccss_finclude" rows='3' maxlenght='500' style="width:100%;" placeholder="<?php _e( '.button-special,//#footer', 'autoptimize' ); ?>"><?php echo trim( $ao_ccss_finclude ); ?></textarea>
53
+                            <textarea id="autoptimize_ccss_finclude" name="autoptimize_ccss_finclude" rows='3' maxlenght='500' style="width:100%;" placeholder="<?php _e('.button-special,//#footer', 'autoptimize'); ?>"><?php echo trim($ao_ccss_finclude); ?></textarea>
54 54
                             <p class="notes">
55
-                                <?php _e( 'Force include CSS selectors can be used to style dynamic content that is not part of the HTML that is seen during the Critical CSS generation. To use this feature, add comma separated values with both simple strings and/or regular expressions to match the desired selectors. Regular expressions must be preceeded by two forward slashes. For instance: <code>.button-special,//#footer</code>. In this example <code>.button-special</code> will match <code>.button-special</code> selector only, while <code>//#footer</code> will match <code>#footer</code>, <code>#footer-address</code> and <code>#footer-phone</code> selectors in case they exist.<br />Do take into account that changing this setting will only affect new/ updated rules, so you might want to remove old rules and clear your page cache to expedite the forceIncludes becoming used.', 'autoptimize' ); ?>
55
+                                <?php _e('Force include CSS selectors can be used to style dynamic content that is not part of the HTML that is seen during the Critical CSS generation. To use this feature, add comma separated values with both simple strings and/or regular expressions to match the desired selectors. Regular expressions must be preceeded by two forward slashes. For instance: <code>.button-special,//#footer</code>. In this example <code>.button-special</code> will match <code>.button-special</code> selector only, while <code>//#footer</code> will match <code>#footer</code>, <code>#footer-address</code> and <code>#footer-phone</code> selectors in case they exist.<br />Do take into account that changing this setting will only affect new/ updated rules, so you might want to remove old rules and clear your page cache to expedite the forceIncludes becoming used.', 'autoptimize'); ?>
56 56
                             </p>
57 57
                         </td>
58 58
                     </tr>
59 59
                     <tr>
60 60
                         <th scope="row">
61
-                            <?php _e( 'Request Limit', 'autoptimize' ); ?>
61
+                            <?php _e('Request Limit', 'autoptimize'); ?>
62 62
                         </th>
63 63
                         <td>
64 64
                             <input type="number" id="autoptimize_ccss_rlimit" name="autoptimize_ccss_rlimit" min="1" max="240" placeholder="0" value="<?php echo $ao_ccss_rlimit; ?>" />
65 65
                             <p class="notes">
66
-                                <?php _e( 'Certain hosting services impose hard limitations to background processes on either execution time, requests made from your server to any third party services, or both. This could lead to a faulty operation of the queue background process triggered by WP-Cron. If automated rules are not being created, you may be facing this limitation from your hosting provider. In that case, set the request limit to a reasonable number between 1 and 240. The queue fire a request to <a href="https://criticalcss.com/account/api-keys?aff=1" target="_blank">criticalcss.com</a> on every 15 seconds (due to service limitations). If your hosting provider allows a 60 seconds time span to background processes runtime, set this value to 3 or 4 so the queue can operate within the boundaries. The maximum value of 240 allows enough requests for one hour long. To disable this limit and to let requests be made at will, just delete any values in this setting (a grey 0 will show).', 'autoptimize' ); ?>
66
+                                <?php _e('Certain hosting services impose hard limitations to background processes on either execution time, requests made from your server to any third party services, or both. This could lead to a faulty operation of the queue background process triggered by WP-Cron. If automated rules are not being created, you may be facing this limitation from your hosting provider. In that case, set the request limit to a reasonable number between 1 and 240. The queue fire a request to <a href="https://criticalcss.com/account/api-keys?aff=1" target="_blank">criticalcss.com</a> on every 15 seconds (due to service limitations). If your hosting provider allows a 60 seconds time span to background processes runtime, set this value to 3 or 4 so the queue can operate within the boundaries. The maximum value of 240 allows enough requests for one hour long. To disable this limit and to let requests be made at will, just delete any values in this setting (a grey 0 will show).', 'autoptimize'); ?>
67 67
                             </p>
68 68
                         </td>
69 69
                     </tr>
70 70
                     <tr>
71 71
                         <th scope="row">
72
-                            <?php _e( 'Fetch Original CSS', 'autoptimize' ); ?>
72
+                            <?php _e('Fetch Original CSS', 'autoptimize'); ?>
73 73
                         </th>
74 74
                         <td>
75
-                            <input type="checkbox" id="autoptimize_ccss_noptimize" name="autoptimize_ccss_noptimize" value="1" <?php checked( 1 == $ao_ccss_noptimize ); ?>>
75
+                            <input type="checkbox" id="autoptimize_ccss_noptimize" name="autoptimize_ccss_noptimize" value="1" <?php checked(1 == $ao_ccss_noptimize); ?>>
76 76
                             <p class="notes">
77
-                                <?php _e( 'In some (rare) cases the generation of critical CSS works better with the original CSS instead of the Autoptimized one, this option enables that behavior.', 'autoptimize' ); ?>
77
+                                <?php _e('In some (rare) cases the generation of critical CSS works better with the original CSS instead of the Autoptimized one, this option enables that behavior.', 'autoptimize'); ?>
78 78
                             </p>
79 79
                         </td>
80 80
                     </tr>
81 81
                     <tr>
82 82
                         <th scope="row">
83
-                            <?php _e( 'Add CCSS for logged in users?', 'autoptimize' ); ?>
83
+                            <?php _e('Add CCSS for logged in users?', 'autoptimize'); ?>
84 84
                         </th>
85 85
                         <td>
86
-                            <input type="checkbox" id="autoptimize_ccss_loggedin" name="autoptimize_ccss_loggedin" value="1" <?php checked( 1 == $ao_ccss_loggedin ); ?>>
86
+                            <input type="checkbox" id="autoptimize_ccss_loggedin" name="autoptimize_ccss_loggedin" value="1" <?php checked(1 == $ao_ccss_loggedin); ?>>
87 87
                             <p class="notes">
88
-                                <?php _e( 'Critical CSS is generated by criticalcss.com from your pages as seen be "anonymous visitor", disable this option if you don\'t want the "visitor" critical CSS to be used for logged on users.', 'autoptimize' ); ?>
88
+                                <?php _e('Critical CSS is generated by criticalcss.com from your pages as seen be "anonymous visitor", disable this option if you don\'t want the "visitor" critical CSS to be used for logged on users.', 'autoptimize'); ?>
89 89
                             </p>
90 90
                         </td>
91 91
                     </tr>
92 92
                     <tr>
93 93
                         <th scope="row">
94
-                            <?php _e( 'Force path-based rules to be generated for pages?', 'autoptimize' ); ?>
94
+                            <?php _e('Force path-based rules to be generated for pages?', 'autoptimize'); ?>
95 95
                         </th>
96 96
                         <td>
97
-                            <input type="checkbox" id="autoptimize_ccss_forcepath" name="autoptimize_ccss_forcepath" value="1" <?php checked( 1 == $ao_ccss_forcepath ); ?>>
97
+                            <input type="checkbox" id="autoptimize_ccss_forcepath" name="autoptimize_ccss_forcepath" value="1" <?php checked(1 == $ao_ccss_forcepath); ?>>
98 98
                             <p class="notes">
99
-                                <?php _e( 'By default for each page a separate rule is generated. If your pages have (semi-)identical above the fold look and feel and you want to keep the rules lean, you can disable that so one rule is created to all pages.', 'autoptimize' ); ?>
99
+                                <?php _e('By default for each page a separate rule is generated. If your pages have (semi-)identical above the fold look and feel and you want to keep the rules lean, you can disable that so one rule is created to all pages.', 'autoptimize'); ?>
100 100
                             </p>
101 101
                         </td>
102 102
                     </tr>
103 103
                     <tr>
104 104
                         <th scope="row">
105
-                            <?php _e( 'Defer jQuery and other non-aggregated JS-files?', 'autoptimize' ); ?>
105
+                            <?php _e('Defer jQuery and other non-aggregated JS-files?', 'autoptimize'); ?>
106 106
                         </th>
107 107
                         <td>
108
-                            <input type="checkbox" id="autoptimize_ccss_deferjquery" name="autoptimize_ccss_deferjquery" value="1" <?php checked( 1 == $ao_ccss_deferjquery ); ?>>
108
+                            <input type="checkbox" id="autoptimize_ccss_deferjquery" name="autoptimize_ccss_deferjquery" value="1" <?php checked(1 == $ao_ccss_deferjquery); ?>>
109 109
                             <p class="notes">
110
-                                <?php _e( 'Defer all non-aggregated JS, including jQuery and inline JS to fix remaining render-blocking issues. Make sure to test your site thoroughly when activating this option!', 'autoptimize' ); ?>
110
+                                <?php _e('Defer all non-aggregated JS, including jQuery and inline JS to fix remaining render-blocking issues. Make sure to test your site thoroughly when activating this option!', 'autoptimize'); ?>
111 111
                             </p>
112 112
                         </td>
113 113
                     </tr>
114 114
                     <tr>
115 115
                         <th scope="row">
116
-                            <?php _e( 'Bound domain', 'autoptimize' ); ?>
116
+                            <?php _e('Bound domain', 'autoptimize'); ?>
117 117
                         </th>
118 118
                         <td>
119
-                            <input type="text" id="autoptimize_ccss_domain" name="autoptimize_ccss_domain" style="width:100%;" placeholder="<?php _e( 'Don\'t leave this empty, put e.g. https://example.net/ or simply \'none\' to disable domain binding.', 'autoptimize' ); ?>" value="<?php echo trim( $ao_ccss_domain ); ?>">
119
+                            <input type="text" id="autoptimize_ccss_domain" name="autoptimize_ccss_domain" style="width:100%;" placeholder="<?php _e('Don\'t leave this empty, put e.g. https://example.net/ or simply \'none\' to disable domain binding.', 'autoptimize'); ?>" value="<?php echo trim($ao_ccss_domain); ?>">
120 120
                             <p class="notes">
121
-                                <?php _e( 'Only requests from this domain will be sent for Critical CSS generation (pricing is per domain/ month).', 'autoptimize' ); ?>
121
+                                <?php _e('Only requests from this domain will be sent for Critical CSS generation (pricing is per domain/ month).', 'autoptimize'); ?>
122 122
                             </p>
123 123
                         </td>
124 124
                     </tr>
125 125
                     <tr>
126 126
                         <th scope="row">
127
-                            <?php _e( 'Debug Mode', 'autoptimize' ); ?>
127
+                            <?php _e('Debug Mode', 'autoptimize'); ?>
128 128
                         </th>
129 129
                         <td>
130
-                            <input type="checkbox" id="autoptimize_ccss_debug" name="autoptimize_ccss_debug" value="1" <?php checked( 1 == $ao_ccss_debug ); ?>>
130
+                            <input type="checkbox" id="autoptimize_ccss_debug" name="autoptimize_ccss_debug" value="1" <?php checked(1 == $ao_ccss_debug); ?>>
131 131
                             <p class="notes">
132 132
                                 <?php
133
-                                _e( '<strong>CAUTION! Only use debug mode on production/live environments for ad-hoc troubleshooting and remember to turn it back off after</strong>, as this generates a lot of log-data.<br />Check the box above to enable Autoptimize CriticalCSS Power-Up debug mode. It provides debug facilities in this screen, to the browser console and to this file: ', 'autoptimize' );
134
-                                echo '<code>' . AO_CCSS_LOG . '</code>';
133
+                                _e('<strong>CAUTION! Only use debug mode on production/live environments for ad-hoc troubleshooting and remember to turn it back off after</strong>, as this generates a lot of log-data.<br />Check the box above to enable Autoptimize CriticalCSS Power-Up debug mode. It provides debug facilities in this screen, to the browser console and to this file: ', 'autoptimize');
134
+                                echo '<code>'.AO_CCSS_LOG.'</code>';
135 135
                                 ?>
136 136
                             </p>
137 137
                         </td>
Please login to merge, or discard this patch.
classes/critcss-inc/admin_settings_impexp.js.php 1 patch
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -9,15 +9,15 @@  discard block
 block discarded – undo
9 9
     console.log('Exporting...');
10 10
     var data = {
11 11
         'action': 'ao_ccss_export',
12
-        'ao_ccss_export_nonce': '<?php echo wp_create_nonce( 'ao_ccss_export_nonce' ); ?>',
12
+        'ao_ccss_export_nonce': '<?php echo wp_create_nonce('ao_ccss_export_nonce'); ?>',
13 13
     };
14 14
 
15 15
     jQuery.post(ajaxurl, data, function(response) {
16 16
         response_array=JSON.parse(response);
17 17
         if (response_array['code'] == 200) {
18 18
             <?php
19
-            if ( is_multisite() ) {
20
-                $blog_id = '/' . get_current_blog_id() . '/';
19
+            if (is_multisite()) {
20
+                $blog_id = '/'.get_current_blog_id().'/';
21 21
             } else {
22 22
                 $blog_id = '/';
23 23
             }
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
             autoOpen: true,
33 33
             height: 210,
34 34
             width: 700,
35
-            title: "<?php _e( 'Export settings result', 'autoptimize' ); ?>",
35
+            title: "<?php _e('Export settings result', 'autoptimize'); ?>",
36 36
             modal: true,
37 37
             buttons: {
38 38
                 OK: function() {
@@ -50,7 +50,7 @@  discard block
 block discarded – undo
50 50
     var settings_file = file[0].files[0];
51 51
     fd.append('file', settings_file);
52 52
     fd.append('action', 'ao_ccss_import');
53
-    fd.append('ao_ccss_import_nonce', '<?php echo wp_create_nonce( 'ao_ccss_import_nonce' ); ?>');
53
+    fd.append('ao_ccss_import_nonce', '<?php echo wp_create_nonce('ao_ccss_import_nonce'); ?>');
54 54
 
55 55
     jQuery.ajax({
56 56
         url: ajaxurl,
Please login to merge, or discard this patch.