Completed
Push — master ( 6fcb0f...ff22b7 )
by frank
01:47
created
classes/autoptimizeCriticalCSSBase.php 1 patch
Spacing   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Critical CSS base file (initializes all ccss files).
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -19,27 +19,27 @@  discard block
 block discarded – undo
19 19
     public function __construct()
20 20
     {
21 21
         // define constant, but only once.
22
-        if ( ! defined( 'AO_CCSS_DIR' ) ) {
22
+        if (!defined('AO_CCSS_DIR')) {
23 23
             // Define plugin version.
24
-            define( 'AO_CCSS_VER', 'AO_' . AUTOPTIMIZE_PLUGIN_VERSION );
24
+            define('AO_CCSS_VER', 'AO_'.AUTOPTIMIZE_PLUGIN_VERSION);
25 25
 
26 26
             // Define a constant with the directory to store critical CSS in.
27
-            if ( is_multisite() ) {
27
+            if (is_multisite()) {
28 28
                 $blog_id = get_current_blog_id();
29
-                define( 'AO_CCSS_DIR', WP_CONTENT_DIR . '/uploads/ao_ccss/' . $blog_id . '/' );
29
+                define('AO_CCSS_DIR', WP_CONTENT_DIR.'/uploads/ao_ccss/'.$blog_id.'/');
30 30
             } else {
31
-                define( 'AO_CCSS_DIR', WP_CONTENT_DIR . '/uploads/ao_ccss/' );
31
+                define('AO_CCSS_DIR', WP_CONTENT_DIR.'/uploads/ao_ccss/');
32 32
             }
33 33
 
34 34
             // Define support files locations.
35
-            define( 'AO_CCSS_LOCK', AO_CCSS_DIR . 'queue.lock' );
36
-            define( 'AO_CCSS_LOG', AO_CCSS_DIR . 'queuelog.html' );
37
-            define( 'AO_CCSS_DEBUG', AO_CCSS_DIR . 'queue.json' );
35
+            define('AO_CCSS_LOCK', AO_CCSS_DIR.'queue.lock');
36
+            define('AO_CCSS_LOG', AO_CCSS_DIR.'queuelog.html');
37
+            define('AO_CCSS_DEBUG', AO_CCSS_DIR.'queue.json');
38 38
 
39 39
             // Define constants for criticalcss.com base path and API endpoints.
40 40
             // fixme: AO_CCSS_URL should be read from the autoptimize availability json stored as option.
41
-            define( 'AO_CCSS_URL', 'https://criticalcss.com' );
42
-            define( 'AO_CCSS_API', AO_CCSS_URL . '/api/premium/' );
41
+            define('AO_CCSS_URL', 'https://criticalcss.com');
42
+            define('AO_CCSS_API', AO_CCSS_URL.'/api/premium/');
43 43
         }
44 44
 
45 45
         $this->filepath = __FILE__;
@@ -52,19 +52,19 @@  discard block
 block discarded – undo
52 52
     {
53 53
         // get all options.
54 54
         $all_options = $this->fetch_options();
55
-        foreach ( $all_options as $option => $value ) {
55
+        foreach ($all_options as $option => $value) {
56 56
             ${$option} = $value;
57 57
         }
58 58
 
59 59
         // make sure the 10 minutes cron schedule is added.
60
-        add_filter( 'cron_schedules', array( $this, 'ao_ccss_interval' ) );
60
+        add_filter('cron_schedules', array($this, 'ao_ccss_interval'));
61 61
 
62 62
         // check if we need to upgrade.
63 63
         $this->check_upgrade();
64 64
 
65 65
         // make sure ao_ccss_queue is scheduled OK if an API key is set.
66
-        if ( isset( $ao_ccss_key ) && ! empty( $ao_ccss_key ) && ! wp_next_scheduled( 'ao_ccss_queue' ) ) {
67
-            wp_schedule_event( time(), apply_filters( 'ao_ccss_queue_schedule', 'ao_ccss' ), 'ao_ccss_queue' );
66
+        if (isset($ao_ccss_key) && !empty($ao_ccss_key) && !wp_next_scheduled('ao_ccss_queue')) {
67
+            wp_schedule_event(time(), apply_filters('ao_ccss_queue_schedule', 'ao_ccss'), 'ao_ccss_queue');
68 68
         }
69 69
     }
70 70
 
@@ -72,12 +72,12 @@  discard block
 block discarded – undo
72 72
         // Required libs, core is always needed.
73 73
         $criticalcss_core = new autoptimizeCriticalCSSCore();
74 74
 
75
-        if ( defined( 'DOING_CRON' ) || is_admin() ) {
75
+        if (defined('DOING_CRON') || is_admin()) {
76 76
             // TODO: also include if overridden somehow to force queue processing to be executed?
77 77
             $criticalcss_cron = new autoptimizeCriticalCSSCron();
78 78
         }
79 79
 
80
-        if ( is_admin() ) {
80
+        if (is_admin()) {
81 81
             $criticalcss_settings = new autoptimizeCriticalCSSSettings();
82 82
         } else {
83 83
             // enqueuing only done when not wp-admin.
@@ -87,48 +87,48 @@  discard block
 block discarded – undo
87 87
 
88 88
     public static function fetch_options() {
89 89
         // Get options.
90
-        $autoptimize_ccss_options['ao_css_defer']          = autoptimizeOptionWrapper::get_option( 'autoptimize_css_defer' );
91
-        $autoptimize_ccss_options['ao_css_defer_inline']   = autoptimizeOptionWrapper::get_option( 'autoptimize_css_defer_inline' );
92
-        $autoptimize_ccss_options['ao_ccss_rules_raw']     = get_option( 'autoptimize_ccss_rules', false );
93
-        $autoptimize_ccss_options['ao_ccss_additional']    = get_option( 'autoptimize_ccss_additional' );
94
-        $autoptimize_ccss_options['ao_ccss_queue_raw']     = get_option( 'autoptimize_ccss_queue', false );
95
-        $autoptimize_ccss_options['ao_ccss_viewport']      = get_option( 'autoptimize_ccss_viewport', false );
96
-        $autoptimize_ccss_options['ao_ccss_finclude']      = get_option( 'autoptimize_ccss_finclude', false );
97
-        $autoptimize_ccss_options['ao_ccss_rlimit']        = get_option( 'autoptimize_ccss_rlimit', '5' );
98
-        $autoptimize_ccss_options['ao_ccss_noptimize']     = get_option( 'autoptimize_ccss_noptimize', false );
99
-        $autoptimize_ccss_options['ao_ccss_debug']         = get_option( 'autoptimize_ccss_debug', false );
100
-        $autoptimize_ccss_options['ao_ccss_key']           = get_option( 'autoptimize_ccss_key' );
101
-        $autoptimize_ccss_options['ao_ccss_keyst']         = get_option( 'autoptimize_ccss_keyst' );
102
-        $autoptimize_ccss_options['ao_ccss_loggedin']      = get_option( 'autoptimize_ccss_loggedin', '1' );
103
-        $autoptimize_ccss_options['ao_ccss_forcepath']     = get_option( 'autoptimize_ccss_forcepath', '1' );
104
-        $autoptimize_ccss_options['ao_ccss_servicestatus'] = get_option( 'autoptimize_service_availablity' );
105
-        $autoptimize_ccss_options['ao_ccss_deferjquery']   = get_option( 'autoptimize_ccss_deferjquery', false );
106
-        $autoptimize_ccss_options['ao_ccss_domain']        = get_option( 'autoptimize_ccss_domain' );
107
-
108
-        if ( strpos( $autoptimize_ccss_options['ao_ccss_domain'], 'http' ) === false && strpos( $autoptimize_ccss_options['ao_ccss_domain'], 'uggc' ) === 0 ) {
109
-            $autoptimize_ccss_options['ao_ccss_domain'] = str_rot13( $autoptimize_ccss_options['ao_ccss_domain'] );
110
-        } elseif ( strpos( $autoptimize_ccss_options['ao_ccss_domain'], 'http' ) !== false ) {
90
+        $autoptimize_ccss_options['ao_css_defer']          = autoptimizeOptionWrapper::get_option('autoptimize_css_defer');
91
+        $autoptimize_ccss_options['ao_css_defer_inline']   = autoptimizeOptionWrapper::get_option('autoptimize_css_defer_inline');
92
+        $autoptimize_ccss_options['ao_ccss_rules_raw']     = get_option('autoptimize_ccss_rules', false);
93
+        $autoptimize_ccss_options['ao_ccss_additional']    = get_option('autoptimize_ccss_additional');
94
+        $autoptimize_ccss_options['ao_ccss_queue_raw']     = get_option('autoptimize_ccss_queue', false);
95
+        $autoptimize_ccss_options['ao_ccss_viewport']      = get_option('autoptimize_ccss_viewport', false);
96
+        $autoptimize_ccss_options['ao_ccss_finclude']      = get_option('autoptimize_ccss_finclude', false);
97
+        $autoptimize_ccss_options['ao_ccss_rlimit']        = get_option('autoptimize_ccss_rlimit', '5');
98
+        $autoptimize_ccss_options['ao_ccss_noptimize']     = get_option('autoptimize_ccss_noptimize', false);
99
+        $autoptimize_ccss_options['ao_ccss_debug']         = get_option('autoptimize_ccss_debug', false);
100
+        $autoptimize_ccss_options['ao_ccss_key']           = get_option('autoptimize_ccss_key');
101
+        $autoptimize_ccss_options['ao_ccss_keyst']         = get_option('autoptimize_ccss_keyst');
102
+        $autoptimize_ccss_options['ao_ccss_loggedin']      = get_option('autoptimize_ccss_loggedin', '1');
103
+        $autoptimize_ccss_options['ao_ccss_forcepath']     = get_option('autoptimize_ccss_forcepath', '1');
104
+        $autoptimize_ccss_options['ao_ccss_servicestatus'] = get_option('autoptimize_service_availablity');
105
+        $autoptimize_ccss_options['ao_ccss_deferjquery']   = get_option('autoptimize_ccss_deferjquery', false);
106
+        $autoptimize_ccss_options['ao_ccss_domain']        = get_option('autoptimize_ccss_domain');
107
+
108
+        if (strpos($autoptimize_ccss_options['ao_ccss_domain'], 'http') === false && strpos($autoptimize_ccss_options['ao_ccss_domain'], 'uggc') === 0) {
109
+            $autoptimize_ccss_options['ao_ccss_domain'] = str_rot13($autoptimize_ccss_options['ao_ccss_domain']);
110
+        } elseif (strpos($autoptimize_ccss_options['ao_ccss_domain'], 'http') !== false) {
111 111
             // not rot13'ed yet, do so now (goal; avoid migration plugins change the bound domain).
112
-            update_option( 'autoptimize_ccss_domain', str_rot13( $autoptimize_ccss_options['ao_ccss_domain'] ) );
112
+            update_option('autoptimize_ccss_domain', str_rot13($autoptimize_ccss_options['ao_ccss_domain']));
113 113
         }
114 114
 
115 115
         // Setup the rules array.
116
-        if ( empty( $autoptimize_ccss_options['ao_ccss_rules_raw'] ) ) {
116
+        if (empty($autoptimize_ccss_options['ao_ccss_rules_raw'])) {
117 117
             $autoptimize_ccss_options['ao_ccss_rules']['paths'] = array();
118 118
             $autoptimize_ccss_options['ao_ccss_rules']['types'] = array();
119 119
         } else {
120
-            $autoptimize_ccss_options['ao_ccss_rules'] = json_decode( $autoptimize_ccss_options['ao_ccss_rules_raw'], true );
120
+            $autoptimize_ccss_options['ao_ccss_rules'] = json_decode($autoptimize_ccss_options['ao_ccss_rules_raw'], true);
121 121
         }
122 122
 
123 123
         // Setup the queue array.
124
-        if ( empty( $autoptimize_ccss_options['ao_ccss_queue_raw'] ) ) {
124
+        if (empty($autoptimize_ccss_options['ao_ccss_queue_raw'])) {
125 125
             $autoptimize_ccss_options['ao_ccss_queue'] = array();
126 126
         } else {
127
-            $autoptimize_ccss_options['ao_ccss_queue'] = json_decode( $autoptimize_ccss_options['ao_ccss_queue_raw'], true );
127
+            $autoptimize_ccss_options['ao_ccss_queue'] = json_decode($autoptimize_ccss_options['ao_ccss_queue_raw'], true);
128 128
         }
129 129
 
130 130
         // Override API key if constant is defined.
131
-        if ( defined( 'AUTOPTIMIZE_CRITICALCSS_API_KEY' ) ) {
131
+        if (defined('AUTOPTIMIZE_CRITICALCSS_API_KEY')) {
132 132
             $autoptimize_ccss_options['ao_ccss_key'] = AUTOPTIMIZE_CRITICALCSS_API_KEY;
133 133
         }
134 134
 
@@ -139,49 +139,49 @@  discard block
 block discarded – undo
139 139
         global $ao_ccss_key;
140 140
 
141 141
         // Create the cache directory if it doesn't exist already.
142
-        if ( ! file_exists( AO_CCSS_DIR ) ) {
143
-            mkdir( AO_CCSS_DIR, 0755, true );
142
+        if (!file_exists(AO_CCSS_DIR)) {
143
+            mkdir(AO_CCSS_DIR, 0755, true);
144 144
         }
145 145
 
146 146
         // Create a scheduled event for the queue.
147
-        if ( isset( $ao_ccss_key ) && ! empty( $ao_ccss_key ) && ! wp_next_scheduled( 'ao_ccss_queue' ) ) {
148
-            wp_schedule_event( time(), apply_filters( 'ao_ccss_queue_schedule', 'ao_ccss' ), 'ao_ccss_queue' );
147
+        if (isset($ao_ccss_key) && !empty($ao_ccss_key) && !wp_next_scheduled('ao_ccss_queue')) {
148
+            wp_schedule_event(time(), apply_filters('ao_ccss_queue_schedule', 'ao_ccss'), 'ao_ccss_queue');
149 149
         }
150 150
 
151 151
         // Create a scheduled event for log maintenance.
152
-        if ( isset( $ao_ccss_key ) && ! empty( $ao_ccss_key ) && ! wp_next_scheduled( 'ao_ccss_maintenance' ) ) {
153
-            wp_schedule_event( time(), 'twicedaily', 'ao_ccss_maintenance' );
152
+        if (isset($ao_ccss_key) && !empty($ao_ccss_key) && !wp_next_scheduled('ao_ccss_maintenance')) {
153
+            wp_schedule_event(time(), 'twicedaily', 'ao_ccss_maintenance');
154 154
         }
155 155
     }
156 156
 
157 157
     public function check_upgrade() {
158
-        $db_version = get_option( 'autoptimize_ccss_version', '' );
159
-        if ( AO_CCSS_VER !== $db_version ) {
158
+        $db_version = get_option('autoptimize_ccss_version', '');
159
+        if (AO_CCSS_VER !== $db_version) {
160 160
             // check schedules & re-schedule if needed.
161 161
             $this->on_upgrade();
162 162
             // and update db_version.
163
-            update_option( 'autoptimize_ccss_version', AO_CCSS_VER );
163
+            update_option('autoptimize_ccss_version', AO_CCSS_VER);
164 164
         }
165 165
     }
166 166
 
167
-    public function ao_ccss_interval( $schedules ) {
167
+    public function ao_ccss_interval($schedules) {
168 168
         // Let interval be configurable.
169
-        if ( ! defined( 'AO_CCSS_DEBUG_INTERVAL' ) ) {
169
+        if (!defined('AO_CCSS_DEBUG_INTERVAL')) {
170 170
             $intsec = 600;
171 171
         } else {
172 172
             $intsec = AO_CCSS_DEBUG_INTERVAL;
173
-            if ( $intsec >= 120 ) {
174
-                $inttxt = $intsec / 60 . ' minutes';
173
+            if ($intsec >= 120) {
174
+                $inttxt = $intsec/60.' minutes';
175 175
             } else {
176
-                $inttxt = $intsec . ' second(s)';
176
+                $inttxt = $intsec.' second(s)';
177 177
             }
178
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Using custom WP-Cron interval of ' . $inttxt, 3 );
178
+            autoptimizeCriticalCSSCore::ao_ccss_log('Using custom WP-Cron interval of '.$inttxt, 3);
179 179
         }
180 180
 
181 181
         // Attach interval to schedule.
182 182
         $schedules['ao_ccss'] = array(
183 183
             'interval' => $intsec,
184
-            'display'  => __( 'Autoptimize CriticalCSS' ),
184
+            'display'  => __('Autoptimize CriticalCSS'),
185 185
         );
186 186
         return $schedules;
187 187
     }
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, '"' ) !== false ) {
349
-                $result = str_replace( '"', '', $result );
348
+            if (strpos($result, '"') !== false) {
349
+                $result = str_replace('"', '', $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( array( "\r\n", '&quot;' ), '', $matches[2] ) ) . '"', $out );
935
+            $out = str_replace($matches[1], $matches[1].' data-bg="'.trim(str_replace(array("\r\n", '&quot;'), '', $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/autoptimizeMain.php 1 patch
Spacing   +181 added lines, -181 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
                     }
@@ -335,15 +335,15 @@  discard block
 block discarded – undo
335 335
             }
336 336
 
337 337
             // If setting says not to optimize logged in user and user is logged in...
338
-            if ( false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_optimize_logged', 'on' ) && is_user_logged_in() && current_user_can( 'edit_posts' ) ) {
338
+            if (false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option('autoptimize_optimize_logged', 'on') && is_user_logged_in() && current_user_can('edit_posts')) {
339 339
                 $ao_noptimize = true;
340 340
             }
341 341
 
342 342
             // If setting says not to optimize cart/checkout.
343
-            if ( false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_optimize_checkout', 'off' ) ) {
343
+            if (false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option('autoptimize_optimize_checkout', 'off')) {
344 344
                 // Checking for woocommerce, easy digital downloads and wp ecommerce...
345
-                foreach ( array( 'is_checkout', 'is_cart', 'is_account_page', 'edd_is_checkout', 'wpsc_is_cart', 'wpsc_is_checkout' ) as $func ) {
346
-                    if ( function_exists( $func ) && $func() ) {
345
+                foreach (array('is_checkout', 'is_cart', 'is_account_page', 'edd_is_checkout', 'wpsc_is_cart', 'wpsc_is_checkout') as $func) {
346
+                    if (function_exists($func) && $func()) {
347 347
                         $ao_noptimize = true;
348 348
                         break;
349 349
                     }
@@ -351,10 +351,10 @@  discard block
 block discarded – undo
351 351
             }
352 352
 
353 353
             // And make sure pagebuilder previews don't get optimized HTML/ JS/ CSS/ ...
354
-            if ( false === $ao_noptimize ) {
355
-                $_qs_pagebuilders = array( 'tve', 'elementor-preview', 'fl_builder', 'vc_action', 'et_fb', 'bt-beaverbuildertheme', 'ct_builder', 'fb-edit', 'siteorigin_panels_live_editor' );
356
-                foreach ( $_qs_pagebuilders as $_pagebuilder ) {
357
-                    if ( array_key_exists( $_pagebuilder, $_GET ) ) {
354
+            if (false === $ao_noptimize) {
355
+                $_qs_pagebuilders = array('tve', 'elementor-preview', 'fl_builder', 'vc_action', 'et_fb', 'bt-beaverbuildertheme', 'ct_builder', 'fb-edit', 'siteorigin_panels_live_editor');
356
+                foreach ($_qs_pagebuilders as $_pagebuilder) {
357
+                    if (array_key_exists($_pagebuilder, $_GET)) {
358 358
                         $ao_noptimize = true;
359 359
                         break;
360 360
                     }
@@ -363,16 +363,16 @@  discard block
 block discarded – undo
363 363
 
364 364
             // Also honor PageSpeed=off parameter as used by mod_pagespeed, in use by some pagebuilders,
365 365
             // see https://www.modpagespeed.com/doc/experiment#ModPagespeed for info on that.
366
-            if ( false === $ao_noptimize && array_key_exists( 'PageSpeed', $_GET ) && 'off' === $_GET['PageSpeed'] ) {
366
+            if (false === $ao_noptimize && array_key_exists('PageSpeed', $_GET) && 'off' === $_GET['PageSpeed']) {
367 367
                 $ao_noptimize = true;
368 368
             }
369 369
 
370 370
             // And finally allows blocking of autoptimization on your own terms regardless of above decisions.
371
-            $ao_noptimize = (bool) apply_filters( 'autoptimize_filter_noptimize', $ao_noptimize );
371
+            $ao_noptimize = (bool) apply_filters('autoptimize_filter_noptimize', $ao_noptimize);
372 372
 
373 373
             // Check for site being previewed in the Customizer (available since WP 4.0).
374 374
             $is_customize_preview = false;
375
-            if ( function_exists( 'is_customize_preview' ) && is_customize_preview() ) {
375
+            if (function_exists('is_customize_preview') && is_customize_preview()) {
376 376
                 $is_customize_preview = is_customize_preview();
377 377
             }
378 378
 
@@ -383,7 +383,7 @@  discard block
 block discarded – undo
383 383
              * while the main query hasn't been ran yet. Thats why we use
384 384
              * AUTOPTIMIZE_INIT_EARLIER in tests.
385 385
              */
386
-            $do_buffering = ( ! is_admin() && ! is_feed() && ! is_embed() && ! $ao_noptimize && ! $is_customize_preview );
386
+            $do_buffering = (!is_admin() && !is_feed() && !is_embed() && !$ao_noptimize && !$is_customize_preview);
387 387
         }
388 388
 
389 389
         return $do_buffering;
@@ -396,25 +396,25 @@  discard block
 block discarded – undo
396 396
      *
397 397
      * @return bool
398 398
      */
399
-    public function is_valid_buffer( $content )
399
+    public function is_valid_buffer($content)
400 400
     {
401 401
         // Defaults to true.
402 402
         $valid = true;
403 403
 
404
-        $has_no_html_tag    = ( false === stripos( $content, '<html' ) );
405
-        $has_xsl_stylesheet = ( false !== stripos( $content, '<xsl:stylesheet' ) || false !== stripos( $content, '<?xml-stylesheet' ) );
406
-        $has_html5_doctype  = ( preg_match( '/^<!DOCTYPE.+html>/i', ltrim( $content ) ) > 0 );
407
-        $has_noptimize_page = ( false !== stripos( $content, '<!-- noptimize-page -->' ) );
404
+        $has_no_html_tag    = (false === stripos($content, '<html'));
405
+        $has_xsl_stylesheet = (false !== stripos($content, '<xsl:stylesheet') || false !== stripos($content, '<?xml-stylesheet'));
406
+        $has_html5_doctype  = (preg_match('/^<!DOCTYPE.+html>/i', ltrim($content)) > 0);
407
+        $has_noptimize_page = (false !== stripos($content, '<!-- noptimize-page -->'));
408 408
 
409
-        if ( $has_no_html_tag ) {
409
+        if ($has_no_html_tag) {
410 410
             // Can't be valid amp markup without an html tag preceding it.
411 411
             $is_amp_markup = false;
412 412
         } else {
413
-            $is_amp_markup = self::is_amp_markup( $content );
413
+            $is_amp_markup = self::is_amp_markup($content);
414 414
         }
415 415
 
416 416
         // If it's not html, or if it's amp or contains xsl stylesheets we don't touch it.
417
-        if ( $has_no_html_tag && ! $has_html5_doctype || $is_amp_markup || $has_xsl_stylesheet || $has_noptimize_page ) {
417
+        if ($has_no_html_tag && !$has_html5_doctype || $is_amp_markup || $has_xsl_stylesheet || $has_noptimize_page) {
418 418
             $valid = false;
419 419
         }
420 420
 
@@ -429,14 +429,14 @@  discard block
 block discarded – undo
429 429
      *
430 430
      * @return bool
431 431
      */
432
-    public static function is_amp_markup( $content )
432
+    public static function is_amp_markup($content)
433 433
     {
434 434
         // Short-circuit when a function is available to determine whether the response is (or will be) an AMP page.
435
-        if ( function_exists( 'is_amp_endpoint' ) ) {
435
+        if (function_exists('is_amp_endpoint')) {
436 436
             return is_amp_endpoint();
437 437
         }
438 438
 
439
-        $is_amp_markup = preg_match( '/<html[^>]*(?:amp|⚡)/i', $content );
439
+        $is_amp_markup = preg_match('/<html[^>]*(?:amp|⚡)/i', $content);
440 440
 
441 441
         return (bool) $is_amp_markup;
442 442
     }
@@ -449,10 +449,10 @@  discard block
 block discarded – undo
449 449
      *
450 450
      * @return string
451 451
      */
452
-    public function end_buffering( $content )
452
+    public function end_buffering($content)
453 453
     {
454 454
         // Bail early without modifying anything if we can't handle the content.
455
-        if ( ! $this->is_valid_buffer( $content ) ) {
455
+        if (!$this->is_valid_buffer($content)) {
456 456
             return $content;
457 457
         }
458 458
 
@@ -460,73 +460,73 @@  discard block
 block discarded – undo
460 460
 
461 461
         // Determine what needs to be ran.
462 462
         $classes = array();
463
-        if ( $conf->get( 'autoptimize_js' ) ) {
463
+        if ($conf->get('autoptimize_js')) {
464 464
             $classes[] = 'autoptimizeScripts';
465 465
         }
466
-        if ( $conf->get( 'autoptimize_css' ) ) {
466
+        if ($conf->get('autoptimize_css')) {
467 467
             $classes[] = 'autoptimizeStyles';
468 468
         }
469
-        if ( $conf->get( 'autoptimize_html' ) ) {
469
+        if ($conf->get('autoptimize_html')) {
470 470
             $classes[] = 'autoptimizeHTML';
471 471
         }
472 472
 
473 473
         $classoptions = array(
474 474
             'autoptimizeScripts' => array(
475
-                'aggregate'       => $conf->get( 'autoptimize_js_aggregate' ),
476
-                'justhead'        => $conf->get( 'autoptimize_js_justhead' ),
477
-                'forcehead'       => $conf->get( 'autoptimize_js_forcehead' ),
478
-                'trycatch'        => $conf->get( 'autoptimize_js_trycatch' ),
479
-                'js_exclude'      => $conf->get( 'autoptimize_js_exclude' ),
480
-                'cdn_url'         => $conf->get( 'autoptimize_cdn_url' ),
481
-                'include_inline'  => $conf->get( 'autoptimize_js_include_inline' ),
482
-                'minify_excluded' => $conf->get( 'autoptimize_minify_excluded' ),
475
+                'aggregate'       => $conf->get('autoptimize_js_aggregate'),
476
+                'justhead'        => $conf->get('autoptimize_js_justhead'),
477
+                'forcehead'       => $conf->get('autoptimize_js_forcehead'),
478
+                'trycatch'        => $conf->get('autoptimize_js_trycatch'),
479
+                'js_exclude'      => $conf->get('autoptimize_js_exclude'),
480
+                'cdn_url'         => $conf->get('autoptimize_cdn_url'),
481
+                'include_inline'  => $conf->get('autoptimize_js_include_inline'),
482
+                'minify_excluded' => $conf->get('autoptimize_minify_excluded'),
483 483
             ),
484 484
             'autoptimizeStyles'  => array(
485
-                'aggregate'       => $conf->get( 'autoptimize_css_aggregate' ),
486
-                'justhead'        => $conf->get( 'autoptimize_css_justhead' ),
487
-                'datauris'        => $conf->get( 'autoptimize_css_datauris' ),
488
-                'defer'           => $conf->get( 'autoptimize_css_defer' ),
489
-                'defer_inline'    => $conf->get( 'autoptimize_css_defer_inline' ),
490
-                'inline'          => $conf->get( 'autoptimize_css_inline' ),
491
-                'css_exclude'     => $conf->get( 'autoptimize_css_exclude' ),
492
-                'cdn_url'         => $conf->get( 'autoptimize_cdn_url' ),
493
-                'include_inline'  => $conf->get( 'autoptimize_css_include_inline' ),
494
-                'nogooglefont'    => $conf->get( 'autoptimize_css_nogooglefont' ),
495
-                'minify_excluded' => $conf->get( 'autoptimize_minify_excluded' ),
485
+                'aggregate'       => $conf->get('autoptimize_css_aggregate'),
486
+                'justhead'        => $conf->get('autoptimize_css_justhead'),
487
+                'datauris'        => $conf->get('autoptimize_css_datauris'),
488
+                'defer'           => $conf->get('autoptimize_css_defer'),
489
+                'defer_inline'    => $conf->get('autoptimize_css_defer_inline'),
490
+                'inline'          => $conf->get('autoptimize_css_inline'),
491
+                'css_exclude'     => $conf->get('autoptimize_css_exclude'),
492
+                'cdn_url'         => $conf->get('autoptimize_cdn_url'),
493
+                'include_inline'  => $conf->get('autoptimize_css_include_inline'),
494
+                'nogooglefont'    => $conf->get('autoptimize_css_nogooglefont'),
495
+                'minify_excluded' => $conf->get('autoptimize_minify_excluded'),
496 496
             ),
497 497
             'autoptimizeHTML'    => array(
498
-                'keepcomments' => $conf->get( 'autoptimize_html_keepcomments' ),
498
+                'keepcomments' => $conf->get('autoptimize_html_keepcomments'),
499 499
             ),
500 500
         );
501 501
 
502
-        $content = apply_filters( 'autoptimize_filter_html_before_minify', $content );
502
+        $content = apply_filters('autoptimize_filter_html_before_minify', $content);
503 503
 
504 504
         // Run the classes!
505
-        foreach ( $classes as $name ) {
506
-            $instance = new $name( $content );
507
-            if ( $instance->read( $classoptions[ $name ] ) ) {
505
+        foreach ($classes as $name) {
506
+            $instance = new $name($content);
507
+            if ($instance->read($classoptions[$name])) {
508 508
                 $instance->minify();
509 509
                 $instance->cache();
510 510
                 $content = $instance->getcontent();
511 511
             }
512
-            unset( $instance );
512
+            unset($instance);
513 513
         }
514 514
 
515
-        $content = apply_filters( 'autoptimize_html_after_minify', $content );
515
+        $content = apply_filters('autoptimize_html_after_minify', $content);
516 516
 
517 517
         return $content;
518 518
     }
519 519
 
520
-    public static function autoptimize_nobuffer_optimize( $html_in ) {
520
+    public static function autoptimize_nobuffer_optimize($html_in) {
521 521
         $html_out = $html_in;
522 522
 
523
-        if ( apply_filters( 'autoptimize_filter_speedupper', true ) ) {
523
+        if (apply_filters('autoptimize_filter_speedupper', true)) {
524 524
             $ao_speedupper = new autoptimizeSpeedupper();
525 525
         }
526 526
 
527
-        $self = new self( AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE );
528
-        if ( $self->should_buffer() ) {
529
-            $html_out = $self->end_buffering( $html_in );
527
+        $self = new self(AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE);
528
+        if ($self->should_buffer()) {
529
+            $html_out = $self->end_buffering($html_in);
530 530
         }
531 531
         return $html_out;
532 532
     }
@@ -587,45 +587,45 @@  discard block
 block discarded – undo
587 587
             'autoptimize_ccss_domain',
588 588
         );
589 589
 
590
-        if ( ! is_multisite() ) {
591
-            foreach ( $delete_options as $del_opt ) {
592
-                delete_option( $del_opt );
590
+        if (!is_multisite()) {
591
+            foreach ($delete_options as $del_opt) {
592
+                delete_option($del_opt);
593 593
             }
594 594
             autoptimizeMain::remove_cronjobs();
595 595
         } else {
596 596
             global $wpdb;
597
-            $blog_ids         = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
597
+            $blog_ids         = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
598 598
             $original_blog_id = get_current_blog_id();
599
-            foreach ( $blog_ids as $blog_id ) {
600
-                switch_to_blog( $blog_id );
601
-                foreach ( $delete_options as $del_opt ) {
602
-                    delete_option( $del_opt );
599
+            foreach ($blog_ids as $blog_id) {
600
+                switch_to_blog($blog_id);
601
+                foreach ($delete_options as $del_opt) {
602
+                    delete_option($del_opt);
603 603
                 }
604 604
                 autoptimizeMain::remove_cronjobs();
605 605
             }
606
-            switch_to_blog( $original_blog_id );
606
+            switch_to_blog($original_blog_id);
607 607
         }
608 608
 
609 609
         // Remove AO CCSS cached files and directory.
610
-        $ao_ccss_dir = WP_CONTENT_DIR . '/uploads/ao_ccss/';
611
-        if ( file_exists( $ao_ccss_dir ) && is_dir( $ao_ccss_dir ) ) {
610
+        $ao_ccss_dir = WP_CONTENT_DIR.'/uploads/ao_ccss/';
611
+        if (file_exists($ao_ccss_dir) && is_dir($ao_ccss_dir)) {
612 612
             // fixme: should check for subdirs when in multisite and remove contents of those as well.
613
-            array_map( 'unlink', glob( AO_CCSS_DIR . '*.{css,html,json,log,zip,lock}', GLOB_BRACE ) );
614
-            rmdir( AO_CCSS_DIR );
613
+            array_map('unlink', glob(AO_CCSS_DIR.'*.{css,html,json,log,zip,lock}', GLOB_BRACE));
614
+            rmdir(AO_CCSS_DIR);
615 615
         }
616 616
     }
617 617
 
618 618
     public static function on_deactivation()
619 619
     {
620
-        if ( is_multisite() && is_network_admin() ) {
620
+        if (is_multisite() && is_network_admin()) {
621 621
             global $wpdb;
622
-            $blog_ids         = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
622
+            $blog_ids         = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
623 623
             $original_blog_id = get_current_blog_id();
624
-            foreach ( $blog_ids as $blog_id ) {
625
-                switch_to_blog( $blog_id );
624
+            foreach ($blog_ids as $blog_id) {
625
+                switch_to_blog($blog_id);
626 626
                 autoptimizeMain::remove_cronjobs();
627 627
             }
628
-            switch_to_blog( $original_blog_id );
628
+            switch_to_blog($original_blog_id);
629 629
         } else {
630 630
             autoptimizeMain::remove_cronjobs();
631 631
         }
@@ -634,9 +634,9 @@  discard block
 block discarded – undo
634 634
 
635 635
     public static function remove_cronjobs() {
636 636
         // Remove scheduled events.
637
-        foreach ( array( 'ao_cachechecker', 'ao_ccss_queue', 'ao_ccss_maintenance' ) as $_event ) {
638
-            if ( wp_get_schedule( $_event ) ) {
639
-                wp_clear_scheduled_hook( $_event );
637
+        foreach (array('ao_cachechecker', 'ao_ccss_queue', 'ao_ccss_maintenance') as $_event) {
638
+            if (wp_get_schedule($_event)) {
639
+                wp_clear_scheduled_hook($_event);
640 640
             }
641 641
         }
642 642
     }
@@ -645,35 +645,35 @@  discard block
 block discarded – undo
645 645
     {
646 646
         echo '<div class="error"><p>';
647 647
         // Translators: %s is the cache directory location.
648
-        printf( __( 'Autoptimize cannot write to the cache directory (%s), please fix to enable CSS/ JS optimization!', 'autoptimize' ), AUTOPTIMIZE_CACHE_DIR );
648
+        printf(__('Autoptimize cannot write to the cache directory (%s), please fix to enable CSS/ JS optimization!', 'autoptimize'), AUTOPTIMIZE_CACHE_DIR);
649 649
         echo '</p></div>';
650 650
     }
651 651
 
652 652
     public static function notice_installed()
653 653
     {
654 654
         echo '<div class="updated"><p>';
655
-        _e( 'Thank you for installing and activating Autoptimize. Please configure it under "Settings" -> "Autoptimize" to start improving your site\'s performance.', 'autoptimize' );
655
+        _e('Thank you for installing and activating Autoptimize. Please configure it under "Settings" -> "Autoptimize" to start improving your site\'s performance.', 'autoptimize');
656 656
         echo '</p></div>';
657 657
     }
658 658
 
659 659
     public static function notice_updated()
660 660
     {
661 661
         echo '<div class="updated"><p>';
662
-        _e( 'Autoptimize has just been updated. Please <strong>test your site now</strong> and adapt Autoptimize config if needed.', 'autoptimize' );
662
+        _e('Autoptimize has just been updated. Please <strong>test your site now</strong> and adapt Autoptimize config if needed.', 'autoptimize');
663 663
         echo '</p></div>';
664 664
     }
665 665
 
666 666
     public static function notice_plug_imgopt()
667 667
     {
668 668
         // Translators: the URL added points to the Autopmize Extra settings.
669
-        $_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>' );
670
-        $_ao_imgopt_plug_notice      = apply_filters( 'autoptimize_filter_main_imgopt_plug_notice', $_ao_imgopt_plug_notice );
669
+        $_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>');
670
+        $_ao_imgopt_plug_notice      = apply_filters('autoptimize_filter_main_imgopt_plug_notice', $_ao_imgopt_plug_notice);
671 671
         $_ao_imgopt_launch_ok        = autoptimizeImages::launch_ok_wrapper();
672 672
         $_ao_imgopt_plug_dismissible = 'ao-img-opt-plug-123';
673 673
         $_ao_imgopt_active           = autoptimizeImages::imgopt_active();
674 674
 
675
-        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 ) ) {
676
-            echo '<div class="notice notice-info is-dismissible" data-dismissible="' . $_ao_imgopt_plug_dismissible . '"><p>';
675
+        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)) {
676
+            echo '<div class="notice notice-info is-dismissible" data-dismissible="'.$_ao_imgopt_plug_dismissible.'"><p>';
677 677
             echo $_ao_imgopt_plug_notice;
678 678
             echo '</p></div>';
679 679
         }
Please login to merge, or discard this patch.
classes/autoptimizeCriticalCSSEnqueue.php 1 patch
Spacing   +67 added lines, -67 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' ) ) ) || ! apply_filters( 'autoptimize_filter_ccss_coreenqueue_ignorealltypes', false ) ) ) {
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'))) || !apply_filters('autoptimize_filter_ccss_coreenqueue_ignorealltypes', false))) {
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' ) ) ) ) || apply_filters( 'autoptimize_filter_ccss_coreenqueue_ignorealltypes', false ) ) {
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')))) || apply_filters('autoptimize_filter_ccss_coreenqueue_ignorealltypes', false)) {
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,25 +194,25 @@  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 ( is_404() ) {
197
+        foreach ($ao_ccss_types as $type) {
198
+            if (is_404()) {
199 199
                 $page_type = 'is_404';
200 200
                 break;
201
-            } elseif ( strpos( $type, 'custom_post_' ) !== false ) {
201
+            } elseif (strpos($type, 'custom_post_') !== false) {
202 202
                 // Match custom post types.
203
-                if ( get_post_type( get_the_ID() ) === substr( $type, 12 ) ) {
203
+                if (get_post_type(get_the_ID()) === substr($type, 12)) {
204 204
                     $page_type = $type;
205 205
                     break;
206 206
                 }
207
-            } elseif ( strpos( $type, 'template_' ) !== false ) {
207
+            } elseif (strpos($type, 'template_') !== false) {
208 208
                 // If templates; don't break, templates become manual-only rules.
209 209
             } else {
210 210
                 // Match all other existing types
211 211
                 // but remove prefix to be able to check if the function exists & returns true.
212
-                $_type = str_replace( array( 'woo_', 'bp_', 'bbp_', 'edd_' ), '', $type );
213
-                if ( function_exists( $_type ) && call_user_func( $_type ) ) {
212
+                $_type = str_replace(array('woo_', 'bp_', 'bbp_', 'edd_'), '', $type);
213
+                if (function_exists($_type) && call_user_func($_type)) {
214 214
                     // Make sure we only return is_front_page (and is_home) for one page, not for the "paged frontpage" (/page/2 ..).
215
-                    if ( ( 'is_front_page' !== $_type && 'is_home' !== $_type ) || ! is_paged() ) {
215
+                    if (('is_front_page' !== $_type && 'is_home' !== $_type) || !is_paged()) {
216 216
                         $page_type = $type;
217 217
                         break;
218 218
                     }
@@ -224,44 +224,44 @@  discard block
 block discarded – undo
224 224
         return $page_type;
225 225
     }
226 226
 
227
-    public function ao_ccss_define_job( $path, $target, $type, $hash, $file, $jid, $jrstat, $jvstat, $create ) {
227
+    public function ao_ccss_define_job($path, $target, $type, $hash, $file, $jid, $jrstat, $jvstat, $create) {
228 228
         // Define a job entry to be created or updated
229 229
         // Define commom job properties.
230 230
         $path            = array();
231 231
         $path['ljid']    = $this->ao_ccss_job_id();
232 232
         $path['rtarget'] = $target;
233 233
         $path['ptype']   = $type;
234
-        $path['hashes']  = array( $hash );
234
+        $path['hashes']  = array($hash);
235 235
         $path['hash']    = $hash;
236 236
         $path['file']    = $file;
237 237
         $path['jid']     = $jid;
238 238
         $path['jqstat']  = 'NEW';
239 239
         $path['jrstat']  = $jrstat;
240 240
         $path['jvstat']  = $jvstat;
241
-        $path['jctime']  = microtime( true );
241
+        $path['jctime']  = microtime(true);
242 242
         $path['jftime']  = null;
243 243
 
244 244
         // Set operation requested.
245
-        if ( $create ) {
245
+        if ($create) {
246 246
             $operation = 'CREATED';
247 247
         } else {
248 248
             $operation = 'UPDATED';
249 249
         }
250 250
 
251 251
         // Log job creation.
252
-        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job ' . $operation . ' with local job id <' . $path['ljid'] . '> for target rule <' . $target . '>', 3 );
252
+        autoptimizeCriticalCSSCore::ao_ccss_log('Job '.$operation.' with local job id <'.$path['ljid'].'> for target rule <'.$target.'>', 3);
253 253
 
254 254
         return $path;
255 255
     }
256 256
 
257
-    public function ao_ccss_job_id( $length = 6 ) {
257
+    public function ao_ccss_job_id($length = 6) {
258 258
         // Generate random strings for the local job ID
259 259
         // Based on https://stackoverflow.com/a/4356295 .
260 260
         $characters        = '0123456789abcdefghijklmnopqrstuvwxyz';
261
-        $characters_length = strlen( $characters );
261
+        $characters_length = strlen($characters);
262 262
         $random_string     = 'j-';
263
-        for ( $i = 0; $i < $length; $i++ ) {
264
-            $random_string .= $characters[ rand( 0, $characters_length - 1 ) ];
263
+        for ($i = 0; $i < $length; $i++) {
264
+            $random_string .= $characters[rand(0, $characters_length - 1)];
265 265
         }
266 266
         return $random_string;
267 267
     }
@@ -269,17 +269,17 @@  discard block
 block discarded – undo
269 269
     public function ao_ccss_ua() {
270 270
         // Check for criticalcss.com user agent.
271 271
         $agent = '';
272
-        if ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) {
272
+        if (isset($_SERVER['HTTP_USER_AGENT'])) {
273 273
             $agent = $_SERVER['HTTP_USER_AGENT'];
274 274
         }
275 275
 
276 276
         // Check for UA and return TRUE when criticalcss.com is the detected UA, false when not.
277
-        $rtn = strpos( $agent, AO_CCSS_URL );
278
-        if ( 0 === $rtn ) {
277
+        $rtn = strpos($agent, AO_CCSS_URL);
278
+        if (0 === $rtn) {
279 279
             $rtn = true;
280 280
         } else {
281 281
             $rtn = false;
282 282
         }
283
-        return ( $rtn );
283
+        return ($rtn);
284 284
     }
285 285
 }
Please login to merge, or discard this patch.
classes/autoptimizeCriticalCSSCron.php 1 patch
Spacing   +254 added lines, -254 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  * processes the queue, submitting jobs to criticalcss.com and retrieving generated CSS from criticalcss.com and saving rules.
5 5
  */
6 6
 
7
-if ( ! defined( 'ABSPATH' ) ) {
7
+if (!defined('ABSPATH')) {
8 8
     exit;
9 9
 }
10 10
 
@@ -13,23 +13,23 @@  discard block
 block discarded – undo
13 13
     {
14 14
         // fetch all options at once and populate them individually explicitely as globals.
15 15
         $all_options = autoptimizeCriticalCSSBase::fetch_options();
16
-        foreach ( $all_options as $_option => $_value ) {
16
+        foreach ($all_options as $_option => $_value) {
17 17
             global ${$_option};
18 18
             ${$_option} = $_value;
19 19
         }
20 20
 
21 21
         // Add queue control to a registered event.
22
-        add_action( 'ao_ccss_queue', array( $this, 'ao_ccss_queue_control' ) );
22
+        add_action('ao_ccss_queue', array($this, 'ao_ccss_queue_control'));
23 23
         // Add cleaning job to a registered event.
24
-        add_action( 'ao_ccss_maintenance', array( $this, 'ao_ccss_cleaning' ) );
24
+        add_action('ao_ccss_maintenance', array($this, 'ao_ccss_cleaning'));
25 25
     }
26 26
 
27 27
     public function ao_ccss_queue_control() {
28 28
         // The queue execution backend.
29 29
         global $ao_ccss_key;
30
-        if ( ! isset( $ao_ccss_key ) || empty( $ao_ccss_key ) ) {
30
+        if (!isset($ao_ccss_key) || empty($ao_ccss_key)) {
31 31
             // no key set, not processing the queue!
32
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'No key set, so not processing queue.', 3 );
32
+            autoptimizeCriticalCSSCore::ao_ccss_log('No key set, so not processing queue.', 3);
33 33
             return;
34 34
         }
35 35
 
@@ -50,35 +50,35 @@  discard block
 block discarded – undo
50 50
          *    When properly set, queue will always finish a job with the declared settings above regardless of the real API responses.
51 51
          */
52 52
         $queue_debug = false;
53
-        if ( file_exists( AO_CCSS_DEBUG ) ) {
54
-            $qdobj_raw = file_get_contents( AO_CCSS_DEBUG );
55
-            $qdobj     = json_decode( $qdobj_raw, true );
56
-            if ( $qdobj ) {
57
-                if ( 1 === $qdobj['enable'] ) {
53
+        if (file_exists(AO_CCSS_DEBUG)) {
54
+            $qdobj_raw = file_get_contents(AO_CCSS_DEBUG);
55
+            $qdobj     = json_decode($qdobj_raw, true);
56
+            if ($qdobj) {
57
+                if (1 === $qdobj['enable']) {
58 58
                     $queue_debug = true;
59
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue operating in debug mode with the following settings: <' . $qdobj_raw . '>', 3 );
59
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Queue operating in debug mode with the following settings: <'.$qdobj_raw.'>', 3);
60 60
                 }
61 61
             }
62 62
         }
63 63
 
64 64
         // Set some default values for $qdobj to avoid function call warnings.
65
-        if ( ! $queue_debug ) {
65
+        if (!$queue_debug) {
66 66
             $qdobj['htcode'] = false;
67 67
         }
68 68
 
69 69
         // Check if queue is already running.
70 70
         $queue_lock = false;
71
-        if ( file_exists( AO_CCSS_LOCK ) ) {
71
+        if (file_exists(AO_CCSS_LOCK)) {
72 72
             $queue_lock = true;
73 73
         }
74 74
 
75 75
         // Proceed with the queue if it's not already running.
76
-        if ( ! $queue_lock ) {
76
+        if (!$queue_lock) {
77 77
 
78 78
             // Log queue start and create the lock file.
79
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue control started', 3 );
80
-            if ( touch( AO_CCSS_LOCK ) ) {
81
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue control locked', 3 );
79
+            autoptimizeCriticalCSSCore::ao_ccss_log('Queue control started', 3);
80
+            if (touch(AO_CCSS_LOCK)) {
81
+                autoptimizeCriticalCSSCore::ao_ccss_log('Queue control locked', 3);
82 82
             }
83 83
 
84 84
             // Attach required variables.
@@ -88,218 +88,218 @@  discard block
 block discarded – undo
88 88
             // Initialize job counters.
89 89
             $jc = 1;
90 90
             $jr = 1;
91
-            $jt = count( $ao_ccss_queue );
91
+            $jt = count($ao_ccss_queue);
92 92
 
93 93
             // Sort queue by ascending job status (e.g. ERROR, JOB_ONGOING, JOB_QUEUED, NEW...).
94
-            array_multisort( array_column( $ao_ccss_queue, 'jqstat' ), $ao_ccss_queue ); // @codingStandardsIgnoreLine
94
+            array_multisort(array_column($ao_ccss_queue, 'jqstat'), $ao_ccss_queue); // @codingStandardsIgnoreLine
95 95
 
96 96
             // Iterates over the entire queue.
97
-            foreach ( $ao_ccss_queue as $path => $jprops ) {
97
+            foreach ($ao_ccss_queue as $path => $jprops) {
98 98
                 // Prepare flags and target rule.
99 99
                 $update      = false;
100 100
                 $deljob      = false;
101 101
                 $rule_update = false;
102 102
                 $oldccssfile = false;
103
-                $trule       = explode( '|', $jprops['rtarget'] );
103
+                $trule       = explode('|', $jprops['rtarget']);
104 104
 
105 105
                 // Log job count.
106
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Processing job ' . $jc . ' of ' . $jt . ' with id <' . $jprops['ljid'] . '> and status <' . $jprops['jqstat'] . '>', 3 );
106
+                autoptimizeCriticalCSSCore::ao_ccss_log('Processing job '.$jc.' of '.$jt.' with id <'.$jprops['ljid'].'> and status <'.$jprops['jqstat'].'>', 3);
107 107
 
108 108
                 // Process NEW jobs.
109
-                if ( 'NEW' == $jprops['jqstat'] ) {
109
+                if ('NEW' == $jprops['jqstat']) {
110 110
 
111 111
                     // Log the new job.
112
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Found NEW job with local ID <' . $jprops['ljid'] . '>, starting its queue processing', 3 );
112
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Found NEW job with local ID <'.$jprops['ljid'].'>, starting its queue processing', 3);
113 113
 
114 114
                     // Compare job and rule hashes (if any).
115
-                    $hash = $this->ao_ccss_diff_hashes( $jprops['ljid'], $jprops['hash'], $jprops['hashes'], $jprops['rtarget'] );
115
+                    $hash = $this->ao_ccss_diff_hashes($jprops['ljid'], $jprops['hash'], $jprops['hashes'], $jprops['rtarget']);
116 116
 
117 117
                     // If job hash is new or different of a previous one.
118
-                    if ( $hash ) {
118
+                    if ($hash) {
119 119
                         // Set job hash.
120 120
                         $jprops['hash'] = $hash;
121 121
 
122 122
                         // If this is not the first job, wait 15 seconds before process next job due criticalcss.com API limits.
123
-                        if ( $jr > 1 ) {
124
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Waiting 15 seconds due to criticalcss.com API limits', 3 );
125
-                            sleep( 15 );
123
+                        if ($jr > 1) {
124
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Waiting 15 seconds due to criticalcss.com API limits', 3);
125
+                            sleep(15);
126 126
                         }
127 127
 
128 128
                         // Dispatch the job generate request and increment request count.
129
-                        $apireq = $this->ao_ccss_api_generate( $path, $queue_debug, $qdobj['htcode'] );
129
+                        $apireq = $this->ao_ccss_api_generate($path, $queue_debug, $qdobj['htcode']);
130 130
                         $jr++;
131 131
 
132 132
                         // NOTE: All the following conditions maps to the ones in admin_settings_queue.js.php.
133
-                        if ( 'JOB_QUEUED' == $apireq['job']['status'] || 'JOB_ONGOING' == $apireq['job']['status'] ) {
133
+                        if ('JOB_QUEUED' == $apireq['job']['status'] || 'JOB_ONGOING' == $apireq['job']['status']) {
134 134
                             // SUCCESS: request has a valid result.
135 135
                             // Update job properties.
136 136
                             $jprops['jid']    = $apireq['job']['id'];
137 137
                             $jprops['jqstat'] = $apireq['job']['status'];
138
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> generate request successful, remote id <' . $jprops['jid'] . '>, status now is <' . $jprops['jqstat'] . '>', 3 );
139
-                        } elseif ( 'STATUS_JOB_BAD' == $apireq['job']['status'] ) {
138
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> generate request successful, remote id <'.$jprops['jid'].'>, status now is <'.$jprops['jqstat'].'>', 3);
139
+                        } elseif ('STATUS_JOB_BAD' == $apireq['job']['status']) {
140 140
                             // ERROR: concurrent requests
141 141
                             // Update job properties.
142 142
                             $jprops['jid']    = $apireq['job']['id'];
143 143
                             $jprops['jqstat'] = $apireq['job']['status'];
144 144
                             $jprops['jrstat'] = $apireq['error'];
145 145
                             $jprops['jvstat'] = 'NONE';
146
-                            $jprops['jftime'] = microtime( true );
147
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Concurrent requests when processing job id <' . $jprops['ljid'] . '>, job status is now <' . $jprops['jqstat'] . '>', 3 );
148
-                        } elseif ( 'INVALID_JWT_TOKEN' == $apireq['errorCode'] ) {
146
+                            $jprops['jftime'] = microtime(true);
147
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Concurrent requests when processing job id <'.$jprops['ljid'].'>, job status is now <'.$jprops['jqstat'].'>', 3);
148
+                        } elseif ('INVALID_JWT_TOKEN' == $apireq['errorCode']) {
149 149
                             // ERROR: key validation
150 150
                             // Update job properties.
151 151
                             $jprops['jqstat'] = $apireq['errorCode'];
152 152
                             $jprops['jrstat'] = $apireq['error'];
153 153
                             $jprops['jvstat'] = 'NONE';
154
-                            $jprops['jftime'] = microtime( true );
155
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'API key validation error when processing job id <' . $jprops['ljid'] . '>, job status is now <' . $jprops['jqstat'] . '>', 3 );
156
-                        } elseif ( empty( $apireq ) ) {
154
+                            $jprops['jftime'] = microtime(true);
155
+                            autoptimizeCriticalCSSCore::ao_ccss_log('API key validation error when processing job id <'.$jprops['ljid'].'>, job status is now <'.$jprops['jqstat'].'>', 3);
156
+                        } elseif (empty($apireq)) {
157 157
                             // ERROR: no response
158 158
                             // Update job properties.
159 159
                             $jprops['jqstat'] = 'NO_RESPONSE';
160 160
                             $jprops['jrstat'] = 'NONE';
161 161
                             $jprops['jvstat'] = 'NONE';
162
-                            $jprops['jftime'] = microtime( true );
163
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> request has no response, status now is <' . $jprops['jqstat'] . '>', 3 );
162
+                            $jprops['jftime'] = microtime(true);
163
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> request has no response, status now is <'.$jprops['jqstat'].'>', 3);
164 164
                         } else {
165 165
                             // UNKNOWN: unhandled generate exception
166 166
                             // Update job properties.
167 167
                             $jprops['jqstat'] = 'JOB_UNKNOWN';
168 168
                             $jprops['jrstat'] = 'NONE';
169 169
                             $jprops['jvstat'] = 'NONE';
170
-                            $jprops['jftime'] = microtime( true );
171
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> generate request has an UNKNOWN condition, status now is <' . $jprops['jqstat'] . '>, check log messages above for more information', 2 );
172
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job response was: ' . json_encode( $apireq ), 3 );
170
+                            $jprops['jftime'] = microtime(true);
171
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> generate request has an UNKNOWN condition, status now is <'.$jprops['jqstat'].'>, check log messages above for more information', 2);
172
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job response was: '.json_encode($apireq), 3);
173 173
                         }
174 174
                     } else {
175 175
                         // SUCCESS: Job hash is equal to a previous one, so it's done
176 176
                         // Update job status and finish time.
177 177
                         $jprops['jqstat'] = 'JOB_DONE';
178
-                        $jprops['jftime'] = microtime( true );
179
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> requires no further processing, status now is <' . $jprops['jqstat'] . '>', 3 );
178
+                        $jprops['jftime'] = microtime(true);
179
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> requires no further processing, status now is <'.$jprops['jqstat'].'>', 3);
180 180
                     }
181 181
 
182 182
                     // Set queue update flag.
183 183
                     $update = true;
184 184
 
185
-                } elseif ( 'JOB_QUEUED' == $jprops['jqstat'] || 'JOB_ONGOING' == $jprops['jqstat'] ) {
185
+                } elseif ('JOB_QUEUED' == $jprops['jqstat'] || 'JOB_ONGOING' == $jprops['jqstat']) {
186 186
                     // Process QUEUED and ONGOING jobs
187 187
                     // Log the pending job.
188
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Found PENDING job with local ID <' . $jprops['ljid'] . '>, continuing its queue processing', 3 );
188
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Found PENDING job with local ID <'.$jprops['ljid'].'>, continuing its queue processing', 3);
189 189
 
190 190
                     // If this is not the first job, wait 15 seconds before process next job due criticalcss.com API limits.
191
-                    if ( $jr > 1 ) {
192
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Waiting 15 seconds due to criticalcss.com API limits', 3 );
193
-                        sleep( 15 );
191
+                    if ($jr > 1) {
192
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Waiting 15 seconds due to criticalcss.com API limits', 3);
193
+                        sleep(15);
194 194
                     }
195 195
 
196 196
                     // Dispatch the job result request and increment request count.
197
-                    $apireq = $this->ao_ccss_api_results( $jprops['jid'], $queue_debug, $qdobj['htcode'] );
197
+                    $apireq = $this->ao_ccss_api_results($jprops['jid'], $queue_debug, $qdobj['htcode']);
198 198
                     $jr++;
199 199
 
200 200
                     // NOTE: All the following condigitons maps to the ones in admin_settings_queue.js.php
201 201
                     // Replace API response values if queue debugging is enabled and some value is set.
202
-                    if ( $queue_debug ) {
203
-                        if ( $qdobj['status'] ) {
202
+                    if ($queue_debug) {
203
+                        if ($qdobj['status']) {
204 204
                             $apireq['status'] = $qdobj['status'];
205 205
                         }
206
-                        if ( $qdobj['resultStatus'] ) {
206
+                        if ($qdobj['resultStatus']) {
207 207
                             $apireq['resultStatus'] = $qdobj['resultStatus'];
208 208
                         }
209
-                        if ( $qdobj['validationStatus'] ) {
209
+                        if ($qdobj['validationStatus']) {
210 210
                             $apireq['validationStatus'] = $qdobj['validationStatus'];
211 211
                         }
212 212
                     }
213 213
 
214
-                    if ( 'JOB_QUEUED' == $apireq['status'] || 'JOB_ONGOING' == $apireq['status'] ) {
214
+                    if ('JOB_QUEUED' == $apireq['status'] || 'JOB_ONGOING' == $apireq['status']) {
215 215
                         // SUCCESS: request has a valid result
216 216
                         // Process a PENDING job
217 217
                         // Update job properties.
218 218
                         $jprops['jqstat'] = $apireq['status'];
219
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . '> unchanged', 3 );
220
-                    } elseif ( 'JOB_DONE' == $apireq['status'] ) {
219
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful, remote id <'.$jprops['jid'].'>, status <'.$jprops['jqstat'].'> unchanged', 3);
220
+                    } elseif ('JOB_DONE' == $apireq['status']) {
221 221
                         // Process a DONE job
222 222
                         // New resultStatus from ccss.com "HTML_404", consider as "GOOD" for now.
223
-                        if ( 'HTML_404' == $apireq['resultStatus'] ) {
223
+                        if ('HTML_404' == $apireq['resultStatus']) {
224 224
                             $apireq['resultStatus'] = 'GOOD';
225 225
                         }
226 226
 
227
-                        if ( 'GOOD' == $apireq['resultStatus'] && 'GOOD' == $apireq['validationStatus'] ) {
227
+                        if ('GOOD' == $apireq['resultStatus'] && 'GOOD' == $apireq['validationStatus']) {
228 228
                             // SUCCESS: GOOD job with GOOD validation
229 229
                             // Update job properties.
230
-                            $jprops['file']   = $this->ao_ccss_save_file( $apireq['css'], $trule, false );
230
+                            $jprops['file']   = $this->ao_ccss_save_file($apireq['css'], $trule, false);
231 231
                             $jprops['jqstat'] = $apireq['status'];
232 232
                             $jprops['jrstat'] = $apireq['resultStatus'];
233 233
                             $jprops['jvstat'] = $apireq['validationStatus'];
234
-                            $jprops['jftime'] = microtime( true );
234
+                            $jprops['jftime'] = microtime(true);
235 235
                             $rule_update      = true;
236
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . '>, file saved <' . $jprops['file'] . '>', 3 );
237
-                        } elseif ( 'GOOD' == $apireq['resultStatus'] && ( 'WARN' == $apireq['validationStatus'] || 'BAD' == $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' == $apireq['validationStatus'] ) ) {
236
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful, remote id <'.$jprops['jid'].'>, status <'.$jprops['jqstat'].'>, file saved <'.$jprops['file'].'>', 3);
237
+                        } elseif ('GOOD' == $apireq['resultStatus'] && ('WARN' == $apireq['validationStatus'] || 'BAD' == $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' == $apireq['validationStatus'])) {
238 238
                             // SUCCESS: GOOD job with WARN or BAD validation
239 239
                             // Update job properties.
240
-                            $jprops['file']   = $this->ao_ccss_save_file( $apireq['css'], $trule, true );
240
+                            $jprops['file']   = $this->ao_ccss_save_file($apireq['css'], $trule, true);
241 241
                             $jprops['jqstat'] = $apireq['status'];
242 242
                             $jprops['jrstat'] = $apireq['resultStatus'];
243 243
                             $jprops['jvstat'] = $apireq['validationStatus'];
244
-                            $jprops['jftime'] = microtime( true );
244
+                            $jprops['jftime'] = microtime(true);
245 245
                             $rule_update      = true;
246
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . ', file saved <' . $jprops['file'] . '> but requires REVIEW', 3 );
247
-                        } elseif ( 'GOOD' != $apireq['resultStatus'] && ( 'GOOD' != $apireq['validationStatus'] || 'WARN' != $apireq['validationStatus'] || 'BAD' != $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' != $apireq['validationStatus'] ) ) {
246
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful, remote id <'.$jprops['jid'].'>, status <'.$jprops['jqstat'].', file saved <'.$jprops['file'].'> but requires REVIEW', 3);
247
+                        } elseif ('GOOD' != $apireq['resultStatus'] && ('GOOD' != $apireq['validationStatus'] || 'WARN' != $apireq['validationStatus'] || 'BAD' != $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' != $apireq['validationStatus'])) {
248 248
                             // ERROR: no GOOD, WARN or BAD results
249 249
                             // Update job properties.
250 250
                             $jprops['jqstat'] = $apireq['status'];
251 251
                             $jprops['jrstat'] = $apireq['resultStatus'];
252 252
                             $jprops['jvstat'] = $apireq['validationStatus'];
253
-                            $jprops['jftime'] = microtime( true );
254
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful but job FAILED, status now is <' . $jprops['jqstat'] . '>', 3 );
253
+                            $jprops['jftime'] = microtime(true);
254
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful but job FAILED, status now is <'.$jprops['jqstat'].'>', 3);
255 255
                             $apireq['css'] = '/* critical css removed for DEBUG logging purposes */';
256
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job response was: ' . json_encode( $apireq ), 3 );
256
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job response was: '.json_encode($apireq), 3);
257 257
                         } else {
258 258
                             // UNKNOWN: unhandled JOB_DONE exception
259 259
                             // Update job properties.
260 260
                             $jprops['jqstat'] = 'JOB_UNKNOWN';
261 261
                             $jprops['jrstat'] = $apireq['resultStatus'];
262 262
                             $jprops['jvstat'] = $apireq['validationStatus'];
263
-                            $jprops['jftime'] = microtime( true );
264
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful but job is UNKNOWN, status now is <' . $jprops['jqstat'] . '>', 2 );
263
+                            $jprops['jftime'] = microtime(true);
264
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful but job is UNKNOWN, status now is <'.$jprops['jqstat'].'>', 2);
265 265
                             $apireq['css'] = '/* critical css removed for DEBUG logging purposes */';
266
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job response was: ' . json_encode( $apireq ), 3 );
266
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job response was: '.json_encode($apireq), 3);
267 267
                         }
268
-                    } elseif ( 'JOB_FAILED' == $apireq['job']['status'] || 'STATUS_JOB_BAD' == $apireq['job']['status'] ) {
268
+                    } elseif ('JOB_FAILED' == $apireq['job']['status'] || 'STATUS_JOB_BAD' == $apireq['job']['status']) {
269 269
                         // ERROR: failed job
270 270
                         // Update job properties.
271 271
                         $jprops['jqstat'] = $apireq['job']['status'];
272
-                        if ( $apireq['error'] ) {
272
+                        if ($apireq['error']) {
273 273
                             $jprops['jrstat'] = $apireq['job']['error'];
274 274
                         } else {
275 275
                         }
276 276
                         $jprops['jvstat'] = 'NONE';
277
-                        $jprops['jftime'] = microtime( true );
278
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful but job FAILED, status now is <' . $jprops['jqstat'] . '>', 3 );
279
-                    } elseif ( 'This css no longer exists. Please re-generate it.' == $apireq['error'] ) {
277
+                        $jprops['jftime'] = microtime(true);
278
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful but job FAILED, status now is <'.$jprops['jqstat'].'>', 3);
279
+                    } elseif ('This css no longer exists. Please re-generate it.' == $apireq['error']) {
280 280
                         // ERROR: CSS doesn't exist
281 281
                         // Update job properties.
282 282
                         $jprops['jqstat'] = 'NO_CSS';
283 283
                         $jprops['jrstat'] = $apireq['error'];
284 284
                         $jprops['jvstat'] = 'NONE';
285
-                        $jprops['jftime'] = microtime( true );
286
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful but job FAILED, status now is <' . $jprops['jqstat'] . '>', 3 );
287
-                    } elseif ( empty( $apireq ) ) {
285
+                        $jprops['jftime'] = microtime(true);
286
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful but job FAILED, status now is <'.$jprops['jqstat'].'>', 3);
287
+                    } elseif (empty($apireq)) {
288 288
                         // ERROR: no response
289 289
                         // Update job properties.
290 290
                         $jprops['jqstat'] = 'NO_RESPONSE';
291 291
                         $jprops['jrstat'] = 'NONE';
292 292
                         $jprops['jvstat'] = 'NONE';
293
-                        $jprops['jftime'] = microtime( true );
294
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> request has no response, status now is <' . $jprops['jqstat'] . '>', 3 );
293
+                        $jprops['jftime'] = microtime(true);
294
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> request has no response, status now is <'.$jprops['jqstat'].'>', 3);
295 295
                     } else {
296 296
                         // UNKNOWN: unhandled results exception
297 297
                         // Update job properties.
298 298
                         $jprops['jqstat'] = 'JOB_UNKNOWN';
299 299
                         $jprops['jrstat'] = 'NONE';
300 300
                         $jprops['jvstat'] = 'NONE';
301
-                        $jprops['jftime'] = microtime( true );
302
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request has an UNKNOWN condition, status now is <' . $jprops['jqstat'] . '>, check log messages above for more information', 2 );
301
+                        $jprops['jftime'] = microtime(true);
302
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request has an UNKNOWN condition, status now is <'.$jprops['jqstat'].'>, check log messages above for more information', 2);
303 303
                     }
304 304
 
305 305
                     // Set queue update flag.
@@ -307,40 +307,40 @@  discard block
 block discarded – undo
307 307
                 }
308 308
 
309 309
                 // Mark DONE jobs for removal.
310
-                if ( 'JOB_DONE' == $jprops['jqstat'] ) {
310
+                if ('JOB_DONE' == $jprops['jqstat']) {
311 311
                     $update = true;
312 312
                     $deljob = true;
313 313
                 }
314 314
 
315 315
                 // Persist updated queue object.
316
-                if ( $update ) {
317
-                    if ( ! $deljob ) {
316
+                if ($update) {
317
+                    if (!$deljob) {
318 318
                         // Update properties of a NEW or PENDING job...
319
-                        $ao_ccss_queue[ $path ] = $jprops;
319
+                        $ao_ccss_queue[$path] = $jprops;
320 320
                     } else {
321 321
                         // ...or remove the DONE job.
322
-                        unset( $ao_ccss_queue[ $path ] );
323
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> is DONE and was removed from the queue', 3 );
322
+                        unset($ao_ccss_queue[$path]);
323
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> is DONE and was removed from the queue', 3);
324 324
                     }
325 325
 
326 326
                     // Update queue object.
327
-                    $ao_ccss_queue_raw = json_encode( $ao_ccss_queue );
328
-                    update_option( 'autoptimize_ccss_queue', $ao_ccss_queue_raw, false );
329
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue updated by job id <' . $jprops['ljid'] . '>', 3 );
327
+                    $ao_ccss_queue_raw = json_encode($ao_ccss_queue);
328
+                    update_option('autoptimize_ccss_queue', $ao_ccss_queue_raw, false);
329
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Queue updated by job id <'.$jprops['ljid'].'>', 3);
330 330
 
331 331
                     // Update target rule.
332
-                    if ( $rule_update ) {
333
-                        $this->ao_ccss_rule_update( $jprops['ljid'], $jprops['rtarget'], $jprops['file'], $jprops['hash'] );
334
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> updated the target rule <' . $jprops['rtarget'] . '>', 3 );
332
+                    if ($rule_update) {
333
+                        $this->ao_ccss_rule_update($jprops['ljid'], $jprops['rtarget'], $jprops['file'], $jprops['hash']);
334
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> updated the target rule <'.$jprops['rtarget'].'>', 3);
335 335
                     }
336 336
                 } else {
337 337
                     // Or log no queue action.
338
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Nothing to do on this job', 3 );
338
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Nothing to do on this job', 3);
339 339
                 }
340 340
 
341 341
                 // Break the loop if request limit is set and was reached.
342
-                if ( $ao_ccss_rlimit && $ao_ccss_rlimit == $jr ) {
343
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'The limit of ' . $ao_ccss_rlimit . ' request(s) to criticalcss.com was reached, queue control must finish now', 3 );
342
+                if ($ao_ccss_rlimit && $ao_ccss_rlimit == $jr) {
343
+                    autoptimizeCriticalCSSCore::ao_ccss_log('The limit of '.$ao_ccss_rlimit.' request(s) to criticalcss.com was reached, queue control must finish now', 3);
344 344
                     break;
345 345
                 }
346 346
 
@@ -349,46 +349,46 @@  discard block
 block discarded – undo
349 349
             }
350 350
 
351 351
             // Remove the lock file and log the queue end.
352
-            if ( file_exists( AO_CCSS_LOCK ) ) {
353
-                unlink( AO_CCSS_LOCK );
354
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue control unlocked', 3 );
352
+            if (file_exists(AO_CCSS_LOCK)) {
353
+                unlink(AO_CCSS_LOCK);
354
+                autoptimizeCriticalCSSCore::ao_ccss_log('Queue control unlocked', 3);
355 355
             }
356
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue control finished', 3 );
356
+            autoptimizeCriticalCSSCore::ao_ccss_log('Queue control finished', 3);
357 357
 
358 358
             // Log that queue is locked.
359 359
         } else {
360
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue is already running, skipping the attempt to run it again', 3 );
360
+            autoptimizeCriticalCSSCore::ao_ccss_log('Queue is already running, skipping the attempt to run it again', 3);
361 361
         }
362 362
     }
363 363
 
364
-    public function ao_ccss_diff_hashes( $ljid, $hash, $hashes, $rule ) {
364
+    public function ao_ccss_diff_hashes($ljid, $hash, $hashes, $rule) {
365 365
         // Compare job hashes
366 366
         // STEP 1: update job hashes.
367
-        if ( 1 == count( $hashes ) ) {
367
+        if (1 == count($hashes)) {
368 368
             // Job with a single hash
369 369
             // Set job hash.
370 370
             $hash = $hashes[0];
371
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> updated with SINGLE hash <' . $hash . '>', 3 );
371
+            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> updated with SINGLE hash <'.$hash.'>', 3);
372 372
         } else {
373 373
             // Job with multiple hashes
374 374
             // Loop through hashes to concatenate them.
375 375
             $nhash = '';
376
-            foreach ( $hashes as $shash ) {
376
+            foreach ($hashes as $shash) {
377 377
                 $nhash .= $shash;
378 378
             }
379 379
 
380 380
             // Set job hash.
381
-            $hash = md5( $nhash );
382
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> updated with a COMPOSITE hash <' . $hash . '>', 3 );
381
+            $hash = md5($nhash);
382
+            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> updated with a COMPOSITE hash <'.$hash.'>', 3);
383 383
         }
384 384
 
385 385
         // STEP 2: compare job to existing jobs to prevent double submission for same type+hash.
386 386
         global $ao_ccss_queue;
387 387
 
388
-        foreach ( $ao_ccss_queue as $queue_item ) {
389
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Comparing <' . $rule . $hash . '> with <' . $queue_item['rtarget'] . $queue_item['hash'] . '>', 3 );
390
-            if ( $queue_item['hash'] == $hash && $queue_item['rtarget'] == $rule && in_array( $queue_item['jqstat'], array( 'JOB_QUEUED', 'JOB_ONGOING', 'JOB_DONE' ) ) ) {
391
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> matches the already pending job <' . $queue_item['ljid'] . '>', 3 );
388
+        foreach ($ao_ccss_queue as $queue_item) {
389
+            autoptimizeCriticalCSSCore::ao_ccss_log('Comparing <'.$rule.$hash.'> with <'.$queue_item['rtarget'].$queue_item['hash'].'>', 3);
390
+            if ($queue_item['hash'] == $hash && $queue_item['rtarget'] == $rule && in_array($queue_item['jqstat'], array('JOB_QUEUED', 'JOB_ONGOING', 'JOB_DONE'))) {
391
+                autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> matches the already pending job <'.$queue_item['ljid'].'>', 3);
392 392
                 return false;
393 393
             }
394 394
         }
@@ -398,32 +398,32 @@  discard block
 block discarded – undo
398 398
         global $ao_ccss_rules;
399 399
 
400 400
         // Prepare rule variables.
401
-        $trule = explode( '|', $rule );
402
-        $srule = $ao_ccss_rules[ $trule[0] ][ $trule[1] ];
401
+        $trule = explode('|', $rule);
402
+        $srule = $ao_ccss_rules[$trule[0]][$trule[1]];
403 403
 
404 404
         // Check if a MANUAL rule exist and return false.
405
-        if ( ! empty( $srule ) && ( 0 == $srule['hash'] && 0 != $srule['file'] ) ) {
406
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> matches the MANUAL rule <' . $trule[0] . '|' . $trule[1] . '>', 3 );
405
+        if (!empty($srule) && (0 == $srule['hash'] && 0 != $srule['file'])) {
406
+            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> matches the MANUAL rule <'.$trule[0].'|'.$trule[1].'>', 3);
407 407
             return false;
408
-        } elseif ( ! empty( $srule ) ) {
408
+        } elseif (!empty($srule)) {
409 409
             // Check if an AUTO rule exist.
410
-            if ( $hash === $srule['hash'] && is_file( AO_CCSS_DIR . $srule['file'] ) && 0 != filesize( AO_CCSS_DIR . $srule['file'] ) ) {
410
+            if ($hash === $srule['hash'] && is_file(AO_CCSS_DIR.$srule['file']) && 0 != filesize(AO_CCSS_DIR.$srule['file'])) {
411 411
                 // Check if job hash matches rule, if the CCSS file exists said file is not empty and return FALSE is so.
412
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> with hash <' . $hash . '> MATCH the one in rule <' . $trule[0] . '|' . $trule[1] . '>', 3 );
412
+                autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> with hash <'.$hash.'> MATCH the one in rule <'.$trule[0].'|'.$trule[1].'>', 3);
413 413
                 return false;
414 414
             } else {
415 415
                 // Or return the new hash if they differ.
416
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> with hash <' . $hash . '> DOES NOT MATCH the one in rule <' . $trule[0] . '|' . $trule[1] . '> or rule\'s CCSS file was invalid.', 3 );
416
+                autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> with hash <'.$hash.'> DOES NOT MATCH the one in rule <'.$trule[0].'|'.$trule[1].'> or rule\'s CCSS file was invalid.', 3);
417 417
                 return $hash;
418 418
             }
419 419
         } else {
420 420
             // Or just return the hash if no rule exist yet.
421
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> with hash <' . $hash . '> has no rule yet', 3 );
421
+            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> with hash <'.$hash.'> has no rule yet', 3);
422 422
             return $hash;
423 423
         }
424 424
     }
425 425
 
426
-    public function ao_ccss_api_generate( $path, $debug, $dcode ) {
426
+    public function ao_ccss_api_generate($path, $debug, $dcode) {
427 427
         // POST jobs to criticalcss.com and return responses
428 428
         // Get key and key status.
429 429
         global $ao_ccss_key;
@@ -435,35 +435,35 @@  discard block
 block discarded – undo
435 435
         global $ao_ccss_noptimize;
436 436
 
437 437
         $site_host = get_site_url();
438
-        $site_path = parse_url( $site_host, PHP_URL_PATH );
438
+        $site_path = parse_url($site_host, PHP_URL_PATH);
439 439
 
440
-        if ( ! empty( $site_path ) ) {
441
-            $site_host = str_replace( $site_path, '', $site_host );
440
+        if (!empty($site_path)) {
441
+            $site_host = str_replace($site_path, '', $site_host);
442 442
         }
443 443
 
444 444
         // Logic to bind to one domain to avoid site clones of sites would
445 445
         // automatically begin spawning requests to criticalcss.com which has
446 446
         // a per domain cost.
447 447
         global $ao_ccss_domain;
448
-        if ( empty( $ao_ccss_domain ) ) {
448
+        if (empty($ao_ccss_domain)) {
449 449
             // first request being done, update option to allow future requests are only allowed if from same domain.
450
-            update_option( 'autoptimize_ccss_domain', str_rot13( $site_host ) );
451
-        } elseif ( trim( $ao_ccss_domain, '\'"' ) !== 'none' && parse_url( $site_host, PHP_URL_HOST ) !== parse_url( $ao_ccss_domain, PHP_URL_HOST ) && apply_filters( 'autoptimize_filter_ccss_bind_domain', true ) ) {
450
+            update_option('autoptimize_ccss_domain', str_rot13($site_host));
451
+        } elseif (trim($ao_ccss_domain, '\'"') !== 'none' && parse_url($site_host, PHP_URL_HOST) !== parse_url($ao_ccss_domain, PHP_URL_HOST) && apply_filters('autoptimize_filter_ccss_bind_domain', true)) {
452 452
             // not the same domain, log as error and return without posting to criticalcss.com.
453
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Request for domain ' . $site_host . ' does not match bound domain ' . $ao_ccss_domain . ' so not proceeding.', 2 );
453
+            autoptimizeCriticalCSSCore::ao_ccss_log('Request for domain '.$site_host.' does not match bound domain '.$ao_ccss_domain.' so not proceeding.', 2);
454 454
             return false;
455 455
         }
456 456
 
457
-        $src_url = $site_host . $path;
457
+        $src_url = $site_host.$path;
458 458
 
459 459
         // Avoid AO optimizations if required by config or avoid lazyload if lazyload is active in AO.
460
-        if ( ! empty( $ao_ccss_noptimize ) ) {
460
+        if (!empty($ao_ccss_noptimize)) {
461 461
             $src_url .= '?ao_noptirocket=1';
462
-        } elseif ( class_exists( 'autoptimizeImages', false ) && autoptimizeImages::should_lazyload_wrapper() ) {
462
+        } elseif (class_exists('autoptimizeImages', false) && autoptimizeImages::should_lazyload_wrapper()) {
463 463
             $src_url .= '?ao_nolazy=1';
464 464
         }
465 465
 
466
-        $src_url = apply_filters( 'autoptimize_filter_ccss_cron_srcurl', $src_url );
466
+        $src_url = apply_filters('autoptimize_filter_ccss_cron_srcurl', $src_url);
467 467
 
468 468
         // Initialize request body.
469 469
         $body           = array();
@@ -473,88 +473,88 @@  discard block
 block discarded – undo
473 473
 
474 474
         // Prepare and add viewport size to the body if available.
475 475
         $viewport = autoptimizeCriticalCSSCore::ao_ccss_viewport();
476
-        if ( ! empty( $viewport['w'] ) && ! empty( $viewport['h'] ) ) {
476
+        if (!empty($viewport['w']) && !empty($viewport['h'])) {
477 477
             $body['width']  = $viewport['w'];
478 478
             $body['height'] = $viewport['h'];
479 479
         }
480 480
 
481 481
         // Prepare and add forceInclude to the body if available.
482 482
         global $ao_ccss_finclude;
483
-        $finclude = $this->ao_ccss_finclude( $ao_ccss_finclude );
484
-        if ( ! empty( $finclude ) ) {
483
+        $finclude = $this->ao_ccss_finclude($ao_ccss_finclude);
484
+        if (!empty($finclude)) {
485 485
             $body['forceInclude'] = $finclude;
486 486
         }
487 487
 
488 488
         // Add filter to allow the body array to be altered (e.g. to add customPageHeaders).
489
-        $body = apply_filters( 'autoptimize_ccss_cron_api_generate_body', $body );
489
+        $body = apply_filters('autoptimize_ccss_cron_api_generate_body', $body);
490 490
 
491 491
         // Body must be json and log it.
492
-        $body = json_encode( $body );
493
-        autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request body is ' . $body, 3 );
492
+        $body = json_encode($body);
493
+        autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request body is '.$body, 3);
494 494
 
495 495
         // Prepare the request.
496
-        $url  = esc_url_raw( AO_CCSS_API . 'generate?aover=' . AO_CCSS_VER );
496
+        $url  = esc_url_raw(AO_CCSS_API.'generate?aover='.AO_CCSS_VER);
497 497
         $args = array(
498 498
             'headers' => array(
499
-                'User-Agent'    => 'Autoptimize v' . AO_CCSS_VER,
499
+                'User-Agent'    => 'Autoptimize v'.AO_CCSS_VER,
500 500
                 'Content-type'  => 'application/json; charset=utf-8',
501
-                'Authorization' => 'JWT ' . $key,
501
+                'Authorization' => 'JWT '.$key,
502 502
                 'Connection'    => 'close',
503 503
             ),
504 504
             'body'    => $body,
505 505
         );
506 506
 
507 507
         // Dispatch the request and store its response code.
508
-        $req  = wp_safe_remote_post( $url, $args );
509
-        $code = wp_remote_retrieve_response_code( $req );
510
-        $body = json_decode( wp_remote_retrieve_body( $req ), true );
508
+        $req  = wp_safe_remote_post($url, $args);
509
+        $code = wp_remote_retrieve_response_code($req);
510
+        $body = json_decode(wp_remote_retrieve_body($req), true);
511 511
 
512
-        if ( $debug && $dcode ) {
512
+        if ($debug && $dcode) {
513 513
             // If queue debug is active, change response code.
514 514
             $code = $dcode;
515 515
         }
516 516
 
517
-        if ( 200 == $code ) {
517
+        if (200 == $code) {
518 518
             // Response code is OK.
519 519
             // Workaround criticalcss.com non-RESTful reponses.
520
-            if ( 'JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status'] || 'STATUS_JOB_BAD' == $body['job']['status'] ) {
520
+            if ('JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status'] || 'STATUS_JOB_BAD' == $body['job']['status']) {
521 521
                 // Log successful and return encoded request body.
522
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request for path <' . $src_url . '> replied successfully', 3 );
522
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request for path <'.$src_url.'> replied successfully', 3);
523 523
 
524 524
                 // This code also means the key is valid, so cache key status for 24h if not already cached.
525
-                if ( ( ! $key_status || 2 != $key_status ) && $key ) {
526
-                    update_option( 'autoptimize_ccss_keyst', 2 );
527
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is valid, updating key status', 3 );
525
+                if ((!$key_status || 2 != $key_status) && $key) {
526
+                    update_option('autoptimize_ccss_keyst', 2);
527
+                    autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is valid, updating key status', 3);
528 528
                 }
529 529
 
530 530
                 // Return the request body.
531 531
                 return $body;
532 532
             } else {
533 533
                 // Log successful requests with invalid reponses.
534
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request for path <' . $src_url . '> replied with code <' . $code . '> and an UNKNOWN error condition, body follows...', 2 );
535
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
534
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request for path <'.$src_url.'> replied with code <'.$code.'> and an UNKNOWN error condition, body follows...', 2);
535
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
536 536
                 return $body;
537 537
             }
538 538
         } else {
539 539
             // Response code is anything else.
540 540
             // Log failed request with a valid response code and return body.
541
-            if ( $code ) {
542
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request for path <' . $src_url . '> replied with error code <' . $code . '>, body follows...', 2 );
543
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
541
+            if ($code) {
542
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request for path <'.$src_url.'> replied with error code <'.$code.'>, body follows...', 2);
543
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
544 544
 
545
-                if ( 401 == $code ) {
545
+                if (401 == $code) {
546 546
                     // If request is unauthorized, also clear key status.
547
-                    update_option( 'autoptimize_ccss_keyst', 1 );
548
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is invalid, updating key status', 3 );
547
+                    update_option('autoptimize_ccss_keyst', 1);
548
+                    autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is invalid, updating key status', 3);
549 549
                 }
550 550
 
551 551
                 // Return the request body.
552 552
                 return $body;
553 553
             } else {
554 554
                 // Log failed request with no response and return false.
555
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request for path <' . $src_url . '> has no response, this could be a service timeout', 2 );
556
-                if ( is_wp_error( $req ) ) {
557
-                    autoptimizeCriticalCSSCore::ao_ccss_log( $req->get_error_message(), 2 );
555
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request for path <'.$src_url.'> has no response, this could be a service timeout', 2);
556
+                if (is_wp_error($req)) {
557
+                    autoptimizeCriticalCSSCore::ao_ccss_log($req->get_error_message(), 2);
558 558
                 }
559 559
 
560 560
                 return false;
@@ -562,76 +562,76 @@  discard block
 block discarded – undo
562 562
         }
563 563
     }
564 564
 
565
-    public function ao_ccss_api_results( $jobid, $debug, $dcode ) {
565
+    public function ao_ccss_api_results($jobid, $debug, $dcode) {
566 566
         // GET jobs from criticalcss.com and return responses
567 567
         // Get key.
568 568
         global $ao_ccss_key;
569 569
         $key = $ao_ccss_key;
570 570
 
571 571
         // Prepare the request.
572
-        $url  = AO_CCSS_API . 'results?resultId=' . $jobid;
572
+        $url  = AO_CCSS_API.'results?resultId='.$jobid;
573 573
         $args = array(
574 574
             'headers' => array(
575
-                'User-Agent'    => 'Autoptimize CriticalCSS Power-Up v' . AO_CCSS_VER,
576
-                'Authorization' => 'JWT ' . $key,
575
+                'User-Agent'    => 'Autoptimize CriticalCSS Power-Up v'.AO_CCSS_VER,
576
+                'Authorization' => 'JWT '.$key,
577 577
                 'Connection'    => 'close',
578 578
             ),
579 579
         );
580 580
 
581 581
         // Dispatch the request and store its response code.
582
-        $req  = wp_safe_remote_get( $url, $args );
583
-        $code = wp_remote_retrieve_response_code( $req );
584
-        $body = json_decode( wp_remote_retrieve_body( $req ), true );
582
+        $req  = wp_safe_remote_get($url, $args);
583
+        $code = wp_remote_retrieve_response_code($req);
584
+        $body = json_decode(wp_remote_retrieve_body($req), true);
585 585
 
586
-        if ( $debug && $dcode ) {
586
+        if ($debug && $dcode) {
587 587
             // If queue debug is active, change response code.
588 588
             $code = $dcode;
589 589
         }
590 590
 
591
-        if ( 200 == $code ) {
591
+        if (200 == $code) {
592 592
             // Response code is OK.
593
-            if ( is_array( $body ) && ( array_key_exists( 'status', $body ) || array_key_exists( 'job', $body ) ) && ( 'JOB_QUEUED' == $body['status'] || 'JOB_ONGOING' == $body['status'] || 'JOB_DONE' == $body['status'] || 'JOB_FAILED' == $body['status'] || 'JOB_UNKNOWN' == $body['status'] || 'STATUS_JOB_BAD' == $body['job']['status'] ) ) {
593
+            if (is_array($body) && (array_key_exists('status', $body) || array_key_exists('job', $body)) && ('JOB_QUEUED' == $body['status'] || 'JOB_ONGOING' == $body['status'] || 'JOB_DONE' == $body['status'] || 'JOB_FAILED' == $body['status'] || 'JOB_UNKNOWN' == $body['status'] || 'STATUS_JOB_BAD' == $body['job']['status'])) {
594 594
                 // Workaround criticalcss.com non-RESTful reponses
595 595
                 // Log successful and return encoded request body.
596
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied successfully', 3 );
596
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: GET results request for remote job id <'.$jobid.'> replied successfully', 3);
597 597
                 return $body;
598
-            } elseif ( is_array( $body ) && ( array_key_exists( 'error', $body ) && 'This css no longer exists. Please re-generate it.' == $body['error'] ) ) {
598
+            } elseif (is_array($body) && (array_key_exists('error', $body) && 'This css no longer exists. Please re-generate it.' == $body['error'])) {
599 599
                 // Handle no CSS reply
600 600
                 // Log no CSS error and return encoded request body.
601
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied successfully but the CSS for it does not exist anymore', 3 );
601
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: GET results request for remote job id <'.$jobid.'> replied successfully but the CSS for it does not exist anymore', 3);
602 602
                 return $body;
603 603
             } else {
604 604
                 // Log failed request and return false.
605
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied with code <' . $code . '> and an UNKNOWN error condition, body follows...', 2 );
606
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
605
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: GET results request for remote job id <'.$jobid.'> replied with code <'.$code.'> and an UNKNOWN error condition, body follows...', 2);
606
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
607 607
                 return false;
608 608
             }
609 609
         } else {
610 610
             // Response code is anything else
611 611
             // Log failed request with a valid response code and return body.
612
-            if ( $code ) {
613
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied with error code <' . $code . '>, body follows...', 2 );
614
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
615
-                if ( 401 == $code ) {
612
+            if ($code) {
613
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: GET results request for remote job id <'.$jobid.'> replied with error code <'.$code.'>, body follows...', 2);
614
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
615
+                if (401 == $code) {
616 616
                     // If request is unauthorized, also clear key status.
617
-                    update_option( 'autoptimize_ccss_keyst', 1 );
618
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is invalid, updating key status', 3 );
617
+                    update_option('autoptimize_ccss_keyst', 1);
618
+                    autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is invalid, updating key status', 3);
619 619
                 }
620 620
 
621 621
                 // Return the request body.
622 622
                 return $body;
623 623
             } else {
624 624
                 // Log failed request with no response and return false.
625
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> has no response, this could be a service timeout', 2 );
625
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: GET results request for remote job id <'.$jobid.'> has no response, this could be a service timeout', 2);
626 626
                 return false;
627 627
             }
628 628
         }
629 629
     }
630 630
 
631
-    public function ao_ccss_save_file( $ccss, $target, $review ) {
631
+    public function ao_ccss_save_file($ccss, $target, $review) {
632 632
         // Save critical CSS into the filesystem and return its filename
633 633
         // Prepare review mark.
634
-        if ( $review ) {
634
+        if ($review) {
635 635
             $rmark = '_R';
636 636
         } else {
637 637
             $rmark = '';
@@ -641,21 +641,21 @@  discard block
 block discarded – undo
641 641
         $filename = false;
642 642
         $content  = $ccss;
643 643
 
644
-        if ( autoptimizeCriticalCSSCore::ao_ccss_check_contents( $content ) ) {
644
+        if (autoptimizeCriticalCSSCore::ao_ccss_check_contents($content)) {
645 645
             // Sanitize content, set filename and try to save file.
646
-            $file     = AO_CCSS_DIR . 'ccss_' . md5( $ccss . $target[1] ) . $rmark . '.css';
647
-            $status   = file_put_contents( $file, $content, LOCK_EX );
648
-            $filename = pathinfo( $file, PATHINFO_BASENAME );
649
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS file for the rule <' . $target[0] . '|' . $target[1] . '> was saved as <' . $filename . '>, size in bytes is <' . $status . '>', 3 );
646
+            $file     = AO_CCSS_DIR.'ccss_'.md5($ccss.$target[1]).$rmark.'.css';
647
+            $status   = file_put_contents($file, $content, LOCK_EX);
648
+            $filename = pathinfo($file, PATHINFO_BASENAME);
649
+            autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS file for the rule <'.$target[0].'|'.$target[1].'> was saved as <'.$filename.'>, size in bytes is <'.$status.'>', 3);
650 650
 
651
-            if ( ! $status ) {
651
+            if (!$status) {
652 652
                 // If file has not been saved, reset filename.
653
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS file <' . $filename . '> could not be not saved', 2 );
653
+                autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS file <'.$filename.'> could not be not saved', 2);
654 654
                 $filename = false;
655 655
                 return $filename;
656 656
             }
657 657
         } else {
658
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS received did not pass content check', 2 );
658
+            autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS received did not pass content check', 2);
659 659
             return $filename;
660 660
         }
661 661
 
@@ -665,15 +665,15 @@  discard block
 block discarded – undo
665 665
         global $ao_ccss_rules;
666 666
 
667 667
         // Prepare rule variables.
668
-        $srule   = $ao_ccss_rules[ $target[0] ][ $target[1] ];
668
+        $srule   = $ao_ccss_rules[$target[0]][$target[1]];
669 669
         $oldfile = $srule['file'];
670 670
 
671
-        if ( $oldfile && $oldfile !== $filename ) {
672
-            $delfile = AO_CCSS_DIR . $oldfile;
673
-            if ( file_exists( $delfile ) ) {
674
-                $unlinkst = unlink( $delfile );
675
-                if ( $unlinkst ) {
676
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'A previous critical CSS file <' . $oldfile . '> was removed for the rule <' . $target[0] . '|' . $target[1] . '>', 3 );
671
+        if ($oldfile && $oldfile !== $filename) {
672
+            $delfile = AO_CCSS_DIR.$oldfile;
673
+            if (file_exists($delfile)) {
674
+                $unlinkst = unlink($delfile);
675
+                if ($unlinkst) {
676
+                    autoptimizeCriticalCSSCore::ao_ccss_log('A previous critical CSS file <'.$oldfile.'> was removed for the rule <'.$target[0].'|'.$target[1].'>', 3);
677 677
                 }
678 678
             }
679 679
         }
@@ -682,29 +682,29 @@  discard block
 block discarded – undo
682 682
         return $filename;
683 683
     }
684 684
 
685
-    public function ao_ccss_rule_update( $ljid, $srule, $file, $hash ) {
685
+    public function ao_ccss_rule_update($ljid, $srule, $file, $hash) {
686 686
         // Update or create a rule
687 687
         // Attach required arrays.
688 688
         global $ao_ccss_rules;
689 689
 
690 690
         // Prepare rule variables.
691
-        $trule  = explode( '|', $srule );
692
-        $rule   = $ao_ccss_rules[ $trule[0] ][ $trule[1] ];
691
+        $trule  = explode('|', $srule);
692
+        $rule   = $ao_ccss_rules[$trule[0]][$trule[1]];
693 693
         $action = false;
694 694
         $rtype  = '';
695 695
 
696
-        if ( 0 === $rule['hash'] && 0 !== $rule['file'] ) {
696
+        if (0 === $rule['hash'] && 0 !== $rule['file']) {
697 697
             // manual rule, don't ever overwrite.
698 698
             $action = 'NOT UPDATED';
699 699
             $rtype  = 'MANUAL';
700
-        } elseif ( 0 === $rule['hash'] && 0 === $rule['file'] ) {
700
+        } elseif (0 === $rule['hash'] && 0 === $rule['file']) {
701 701
             // If this is an user created AUTO rule with no hash and file yet, update its hash and filename
702 702
             // Set rule hash, file and action flag.
703 703
             $rule['hash'] = $hash;
704 704
             $rule['file'] = $file;
705 705
             $action       = 'UPDATED';
706 706
             $rtype        = 'AUTO';
707
-        } elseif ( 0 !== $rule['hash'] && ctype_alnum( $rule['hash'] ) ) {
707
+        } elseif (0 !== $rule['hash'] && ctype_alnum($rule['hash'])) {
708 708
             // If this is an genuine AUTO rule, update its hash and filename
709 709
             // Set rule hash, file and action flag.
710 710
             $rule['hash'] = $hash;
@@ -714,7 +714,7 @@  discard block
 block discarded – undo
714 714
         } else {
715 715
             // If rule doesn't exist, create an AUTO rule
716 716
             // AUTO rules were only for types, but will now also work for paths.
717
-            if ( 'types' == $trule[0] || 'paths' == $trule[0] ) {
717
+            if ('types' == $trule[0] || 'paths' == $trule[0]) {
718 718
                 // Set rule hash and file and action flag.
719 719
                 $rule['hash'] = $hash;
720 720
                 $rule['file'] = $file;
@@ -722,47 +722,47 @@  discard block
 block discarded – undo
722 722
                 $rtype        = 'AUTO';
723 723
             } else {
724 724
                 // Log that no rule was created.
725
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Exception, no AUTO rule created', 3 );
725
+                autoptimizeCriticalCSSCore::ao_ccss_log('Exception, no AUTO rule created', 3);
726 726
             }
727 727
         }
728 728
 
729
-        if ( $action ) {
729
+        if ($action) {
730 730
             // If a rule creation/update is required, persist updated rules object.
731
-            $ao_ccss_rules[ $trule[0] ][ $trule[1] ] = $rule;
732
-            $ao_ccss_rules_raw                       = json_encode( $ao_ccss_rules );
733
-            update_option( 'autoptimize_ccss_rules', $ao_ccss_rules_raw );
734
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Target rule <' . $srule . '> of type <' . $rtype . '> was ' . $action . ' for job id <' . $ljid . '>', 3 );
731
+            $ao_ccss_rules[$trule[0]][$trule[1]] = $rule;
732
+            $ao_ccss_rules_raw                       = json_encode($ao_ccss_rules);
733
+            update_option('autoptimize_ccss_rules', $ao_ccss_rules_raw);
734
+            autoptimizeCriticalCSSCore::ao_ccss_log('Target rule <'.$srule.'> of type <'.$rtype.'> was '.$action.' for job id <'.$ljid.'>', 3);
735 735
         } else {
736
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'No rule action required', 3 );
736
+            autoptimizeCriticalCSSCore::ao_ccss_log('No rule action required', 3);
737 737
         }
738 738
     }
739 739
 
740
-    function ao_ccss_finclude( $finclude_raw ) {
740
+    function ao_ccss_finclude($finclude_raw) {
741 741
         // Prepare forceInclude object.
742
-        if ( ! empty( $finclude_raw ) ) {
742
+        if (!empty($finclude_raw)) {
743 743
             // If there are any content
744 744
             // Convert raw string into arra and initialize the returning object.
745
-            $fincludes = explode( ',', $finclude_raw );
745
+            $fincludes = explode(',', $finclude_raw);
746 746
             $finclude  = array();
747 747
 
748 748
             // Interacts over every rule.
749 749
             $i = 0;
750
-            foreach ( $fincludes as $include ) {
750
+            foreach ($fincludes as $include) {
751 751
                 // Trim leading and trailing whitespaces.
752
-                $include = trim( $include );
752
+                $include = trim($include);
753 753
 
754
-                if ( substr( $include, 0, 2 ) === '//' ) {
754
+                if (substr($include, 0, 2) === '//') {
755 755
                     // Regex rule
756 756
                     // Format value as required.
757
-                    $include = str_replace( '//', '/', $include );
758
-                    $include = $include . '/i';
757
+                    $include = str_replace('//', '/', $include);
758
+                    $include = $include.'/i';
759 759
 
760 760
                     // Store regex object.
761
-                    $finclude[ $i ]['type']  = 'RegExp';
762
-                    $finclude[ $i ]['value'] = $include;
761
+                    $finclude[$i]['type']  = 'RegExp';
762
+                    $finclude[$i]['value'] = $include;
763 763
                 } else {
764 764
                     // Simple value rule.
765
-                    $finclude[ $i ]['value'] = $include;
765
+                    $finclude[$i]['value'] = $include;
766 766
                 }
767 767
 
768 768
                 $i++;
@@ -779,54 +779,54 @@  discard block
 block discarded – undo
779 779
     public function ao_ccss_cleaning() {
780 780
         // Perform plugin maintenance
781 781
         // Truncate log file >= 1MB .
782
-        if ( file_exists( AO_CCSS_LOG ) ) {
783
-            if ( filesize( AO_CCSS_LOG ) >= 1048576 ) {
784
-                $logfile = fopen( AO_CCSS_LOG, 'w' );
785
-                fclose( $logfile );
782
+        if (file_exists(AO_CCSS_LOG)) {
783
+            if (filesize(AO_CCSS_LOG) >= 1048576) {
784
+                $logfile = fopen(AO_CCSS_LOG, 'w');
785
+                fclose($logfile);
786 786
             }
787 787
         }
788 788
 
789 789
         // Remove lock file.
790
-        if ( file_exists( AO_CCSS_LOCK ) ) {
791
-            unlink( AO_CCSS_LOCK );
790
+        if (file_exists(AO_CCSS_LOCK)) {
791
+            unlink(AO_CCSS_LOCK);
792 792
         }
793 793
 
794 794
         // Make sure queue processing is scheduled, recreate if not.
795
-        if ( ! wp_next_scheduled( 'ao_ccss_queue' ) ) {
796
-            wp_schedule_event( time(), apply_filters( 'ao_ccss_queue_schedule', 'ao_ccss' ), 'ao_ccss_queue' );
795
+        if (!wp_next_scheduled('ao_ccss_queue')) {
796
+            wp_schedule_event(time(), apply_filters('ao_ccss_queue_schedule', 'ao_ccss'), 'ao_ccss_queue');
797 797
         }
798 798
 
799 799
         // Queue cleaning.
800 800
         global $ao_ccss_queue;
801 801
         $queue_purge_threshold = 100;
802
-        $queue_purge_age       = 24 * 60 * 60;
803
-        $queue_length          = count( $ao_ccss_queue );
804
-        $timestamp_yesterday   = microtime( true ) - $queue_purge_age;
802
+        $queue_purge_age       = 24*60*60;
803
+        $queue_length          = count($ao_ccss_queue);
804
+        $timestamp_yesterday   = microtime(true) - $queue_purge_age;
805 805
         $remove_old_new        = false;
806 806
         $queue_altered         = false;
807 807
 
808
-        if ( $queue_length > $queue_purge_threshold ) {
808
+        if ($queue_length > $queue_purge_threshold) {
809 809
             $remove_old_new = true;
810 810
         }
811 811
 
812
-        foreach ( $ao_ccss_queue as $path => $job ) {
813
-            if ( ( $remove_old_new && 'NEW' == $job['jqstat'] && $job['jctime'] < $timestamp_yesterday ) || in_array( $job['jqstat'], array( 'JOB_FAILED', 'STATUS_JOB_BAD', 'NO_CSS', 'NO_RESPONSE' ) ) ) {
814
-                unset( $ao_ccss_queue[ $path ] );
812
+        foreach ($ao_ccss_queue as $path => $job) {
813
+            if (($remove_old_new && 'NEW' == $job['jqstat'] && $job['jctime'] < $timestamp_yesterday) || in_array($job['jqstat'], array('JOB_FAILED', 'STATUS_JOB_BAD', 'NO_CSS', 'NO_RESPONSE'))) {
814
+                unset($ao_ccss_queue[$path]);
815 815
                 $queue_altered = true;
816 816
             }
817 817
         }
818 818
 
819 819
         // save queue to options!
820
-        if ( $queue_altered ) {
821
-            $ao_ccss_queue_raw = json_encode( $ao_ccss_queue );
822
-            update_option( 'autoptimize_ccss_queue', $ao_ccss_queue_raw, false );
823
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue cleaning done.', 3 );
820
+        if ($queue_altered) {
821
+            $ao_ccss_queue_raw = json_encode($ao_ccss_queue);
822
+            update_option('autoptimize_ccss_queue', $ao_ccss_queue_raw, false);
823
+            autoptimizeCriticalCSSCore::ao_ccss_log('Queue cleaning done.', 3);
824 824
         }
825 825
 
826 826
         // re-check key if invalid.
827 827
         global $ao_ccss_keyst;
828
-        if ( 1 == $ao_ccss_keyst ) {
829
-            $this->ao_ccss_api_generate( '', '', '' );
828
+        if (1 == $ao_ccss_keyst) {
829
+            $this->ao_ccss_api_generate('', '', '');
830 830
         }
831 831
     }
832 832
 }
Please login to merge, or discard this patch.
classes/autoptimizeStyles.php 1 patch
Spacing   +334 added lines, -334 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Class for CSS optimization.
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -161,53 +161,53 @@  discard block
 block discarded – undo
161 161
      *
162 162
      * @param array $options all options.
163 163
      */
164
-    public function read( $options )
164
+    public function read($options)
165 165
     {
166
-        $noptimize_css = apply_filters( 'autoptimize_filter_css_noptimize', false, $this->content );
167
-        if ( $noptimize_css ) {
166
+        $noptimize_css = apply_filters('autoptimize_filter_css_noptimize', false, $this->content);
167
+        if ($noptimize_css) {
168 168
             return false;
169 169
         }
170 170
 
171
-        $whitelist_css = apply_filters( 'autoptimize_filter_css_whitelist', '', $this->content );
172
-        if ( ! empty( $whitelist_css ) ) {
173
-            $this->whitelist = array_filter( array_map( 'trim', explode( ',', $whitelist_css ) ) );
171
+        $whitelist_css = apply_filters('autoptimize_filter_css_whitelist', '', $this->content);
172
+        if (!empty($whitelist_css)) {
173
+            $this->whitelist = array_filter(array_map('trim', explode(',', $whitelist_css)));
174 174
         }
175 175
 
176
-        $removable_css = apply_filters( 'autoptimize_filter_css_removables', '' );
177
-        if ( ! empty( $removable_css ) ) {
178
-            $this->cssremovables = array_filter( array_map( 'trim', explode( ',', $removable_css ) ) );
176
+        $removable_css = apply_filters('autoptimize_filter_css_removables', '');
177
+        if (!empty($removable_css)) {
178
+            $this->cssremovables = array_filter(array_map('trim', explode(',', $removable_css)));
179 179
         }
180 180
 
181
-        $this->cssinlinesize = apply_filters( 'autoptimize_filter_css_inlinesize', 256 );
181
+        $this->cssinlinesize = apply_filters('autoptimize_filter_css_inlinesize', 256);
182 182
 
183 183
         // filter to "late inject minified CSS", default to true for now (it is faster).
184
-        $this->inject_min_late = apply_filters( 'autoptimize_filter_css_inject_min_late', true );
184
+        $this->inject_min_late = apply_filters('autoptimize_filter_css_inject_min_late', true);
185 185
 
186 186
         // Remove everything that's not the header.
187
-        if ( apply_filters( 'autoptimize_filter_css_justhead', $options['justhead'] ) ) {
188
-            $content             = explode( '</head>', $this->content, 2 );
189
-            $this->content       = $content[0] . '</head>';
187
+        if (apply_filters('autoptimize_filter_css_justhead', $options['justhead'])) {
188
+            $content             = explode('</head>', $this->content, 2);
189
+            $this->content       = $content[0].'</head>';
190 190
             $this->restofcontent = $content[1];
191 191
         }
192 192
 
193 193
         // Determine whether we're doing CSS-files aggregation or not.
194
-        if ( isset( $options['aggregate'] ) && ! $options['aggregate'] ) {
194
+        if (isset($options['aggregate']) && !$options['aggregate']) {
195 195
             $this->aggregate = false;
196 196
         }
197 197
         // Returning true for "dontaggregate" turns off aggregation.
198
-        if ( $this->aggregate && apply_filters( 'autoptimize_filter_css_dontaggregate', false ) ) {
198
+        if ($this->aggregate && apply_filters('autoptimize_filter_css_dontaggregate', false)) {
199 199
             $this->aggregate = false;
200 200
         }
201 201
 
202 202
         // include inline?
203
-        if ( apply_filters( 'autoptimize_css_include_inline', $options['include_inline'] ) ) {
203
+        if (apply_filters('autoptimize_css_include_inline', $options['include_inline'])) {
204 204
             $this->include_inline = true;
205 205
         }
206 206
 
207 207
         // List of CSS strings which are excluded from autoptimization.
208
-        $exclude_css = apply_filters( 'autoptimize_filter_css_exclude', $options['css_exclude'], $this->content );
209
-        if ( '' !== $exclude_css ) {
210
-            $this->dontmove = array_filter( array_map( 'trim', explode( ',', $exclude_css ) ) );
208
+        $exclude_css = apply_filters('autoptimize_filter_css_exclude', $options['css_exclude'], $this->content);
209
+        if ('' !== $exclude_css) {
210
+            $this->dontmove = array_filter(array_map('trim', explode(',', $exclude_css)));
211 211
         } else {
212 212
             $this->dontmove = array();
213 213
         }
@@ -218,16 +218,16 @@  discard block
 block discarded – undo
218 218
         // Should we defer css?
219 219
         // value: true / false.
220 220
         $this->defer = $options['defer'];
221
-        $this->defer = apply_filters( 'autoptimize_filter_css_defer', $this->defer, $this->content );
221
+        $this->defer = apply_filters('autoptimize_filter_css_defer', $this->defer, $this->content);
222 222
 
223 223
         // Should we inline while deferring?
224 224
         // value: inlined CSS.
225
-        $this->defer_inline = apply_filters( 'autoptimize_filter_css_defer_inline', $options['defer_inline'], $this->content );
225
+        $this->defer_inline = apply_filters('autoptimize_filter_css_defer_inline', $options['defer_inline'], $this->content);
226 226
 
227 227
         // Should we inline?
228 228
         // value: true / false.
229 229
         $this->inline = $options['inline'];
230
-        $this->inline = apply_filters( 'autoptimize_filter_css_inline', $this->inline, $this->content );
230
+        $this->inline = apply_filters('autoptimize_filter_css_inline', $this->inline, $this->content);
231 231
 
232 232
         // Store cdn url.
233 233
         $this->cdn_url = $options['cdn_url'];
@@ -236,16 +236,16 @@  discard block
 block discarded – undo
236 236
         $this->datauris = $options['datauris'];
237 237
 
238 238
         // Determine whether excluded files should be minified if not yet so.
239
-        if ( ! $options['minify_excluded'] && $options['aggregate'] ) {
239
+        if (!$options['minify_excluded'] && $options['aggregate']) {
240 240
             $this->minify_excluded = false;
241 241
         }
242
-        $this->minify_excluded = apply_filters( 'autoptimize_filter_css_minify_excluded', $this->minify_excluded, '' );
242
+        $this->minify_excluded = apply_filters('autoptimize_filter_css_minify_excluded', $this->minify_excluded, '');
243 243
 
244 244
         // should we force all media-attributes to all?
245
-        $this->media_force_all = apply_filters( 'autoptimize_filter_css_tagmedia_forceall', false );
245
+        $this->media_force_all = apply_filters('autoptimize_filter_css_tagmedia_forceall', false);
246 246
 
247 247
         // noptimize me.
248
-        $this->content = $this->hide_noptimize( $this->content );
248
+        $this->content = $this->hide_noptimize($this->content);
249 249
 
250 250
         // Exclude (no)script, as those may contain CSS which should be left as is.
251 251
         $this->content = $this->replace_contents_with_marker_if_exists(
@@ -256,25 +256,25 @@  discard block
 block discarded – undo
256 256
         );
257 257
 
258 258
         // Save IE hacks.
259
-        $this->content = $this->hide_iehacks( $this->content );
259
+        $this->content = $this->hide_iehacks($this->content);
260 260
 
261 261
         // Hide HTML comments.
262
-        $this->content = $this->hide_comments( $this->content );
262
+        $this->content = $this->hide_comments($this->content);
263 263
 
264 264
         // Get <style> and <link>.
265
-        if ( preg_match_all( '#(<style[^>]*>.*</style>)|(<link[^>]*stylesheet[^>]*>)#Usmi', $this->content, $matches ) ) {
265
+        if (preg_match_all('#(<style[^>]*>.*</style>)|(<link[^>]*stylesheet[^>]*>)#Usmi', $this->content, $matches)) {
266 266
 
267
-            foreach ( $matches[0] as $tag ) {
268
-                if ( $this->isremovable( $tag, $this->cssremovables ) ) {
269
-                    $this->content = str_replace( $tag, '', $this->content );
270
-                } elseif ( $this->ismovable( $tag ) ) {
267
+            foreach ($matches[0] as $tag) {
268
+                if ($this->isremovable($tag, $this->cssremovables)) {
269
+                    $this->content = str_replace($tag, '', $this->content);
270
+                } elseif ($this->ismovable($tag)) {
271 271
                     // Get the media.
272
-                    if ( false !== strpos( $tag, 'media=' ) ) {
273
-                        preg_match( '#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $medias );
274
-                        $medias = explode( ',', $medias[1] );
272
+                    if (false !== strpos($tag, 'media=')) {
273
+                        preg_match('#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $medias);
274
+                        $medias = explode(',', $medias[1]);
275 275
                         $media  = array();
276
-                        foreach ( $medias as $elem ) {
277
-                            if ( empty( $elem ) ) {
276
+                        foreach ($medias as $elem) {
277
+                            if (empty($elem)) {
278 278
                                 $elem = 'all';
279 279
                             }
280 280
 
@@ -282,67 +282,67 @@  discard block
 block discarded – undo
282 282
                         }
283 283
                     } else {
284 284
                         // No media specified - applies to all.
285
-                        $media = array( 'all' );
285
+                        $media = array('all');
286 286
                     }
287 287
 
288 288
                     // forcing media attribute to all to merge all in one file.
289
-                    if ( $this->media_force_all ) {
290
-                        $media = array( 'all' );
289
+                    if ($this->media_force_all) {
290
+                        $media = array('all');
291 291
                     }
292 292
 
293
-                    $media = apply_filters( 'autoptimize_filter_css_tagmedia', $media, $tag );
293
+                    $media = apply_filters('autoptimize_filter_css_tagmedia', $media, $tag);
294 294
 
295
-                    if ( preg_match( '#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source ) ) {
295
+                    if (preg_match('#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source)) {
296 296
                         // <link>.
297
-                        $url  = current( explode( '?', $source[2], 2 ) );
298
-                        $path = $this->getpath( $url );
297
+                        $url  = current(explode('?', $source[2], 2));
298
+                        $path = $this->getpath($url);
299 299
 
300
-                        if ( false !== $path && preg_match( '#\.css$#', $path ) ) {
300
+                        if (false !== $path && preg_match('#\.css$#', $path)) {
301 301
                             // Good link.
302
-                            $this->css[] = array( $media, $path );
302
+                            $this->css[] = array($media, $path);
303 303
                         } else {
304 304
                             // Link is dynamic (.php etc).
305
-                            $new_tag = $this->optionally_defer_excluded( $tag, 'none' );
306
-                            if ( '' !== $new_tag && $new_tag !== $tag ) {
307
-                                $this->content = str_replace( $tag, $new_tag, $this->content );
305
+                            $new_tag = $this->optionally_defer_excluded($tag, 'none');
306
+                            if ('' !== $new_tag && $new_tag !== $tag) {
307
+                                $this->content = str_replace($tag, $new_tag, $this->content);
308 308
                             }
309 309
                             $tag = '';
310 310
                         }
311 311
                     } else {
312 312
                         // Inline css in style tags can be wrapped in comment tags, so restore comments.
313
-                        $tag = $this->restore_comments( $tag );
314
-                        preg_match( '#<style.*>(.*)</style>#Usmi', $tag, $code );
313
+                        $tag = $this->restore_comments($tag);
314
+                        preg_match('#<style.*>(.*)</style>#Usmi', $tag, $code);
315 315
 
316 316
                         // And re-hide them to be able to to the removal based on tag.
317
-                        $tag = $this->hide_comments( $tag );
317
+                        $tag = $this->hide_comments($tag);
318 318
 
319
-                        if ( $this->include_inline ) {
320
-                            $code        = preg_replace( '#^.*<!\[CDATA\[(?:\s*\*/)?(.*)(?://|/\*)\s*?\]\]>.*$#sm', '$1', $code[1] );
321
-                            $this->css[] = array( $media, 'INLINE;' . $code );
319
+                        if ($this->include_inline) {
320
+                            $code        = preg_replace('#^.*<!\[CDATA\[(?:\s*\*/)?(.*)(?://|/\*)\s*?\]\]>.*$#sm', '$1', $code[1]);
321
+                            $this->css[] = array($media, 'INLINE;'.$code);
322 322
                         } else {
323 323
                             $tag = '';
324 324
                         }
325 325
                     }
326 326
 
327 327
                     // Remove the original style tag.
328
-                    $this->content = str_replace( $tag, '', $this->content );
328
+                    $this->content = str_replace($tag, '', $this->content);
329 329
                 } else {
330
-                    if ( preg_match( '#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source ) ) {
331
-                        $exploded_url = explode( '?', $source[2], 2 );
330
+                    if (preg_match('#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source)) {
331
+                        $exploded_url = explode('?', $source[2], 2);
332 332
                         $url          = $exploded_url[0];
333
-                        $path         = $this->getpath( $url );
333
+                        $path         = $this->getpath($url);
334 334
                         $new_tag      = $tag;
335 335
 
336 336
                         // Excluded CSS, minify that file:
337 337
                         // -> if aggregate is on and exclude minify is on
338 338
                         // -> if aggregate is off and the file is not in dontmove.
339
-                        if ( $path && $this->minify_excluded ) {
340
-                            $consider_minified_array = apply_filters( 'autoptimize_filter_css_consider_minified', false );
341
-                            if ( ( false === $this->aggregate && str_replace( $this->dontmove, '', $path ) === $path ) || ( true === $this->aggregate && ( false === $consider_minified_array || str_replace( $consider_minified_array, '', $path ) === $path ) ) ) {
342
-                                $minified_url = $this->minify_single( $path );
343
-                                if ( ! empty( $minified_url ) ) {
339
+                        if ($path && $this->minify_excluded) {
340
+                            $consider_minified_array = apply_filters('autoptimize_filter_css_consider_minified', false);
341
+                            if ((false === $this->aggregate && str_replace($this->dontmove, '', $path) === $path) || (true === $this->aggregate && (false === $consider_minified_array || str_replace($consider_minified_array, '', $path) === $path))) {
342
+                                $minified_url = $this->minify_single($path);
343
+                                if (!empty($minified_url)) {
344 344
                                     // Replace orig URL with cached minified URL.
345
-                                    $new_tag = str_replace( $url, $minified_url, $tag );
345
+                                    $new_tag = str_replace($url, $minified_url, $tag);
346 346
                                 } else {
347 347
                                     // Remove the original style tag, because cache content is empty.
348 348
                                     $new_tag = '';
@@ -350,14 +350,14 @@  discard block
 block discarded – undo
350 350
                             }
351 351
                         }
352 352
 
353
-                        if ( '' !== $new_tag ) {
353
+                        if ('' !== $new_tag) {
354 354
                             // Optionally defer (preload) non-aggregated CSS.
355
-                            $new_tag = $this->optionally_defer_excluded( $new_tag, $url );
355
+                            $new_tag = $this->optionally_defer_excluded($new_tag, $url);
356 356
                         }
357 357
 
358 358
                         // And replace!
359
-                        if ( ( '' !== $new_tag && $new_tag !== $tag ) || ( '' === $new_tag && apply_filters( 'autoptimize_filter_css_remove_empty_files', false ) ) ) {
360
-                            $this->content = str_replace( $tag, $new_tag, $this->content );
359
+                        if (('' !== $new_tag && $new_tag !== $tag) || ('' === $new_tag && apply_filters('autoptimize_filter_css_remove_empty_files', false))) {
360
+                            $this->content = str_replace($tag, $new_tag, $this->content);
361 361
                         }
362 362
                     }
363 363
                 }
@@ -378,10 +378,10 @@  discard block
 block discarded – undo
378 378
      *
379 379
      * @return string $new_tag
380 380
      */
381
-    private function optionally_defer_excluded( $tag, $url = '' )
381
+    private function optionally_defer_excluded($tag, $url = '')
382 382
     {
383 383
         // Defer single CSS if "inline & defer" is ON and there is inline CSS.
384
-        if ( ! empty( $tag ) && false === strpos( $tag, ' onload=' ) && $this->defer && ! empty( $this->defer_inline ) && apply_filters( 'autoptimize_filter_css_defer_excluded', true, $tag ) ) {
384
+        if (!empty($tag) && false === strpos($tag, ' onload=') && $this->defer && !empty($this->defer_inline) && apply_filters('autoptimize_filter_css_defer_excluded', true, $tag)) {
385 385
             // Get/ set (via filter) the JS to be triggers onload of the preloaded CSS.
386 386
             $_preload_onload = apply_filters(
387 387
                 'autoptimize_filter_css_preload_onload',
@@ -390,12 +390,12 @@  discard block
 block discarded – undo
390 390
             );
391 391
 
392 392
             // Adapt original <link> element for CSS to be preloaded and add <noscript>-version for fallback.
393
-            $new_tag = '<noscript>' . autoptimizeUtils::remove_id_from_node( $tag ) . '</noscript>' . str_replace(
393
+            $new_tag = '<noscript>'.autoptimizeUtils::remove_id_from_node($tag).'</noscript>'.str_replace(
394 394
                 array(
395 395
                     "rel='stylesheet'",
396 396
                     'rel="stylesheet"',
397 397
                 ),
398
-                "rel='preload' as='style' onload=\"" . $_preload_onload . '"',
398
+                "rel='preload' as='style' onload=\"".$_preload_onload.'"',
399 399
                 $tag
400 400
             );
401 401
 
@@ -413,22 +413,22 @@  discard block
 block discarded – undo
413 413
      * @param string $path image path.
414 414
      * @return boolean
415 415
      */
416
-    private function is_datauri_candidate( $path )
416
+    private function is_datauri_candidate($path)
417 417
     {
418 418
         // Call only once since it's called from a loop.
419 419
         static $max_size = null;
420
-        if ( null === $max_size ) {
420
+        if (null === $max_size) {
421 421
             $max_size = $this->get_datauri_maxsize();
422 422
         }
423 423
 
424
-        if ( $path && preg_match( '#\.(jpe?g|png|gif|webp|bmp)$#i', $path ) &&
425
-            file_exists( $path ) && is_readable( $path ) && filesize( $path ) <= $max_size ) {
424
+        if ($path && preg_match('#\.(jpe?g|png|gif|webp|bmp)$#i', $path) &&
425
+            file_exists($path) && is_readable($path) && filesize($path) <= $max_size) {
426 426
 
427 427
             // Seems we have a candidate.
428 428
             $is_candidate = true;
429 429
         } else {
430 430
             // Filter allows overriding default decision (which checks for local file existence).
431
-            $is_candidate = apply_filters( 'autoptimize_filter_css_is_datauri_candidate', false, $path );
431
+            $is_candidate = apply_filters('autoptimize_filter_css_is_datauri_candidate', false, $path);
432 432
         }
433 433
 
434 434
         return $is_candidate;
@@ -453,29 +453,29 @@  discard block
 block discarded – undo
453 453
          * of thing you're probably better of building assets completely
454 454
          * outside of WordPress anyway.
455 455
          */
456
-        if ( null === $max_size ) {
457
-            $max_size = (int) apply_filters( 'autoptimize_filter_css_datauri_maxsize', 4096 );
456
+        if (null === $max_size) {
457
+            $max_size = (int) apply_filters('autoptimize_filter_css_datauri_maxsize', 4096);
458 458
         }
459 459
 
460 460
         return $max_size;
461 461
     }
462 462
 
463
-    private function check_datauri_exclude_list( $url )
463
+    private function check_datauri_exclude_list($url)
464 464
     {
465 465
         static $exclude_list = null;
466 466
         $no_datauris         = array();
467 467
 
468 468
         // Again, skip doing certain stuff repeatedly when loop-called.
469
-        if ( null === $exclude_list ) {
470
-            $exclude_list = apply_filters( 'autoptimize_filter_css_datauri_exclude', '' );
471
-            $no_datauris  = array_filter( array_map( 'trim', explode( ',', $exclude_list ) ) );
469
+        if (null === $exclude_list) {
470
+            $exclude_list = apply_filters('autoptimize_filter_css_datauri_exclude', '');
471
+            $no_datauris  = array_filter(array_map('trim', explode(',', $exclude_list)));
472 472
         }
473 473
 
474 474
         $matched = false;
475 475
 
476
-        if ( ! empty( $exclude_list ) ) {
477
-            foreach ( $no_datauris as $no_datauri ) {
478
-                if ( false !== strpos( $url, $no_datauri ) ) {
476
+        if (!empty($exclude_list)) {
477
+            foreach ($no_datauris as $no_datauri) {
478
+                if (false !== strpos($url, $no_datauri)) {
479 479
                     $matched = true;
480 480
                     break;
481 481
                 }
@@ -485,7 +485,7 @@  discard block
 block discarded – undo
485 485
         return $matched;
486 486
     }
487 487
 
488
-    private function build_or_get_datauri_image( $path )
488
+    private function build_or_get_datauri_image($path)
489 489
     {
490 490
         /**
491 491
          * TODO/FIXME: document the required return array format, or better yet,
@@ -494,27 +494,27 @@  discard block
 block discarded – undo
494 494
          */
495 495
 
496 496
         // Allows short-circuiting datauri generation for an image.
497
-        $result = apply_filters( 'autoptimize_filter_css_datauri_image', array(), $path );
498
-        if ( ! empty( $result ) ) {
499
-            if ( is_array( $result ) && isset( $result['full'] ) && isset( $result['base64data'] ) ) {
497
+        $result = apply_filters('autoptimize_filter_css_datauri_image', array(), $path);
498
+        if (!empty($result)) {
499
+            if (is_array($result) && isset($result['full']) && isset($result['base64data'])) {
500 500
                 return $result;
501 501
             }
502 502
         }
503 503
 
504
-        $hash  = md5( $path );
505
-        $check = new autoptimizeCache( $hash, 'img' );
506
-        if ( $check->check() ) {
504
+        $hash  = md5($path);
505
+        $check = new autoptimizeCache($hash, 'img');
506
+        if ($check->check()) {
507 507
             // we have the base64 image in cache.
508 508
             $head_and_data = $check->retrieve();
509
-            $_base64data   = explode( ';base64,', $head_and_data );
509
+            $_base64data   = explode(';base64,', $head_and_data);
510 510
             $base64data    = $_base64data[1];
511
-            unset( $_base64data );
511
+            unset($_base64data);
512 512
         } else {
513 513
             // It's an image and we don't have it in cache, get the type by extension.
514
-            $exploded_path = explode( '.', $path );
515
-            $type          = end( $exploded_path );
514
+            $exploded_path = explode('.', $path);
515
+            $type          = end($exploded_path);
516 516
 
517
-            switch ( $type ) {
517
+            switch ($type) {
518 518
                 case 'jpg':
519 519
                 case 'jpeg':
520 520
                     $dataurihead = 'data:image/jpeg;base64,';
@@ -536,13 +536,13 @@  discard block
 block discarded – undo
536 536
             }
537 537
 
538 538
             // Encode the data.
539
-            $base64data    = base64_encode( file_get_contents( $path ) );
540
-            $head_and_data = $dataurihead . $base64data;
539
+            $base64data    = base64_encode(file_get_contents($path));
540
+            $head_and_data = $dataurihead.$base64data;
541 541
 
542 542
             // Save in cache.
543
-            $check->cache( $head_and_data, 'text/plain' );
543
+            $check->cache($head_and_data, 'text/plain');
544 544
         }
545
-        unset( $check );
545
+        unset($check);
546 546
 
547 547
         return array(
548 548
             'full'       => $head_and_data,
@@ -559,13 +559,13 @@  discard block
 block discarded – undo
559 559
      *
560 560
      * @return string
561 561
      */
562
-    protected static function replace_longest_matches_first( $string, $replacements = array() )
562
+    protected static function replace_longest_matches_first($string, $replacements = array())
563 563
     {
564
-        if ( ! empty( $replacements ) ) {
564
+        if (!empty($replacements)) {
565 565
             // Sort the replacements array by key length in desc order (so that the longest strings are replaced first).
566
-            $keys = array_map( 'strlen', array_keys( $replacements ) );
567
-            array_multisort( $keys, SORT_DESC, $replacements );
568
-            $string = str_replace( array_keys( $replacements ), array_values( $replacements ), $string );
566
+            $keys = array_map('strlen', array_keys($replacements));
567
+            array_multisort($keys, SORT_DESC, $replacements);
568
+            $string = str_replace(array_keys($replacements), array_values($replacements), $string);
569 569
         }
570 570
 
571 571
         return $string;
@@ -581,15 +581,15 @@  discard block
 block discarded – undo
581 581
      *
582 582
      * @return string
583 583
      */
584
-    public function replace_urls( $code = '' )
584
+    public function replace_urls($code = '')
585 585
     {
586 586
         $replacements = array();
587 587
 
588
-        preg_match_all( self::ASSETS_REGEX, $code, $url_src_matches );
589
-        if ( is_array( $url_src_matches ) && ! empty( $url_src_matches ) ) {
590
-            foreach ( $url_src_matches[1] as $count => $original_url ) {
588
+        preg_match_all(self::ASSETS_REGEX, $code, $url_src_matches);
589
+        if (is_array($url_src_matches) && !empty($url_src_matches)) {
590
+            foreach ($url_src_matches[1] as $count => $original_url) {
591 591
                 // Removes quotes and other cruft.
592
-                $url = trim( $original_url, " \t\n\r\0\x0B\"'" );
592
+                $url = trim($original_url, " \t\n\r\0\x0B\"'");
593 593
 
594 594
                 /**
595 595
                  * TODO/FIXME: Add a way for other code / callable to be called here
@@ -607,17 +607,17 @@  discard block
 block discarded – undo
607 607
                  */
608 608
 
609 609
                 // Do CDN replacement if needed.
610
-                if ( ! empty( $this->cdn_url ) ) {
611
-                    $replacement_url = $this->url_replace_cdn( $url );
610
+                if (!empty($this->cdn_url)) {
611
+                    $replacement_url = $this->url_replace_cdn($url);
612 612
                     // Prepare replacements array.
613
-                    $replacements[ $url_src_matches[1][ $count ] ] = str_replace(
614
-                        $original_url, $replacement_url, $url_src_matches[1][ $count ]
613
+                    $replacements[$url_src_matches[1][$count]] = str_replace(
614
+                        $original_url, $replacement_url, $url_src_matches[1][$count]
615 615
                     );
616 616
                 }
617 617
             }
618 618
         }
619 619
 
620
-        $code = self::replace_longest_matches_first( $code, $replacements );
620
+        $code = self::replace_longest_matches_first($code, $replacements);
621 621
 
622 622
         return $code;
623 623
     }
@@ -630,26 +630,26 @@  discard block
 block discarded – undo
630 630
      * @param string $code HTML being processed to hide fonts.
631 631
      * @return string
632 632
      */
633
-    public function hide_fontface_and_maybe_cdn( $code )
633
+    public function hide_fontface_and_maybe_cdn($code)
634 634
     {
635 635
         // Proceed only if @font-face declarations exist within $code.
636
-        preg_match_all( self::FONT_FACE_REGEX, $code, $fontfaces );
637
-        if ( isset( $fontfaces[0] ) ) {
636
+        preg_match_all(self::FONT_FACE_REGEX, $code, $fontfaces);
637
+        if (isset($fontfaces[0])) {
638 638
             // Check if we need to cdn fonts or not.
639
-            $do_font_cdn = apply_filters( 'autoptimize_filter_css_fonts_cdn', false );
639
+            $do_font_cdn = apply_filters('autoptimize_filter_css_fonts_cdn', false);
640 640
 
641
-            foreach ( $fontfaces[0] as $full_match ) {
641
+            foreach ($fontfaces[0] as $full_match) {
642 642
                 // Keep original match so we can search/replace it.
643 643
                 $match_search = $full_match;
644 644
 
645 645
                 // Do font cdn if needed.
646
-                if ( $do_font_cdn ) {
647
-                    $full_match = $this->replace_urls( $full_match );
646
+                if ($do_font_cdn) {
647
+                    $full_match = $this->replace_urls($full_match);
648 648
                 }
649 649
 
650 650
                 // Replace declaration with its base64 encoded string.
651
-                $replacement = self::build_marker( 'FONTFACE', $full_match );
652
-                $code        = str_replace( $match_search, $replacement, $code );
651
+                $replacement = self::build_marker('FONTFACE', $full_match);
652
+                $code        = str_replace($match_search, $replacement, $code);
653 653
             }
654 654
         }
655 655
 
@@ -663,9 +663,9 @@  discard block
 block discarded – undo
663 663
      * @param string $code HTML being processed to unhide fonts.
664 664
      * @return string
665 665
      */
666
-    public function restore_fontface( $code )
666
+    public function restore_fontface($code)
667 667
     {
668
-        return $this->restore_marked_content( 'FONTFACE', $code );
668
+        return $this->restore_marked_content('FONTFACE', $code);
669 669
     }
670 670
 
671 671
     /**
@@ -674,10 +674,10 @@  discard block
 block discarded – undo
674 674
      * @param string $code HTML being processed rewrite assets.
675 675
      * @return string
676 676
      */
677
-    public function rewrite_assets( $code )
677
+    public function rewrite_assets($code)
678 678
     {
679 679
         // Handle @font-face rules by hiding and processing them separately.
680
-        $code = $this->hide_fontface_and_maybe_cdn( $code );
680
+        $code = $this->hide_fontface_and_maybe_cdn($code);
681 681
 
682 682
         /**
683 683
          * TODO/FIXME:
@@ -694,35 +694,35 @@  discard block
 block discarded – undo
694 694
         $imgreplace      = array();
695 695
 
696 696
         // Matches and captures anything specified within the literal `url()` and excludes those containing data: URIs.
697
-        preg_match_all( self::ASSETS_REGEX, $code, $url_src_matches );
698
-        if ( is_array( $url_src_matches ) && ! empty( $url_src_matches ) ) {
699
-            foreach ( $url_src_matches[1] as $count => $original_url ) {
697
+        preg_match_all(self::ASSETS_REGEX, $code, $url_src_matches);
698
+        if (is_array($url_src_matches) && !empty($url_src_matches)) {
699
+            foreach ($url_src_matches[1] as $count => $original_url) {
700 700
                 // Removes quotes and other cruft.
701
-                $url = trim( $original_url, " \t\n\r\0\x0B\"'" );
701
+                $url = trim($original_url, " \t\n\r\0\x0B\"'");
702 702
 
703 703
                 // If datauri inlining is turned on, do it.
704 704
                 $inlined = false;
705
-                if ( $this->datauris ) {
705
+                if ($this->datauris) {
706 706
                     $iurl = $url;
707
-                    if ( false !== strpos( $iurl, '?' ) ) {
708
-                        $iurl = strtok( $iurl, '?' );
707
+                    if (false !== strpos($iurl, '?')) {
708
+                        $iurl = strtok($iurl, '?');
709 709
                     }
710 710
 
711
-                    $ipath = $this->getpath( $iurl );
711
+                    $ipath = $this->getpath($iurl);
712 712
 
713
-                    $excluded = $this->check_datauri_exclude_list( $ipath );
714
-                    if ( ! $excluded ) {
715
-                        $is_datauri_candidate = $this->is_datauri_candidate( $ipath );
716
-                        if ( $is_datauri_candidate ) {
717
-                            $datauri    = $this->build_or_get_datauri_image( $ipath );
713
+                    $excluded = $this->check_datauri_exclude_list($ipath);
714
+                    if (!$excluded) {
715
+                        $is_datauri_candidate = $this->is_datauri_candidate($ipath);
716
+                        if ($is_datauri_candidate) {
717
+                            $datauri    = $this->build_or_get_datauri_image($ipath);
718 718
                             $base64data = $datauri['base64data'];
719 719
                             // Add it to the list for replacement.
720
-                            $imgreplace[ $url_src_matches[1][ $count ] ] = str_replace(
720
+                            $imgreplace[$url_src_matches[1][$count]] = str_replace(
721 721
                                 $original_url,
722 722
                                 $datauri['full'],
723
-                                $url_src_matches[1][ $count ]
723
+                                $url_src_matches[1][$count]
724 724
                             );
725
-                            $inlined                                     = true;
725
+                            $inlined = true;
726 726
                         }
727 727
                     }
728 728
                 }
@@ -733,20 +733,20 @@  discard block
 block discarded – undo
733 733
                  * inlining isn't turned on, or if a resource is skipped from
734 734
                  * being inlined for whatever reason above.
735 735
                  */
736
-                if ( ! $inlined && ( ! empty( $this->cdn_url ) || has_filter( 'autoptimize_filter_base_replace_cdn' ) ) ) {
736
+                if (!$inlined && (!empty($this->cdn_url) || has_filter('autoptimize_filter_base_replace_cdn'))) {
737 737
                     // Just do the "simple" CDN replacement.
738
-                    $replacement_url                             = $this->url_replace_cdn( $url );
739
-                    $imgreplace[ $url_src_matches[1][ $count ] ] = str_replace(
740
-                        $original_url, $replacement_url, $url_src_matches[1][ $count ]
738
+                    $replacement_url                             = $this->url_replace_cdn($url);
739
+                    $imgreplace[$url_src_matches[1][$count]] = str_replace(
740
+                        $original_url, $replacement_url, $url_src_matches[1][$count]
741 741
                     );
742 742
                 }
743 743
             }
744 744
         }
745 745
 
746
-        $code = self::replace_longest_matches_first( $code, $imgreplace );
746
+        $code = self::replace_longest_matches_first($code, $imgreplace);
747 747
 
748 748
         // Replace back font-face markers with actual font-face declarations.
749
-        $code = $this->restore_fontface( $code );
749
+        $code = $this->restore_fontface($code);
750 750
 
751 751
         return $code;
752 752
     }
@@ -756,29 +756,29 @@  discard block
 block discarded – undo
756 756
      */
757 757
     public function minify()
758 758
     {
759
-        foreach ( $this->css as $group ) {
760
-            list( $media, $css ) = $group;
761
-            if ( preg_match( '#^INLINE;#', $css ) ) {
759
+        foreach ($this->css as $group) {
760
+            list($media, $css) = $group;
761
+            if (preg_match('#^INLINE;#', $css)) {
762 762
                 // <style>.
763
-                $css      = preg_replace( '#^INLINE;#', '', $css );
764
-                $css      = self::fixurls( ABSPATH . 'index.php', $css ); // ABSPATH already contains a trailing slash.
765
-                $tmpstyle = apply_filters( 'autoptimize_css_individual_style', $css, '' );
766
-                if ( has_filter( 'autoptimize_css_individual_style' ) && ! empty( $tmpstyle ) ) {
763
+                $css      = preg_replace('#^INLINE;#', '', $css);
764
+                $css      = self::fixurls(ABSPATH.'index.php', $css); // ABSPATH already contains a trailing slash.
765
+                $tmpstyle = apply_filters('autoptimize_css_individual_style', $css, '');
766
+                if (has_filter('autoptimize_css_individual_style') && !empty($tmpstyle)) {
767 767
                     $css                   = $tmpstyle;
768 768
                     $this->alreadyminified = true;
769 769
                 }
770 770
             } else {
771 771
                 // <link>
772
-                if ( false !== $css && file_exists( $css ) && is_readable( $css ) ) {
772
+                if (false !== $css && file_exists($css) && is_readable($css)) {
773 773
                     $css_path = $css;
774
-                    $css      = self::fixurls( $css_path, file_get_contents( $css_path ) );
775
-                    $css      = preg_replace( '/\x{EF}\x{BB}\x{BF}/', '', $css );
776
-                    $tmpstyle = apply_filters( 'autoptimize_css_individual_style', $css, $css_path );
777
-                    if ( has_filter( 'autoptimize_css_individual_style' ) && ! empty( $tmpstyle ) ) {
774
+                    $css      = self::fixurls($css_path, file_get_contents($css_path));
775
+                    $css      = preg_replace('/\x{EF}\x{BB}\x{BF}/', '', $css);
776
+                    $tmpstyle = apply_filters('autoptimize_css_individual_style', $css, $css_path);
777
+                    if (has_filter('autoptimize_css_individual_style') && !empty($tmpstyle)) {
778 778
                         $css                   = $tmpstyle;
779 779
                         $this->alreadyminified = true;
780
-                    } elseif ( $this->can_inject_late( $css_path, $css ) ) {
781
-                        $css = self::build_injectlater_marker( $css_path, md5( $css ) );
780
+                    } elseif ($this->can_inject_late($css_path, $css)) {
781
+                        $css = self::build_injectlater_marker($css_path, md5($css));
782 782
                     }
783 783
                 } else {
784 784
                     // Couldn't read CSS. Maybe getpath isn't working?
@@ -786,12 +786,12 @@  discard block
 block discarded – undo
786 786
                 }
787 787
             }
788 788
 
789
-            foreach ( $media as $elem ) {
790
-                if ( ! empty( $css ) ) {
791
-                    if ( ! isset( $this->csscode[ $elem ] ) ) {
792
-                        $this->csscode[ $elem ] = '';
789
+            foreach ($media as $elem) {
790
+                if (!empty($css)) {
791
+                    if (!isset($this->csscode[$elem])) {
792
+                        $this->csscode[$elem] = '';
793 793
                     }
794
-                    $this->csscode[ $elem ] .= "\n/*FILESTART*/" . $css;
794
+                    $this->csscode[$elem] .= "\n/*FILESTART*/".$css;
795 795
                 }
796 796
             }
797 797
         }
@@ -799,133 +799,133 @@  discard block
 block discarded – undo
799 799
         // Check for duplicate code.
800 800
         $md5list = array();
801 801
         $tmpcss  = $this->csscode;
802
-        foreach ( $tmpcss as $media => $code ) {
803
-            $md5sum    = md5( $code );
802
+        foreach ($tmpcss as $media => $code) {
803
+            $md5sum    = md5($code);
804 804
             $medianame = $media;
805
-            foreach ( $md5list as $med => $sum ) {
805
+            foreach ($md5list as $med => $sum) {
806 806
                 // If same code.
807
-                if ( $sum === $md5sum ) {
807
+                if ($sum === $md5sum) {
808 808
                     // Add the merged code.
809
-                    $medianame                   = $med . ', ' . $media;
810
-                    $this->csscode[ $medianame ] = $code;
811
-                    $md5list[ $medianame ]       = $md5list[ $med ];
812
-                    unset( $this->csscode[ $med ], $this->csscode[ $media ], $md5list[ $med ] );
809
+                    $medianame                   = $med.', '.$media;
810
+                    $this->csscode[$medianame] = $code;
811
+                    $md5list[$medianame]       = $md5list[$med];
812
+                    unset($this->csscode[$med], $this->csscode[$media], $md5list[$med]);
813 813
                 }
814 814
             }
815
-            $md5list[ $medianame ] = $md5sum;
815
+            $md5list[$medianame] = $md5sum;
816 816
         }
817
-        unset( $tmpcss );
817
+        unset($tmpcss);
818 818
 
819 819
         // Manage @imports, while is for recursive import management.
820
-        foreach ( $this->csscode as &$thiscss ) {
820
+        foreach ($this->csscode as &$thiscss) {
821 821
             // Flag to trigger import reconstitution and var to hold external imports.
822 822
             $fiximports       = false;
823 823
             $external_imports = '';
824 824
 
825 825
             // remove comments to avoid importing commented-out imports.
826
-            $thiscss_nocomments = preg_replace( '#/\*.*\*/#Us', '', $thiscss );
827
-            while ( preg_match_all( '#@import +(?:url)?(?:(?:\((["\']?)(?:[^"\')]+)\1\)|(["\'])(?:[^"\']+)\2)(?:[^,;"\']+(?:,[^,;"\']+)*)?)(?:;)#mi', $thiscss_nocomments, $matches ) ) {
828
-                foreach ( $matches[0] as $import ) {
829
-                    if ( $this->isremovable( $import, $this->cssremovables ) ) {
830
-                        $thiscss   = str_replace( $import, '', $thiscss );
826
+            $thiscss_nocomments = preg_replace('#/\*.*\*/#Us', '', $thiscss);
827
+            while (preg_match_all('#@import +(?:url)?(?:(?:\((["\']?)(?:[^"\')]+)\1\)|(["\'])(?:[^"\']+)\2)(?:[^,;"\']+(?:,[^,;"\']+)*)?)(?:;)#mi', $thiscss_nocomments, $matches)) {
828
+                foreach ($matches[0] as $import) {
829
+                    if ($this->isremovable($import, $this->cssremovables)) {
830
+                        $thiscss   = str_replace($import, '', $thiscss);
831 831
                         $import_ok = true;
832 832
                     } else {
833
-                        $url       = trim( preg_replace( '#^.*((?:https?:|ftp:)?//.*\.css).*$#', '$1', trim( $import ) ), " \t\n\r\0\x0B\"'" );
834
-                        $path      = $this->getpath( $url );
833
+                        $url       = trim(preg_replace('#^.*((?:https?:|ftp:)?//.*\.css).*$#', '$1', trim($import)), " \t\n\r\0\x0B\"'");
834
+                        $path      = $this->getpath($url);
835 835
                         $import_ok = false;
836
-                        if ( file_exists( $path ) && is_readable( $path ) ) {
837
-                            $code     = addcslashes( self::fixurls( $path, file_get_contents( $path ) ), '\\' );
838
-                            $code     = preg_replace( '/\x{EF}\x{BB}\x{BF}/', '', $code );
839
-                            $tmpstyle = apply_filters( 'autoptimize_css_individual_style', $code, '' );
840
-                            if ( has_filter( 'autoptimize_css_individual_style' ) && ! empty( $tmpstyle ) ) {
836
+                        if (file_exists($path) && is_readable($path)) {
837
+                            $code     = addcslashes(self::fixurls($path, file_get_contents($path)), '\\');
838
+                            $code     = preg_replace('/\x{EF}\x{BB}\x{BF}/', '', $code);
839
+                            $tmpstyle = apply_filters('autoptimize_css_individual_style', $code, '');
840
+                            if (has_filter('autoptimize_css_individual_style') && !empty($tmpstyle)) {
841 841
                                 $code                  = $tmpstyle;
842 842
                                 $this->alreadyminified = true;
843
-                            } elseif ( $this->can_inject_late( $path, $code ) ) {
844
-                                $code = self::build_injectlater_marker( $path, md5( $code ) );
843
+                            } elseif ($this->can_inject_late($path, $code)) {
844
+                                $code = self::build_injectlater_marker($path, md5($code));
845 845
                             }
846 846
 
847
-                            if ( ! empty( $code ) ) {
848
-                                $tmp_thiscss = preg_replace( '#(/\*FILESTART\*/.*)' . preg_quote( $import, '#' ) . '#Us', '/*FILESTART2*/' . $code . '$1', $thiscss );
849
-                                if ( ! empty( $tmp_thiscss ) ) {
847
+                            if (!empty($code)) {
848
+                                $tmp_thiscss = preg_replace('#(/\*FILESTART\*/.*)'.preg_quote($import, '#').'#Us', '/*FILESTART2*/'.$code.'$1', $thiscss);
849
+                                if (!empty($tmp_thiscss)) {
850 850
                                     $thiscss   = $tmp_thiscss;
851 851
                                     $import_ok = true;
852
-                                    unset( $tmp_thiscss );
852
+                                    unset($tmp_thiscss);
853 853
                                 }
854 854
                             }
855
-                            unset( $code );
855
+                            unset($code);
856 856
                         }
857 857
                     }
858
-                    if ( ! $import_ok ) {
858
+                    if (!$import_ok) {
859 859
                         // External imports and general fall-back.
860 860
                         $external_imports .= $import;
861 861
 
862
-                        $thiscss    = str_replace( $import, '', $thiscss );
862
+                        $thiscss    = str_replace($import, '', $thiscss);
863 863
                         $fiximports = true;
864 864
                     }
865 865
                 }
866
-                $thiscss = preg_replace( '#/\*FILESTART\*/#', '', $thiscss );
867
-                $thiscss = preg_replace( '#/\*FILESTART2\*/#', '/*FILESTART*/', $thiscss );
866
+                $thiscss = preg_replace('#/\*FILESTART\*/#', '', $thiscss);
867
+                $thiscss = preg_replace('#/\*FILESTART2\*/#', '/*FILESTART*/', $thiscss);
868 868
 
869 869
                 // and update $thiscss_nocomments before going into next iteration in while loop.
870
-                $thiscss_nocomments = preg_replace( '#/\*.*\*/#Us', '', $thiscss );
870
+                $thiscss_nocomments = preg_replace('#/\*.*\*/#Us', '', $thiscss);
871 871
             }
872
-            unset( $thiscss_nocomments );
872
+            unset($thiscss_nocomments);
873 873
 
874 874
             // Add external imports to top of aggregated CSS.
875
-            if ( $fiximports ) {
876
-                $thiscss = $external_imports . $thiscss;
875
+            if ($fiximports) {
876
+                $thiscss = $external_imports.$thiscss;
877 877
             }
878 878
         }
879
-        unset( $thiscss );
879
+        unset($thiscss);
880 880
 
881 881
         // $this->csscode has all the uncompressed code now.
882
-        foreach ( $this->csscode as &$code ) {
882
+        foreach ($this->csscode as &$code) {
883 883
             // Check for already-minified code.
884
-            $hash = md5( $code );
885
-            do_action( 'autoptimize_action_css_hash', $hash );
886
-            $ccheck = new autoptimizeCache( $hash, 'css' );
887
-            if ( $ccheck->check() ) {
884
+            $hash = md5($code);
885
+            do_action('autoptimize_action_css_hash', $hash);
886
+            $ccheck = new autoptimizeCache($hash, 'css');
887
+            if ($ccheck->check()) {
888 888
                 $code                          = $ccheck->retrieve();
889
-                $this->hashmap[ md5( $code ) ] = $hash;
889
+                $this->hashmap[md5($code)] = $hash;
890 890
                 continue;
891 891
             }
892
-            unset( $ccheck );
892
+            unset($ccheck);
893 893
 
894 894
             // Rewrite and/or inline referenced assets.
895
-            $code = $this->rewrite_assets( $code );
895
+            $code = $this->rewrite_assets($code);
896 896
 
897 897
             // Minify.
898
-            $code = $this->run_minifier_on( $code );
898
+            $code = $this->run_minifier_on($code);
899 899
 
900 900
             // Bring back INJECTLATER stuff.
901
-            $code = $this->inject_minified( $code );
901
+            $code = $this->inject_minified($code);
902 902
 
903 903
             // Filter results.
904
-            $tmp_code = apply_filters( 'autoptimize_css_after_minify', $code );
905
-            if ( ! empty( $tmp_code ) ) {
904
+            $tmp_code = apply_filters('autoptimize_css_after_minify', $code);
905
+            if (!empty($tmp_code)) {
906 906
                 $code = $tmp_code;
907
-                unset( $tmp_code );
907
+                unset($tmp_code);
908 908
             }
909 909
 
910
-            $this->hashmap[ md5( $code ) ] = $hash;
910
+            $this->hashmap[md5($code)] = $hash;
911 911
         }
912 912
 
913
-        unset( $code );
913
+        unset($code);
914 914
         return true;
915 915
     }
916 916
 
917
-    public function run_minifier_on( $code )
917
+    public function run_minifier_on($code)
918 918
     {
919
-        if ( ! $this->alreadyminified ) {
920
-            $do_minify = apply_filters( 'autoptimize_css_do_minify', true );
919
+        if (!$this->alreadyminified) {
920
+            $do_minify = apply_filters('autoptimize_css_do_minify', true);
921 921
 
922
-            if ( $do_minify ) {
922
+            if ($do_minify) {
923 923
                 $cssmin   = new autoptimizeCSSmin();
924
-                $tmp_code = trim( $cssmin->run( $code ) );
924
+                $tmp_code = trim($cssmin->run($code));
925 925
 
926
-                if ( ! empty( $tmp_code ) ) {
926
+                if (!empty($tmp_code)) {
927 927
                     $code = $tmp_code;
928
-                    unset( $tmp_code );
928
+                    unset($tmp_code);
929 929
                 }
930 930
             }
931 931
         }
@@ -939,18 +939,18 @@  discard block
 block discarded – undo
939 939
     public function cache()
940 940
     {
941 941
         // CSS cache.
942
-        foreach ( $this->csscode as $media => $code ) {
943
-            if ( empty( $code ) ) {
942
+        foreach ($this->csscode as $media => $code) {
943
+            if (empty($code)) {
944 944
                 continue;
945 945
             }
946 946
 
947
-            $md5   = $this->hashmap[ md5( $code ) ];
948
-            $cache = new autoptimizeCache( $md5, 'css' );
949
-            if ( ! $cache->check() ) {
947
+            $md5   = $this->hashmap[md5($code)];
948
+            $cache = new autoptimizeCache($md5, 'css');
949
+            if (!$cache->check()) {
950 950
                 // Cache our code.
951
-                $cache->cache( $code, 'text/css' );
951
+                $cache->cache($code, 'text/css');
952 952
             }
953
-            $this->url[ $media ] = AUTOPTIMIZE_CACHE_URL . $cache->getname();
953
+            $this->url[$media] = AUTOPTIMIZE_CACHE_URL.$cache->getname();
954 954
         }
955 955
     }
956 956
 
@@ -960,99 +960,99 @@  discard block
 block discarded – undo
960 960
     public function getcontent()
961 961
     {
962 962
         // Restore the full content (only applies when "autoptimize_filter_css_justhead" filter is true).
963
-        if ( ! empty( $this->restofcontent ) ) {
963
+        if (!empty($this->restofcontent)) {
964 964
             $this->content      .= $this->restofcontent;
965 965
             $this->restofcontent = '';
966 966
         }
967 967
 
968 968
         // type is not added by default.
969 969
         $type_css = '';
970
-        if ( apply_filters( 'autoptimize_filter_cssjs_addtype', false ) ) {
970
+        if (apply_filters('autoptimize_filter_cssjs_addtype', false)) {
971 971
             $type_css = 'type="text/css" ';
972 972
         }
973 973
 
974 974
         // Inject the new stylesheets.
975
-        $replace_tag = array( '<title', 'before' );
976
-        $replace_tag = apply_filters( 'autoptimize_filter_css_replacetag', $replace_tag, $this->content );
975
+        $replace_tag = array('<title', 'before');
976
+        $replace_tag = apply_filters('autoptimize_filter_css_replacetag', $replace_tag, $this->content);
977 977
 
978
-        if ( $this->inline ) {
979
-            foreach ( $this->csscode as $media => $code ) {
980
-                $this->inject_in_html( '<style ' . $type_css . 'media="' . $media . '">' . $code . '</style>', $replace_tag );
978
+        if ($this->inline) {
979
+            foreach ($this->csscode as $media => $code) {
980
+                $this->inject_in_html('<style '.$type_css.'media="'.$media.'">'.$code.'</style>', $replace_tag);
981 981
             }
982 982
         } else {
983
-            if ( $this->defer ) {
983
+            if ($this->defer) {
984 984
                 $preload_css_block  = '';
985 985
                 $inlined_ccss_block = '';
986 986
                 $noscript_css_block = '<noscript id="aonoscrcss">';
987 987
 
988 988
                 $defer_inline_code = $this->defer_inline;
989
-                if ( ! empty( $defer_inline_code ) ) {
990
-                    if ( apply_filters( 'autoptimize_filter_css_critcss_minify', true ) ) {
991
-                        $icss_hash  = md5( $defer_inline_code );
992
-                        $icss_cache = new autoptimizeCache( $icss_hash, 'css' );
993
-                        if ( $icss_cache->check() ) {
989
+                if (!empty($defer_inline_code)) {
990
+                    if (apply_filters('autoptimize_filter_css_critcss_minify', true)) {
991
+                        $icss_hash  = md5($defer_inline_code);
992
+                        $icss_cache = new autoptimizeCache($icss_hash, 'css');
993
+                        if ($icss_cache->check()) {
994 994
                             // we have the optimized inline CSS in cache.
995 995
                             $defer_inline_code = $icss_cache->retrieve();
996 996
                         } else {
997 997
                             $cssmin   = new autoptimizeCSSmin();
998
-                            $tmp_code = trim( $cssmin->run( $defer_inline_code ) );
998
+                            $tmp_code = trim($cssmin->run($defer_inline_code));
999 999
 
1000
-                            if ( ! empty( $tmp_code ) ) {
1000
+                            if (!empty($tmp_code)) {
1001 1001
                                 $defer_inline_code = $tmp_code;
1002
-                                $icss_cache->cache( $defer_inline_code, 'text/css' );
1003
-                                unset( $tmp_code );
1002
+                                $icss_cache->cache($defer_inline_code, 'text/css');
1003
+                                unset($tmp_code);
1004 1004
                             }
1005 1005
                         }
1006 1006
                     }
1007 1007
                     // inlined critical css set here, but injected when full CSS is injected
1008 1008
                     // to avoid CSS containing SVG with <title tag receiving the full CSS link.
1009
-                    $inlined_ccss_block = '<style ' . $type_css . 'id="aoatfcss" media="all">' . $defer_inline_code . '</style>';
1009
+                    $inlined_ccss_block = '<style '.$type_css.'id="aoatfcss" media="all">'.$defer_inline_code.'</style>';
1010 1010
                 }
1011 1011
             }
1012 1012
 
1013
-            foreach ( $this->url as $media => $url ) {
1014
-                $url = $this->url_replace_cdn( $url );
1013
+            foreach ($this->url as $media => $url) {
1014
+                $url = $this->url_replace_cdn($url);
1015 1015
 
1016 1016
                 // Add the stylesheet either deferred (import at bottom) or normal links in head.
1017
-                if ( $this->defer ) {
1017
+                if ($this->defer) {
1018 1018
                     $preload_onload = autoptimizeConfig::get_ao_css_preload_onload();
1019 1019
 
1020
-                    $preload_css_block  .= '<link rel="preload" as="style" media="' . $media . '" href="' . $url . '" onload="' . $preload_onload . '" />';
1021
-                    $noscript_css_block .= '<link ' . $type_css . 'media="' . $media . '" href="' . $url . '" rel="stylesheet" />';
1020
+                    $preload_css_block  .= '<link rel="preload" as="style" media="'.$media.'" href="'.$url.'" onload="'.$preload_onload.'" />';
1021
+                    $noscript_css_block .= '<link '.$type_css.'media="'.$media.'" href="'.$url.'" rel="stylesheet" />';
1022 1022
                 } else {
1023
-                    if ( strlen( $this->csscode[ $media ] ) > $this->cssinlinesize ) {
1024
-                        $this->inject_in_html( '<link ' . $type_css . 'media="' . $media . '" href="' . $url . '" rel="stylesheet" />', $replace_tag );
1025
-                    } elseif ( strlen( $this->csscode[ $media ] ) > 0 ) {
1026
-                        $this->inject_in_html( '<style ' . $type_css . 'media="' . $media . '">' . $this->csscode[ $media ] . '</style>', $replace_tag );
1023
+                    if (strlen($this->csscode[$media]) > $this->cssinlinesize) {
1024
+                        $this->inject_in_html('<link '.$type_css.'media="'.$media.'" href="'.$url.'" rel="stylesheet" />', $replace_tag);
1025
+                    } elseif (strlen($this->csscode[$media]) > 0) {
1026
+                        $this->inject_in_html('<style '.$type_css.'media="'.$media.'">'.$this->csscode[$media].'</style>', $replace_tag);
1027 1027
                     }
1028 1028
                 }
1029 1029
             }
1030 1030
 
1031
-            if ( $this->defer ) {
1031
+            if ($this->defer) {
1032 1032
                 $preload_polyfill    = autoptimizeConfig::get_ao_css_preload_polyfill();
1033 1033
                 $noscript_css_block .= '</noscript>';
1034 1034
                 // Inject inline critical CSS, the preloaded full CSS and the noscript-CSS.
1035
-                $this->inject_in_html( $inlined_ccss_block . $preload_css_block . $noscript_css_block, $replace_tag );
1035
+                $this->inject_in_html($inlined_ccss_block.$preload_css_block.$noscript_css_block, $replace_tag);
1036 1036
 
1037 1037
                 // Adds preload polyfill at end of body tag.
1038 1038
                 $this->inject_in_html(
1039
-                    apply_filters( 'autoptimize_css_preload_polyfill', $preload_polyfill ),
1040
-                    apply_filters( 'autoptimize_css_preload_polyfill_injectat', array( '</body>', 'before' ) )
1039
+                    apply_filters('autoptimize_css_preload_polyfill', $preload_polyfill),
1040
+                    apply_filters('autoptimize_css_preload_polyfill_injectat', array('</body>', 'before'))
1041 1041
                 );
1042 1042
             }
1043 1043
         }
1044 1044
 
1045 1045
         // restore comments.
1046
-        $this->content = $this->restore_comments( $this->content );
1046
+        $this->content = $this->restore_comments($this->content);
1047 1047
 
1048 1048
         // restore IE hacks.
1049
-        $this->content = $this->restore_iehacks( $this->content );
1049
+        $this->content = $this->restore_iehacks($this->content);
1050 1050
 
1051 1051
         // restore (no)script.
1052
-        $this->content = $this->restore_marked_content( 'SCRIPT', $this->content );
1052
+        $this->content = $this->restore_marked_content('SCRIPT', $this->content);
1053 1053
 
1054 1054
         // Restore noptimize.
1055
-        $this->content = $this->restore_noptimize( $this->content );
1055
+        $this->content = $this->restore_noptimize($this->content);
1056 1056
 
1057 1057
         // Return the modified stylesheet.
1058 1058
         return $this->content;
@@ -1064,44 +1064,44 @@  discard block
 block discarded – undo
1064 1064
      * @param string $file filename of optimized CSS-file.
1065 1065
      * @param string $code CSS-code in which to fix URL's.
1066 1066
      */
1067
-    static function fixurls( $file, $code )
1067
+    static function fixurls($file, $code)
1068 1068
     {
1069 1069
         // Switch all imports to the url() syntax.
1070
-        $code = preg_replace( '#@import ("|\')(.+?)\.css.*?("|\')#', '@import url("${2}.css")', $code );
1070
+        $code = preg_replace('#@import ("|\')(.+?)\.css.*?("|\')#', '@import url("${2}.css")', $code);
1071 1071
 
1072
-        if ( preg_match_all( self::ASSETS_REGEX, $code, $matches ) ) {
1073
-            $file = str_replace( WP_ROOT_DIR, '/', $file );
1072
+        if (preg_match_all(self::ASSETS_REGEX, $code, $matches)) {
1073
+            $file = str_replace(WP_ROOT_DIR, '/', $file);
1074 1074
             /**
1075 1075
              * Rollback as per https://github.com/futtta/autoptimize/issues/94
1076 1076
              * $file = str_replace( AUTOPTIMIZE_WP_CONTENT_NAME, '', $file );
1077 1077
              */
1078
-            $dir = dirname( $file ); // Like /themes/expound/css.
1078
+            $dir = dirname($file); // Like /themes/expound/css.
1079 1079
 
1080 1080
             /**
1081 1081
              * $dir should not contain backslashes, since it's used to replace
1082 1082
              * urls, but it can contain them when running on Windows because
1083 1083
              * fixurls() is sometimes called with `ABSPATH . 'index.php'`
1084 1084
              */
1085
-            $dir = str_replace( '\\', '/', $dir );
1086
-            unset( $file ); // not used below at all.
1085
+            $dir = str_replace('\\', '/', $dir);
1086
+            unset($file); // not used below at all.
1087 1087
 
1088 1088
             $replace = array();
1089
-            foreach ( $matches[1] as $k => $url ) {
1089
+            foreach ($matches[1] as $k => $url) {
1090 1090
                 // Remove quotes.
1091
-                $url      = trim( $url, " \t\n\r\0\x0B\"'" );
1092
-                $no_q_url = trim( $url, "\"'" );
1093
-                if ( $url !== $no_q_url ) {
1091
+                $url      = trim($url, " \t\n\r\0\x0B\"'");
1092
+                $no_q_url = trim($url, "\"'");
1093
+                if ($url !== $no_q_url) {
1094 1094
                     $removed_quotes = true;
1095 1095
                 } else {
1096 1096
                     $removed_quotes = false;
1097 1097
                 }
1098 1098
 
1099
-                if ( '' === $no_q_url ) {
1099
+                if ('' === $no_q_url) {
1100 1100
                     continue;
1101 1101
                 }
1102 1102
 
1103 1103
                 $url = $no_q_url;
1104
-                if ( '/' === $url[0] || preg_match( '#^(https?://|ftp://|data:)#i', $url ) ) {
1104
+                if ('/' === $url[0] || preg_match('#^(https?://|ftp://|data:)#i', $url)) {
1105 1105
                     // URL is protocol-relative, host-relative or something we don't touch.
1106 1106
                     continue;
1107 1107
                 } else { // Relative URL.
@@ -1110,49 +1110,49 @@  discard block
 block discarded – undo
1110 1110
                      * rollback as per https://github.com/futtta/autoptimize/issues/94
1111 1111
                      * $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', AUTOPTIMIZE_WP_CONTENT_URL . str_replace( '//', '/', $dir . '/' . $url ) ) );
1112 1112
                      */
1113
-                    $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', AUTOPTIMIZE_WP_ROOT_URL . str_replace( '//', '/', $dir . '/' . $url ) ) );
1114
-                    $newurl = apply_filters( 'autoptimize_filter_css_fixurl_newurl', $newurl );
1113
+                    $newurl = preg_replace('/https?:/', '', str_replace(' ', '%20', AUTOPTIMIZE_WP_ROOT_URL.str_replace('//', '/', $dir.'/'.$url)));
1114
+                    $newurl = apply_filters('autoptimize_filter_css_fixurl_newurl', $newurl);
1115 1115
 
1116 1116
                     /**
1117 1117
                      * Hash the url + whatever was behind potentially for replacement
1118 1118
                      * We must do this, or different css classes referencing the same bg image (but
1119 1119
                      * different parts of it, say, in sprites and such) loose their stuff...
1120 1120
                      */
1121
-                    $hash = md5( $url . $matches[2][ $k ] );
1122
-                    $code = str_replace( $matches[0][ $k ], $hash, $code );
1121
+                    $hash = md5($url.$matches[2][$k]);
1122
+                    $code = str_replace($matches[0][$k], $hash, $code);
1123 1123
 
1124
-                    if ( $removed_quotes ) {
1125
-                        $replace[ $hash ] = "url('" . $newurl . "')" . $matches[2][ $k ];
1124
+                    if ($removed_quotes) {
1125
+                        $replace[$hash] = "url('".$newurl."')".$matches[2][$k];
1126 1126
                     } else {
1127
-                        $replace[ $hash ] = 'url(' . $newurl . ')' . $matches[2][ $k ];
1127
+                        $replace[$hash] = 'url('.$newurl.')'.$matches[2][$k];
1128 1128
                     }
1129 1129
                 }
1130 1130
             }
1131 1131
 
1132
-            $code = self::replace_longest_matches_first( $code, $replace );
1132
+            $code = self::replace_longest_matches_first($code, $replace);
1133 1133
         }
1134 1134
 
1135 1135
         return $code;
1136 1136
     }
1137 1137
 
1138
-    private function ismovable( $tag )
1138
+    private function ismovable($tag)
1139 1139
     {
1140
-        if ( ! $this->aggregate ) {
1140
+        if (!$this->aggregate) {
1141 1141
             return false;
1142 1142
         }
1143 1143
 
1144
-        if ( ! empty( $this->whitelist ) ) {
1145
-            foreach ( $this->whitelist as $match ) {
1146
-                if ( false !== strpos( $tag, $match ) ) {
1144
+        if (!empty($this->whitelist)) {
1145
+            foreach ($this->whitelist as $match) {
1146
+                if (false !== strpos($tag, $match)) {
1147 1147
                     return true;
1148 1148
                 }
1149 1149
             }
1150 1150
             // no match with whitelist.
1151 1151
             return false;
1152 1152
         } else {
1153
-            if ( is_array( $this->dontmove ) && ! empty( $this->dontmove ) ) {
1154
-                foreach ( $this->dontmove as $match ) {
1155
-                    if ( false !== strpos( $tag, $match ) ) {
1153
+            if (is_array($this->dontmove) && !empty($this->dontmove)) {
1154
+                foreach ($this->dontmove as $match) {
1155
+                    if (false !== strpos($tag, $match)) {
1156 1156
                         // Matched something.
1157 1157
                         return false;
1158 1158
                     }
@@ -1164,22 +1164,22 @@  discard block
 block discarded – undo
1164 1164
         }
1165 1165
     }
1166 1166
 
1167
-    private function can_inject_late( $css_path, $css )
1167
+    private function can_inject_late($css_path, $css)
1168 1168
     {
1169
-        $consider_minified_array = apply_filters( 'autoptimize_filter_css_consider_minified', false, $css_path );
1170
-        if ( true !== $this->inject_min_late ) {
1169
+        $consider_minified_array = apply_filters('autoptimize_filter_css_consider_minified', false, $css_path);
1170
+        if (true !== $this->inject_min_late) {
1171 1171
             // late-inject turned off.
1172 1172
             return false;
1173
-        } elseif ( ( false === strpos( $css_path, 'min.css' ) ) && ( str_replace( $consider_minified_array, '', $css_path ) === $css_path ) ) {
1173
+        } elseif ((false === strpos($css_path, 'min.css')) && (str_replace($consider_minified_array, '', $css_path) === $css_path)) {
1174 1174
             // file not minified based on filename & filter.
1175 1175
             return false;
1176
-        } elseif ( false !== strpos( $css, '@import' ) ) {
1176
+        } elseif (false !== strpos($css, '@import')) {
1177 1177
             // can't late-inject files with imports as those need to be aggregated.
1178 1178
             return false;
1179
-        } elseif ( ( false !== strpos( $css, '@font-face' ) ) && ( apply_filters( 'autoptimize_filter_css_fonts_cdn', false ) === true ) && ( ! empty( $this->cdn_url ) ) ) {
1179
+        } elseif ((false !== strpos($css, '@font-face')) && (apply_filters('autoptimize_filter_css_fonts_cdn', false) === true) && (!empty($this->cdn_url))) {
1180 1180
             // don't late-inject CSS with font-src's if fonts are set to be CDN'ed.
1181 1181
             return false;
1182
-        } elseif ( ( ( true == $this->datauris ) || ( ! empty( $this->cdn_url ) ) ) && preg_match( '#background[^;}]*url\(#Ui', $css ) ) {
1182
+        } elseif (((true == $this->datauris) || (!empty($this->cdn_url))) && preg_match('#background[^;}]*url\(#Ui', $css)) {
1183 1183
             // don't late-inject CSS with images if CDN is set OR if image inlining is on.
1184 1184
             return false;
1185 1185
         } else {
@@ -1197,41 +1197,41 @@  discard block
 block discarded – undo
1197 1197
      *
1198 1198
      * @return bool|string Url pointing to the minified css file or false.
1199 1199
      */
1200
-    public function minify_single( $filepath, $cache_miss = false )
1200
+    public function minify_single($filepath, $cache_miss = false)
1201 1201
     {
1202
-        $contents = $this->prepare_minify_single( $filepath );
1202
+        $contents = $this->prepare_minify_single($filepath);
1203 1203
 
1204
-        if ( empty( $contents ) ) {
1204
+        if (empty($contents)) {
1205 1205
             return false;
1206 1206
         }
1207 1207
 
1208 1208
         // Check cache.
1209
-        $hash  = 'single_' . md5( $contents );
1210
-        $cache = new autoptimizeCache( $hash, 'css' );
1211
-        do_action( 'autoptimize_action_css_hash', $hash );
1209
+        $hash  = 'single_'.md5($contents);
1210
+        $cache = new autoptimizeCache($hash, 'css');
1211
+        do_action('autoptimize_action_css_hash', $hash);
1212 1212
 
1213 1213
         // If not in cache already, minify...
1214
-        if ( ! $cache->check() || $cache_miss ) {
1214
+        if (!$cache->check() || $cache_miss) {
1215 1215
             // Fixurls...
1216
-            $contents = self::fixurls( $filepath, $contents );
1216
+            $contents = self::fixurls($filepath, $contents);
1217 1217
             // CDN-replace any referenced assets if needed...
1218
-            $contents = $this->hide_fontface_and_maybe_cdn( $contents );
1219
-            $contents = $this->replace_urls( $contents );
1220
-            $contents = $this->restore_fontface( $contents );
1218
+            $contents = $this->hide_fontface_and_maybe_cdn($contents);
1219
+            $contents = $this->replace_urls($contents);
1220
+            $contents = $this->restore_fontface($contents);
1221 1221
             // Now minify...
1222 1222
             $cssmin   = new autoptimizeCSSmin();
1223
-            $contents = trim( $cssmin->run( $contents ) );
1223
+            $contents = trim($cssmin->run($contents));
1224 1224
 
1225 1225
             // Check if minified cache content is empty.
1226
-            if ( empty( $contents ) ) {
1226
+            if (empty($contents)) {
1227 1227
                 return false;
1228 1228
             }
1229 1229
 
1230 1230
             // Store in cache.
1231
-            $cache->cache( $contents, 'text/css' );
1231
+            $cache->cache($contents, 'text/css');
1232 1232
         }
1233 1233
 
1234
-        $url = $this->build_minify_single_url( $cache );
1234
+        $url = $this->build_minify_single_url($cache);
1235 1235
 
1236 1236
         return $url;
1237 1237
     }
@@ -1251,19 +1251,19 @@  discard block
 block discarded – undo
1251 1251
         return $this->options;
1252 1252
     }
1253 1253
 
1254
-    public function replaceOptions( $options )
1254
+    public function replaceOptions($options)
1255 1255
     {
1256 1256
         $this->options = $options;
1257 1257
     }
1258 1258
 
1259
-    public function setOption( $name, $value )
1259
+    public function setOption($name, $value)
1260 1260
     {
1261
-        $this->options[ $name ] = $value;
1261
+        $this->options[$name] = $value;
1262 1262
         $this->$name            = $value;
1263 1263
     }
1264 1264
 
1265
-    public function getOption( $name )
1265
+    public function getOption($name)
1266 1266
     {
1267
-        return $this->options[ $name ];
1267
+        return $this->options[$name];
1268 1268
     }
1269 1269
 }
Please login to merge, or discard this patch.
classes/autoptimizeCriticalCSSCore.php 1 patch
Spacing   +139 added lines, -139 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  * gets called by AO core, checks the rules and if a matching rule is found returns the associated CCSS.
5 5
  */
6 6
 
7
-if ( ! defined( 'ABSPATH' ) ) {
7
+if (!defined('ABSPATH')) {
8 8
     exit;
9 9
 }
10 10
 
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
     {
14 14
         // fetch all options at once and populate them individually explicitely as globals.
15 15
         $all_options = autoptimizeCriticalCSSBase::fetch_options();
16
-        foreach ( $all_options as $_option => $_value ) {
16
+        foreach ($all_options as $_option => $_value) {
17 17
             global ${$_option};
18 18
             ${$_option} = $_value;
19 19
         }
@@ -27,23 +27,23 @@  discard block
 block discarded – undo
27 27
         global $ao_ccss_key;
28 28
 
29 29
         // add all filters to do CCSS if key present.
30
-        if ( $ao_css_defer && isset( $ao_ccss_key ) && ! empty( $ao_ccss_key ) ) {
30
+        if ($ao_css_defer && isset($ao_ccss_key) && !empty($ao_ccss_key)) {
31 31
             // Set AO behavior: disable minification to avoid double minifying and caching.
32
-            add_filter( 'autoptimize_filter_css_critcss_minify', '__return_false' );
33
-            add_filter( 'autoptimize_filter_css_defer_inline', array( $this, 'ao_ccss_frontend' ), 10, 1 );
32
+            add_filter('autoptimize_filter_css_critcss_minify', '__return_false');
33
+            add_filter('autoptimize_filter_css_defer_inline', array($this, 'ao_ccss_frontend'), 10, 1);
34 34
 
35 35
             // Add the action to enqueue jobs for CriticalCSS cron.
36
-            add_action( 'autoptimize_action_css_hash', array( 'autoptimizeCriticalCSSEnqueue', 'ao_ccss_enqueue' ), 10, 1 );
36
+            add_action('autoptimize_action_css_hash', array('autoptimizeCriticalCSSEnqueue', 'ao_ccss_enqueue'), 10, 1);
37 37
 
38 38
             // conditionally add the filter to defer jquery and others.
39
-            if ( $ao_ccss_deferjquery ) {
40
-                add_filter( 'autoptimize_html_after_minify', array( $this, 'ao_ccss_defer_jquery' ), 11, 1 );
39
+            if ($ao_ccss_deferjquery) {
40
+                add_filter('autoptimize_html_after_minify', array($this, 'ao_ccss_defer_jquery'), 11, 1);
41 41
             }
42 42
 
43 43
             // Order paths by length, as longest ones have greater priority in the rules.
44
-            if ( ! empty( $ao_ccss_rules['paths'] ) ) {
45
-                $keys = array_map( 'strlen', array_keys( $ao_ccss_rules['paths'] ) );
46
-                array_multisort( $keys, SORT_DESC, $ao_ccss_rules['paths'] );
44
+            if (!empty($ao_ccss_rules['paths'])) {
45
+                $keys = array_map('strlen', array_keys($ao_ccss_rules['paths']));
46
+                array_multisort($keys, SORT_DESC, $ao_ccss_rules['paths']);
47 47
             }
48 48
 
49 49
             // Add an array with default WordPress's conditional tags
@@ -52,11 +52,11 @@  discard block
 block discarded – undo
52 52
             $ao_ccss_types = $this->get_ao_ccss_core_types();
53 53
 
54 54
             // Extend conditional tags on plugin initalization.
55
-            add_action( apply_filters( 'autoptimize_filter_ccss_extend_types_hook', 'init' ), array( $this, 'ao_ccss_extend_types' ) );
55
+            add_action(apply_filters('autoptimize_filter_ccss_extend_types_hook', 'init'), array($this, 'ao_ccss_extend_types'));
56 56
         }
57 57
     }
58 58
 
59
-    public function ao_ccss_frontend( $inlined ) {
59
+    public function ao_ccss_frontend($inlined) {
60 60
         // Apply CriticalCSS to frontend pages
61 61
         // Attach types and settings arrays.
62 62
         global $ao_ccss_types;
@@ -68,20 +68,20 @@  discard block
 block discarded – undo
68 68
         $no_ccss = '';
69 69
 
70 70
         // Only if keystatus is OK and option to add CCSS for logged on users is on or user is not logged in.
71
-        if ( ( $ao_ccss_keyst && 2 == $ao_ccss_keyst ) && ( $ao_ccss_loggedin || ! is_user_logged_in() ) ) {
71
+        if (($ao_ccss_keyst && 2 == $ao_ccss_keyst) && ($ao_ccss_loggedin || !is_user_logged_in())) {
72 72
             // Check for a valid CriticalCSS based on path to return its contents.
73
-            $req_path = strtok( $_SERVER['REQUEST_URI'], '?' );
74
-            if ( ! empty( $ao_ccss_rules['paths'] ) ) {
75
-                foreach ( $ao_ccss_rules['paths'] as $path => $rule ) {
73
+            $req_path = strtok($_SERVER['REQUEST_URI'], '?');
74
+            if (!empty($ao_ccss_rules['paths'])) {
75
+                foreach ($ao_ccss_rules['paths'] as $path => $rule) {
76 76
                     // explicit match OR partial match if MANUAL rule.
77
-                    if ( $req_path == $path || urldecode( $req_path ) == $path || ( false == $rule['hash'] && false != $rule['file'] && strpos( $req_path, str_replace( site_url(), '', $path ) ) !== false ) ) {
78
-                        if ( file_exists( AO_CCSS_DIR . $rule['file'] ) ) {
79
-                            $_ccss_contents = file_get_contents( AO_CCSS_DIR . $rule['file'] );
80
-                            if ( 'none' != $_ccss_contents ) {
81
-                                if ( $ao_ccss_debug ) {
82
-                                    $_ccss_contents = '/* PATH: ' . $path . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
77
+                    if ($req_path == $path || urldecode($req_path) == $path || (false == $rule['hash'] && false != $rule['file'] && strpos($req_path, str_replace(site_url(), '', $path)) !== false)) {
78
+                        if (file_exists(AO_CCSS_DIR.$rule['file'])) {
79
+                            $_ccss_contents = file_get_contents(AO_CCSS_DIR.$rule['file']);
80
+                            if ('none' != $_ccss_contents) {
81
+                                if ($ao_ccss_debug) {
82
+                                    $_ccss_contents = '/* PATH: '.$path.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
83 83
                                 }
84
-                                return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
84
+                                return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
85 85
                             } else {
86 86
                                 $no_ccss = 'none';
87 87
                             }
@@ -91,55 +91,55 @@  discard block
 block discarded – undo
91 91
             }
92 92
 
93 93
             // Check for a valid CriticalCSS based on conditional tags to return its contents.
94
-            if ( ! empty( $ao_ccss_rules['types'] ) && 'none' !== $no_ccss ) {
94
+            if (!empty($ao_ccss_rules['types']) && 'none' !== $no_ccss) {
95 95
                 // order types-rules by the order of the original $ao_ccss_types array so as not to depend on the order in which rules were added.
96
-                $ao_ccss_rules['types'] = array_replace( array_intersect_key( array_flip( $ao_ccss_types ), $ao_ccss_rules['types'] ), $ao_ccss_rules['types'] );
96
+                $ao_ccss_rules['types'] = array_replace(array_intersect_key(array_flip($ao_ccss_types), $ao_ccss_rules['types']), $ao_ccss_rules['types']);
97 97
                 $is_front_page          = is_front_page();
98 98
 
99
-                foreach ( $ao_ccss_rules['types'] as $type => $rule ) {
100
-                    if ( in_array( $type, $ao_ccss_types ) && file_exists( AO_CCSS_DIR . $rule['file'] ) ) {
101
-                        $_ccss_contents = file_get_contents( AO_CCSS_DIR . $rule['file'] );
102
-                        if ( $is_front_page && 'is_front_page' == $type ) {
103
-                            if ( 'none' != $_ccss_contents ) {
104
-                                if ( $ao_ccss_debug ) {
105
-                                    $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
99
+                foreach ($ao_ccss_rules['types'] as $type => $rule) {
100
+                    if (in_array($type, $ao_ccss_types) && file_exists(AO_CCSS_DIR.$rule['file'])) {
101
+                        $_ccss_contents = file_get_contents(AO_CCSS_DIR.$rule['file']);
102
+                        if ($is_front_page && 'is_front_page' == $type) {
103
+                            if ('none' != $_ccss_contents) {
104
+                                if ($ao_ccss_debug) {
105
+                                    $_ccss_contents = '/* TYPES: '.$type.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
106 106
                                 }
107
-                                return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
107
+                                return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
108 108
                             } else {
109 109
                                 $no_ccss = 'none';
110 110
                             }
111
-                        } elseif ( strpos( $type, 'custom_post_' ) === 0 && ! $is_front_page ) {
112
-                            if ( get_post_type( get_the_ID() ) === substr( $type, 12 ) ) {
113
-                                if ( 'none' != $_ccss_contents ) {
114
-                                    if ( $ao_ccss_debug ) {
115
-                                        $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
111
+                        } elseif (strpos($type, 'custom_post_') === 0 && !$is_front_page) {
112
+                            if (get_post_type(get_the_ID()) === substr($type, 12)) {
113
+                                if ('none' != $_ccss_contents) {
114
+                                    if ($ao_ccss_debug) {
115
+                                        $_ccss_contents = '/* TYPES: '.$type.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
116 116
                                     }
117
-                                    return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
117
+                                    return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
118 118
                                 } else {
119 119
                                     $no_ccss = 'none';
120 120
                                 }
121 121
                             }
122
-                        } elseif ( 0 === strpos( $type, 'template_' ) && ! $is_front_page ) {
123
-                            if ( is_page_template( substr( $type, 9 ) ) ) {
124
-                                if ( 'none' != $_ccss_contents ) {
125
-                                    if ( $ao_ccss_debug ) {
126
-                                        $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
122
+                        } elseif (0 === strpos($type, 'template_') && !$is_front_page) {
123
+                            if (is_page_template(substr($type, 9))) {
124
+                                if ('none' != $_ccss_contents) {
125
+                                    if ($ao_ccss_debug) {
126
+                                        $_ccss_contents = '/* TYPES: '.$type.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
127 127
                                     }
128
-                                    return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
128
+                                    return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
129 129
                                 } else {
130 130
                                     $no_ccss = 'none';
131 131
                                 }
132 132
                             }
133
-                        } elseif ( ! $is_front_page ) {
133
+                        } elseif (!$is_front_page) {
134 134
                             // all "normal" conditional tags, core + woo + buddypress + edd + bbpress
135 135
                             // but we have to remove the prefix for the non-core ones for them to function.
136
-                            $type = str_replace( array( 'woo_', 'bp_', 'bbp_', 'edd_' ), '', $type );
137
-                            if ( function_exists( $type ) && call_user_func( $type ) ) {
138
-                                if ( 'none' != $_ccss_contents ) {
139
-                                    if ( $ao_ccss_debug ) {
140
-                                        $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
136
+                            $type = str_replace(array('woo_', 'bp_', 'bbp_', 'edd_'), '', $type);
137
+                            if (function_exists($type) && call_user_func($type)) {
138
+                                if ('none' != $_ccss_contents) {
139
+                                    if ($ao_ccss_debug) {
140
+                                        $_ccss_contents = '/* TYPES: '.$type.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
141 141
                                     }
142
-                                    return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
142
+                                    return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
143 143
                                 } else {
144 144
                                     $no_ccss = 'none';
145 145
                                 }
@@ -152,26 +152,26 @@  discard block
 block discarded – undo
152 152
 
153 153
         // Finally, inline the default CriticalCSS if any or else the entire CSS for the page
154 154
         // This also applies to logged in users if the option to add CCSS for logged in users has been disabled.
155
-        if ( ! empty( $inlined ) && 'none' !== $no_ccss ) {
156
-            return apply_filters( 'autoptimize_filter_ccss_core_ccss', $inlined . $ao_ccss_additional );
155
+        if (!empty($inlined) && 'none' !== $no_ccss) {
156
+            return apply_filters('autoptimize_filter_ccss_core_ccss', $inlined.$ao_ccss_additional);
157 157
         } else {
158
-            add_filter( 'autoptimize_filter_css_inline', '__return_true' );
158
+            add_filter('autoptimize_filter_css_inline', '__return_true');
159 159
             return;
160 160
         }
161 161
     }
162 162
 
163
-    public function ao_ccss_defer_jquery( $in ) {
163
+    public function ao_ccss_defer_jquery($in) {
164 164
         // try to defer all JS (main goal being jquery.js as AO by default does not aggregate that).
165
-        if ( ( ! is_user_logged_in() || $ao_ccss_loggedin ) && preg_match_all( '#<script.*>(.*)</script>#Usmi', $in, $matches, PREG_SET_ORDER ) ) {
166
-            foreach ( $matches as $match ) {
167
-                if ( ( ! preg_match( '/<script.* type\s?=.*>/', $match[0] ) || preg_match( '/type\s*=\s*[\'"]?(?:text|application)\/(?:javascript|ecmascript)[\'"]?/i', $match[0] ) ) && '' !== $match[1] && ( false !== strpos( $match[1], 'jQuery' ) || false !== strpos( $match[1], '$' ) ) ) {
165
+        if ((!is_user_logged_in() || $ao_ccss_loggedin) && preg_match_all('#<script.*>(.*)</script>#Usmi', $in, $matches, PREG_SET_ORDER)) {
166
+            foreach ($matches as $match) {
167
+                if ((!preg_match('/<script.* type\s?=.*>/', $match[0]) || preg_match('/type\s*=\s*[\'"]?(?:text|application)\/(?:javascript|ecmascript)[\'"]?/i', $match[0])) && '' !== $match[1] && (false !== strpos($match[1], 'jQuery') || false !== strpos($match[1], '$'))) {
168 168
                     // inline js that requires jquery, wrap deferring JS around it to defer it.
169
-                    $new_match = 'var aoDeferInlineJQuery=function(){' . $match[1] . '}; if (document.readyState === "loading") {document.addEventListener("DOMContentLoaded", aoDeferInlineJQuery);} else {aoDeferInlineJQuery();}';
170
-                    $in        = str_replace( $match[1], $new_match, $in );
171
-                } elseif ( '' === $match[1] && false !== strpos( $match[0], 'src=' ) && false === strpos( $match[0], 'defer' ) ) {
169
+                    $new_match = 'var aoDeferInlineJQuery=function(){'.$match[1].'}; if (document.readyState === "loading") {document.addEventListener("DOMContentLoaded", aoDeferInlineJQuery);} else {aoDeferInlineJQuery();}';
170
+                    $in        = str_replace($match[1], $new_match, $in);
171
+                } elseif ('' === $match[1] && false !== strpos($match[0], 'src=') && false === strpos($match[0], 'defer')) {
172 172
                     // linked non-aggregated JS, defer it.
173
-                    $new_match = str_replace( '<script ', '<script defer ', $match[0] );
174
-                    $in        = str_replace( $match[0], $new_match, $in );
173
+                    $new_match = str_replace('<script ', '<script defer ', $match[0]);
174
+                    $in        = str_replace($match[0], $new_match, $in);
175 175
                 }
176 176
             }
177 177
         }
@@ -184,9 +184,9 @@  discard block
 block discarded – undo
184 184
         global $ao_ccss_types;
185 185
 
186 186
         // in some cases $ao_ccss_types is empty and/or not an array, this should work around that problem.
187
-        if ( empty( $ao_ccss_types ) || ! is_array( $ao_ccss_types ) ) {
187
+        if (empty($ao_ccss_types) || !is_array($ao_ccss_types)) {
188 188
             $ao_ccss_types = get_ao_ccss_core_types();
189
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Empty types array in extend, refetching array with core conditionals.', 3 );
189
+            autoptimizeCriticalCSSCore::ao_ccss_log('Empty types array in extend, refetching array with core conditionals.', 3);
190 190
         }
191 191
 
192 192
         // Custom Post Types.
@@ -198,18 +198,18 @@  discard block
 block discarded – undo
198 198
             'names',
199 199
             'and'
200 200
         );
201
-        foreach ( $cpts as $cpt ) {
202
-            array_unshift( $ao_ccss_types, 'custom_post_' . $cpt );
201
+        foreach ($cpts as $cpt) {
202
+            array_unshift($ao_ccss_types, 'custom_post_'.$cpt);
203 203
         }
204 204
 
205 205
         // Templates.
206 206
         $templates = wp_get_theme()->get_page_templates();
207
-        foreach ( $templates as $tplfile => $tplname ) {
208
-            array_unshift( $ao_ccss_types, 'template_' . $tplfile );
207
+        foreach ($templates as $tplfile => $tplname) {
208
+            array_unshift($ao_ccss_types, 'template_'.$tplfile);
209 209
         }
210 210
 
211 211
         // bbPress tags.
212
-        if ( function_exists( 'is_bbpress' ) ) {
212
+        if (function_exists('is_bbpress')) {
213 213
             $ao_ccss_types = array_merge(
214 214
                 array(
215 215
                     'bbp_is_bbpress',
@@ -241,7 +241,7 @@  discard block
 block discarded – undo
241 241
         }
242 242
 
243 243
         // BuddyPress tags.
244
-        if ( function_exists( 'is_buddypress' ) ) {
244
+        if (function_exists('is_buddypress')) {
245 245
             $ao_ccss_types = array_merge(
246 246
                 array(
247 247
                     'bp_is_activation_page',
@@ -283,7 +283,7 @@  discard block
 block discarded – undo
283 283
         }
284 284
 
285 285
         // Easy Digital Downloads (EDD) tags.
286
-        if ( function_exists( 'edd_is_checkout' ) ) {
286
+        if (function_exists('edd_is_checkout')) {
287 287
             $ao_ccss_types = array_merge(
288 288
                 array(
289 289
                     'edd_is_checkout',
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
         }
296 296
 
297 297
         // WooCommerce tags.
298
-        if ( class_exists( 'WooCommerce' ) ) {
298
+        if (class_exists('WooCommerce')) {
299 299
             $ao_ccss_types = array_merge(
300 300
                 array(
301 301
                     'woo_is_account_page',
@@ -314,7 +314,7 @@  discard block
 block discarded – undo
314 314
 
315 315
     public function get_ao_ccss_core_types() {
316 316
         global $ao_ccss_types;
317
-        if ( empty( $ao_ccss_types ) || ! is_array( $ao_ccss_types ) ) {
317
+        if (empty($ao_ccss_types) || !is_array($ao_ccss_types)) {
318 318
             return array(
319 319
                 'is_404',
320 320
                 'is_archive',
@@ -335,7 +335,7 @@  discard block
 block discarded – undo
335 335
         }
336 336
     }
337 337
 
338
-    public static function ao_ccss_key_status( $render ) {
338
+    public static function ao_ccss_key_status($render) {
339 339
         // Provide key status
340 340
         // Get key and key status.
341 341
         global $ao_ccss_key;
@@ -348,55 +348,55 @@  discard block
 block discarded – undo
348 348
         $key_return = array();
349 349
         $status     = false;
350 350
 
351
-        if ( $key && 2 == $key_status ) {
351
+        if ($key && 2 == $key_status) {
352 352
             // Key exists and its status is valid.
353 353
             // Set valid key status.
354 354
             $status     = 'valid';
355
-            $status_msg = __( 'Valid' );
355
+            $status_msg = __('Valid');
356 356
             $color      = '#46b450'; // Green.
357 357
             $message    = null;
358
-        } elseif ( $key && 1 == $key_status ) {
358
+        } elseif ($key && 1 == $key_status) {
359 359
             // Key exists but its validation has failed.
360 360
             // Set invalid key status.
361 361
             $status     = 'invalid';
362
-            $status_msg = __( 'Invalid' );
362
+            $status_msg = __('Invalid');
363 363
             $color      = '#dc3232'; // Red.
364
-            $message    = __( 'Your API key is invalid. Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> key.', 'autoptimize' );
365
-        } elseif ( $key && ! $key_status ) {
364
+            $message    = __('Your API key is invalid. Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> key.', 'autoptimize');
365
+        } elseif ($key && !$key_status) {
366 366
             // Key exists but it has no valid status yet
367 367
             // Perform key validation.
368
-            $key_check = $self->ao_ccss_key_validation( $key );
368
+            $key_check = $self->ao_ccss_key_validation($key);
369 369
 
370 370
             // Key is valid, set valid status.
371
-            if ( $key_check ) {
371
+            if ($key_check) {
372 372
                 $status     = 'valid';
373
-                $status_msg = __( 'Valid' );
373
+                $status_msg = __('Valid');
374 374
                 $color      = '#46b450'; // Green.
375 375
                 $message    = null;
376 376
             } else {
377 377
                 // Key is invalid, set invalid status.
378 378
                 $status     = 'invalid';
379
-                $status_msg = __( 'Invalid' );
379
+                $status_msg = __('Invalid');
380 380
                 $color      = '#dc3232'; // Red.
381
-                if ( get_option( 'autoptimize_ccss_keyst' ) == 1 ) {
382
-                    $message = __( 'Your API key is invalid. Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> key.', 'autoptimize' );
381
+                if (get_option('autoptimize_ccss_keyst') == 1) {
382
+                    $message = __('Your API key is invalid. Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> key.', 'autoptimize');
383 383
                 } else {
384
-                    $message = __( 'Something went wrong when checking your API key, make sure you server can communicate with https://criticalcss.com and/ or try again later.', 'autoptimize' );
384
+                    $message = __('Something went wrong when checking your API key, make sure you server can communicate with https://criticalcss.com and/ or try again later.', 'autoptimize');
385 385
                 }
386 386
             }
387 387
         } else {
388 388
             // No key nor status
389 389
             // Set no key status.
390 390
             $status     = 'nokey';
391
-            $status_msg = __( 'None' );
391
+            $status_msg = __('None');
392 392
             $color      = '#ffb900'; // Yellow.
393
-            $message    = __( 'Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> API key to start.', 'autoptimize' );
393
+            $message    = __('Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> API key to start.', 'autoptimize');
394 394
         }
395 395
 
396 396
         // Fill returned values.
397 397
         $key_return['status'] = $status;
398 398
         // Provide rendering information if required.
399
-        if ( $render ) {
399
+        if ($render) {
400 400
             $key_return['stmsg'] = $status_msg;
401 401
             $key_return['color'] = $color;
402 402
             $key_return['msg']   = $message;
@@ -406,7 +406,7 @@  discard block
 block discarded – undo
406 406
         return $key_return;
407 407
     }
408 408
 
409
-    public function ao_ccss_key_validation( $key ) {
409
+    public function ao_ccss_key_validation($key) {
410 410
         global $ao_ccss_noptimize;
411 411
 
412 412
         // POST a dummy job to criticalcss.com to check for key validation
@@ -414,26 +414,26 @@  discard block
 block discarded – undo
414 414
         $src_url = get_home_url();
415 415
 
416 416
         // Avoid AO optimizations if required by config or avoid lazyload if lazyload is active in AO.
417
-        if ( ! empty( $ao_ccss_noptimize ) ) {
417
+        if (!empty($ao_ccss_noptimize)) {
418 418
             $src_url .= '?ao_noptirocket=1';
419
-        } elseif ( class_exists( 'autoptimizeImages', false ) && autoptimizeImages::should_lazyload_wrapper() ) {
419
+        } elseif (class_exists('autoptimizeImages', false) && autoptimizeImages::should_lazyload_wrapper()) {
420 420
             $src_url .= '?ao_nolazy=1';
421 421
         }
422 422
 
423
-        $src_url = apply_filters( 'autoptimize_filter_ccss_cron_srcurl', $src_url );
423
+        $src_url = apply_filters('autoptimize_filter_ccss_cron_srcurl', $src_url);
424 424
 
425 425
         // Prepare the request.
426
-        $url  = esc_url_raw( AO_CCSS_API . 'generate' );
426
+        $url  = esc_url_raw(AO_CCSS_API.'generate');
427 427
         $args = array(
428 428
             'headers' => array(
429
-                'User-Agent'    => 'Autoptimize v' . AO_CCSS_VER,
429
+                'User-Agent'    => 'Autoptimize v'.AO_CCSS_VER,
430 430
                 'Content-type'  => 'application/json; charset=utf-8',
431
-                'Authorization' => 'JWT ' . $key,
431
+                'Authorization' => 'JWT '.$key,
432 432
                 'Connection'    => 'close',
433 433
             ),
434 434
             // Body must be JSON.
435 435
             'body'    => json_encode(
436
-                apply_filters( 'autoptimize_ccss_cron_api_generate_body',
436
+                apply_filters('autoptimize_ccss_cron_api_generate_body',
437 437
                     array(
438 438
                         'url'    => $src_url,
439 439
                         'aff'    => 1,
@@ -444,23 +444,23 @@  discard block
 block discarded – undo
444 444
         );
445 445
 
446 446
         // Dispatch the request and store its response code.
447
-        $req  = wp_safe_remote_post( $url, $args );
448
-        $code = wp_remote_retrieve_response_code( $req );
449
-        $body = json_decode( wp_remote_retrieve_body( $req ), true );
447
+        $req  = wp_safe_remote_post($url, $args);
448
+        $code = wp_remote_retrieve_response_code($req);
449
+        $body = json_decode(wp_remote_retrieve_body($req), true);
450 450
 
451
-        if ( 200 == $code ) {
451
+        if (200 == $code) {
452 452
             // Response is OK.
453 453
             // Set key status as valid and log key check.
454
-            update_option( 'autoptimize_ccss_keyst', 2 );
455
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is valid, updating key status', 3 );
454
+            update_option('autoptimize_ccss_keyst', 2);
455
+            autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is valid, updating key status', 3);
456 456
 
457 457
             // extract job-id from $body and put it in the queue as a P job
458 458
             // but only if no jobs and no rules!
459 459
             global $ao_ccss_queue;
460 460
             global $ao_ccss_rules;
461 461
 
462
-            if ( 0 == count( $ao_ccss_queue ) && 0 == count( $ao_ccss_rules['types'] ) && 0 == count( $ao_ccss_rules['paths'] ) ) {
463
-                if ( 'JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status'] ) {
462
+            if (0 == count($ao_ccss_queue) && 0 == count($ao_ccss_rules['types']) && 0 == count($ao_ccss_rules['paths'])) {
463
+                if ('JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status']) {
464 464
                     $jprops['ljid']     = 'firstrun';
465 465
                     $jprops['rtarget']  = 'types|is_front_page';
466 466
                     $jprops['ptype']    = 'is_front_page';
@@ -471,30 +471,30 @@  discard block
 block discarded – undo
471 471
                     $jprops['jqstat']   = $body['job']['status'];
472 472
                     $jprops['jrstat']   = null;
473 473
                     $jprops['jvstat']   = null;
474
-                    $jprops['jctime']   = microtime( true );
474
+                    $jprops['jctime']   = microtime(true);
475 475
                     $jprops['jftime']   = null;
476 476
                     $ao_ccss_queue['/'] = $jprops;
477
-                    $ao_ccss_queue_raw  = json_encode( $ao_ccss_queue );
478
-                    update_option( 'autoptimize_ccss_queue', $ao_ccss_queue_raw, false );
479
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Created P job for is_front_page based on API key check response.', 3 );
477
+                    $ao_ccss_queue_raw  = json_encode($ao_ccss_queue);
478
+                    update_option('autoptimize_ccss_queue', $ao_ccss_queue_raw, false);
479
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Created P job for is_front_page based on API key check response.', 3);
480 480
                 }
481 481
             }
482 482
             return true;
483
-        } elseif ( 401 == $code ) {
483
+        } elseif (401 == $code) {
484 484
             // Response is unauthorized
485 485
             // Set key status as invalid and log key check.
486
-            update_option( 'autoptimize_ccss_keyst', 1 );
487
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is invalid, updating key status', 3 );
486
+            update_option('autoptimize_ccss_keyst', 1);
487
+            autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is invalid, updating key status', 3);
488 488
             return false;
489 489
         } else {
490 490
             // Response unkown
491 491
             // Log key check attempt.
492
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: could not check API key status, this is a service error, body follows if any...', 2 );
493
-            if ( ! empty( $body ) ) {
494
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
492
+            autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: could not check API key status, this is a service error, body follows if any...', 2);
493
+            if (!empty($body)) {
494
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
495 495
             }
496
-            if ( is_wp_error( $req ) ) {
497
-                autoptimizeCriticalCSSCore::ao_ccss_log( $req->get_error_message(), 2 );
496
+            if (is_wp_error($req)) {
497
+                autoptimizeCriticalCSSCore::ao_ccss_log($req->get_error_message(), 2);
498 498
             }
499 499
             return false;
500 500
         }
@@ -509,14 +509,14 @@  discard block
 block discarded – undo
509 509
         $viewport = array();
510 510
 
511 511
         // Viewport Width.
512
-        if ( ! empty( $ao_ccss_viewport['w'] ) ) {
512
+        if (!empty($ao_ccss_viewport['w'])) {
513 513
             $viewport['w'] = $ao_ccss_viewport['w'];
514 514
         } else {
515 515
             $viewport['w'] = '';
516 516
         }
517 517
 
518 518
         // Viewport Height.
519
-        if ( ! empty( $ao_ccss_viewport['h'] ) ) {
519
+        if (!empty($ao_ccss_viewport['h'])) {
520 520
             $viewport['h'] = $ao_ccss_viewport['h'];
521 521
         } else {
522 522
             $viewport['h'] = '';
@@ -525,23 +525,23 @@  discard block
 block discarded – undo
525 525
         return $viewport;
526 526
     }
527 527
 
528
-    public static function ao_ccss_check_contents( $ccss ) {
528
+    public static function ao_ccss_check_contents($ccss) {
529 529
         // Perform basic exploit avoidance and CSS validation.
530
-        if ( ! empty( $ccss ) ) {
530
+        if (!empty($ccss)) {
531 531
             // Try to avoid code injection.
532
-            $blacklist = array( '#!/', 'function(', '<script', '<?php' );
533
-            foreach ( $blacklist as $blacklisted ) {
534
-                if ( strpos( $ccss, $blacklisted ) !== false ) {
535
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS received contained blacklisted content.', 2 );
532
+            $blacklist = array('#!/', 'function(', '<script', '<?php');
533
+            foreach ($blacklist as $blacklisted) {
534
+                if (strpos($ccss, $blacklisted) !== false) {
535
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS received contained blacklisted content.', 2);
536 536
                     return false;
537 537
                 }
538 538
             }
539 539
 
540 540
             // Check for most basics CSS structures.
541
-            $pinklist = array( '{', '}', ':' );
542
-            foreach ( $pinklist as $needed ) {
543
-                if ( false === strpos( $ccss, $needed ) && 'none' !== $ccss ) {
544
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS received did not seem to contain real CSS.', 2 );
541
+            $pinklist = array('{', '}', ':');
542
+            foreach ($pinklist as $needed) {
543
+                if (false === strpos($ccss, $needed) && 'none' !== $ccss) {
544
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS received did not seem to contain real CSS.', 2);
545 545
                     return false;
546 546
                 }
547 547
             }
@@ -551,7 +551,7 @@  discard block
 block discarded – undo
551 551
         return true;
552 552
     }
553 553
 
554
-    public static function ao_ccss_log( $msg, $lvl ) {
554
+    public static function ao_ccss_log($msg, $lvl) {
555 555
         // Commom logging facility
556 556
         // Attach debug option.
557 557
         global $ao_ccss_debug;
@@ -562,7 +562,7 @@  discard block
 block discarded – undo
562 562
         // 3: DD (for debug)
563 563
         // Default: UU (for unkown).
564 564
         $level = false;
565
-        switch ( $lvl ) {
565
+        switch ($lvl) {
566 566
             case 1:
567 567
                 $level = 'II';
568 568
                 break;
@@ -571,7 +571,7 @@  discard block
 block discarded – undo
571 571
                 break;
572 572
             case 3:
573 573
                 // Output debug messages only if debug mode is enabled.
574
-                if ( $ao_ccss_debug ) {
574
+                if ($ao_ccss_debug) {
575 575
                     $level = 'DD';
576 576
                 }
577 577
                 break;
@@ -580,13 +580,13 @@  discard block
 block discarded – undo
580 580
         }
581 581
 
582 582
         // Prepare and write a log message if there's a valid level.
583
-        if ( $level ) {
583
+        if ($level) {
584 584
 
585 585
             // Prepare message.
586
-            $message = date( 'c' ) . ' - [' . $level . '] ' . htmlentities( $msg ) . '<br>';
586
+            $message = date('c').' - ['.$level.'] '.htmlentities($msg).'<br>';
587 587
 
588 588
             // Write message to log file.
589
-            error_log( $message, 3, AO_CCSS_LOG );
589
+            error_log($message, 3, AO_CCSS_LOG);
590 590
         }
591 591
     }
592 592
 }
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_rules.js.php 1 patch
Spacing   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Outputs JS code for the rules panel.
4 4
  */
5 5
 
6
-if ( $ao_ccss_debug ) {
6
+if ($ao_ccss_debug) {
7 7
     echo "console.log('[WARN] Autoptimize CriticalCSS Power-Up is in DEBUG MODE!');\n";
8 8
     echo "console.log('[WARN] Avoid using debug mode on production/live environments unless for ad-hoc troubleshooting purposes and make sure to disable it after!');\n";
9 9
 }
@@ -23,7 +23,7 @@  discard block
 block discarded – undo
23 23
     jQuery(document).ready(function() {
24 24
         critCssArray=JSON.parse(document.getElementById("critCssOrigin").value);
25 25
         <?php
26
-        if ( $ao_ccss_debug ) {
26
+        if ($ao_ccss_debug) {
27 27
             echo "console.log('Rules Object:', critCssArray);\n";
28 28
         }
29 29
         ?>
@@ -39,13 +39,13 @@  discard block
 block discarded – undo
39 39
     jQuery("#rules-list").empty();
40 40
     jQuery.each(critCssArray,function(k,v) {
41 41
         if (k=="paths") {
42
-            kstring="<?php _e( 'Path Based Rules', 'autoptimize' ); ?>";
42
+            kstring="<?php _e('Path Based Rules', 'autoptimize'); ?>";
43 43
         } else {
44
-            kstring="<?php _e( 'Conditional Tags, Custom Post Types and Page Templates Rules', 'autoptimize' ); ?>";
44
+            kstring="<?php _e('Conditional Tags, Custom Post Types and Page Templates Rules', 'autoptimize'); ?>";
45 45
         }
46 46
         if (!(jQuery.isEmptyObject(v))) {
47 47
             jQuery("#rules-list").append("<tr><td colspan='5'><h4>" + kstring + "</h4></td></tr>");
48
-            jQuery("#rules-list").append("<tr class='header "+k+"Rule'><th><?php _e( 'Type', 'autoptimize' ); ?></th><th><?php _e( 'Target', 'autoptimize' ); ?></th><th><?php _e( 'Critical CSS File', 'autoptimize' ); ?></th><th colspan='2'><?php _e( 'Actions', 'autoptimize' ); ?></th></tr>");
48
+            jQuery("#rules-list").append("<tr class='header "+k+"Rule'><th><?php _e('Type', 'autoptimize'); ?></th><th><?php _e('Target', 'autoptimize'); ?></th><th><?php _e('Critical CSS File', 'autoptimize'); ?></th><th colspan='2'><?php _e('Actions', 'autoptimize'); ?></th></tr>");
49 49
         }
50 50
         nodeNumber=0;
51 51
         jQuery.each(v,function(i,nv){
@@ -55,13 +55,13 @@  discard block
 block discarded – undo
55 55
             file=nv.file;
56 56
             filest=nv.file;
57 57
             if (file == 0) {
58
-                file='<?php _e( 'To be fetched from criticalcss.com in the next queue run...', 'autoptimize' ); ?>';
58
+                file='<?php _e('To be fetched from criticalcss.com in the next queue run...', 'autoptimize'); ?>';
59 59
             }
60 60
             if (nv.hash === 0 && filest != 0) {
61
-                type='<?php _e( 'MANUAL', 'autoptimize' ); ?>';
61
+                type='<?php _e('MANUAL', 'autoptimize'); ?>';
62 62
                 typeClass = 'manual';
63 63
             } else {
64
-                type='<?php _e( 'AUTO', 'autoptimize' ); ?>';
64
+                type='<?php _e('AUTO', 'autoptimize'); ?>';
65 65
                 typeClass = 'auto';
66 66
             }
67 67
             if (file && typeof file == 'string') {
@@ -77,7 +77,7 @@  discard block
 block discarded – undo
77 77
             } else {
78 78
                 target = i.replace(/(woo_|template_|custom_post_|edd_|bp_|bbp_)/,'');
79 79
             }
80
-            jQuery("#rules-list").append("<tr class='rule "+k+"Rule'><td class='type'><span class='badge " + typeClass + "'>" + type + "</span>" + rmark + "</td><td class='target'>" + target + "</td><td class='file'>" + file + "</td><td class='btn edit'><span class=\"button-secondary\" id=\"" + nodeId + "_edit\"><?php _e( 'Edit', 'autoptimize' ); ?></span></td><td class='btn delete'><span class=\"button-secondary\" id=\"" + nodeId + "_remove\"><?php _e( 'Remove', 'autoptimize' ); ?></span></td></tr>");
80
+            jQuery("#rules-list").append("<tr class='rule "+k+"Rule'><td class='type'><span class='badge " + typeClass + "'>" + type + "</span>" + rmark + "</td><td class='target'>" + target + "</td><td class='file'>" + file + "</td><td class='btn edit'><span class=\"button-secondary\" id=\"" + nodeId + "_edit\"><?php _e('Edit', 'autoptimize'); ?></span></td><td class='btn delete'><span class=\"button-secondary\" id=\"" + nodeId + "_remove\"><?php _e('Remove', 'autoptimize'); ?></span></td></tr>");
81 81
             jQuery("#" + nodeId + "_edit").click(function(){addEditRow(this.id);});
82 82
             jQuery("#" + nodeId + "_remove").click(function(){confirmRemove(this.id);});
83 83
         })
@@ -90,12 +90,12 @@  discard block
 block discarded – undo
90 90
         height:235,
91 91
         modal: true,
92 92
         buttons: {
93
-            "<?php _e( 'Delete', 'autoptimize' ); ?>": function() {
93
+            "<?php _e('Delete', 'autoptimize'); ?>": function() {
94 94
                 removeRow(idToRemove);
95 95
                 updateAfterChange();
96 96
                 jQuery( this ).dialog( "close" );
97 97
             },
98
-            "<?php _e( 'Cancel', 'autoptimize' ); ?>": function() {
98
+            "<?php _e('Cancel', 'autoptimize'); ?>": function() {
99 99
                 jQuery( this ).dialog( "close" );
100 100
             }
101 101
         }
@@ -108,14 +108,14 @@  discard block
 block discarded – undo
108 108
         height:235,
109 109
         modal: true,
110 110
         buttons: {
111
-            "<?php _e( 'Delete All', 'autoptimize' ); ?>": function() {
111
+            "<?php _e('Delete All', 'autoptimize'); ?>": function() {
112 112
                 critCssArray={'paths':[],'types':[]};
113 113
                 drawTable(critCssArray);
114 114
                 updateAfterChange();
115 115
                 removeAllCcssFilesOnServer();
116 116
                 jQuery( this ).dialog( "close" );
117 117
             },
118
-            "<?php _e( 'Cancel', 'autoptimize' ); ?>": function() {
118
+            "<?php _e('Cancel', 'autoptimize'); ?>": function() {
119 119
                 jQuery( this ).dialog( "close" );
120 120
             }
121 121
         }
@@ -132,7 +132,7 @@  discard block
 block discarded – undo
132 132
 
133 133
     var data = {
134 134
         'action': 'rm_critcss',
135
-        'critcss_rm_nonce': '<?php echo wp_create_nonce( 'rm_critcss_nonce' ); ?>',
135
+        'critcss_rm_nonce': '<?php echo wp_create_nonce('rm_critcss_nonce'); ?>',
136 136
         'cachebustingtimestamp': new Date().getTime(),
137 137
         'critcssfile': crit_file
138 138
     };
@@ -153,7 +153,7 @@  discard block
 block discarded – undo
153 153
 function removeAllCcssFilesOnServer() {
154 154
     var data = {
155 155
         'action': 'rm_critcss_all',
156
-        'critcss_rm_all_nonce': '<?php echo wp_create_nonce( 'rm_critcss_all_nonce' ); ?>',
156
+        'critcss_rm_all_nonce': '<?php echo wp_create_nonce('rm_critcss_all_nonce'); ?>',
157 157
         'cachebustingtimestamp': new Date().getTime()
158 158
     };
159 159
 
@@ -173,7 +173,7 @@  discard block
 block discarded – undo
173 173
 function addEditRow(idToEdit) {
174 174
     resetForm();
175 175
     if (idToEdit) {
176
-        dialogTitle="<?php _e( 'Edit Critical CSS Rule', 'autoptimize' ); ?>";
176
+        dialogTitle="<?php _e('Edit Critical CSS Rule', 'autoptimize'); ?>";
177 177
 
178 178
         splits=idToEdit.split(/_/);
179 179
         crit_type=splits[0];
@@ -184,7 +184,7 @@  discard block
 block discarded – undo
184 184
         jQuery("#critcss_addedit_id").val(idToEdit);
185 185
         jQuery("#critcss_addedit_type").val(crit_type);
186 186
         jQuery("#critcss_addedit_file").val(crit_file);
187
-        jQuery("#critcss_addedit_css").attr("placeholder", "<?php _e( 'Loading critical CSS...', 'autoptimize' ); ?>");
187
+        jQuery("#critcss_addedit_css").attr("placeholder", "<?php _e('Loading critical CSS...', 'autoptimize'); ?>");
188 188
         jQuery("#critcss_addedit_type").attr("disabled",true);
189 189
 
190 190
         if (crit_type==="paths") {
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
 
200 200
         var data = {
201 201
             'action': 'fetch_critcss',
202
-            'critcss_fetch_nonce': '<?php echo wp_create_nonce( 'fetch_critcss_nonce' ); ?>',
202
+            'critcss_fetch_nonce': '<?php echo wp_create_nonce('fetch_critcss_nonce'); ?>',
203 203
             'cachebustingtimestamp': new Date().getTime(),
204 204
             'critcssfile': crit_file
205 205
         };
@@ -213,7 +213,7 @@  discard block
 block discarded – undo
213 213
             }
214 214
         });
215 215
     } else {
216
-        dialogTitle="<?php _e( 'Add Critical CSS Rule', 'autotimize' ); ?>";
216
+        dialogTitle="<?php _e('Add Critical CSS Rule', 'autotimize'); ?>";
217 217
 
218 218
         // default: paths, hide content type field
219 219
         jQuery("#critcss_addedit_type").val("paths");
@@ -224,11 +224,11 @@  discard block
 block discarded – undo
224 224
             if(this.value==="types") {
225 225
                 jQuery("#critcss_addedit_pagetype_wrapper").show();
226 226
                 jQuery("#critcss_addedit_path_wrapper").hide();
227
-                jQuery("#critcss_addedit_css").attr("placeholder", "<?php _e( 'For type based rules, paste your specific and minified critical CSS here and hit submit to save. If you want to create a rule to exclude from critical CSS injection, enter \"none\".', 'autoptimize' ); ?>");
227
+                jQuery("#critcss_addedit_css").attr("placeholder", "<?php _e('For type based rules, paste your specific and minified critical CSS here and hit submit to save. If you want to create a rule to exclude from critical CSS injection, enter \"none\".', 'autoptimize'); ?>");
228 228
             } else {
229 229
                 jQuery("#critcss_addedit_path_wrapper").show();
230 230
                 jQuery("#critcss_addedit_pagetype_wrapper").hide();
231
-                jQuery("#critcss_addedit_css").attr("placeholder", "<?php _e( 'For path based rules, paste your specific and minified critical CSS here or leave this empty to fetch it from criticalcss.com and hit submit to save. If you want to create a rule to exclude from critical CSS injection, enter \"none\"', 'autoptimize' ); ?>");
231
+                jQuery("#critcss_addedit_css").attr("placeholder", "<?php _e('For path based rules, paste your specific and minified critical CSS here or leave this empty to fetch it from criticalcss.com and hit submit to save. If you want to create a rule to exclude from critical CSS injection, enter \"none\"', 'autoptimize'); ?>");
232 232
             }
233 233
         });
234 234
     }
@@ -240,21 +240,21 @@  discard block
 block discarded – undo
240 240
         title: dialogTitle,
241 241
         modal: true,
242 242
         buttons: {
243
-            "<?php _e( 'Submit', 'autoptimize' ); ?>": function() {
243
+            "<?php _e('Submit', 'autoptimize'); ?>": function() {
244 244
                 rpath = jQuery("#critcss_addedit_path").val();
245 245
                 rtype = jQuery("#critcss_addedit_pagetype option:selected").val();
246 246
                 rccss = jQuery("#critcss_addedit_css").val();
247 247
                 console.log('rpath: ' + rpath, 'rtype: ' + rtype, 'rccss: ' + rccss);
248 248
                 if (rpath === '' && rtype === '') {
249
-                    alert('<?php _e( "RULE VALIDATION ERROR!\\n\\nBased on your rule type, you SHOULD set a path or conditional tag.", 'autoptimize' ); ?>');
249
+                    alert('<?php _e("RULE VALIDATION ERROR!\\n\\nBased on your rule type, you SHOULD set a path or conditional tag.", 'autoptimize'); ?>');
250 250
                 } else if (rtype !== '' && rccss == '') {
251
-                    alert('<?php _e( "RULE VALIDATION ERROR!\\n\\nType based rules REQUIRES a minified critical CSS.", 'autoptimize' ); ?>');
251
+                    alert('<?php _e("RULE VALIDATION ERROR!\\n\\nType based rules REQUIRES a minified critical CSS.", 'autoptimize'); ?>');
252 252
                 } else {
253 253
                     saveEditCritCss();
254 254
                     jQuery(this).dialog('close');
255 255
                 }
256 256
             },
257
-            "<?php _e( 'Cancel', 'autoptimize' ); ?>": function() {
257
+            "<?php _e('Cancel', 'autoptimize'); ?>": function() {
258 258
                 resetForm();
259 259
                 jQuery(this).dialog("close");
260 260
             }
@@ -268,15 +268,15 @@  discard block
 block discarded – undo
268 268
         autoOpen: true,
269 269
         height: 505,
270 270
         width: 700,
271
-        title: "<?php _e( 'Default Critical CSS', 'autoptimize' ); ?>",
271
+        title: "<?php _e('Default Critical CSS', 'autoptimize'); ?>",
272 272
         modal: true,
273 273
         buttons: {
274
-            "<?php _e( 'Submit', 'autoptimize' ); ?>": function() {
274
+            "<?php _e('Submit', 'autoptimize'); ?>": function() {
275 275
                 document.getElementById("autoptimize_css_defer_inline").value=document.getElementById("dummyDefault").value;
276 276
                 jQuery("#unSavedWarning").show();
277 277
                 jQuery("#default_critcss_wrapper").dialog( "close" );
278 278
             },
279
-            "<?php _e( 'Cancel', 'autoptimize' ); ?>": function() {
279
+            "<?php _e('Cancel', 'autoptimize'); ?>": function() {
280 280
                 jQuery("#default_critcss_wrapper").dialog( "close" );
281 281
             }
282 282
         }
@@ -289,15 +289,15 @@  discard block
 block discarded – undo
289 289
         autoOpen: true,
290 290
         height: 505,
291 291
         width: 700,
292
-        title: "<?php _e( 'Additional Critical CSS', 'autoptimize' ); ?>",
292
+        title: "<?php _e('Additional Critical CSS', 'autoptimize'); ?>",
293 293
         modal: true,
294 294
         buttons: {
295
-            "<?php _e( 'Submit', 'autoptimize' ); ?>": function() {
295
+            "<?php _e('Submit', 'autoptimize'); ?>": function() {
296 296
                 document.getElementById("autoptimize_ccss_additional").value=document.getElementById("dummyAdditional").value;
297 297
                 jQuery("#unSavedWarning").show();
298 298
                 jQuery("#additional_critcss_wrapper").dialog( "close" );
299 299
             },
300
-            "<?php _e( 'Cancel', 'autoptimize' ); ?>": function() {
300
+            "<?php _e('Cancel', 'autoptimize'); ?>": function() {
301 301
                 jQuery("#additional_critcss_wrapper").dialog( "close" );
302 302
             }
303 303
         }
@@ -333,7 +333,7 @@  discard block
 block discarded – undo
333 333
     critCssArray[critcsstype][critcsstarget].file=critcssfile;
334 334
 
335 335
     <?php
336
-    if ( $ao_ccss_debug ) {
336
+    if ($ao_ccss_debug) {
337 337
         echo "console.log('[RULE PROPERTIES] Type:', critcsstype, ', Target:', critcsstarget, ', Hash:', 0, ', File:',  critcssfile);";
338 338
     }
339 339
     ?>
@@ -342,7 +342,7 @@  discard block
 block discarded – undo
342 342
 
343 343
     var data = {
344 344
         'action': 'save_critcss',
345
-        'critcss_save_nonce': '<?php echo wp_create_nonce( 'save_critcss_nonce' ); ?>',
345
+        'critcss_save_nonce': '<?php echo wp_create_nonce('save_critcss_nonce'); ?>',
346 346
         'critcssfile': critcssfile,
347 347
         'critcsscontents': critcsscontents
348 348
     };
@@ -367,7 +367,7 @@  discard block
 block discarded – undo
367 367
 }
368 368
 
369 369
 function resetForm() {
370
-    jQuery("#critcss_addedit_css").attr("placeholder", "<?php _e( 'For path based rules, paste your specific and minified critical CSS here or leave this empty to fetch it from criticalcss.com and hit submit to save. If you want to create a rule to exclude from critical CSS injection, enter \"none\"', 'autoptimize' ); ?>");
370
+    jQuery("#critcss_addedit_css").attr("placeholder", "<?php _e('For path based rules, paste your specific and minified critical CSS here or leave this empty to fetch it from criticalcss.com and hit submit to save. If you want to create a rule to exclude from critical CSS injection, enter \"none\"', 'autoptimize'); ?>");
371 371
     jQuery("#critcss_addedit_type").attr("disabled",false);
372 372
     jQuery("#critcss_addedit_path_wrapper").show();
373 373
     jQuery("#critcss_addedit_id").val("");
Please login to merge, or discard this patch.