Completed
Push — master ( 471c26...e80620 )
by frank
01:49
created
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.
@@ -86,45 +86,45 @@  discard block
 block discarded – undo
86 86
             global $ao_ccss_rtimelimit;
87 87
 
88 88
             // Initialize counters.
89
-            if ( $ao_ccss_rtimelimit == 0 ) {
89
+            if ($ao_ccss_rtimelimit == 0) {
90 90
                 // no time limit set, let's go with 1000 seconds.
91 91
                 $ao_ccss_rtimelimit = 1000;
92 92
             }
93 93
             $mt = time() + $ao_ccss_rtimelimit; // maxtime queue processing can run.
94 94
             $jc = 1; // job count number.
95 95
             $jr = 1; // jobs requests number.
96
-            $jt = count( $ao_ccss_queue ); // number of jobs in queue.
96
+            $jt = count($ao_ccss_queue); // number of jobs in queue.
97 97
 
98 98
             // Sort queue by ascending job status (e.g. ERROR, JOB_ONGOING, JOB_QUEUED, NEW...).
99
-            array_multisort( array_column( $ao_ccss_queue, 'jqstat' ), $ao_ccss_queue ); // @codingStandardsIgnoreLine
99
+            array_multisort(array_column($ao_ccss_queue, 'jqstat'), $ao_ccss_queue); // @codingStandardsIgnoreLine
100 100
 
101 101
             // Iterates over the entire queue.
102
-            foreach ( $ao_ccss_queue as $path => $jprops ) {
102
+            foreach ($ao_ccss_queue as $path => $jprops) {
103 103
                 // Prepare flags and target rule.
104 104
                 $update      = false;
105 105
                 $deljob      = false;
106 106
                 $rule_update = false;
107 107
                 $oldccssfile = false;
108
-                $trule       = explode( '|', $jprops['rtarget'] );
108
+                $trule       = explode('|', $jprops['rtarget']);
109 109
 
110 110
                 // Log job count.
111
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Processing job ' . $jc . ' of ' . $jt . ' with id <' . $jprops['ljid'] . '> and status <' . $jprops['jqstat'] . '>', 3 );
111
+                autoptimizeCriticalCSSCore::ao_ccss_log('Processing job '.$jc.' of '.$jt.' with id <'.$jprops['ljid'].'> and status <'.$jprops['jqstat'].'>', 3);
112 112
 
113 113
                 // Process NEW jobs.
114
-                if ( 'NEW' == $jprops['jqstat'] ) {
114
+                if ('NEW' == $jprops['jqstat']) {
115 115
 
116 116
                     // Log the new job.
117
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Found NEW job with local ID <' . $jprops['ljid'] . '>, starting its queue processing', 3 );
117
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Found NEW job with local ID <'.$jprops['ljid'].'>, starting its queue processing', 3);
118 118
 
119 119
                     // Compare job and rule hashes (if any).
120
-                    $hash = $this->ao_ccss_diff_hashes( $jprops['ljid'], $jprops['hash'], $jprops['hashes'], $jprops['rtarget'] );
120
+                    $hash = $this->ao_ccss_diff_hashes($jprops['ljid'], $jprops['hash'], $jprops['hashes'], $jprops['rtarget']);
121 121
 
122 122
                     // If job hash is new or different of a previous one.
123
-                    if ( $hash ) {
124
-                        if ( $jr > 2 ) {
123
+                    if ($hash) {
124
+                        if ($jr > 2) {
125 125
                             // we already posted 2 jobs to criticalcss.com, don't post more this run
126 126
                             // but we can keep on processing the queue to keep it tidy.
127
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Holding off on generating request for job with local ID <' . $jprops['ljid'] . '>, maximum number of POSTS reached.', 3 );
127
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Holding off on generating request for job with local ID <'.$jprops['ljid'].'>, maximum number of POSTS reached.', 3);
128 128
                             continue;
129 129
                         }
130 130
 
@@ -132,182 +132,182 @@  discard block
 block discarded – undo
132 132
                         $jprops['hash'] = $hash;
133 133
 
134 134
                         // Dispatch the job generate request and increment request count.
135
-                        $apireq = $this->ao_ccss_api_generate( $path, $queue_debug, $qdobj['htcode'] );
135
+                        $apireq = $this->ao_ccss_api_generate($path, $queue_debug, $qdobj['htcode']);
136 136
                         $jr++;
137 137
 
138 138
                         // NOTE: All the following conditions maps to the ones in admin_settings_queue.js.php.
139
-                        if ( 'JOB_QUEUED' == $apireq['job']['status'] || 'JOB_ONGOING' == $apireq['job']['status'] ) {
139
+                        if ('JOB_QUEUED' == $apireq['job']['status'] || 'JOB_ONGOING' == $apireq['job']['status']) {
140 140
                             // SUCCESS: request has a valid result.
141 141
                             // Update job properties.
142 142
                             $jprops['jid']    = $apireq['job']['id'];
143 143
                             $jprops['jqstat'] = $apireq['job']['status'];
144
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> generate request successful, remote id <' . $jprops['jid'] . '>, status now is <' . $jprops['jqstat'] . '>', 3 );
145
-                        } elseif ( 'STATUS_JOB_BAD' == $apireq['job']['status'] ) {
144
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> generate request successful, remote id <'.$jprops['jid'].'>, status now is <'.$jprops['jqstat'].'>', 3);
145
+                        } elseif ('STATUS_JOB_BAD' == $apireq['job']['status']) {
146 146
                             // ERROR: concurrent requests
147 147
                             // Update job properties.
148 148
                             $jprops['jid']    = $apireq['job']['id'];
149 149
                             $jprops['jqstat'] = $apireq['job']['status'];
150
-                            if ( $apireq['job']['error'] ) {
150
+                            if ($apireq['job']['error']) {
151 151
                                 $jprops['jrstat'] = $apireq['job']['error'];
152 152
                             } else {
153 153
                                 $jprops['jrstat'] = 'Baby did a bad bad thing';
154 154
                             }
155 155
                             $jprops['jvstat'] = 'NONE';
156
-                            $jprops['jftime'] = microtime( true );
157
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Concurrent requests when processing job id <' . $jprops['ljid'] . '>, job status is now <' . $jprops['jqstat'] . '>', 3 );
158
-                        } elseif ( 'INVALID_JWT_TOKEN' == $apireq['errorCode'] ) {
156
+                            $jprops['jftime'] = microtime(true);
157
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Concurrent requests when processing job id <'.$jprops['ljid'].'>, job status is now <'.$jprops['jqstat'].'>', 3);
158
+                        } elseif ('INVALID_JWT_TOKEN' == $apireq['errorCode']) {
159 159
                             // ERROR: key validation
160 160
                             // Update job properties.
161 161
                             $jprops['jqstat'] = $apireq['errorCode'];
162 162
                             $jprops['jrstat'] = $apireq['error'];
163 163
                             $jprops['jvstat'] = 'NONE';
164
-                            $jprops['jftime'] = microtime( true );
165
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'API key validation error when processing job id <' . $jprops['ljid'] . '>, job status is now <' . $jprops['jqstat'] . '>', 3 );
166
-                        } elseif ( empty( $apireq ) ) {
164
+                            $jprops['jftime'] = microtime(true);
165
+                            autoptimizeCriticalCSSCore::ao_ccss_log('API key validation error when processing job id <'.$jprops['ljid'].'>, job status is now <'.$jprops['jqstat'].'>', 3);
166
+                        } elseif (empty($apireq)) {
167 167
                             // ERROR: no response
168 168
                             // Update job properties.
169 169
                             $jprops['jqstat'] = 'NO_RESPONSE';
170 170
                             $jprops['jrstat'] = 'NONE';
171 171
                             $jprops['jvstat'] = 'NONE';
172
-                            $jprops['jftime'] = microtime( true );
173
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> request has no response, status now is <' . $jprops['jqstat'] . '>', 3 );
172
+                            $jprops['jftime'] = microtime(true);
173
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> request has no response, status now is <'.$jprops['jqstat'].'>', 3);
174 174
                         } else {
175 175
                             // UNKNOWN: unhandled generate exception
176 176
                             // Update job properties.
177 177
                             $jprops['jqstat'] = 'JOB_UNKNOWN';
178 178
                             $jprops['jrstat'] = 'NONE';
179 179
                             $jprops['jvstat'] = 'NONE';
180
-                            $jprops['jftime'] = microtime( true );
181
-                            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 );
182
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job response was: ' . json_encode( $apireq ), 3 );
180
+                            $jprops['jftime'] = microtime(true);
181
+                            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);
182
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job response was: '.json_encode($apireq), 3);
183 183
                         }
184 184
                     } else {
185 185
                         // SUCCESS: Job hash is equal to a previous one, so it's done
186 186
                         // Update job status and finish time.
187 187
                         $jprops['jqstat'] = 'JOB_DONE';
188
-                        $jprops['jftime'] = microtime( true );
189
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> requires no further processing, status now is <' . $jprops['jqstat'] . '>', 3 );
188
+                        $jprops['jftime'] = microtime(true);
189
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> requires no further processing, status now is <'.$jprops['jqstat'].'>', 3);
190 190
                     }
191 191
 
192 192
                     // Set queue update flag.
193 193
                     $update = true;
194 194
 
195
-                } elseif ( 'JOB_QUEUED' == $jprops['jqstat'] || 'JOB_ONGOING' == $jprops['jqstat'] ) {
195
+                } elseif ('JOB_QUEUED' == $jprops['jqstat'] || 'JOB_ONGOING' == $jprops['jqstat']) {
196 196
                     // Process QUEUED and ONGOING jobs
197 197
                     // Log the pending job.
198
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Found PENDING job with local ID <' . $jprops['ljid'] . '>, continuing its queue processing', 3 );
198
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Found PENDING job with local ID <'.$jprops['ljid'].'>, continuing its queue processing', 3);
199 199
 
200 200
                     // Dispatch the job result request and increment request count.
201
-                    $apireq = $this->ao_ccss_api_results( $jprops['jid'], $queue_debug, $qdobj['htcode'] );
201
+                    $apireq = $this->ao_ccss_api_results($jprops['jid'], $queue_debug, $qdobj['htcode']);
202 202
 
203 203
                     // NOTE: All the following condigitons maps to the ones in admin_settings_queue.js.php
204 204
                     // Replace API response values if queue debugging is enabled and some value is set.
205
-                    if ( $queue_debug ) {
206
-                        if ( $qdobj['status'] ) {
205
+                    if ($queue_debug) {
206
+                        if ($qdobj['status']) {
207 207
                             $apireq['status'] = $qdobj['status'];
208 208
                         }
209
-                        if ( $qdobj['resultStatus'] ) {
209
+                        if ($qdobj['resultStatus']) {
210 210
                             $apireq['resultStatus'] = $qdobj['resultStatus'];
211 211
                         }
212
-                        if ( $qdobj['validationStatus'] ) {
212
+                        if ($qdobj['validationStatus']) {
213 213
                             $apireq['validationStatus'] = $qdobj['validationStatus'];
214 214
                         }
215 215
                     }
216 216
 
217
-                    if ( 'JOB_QUEUED' == $apireq['status'] || 'JOB_ONGOING' == $apireq['status'] ) {
217
+                    if ('JOB_QUEUED' == $apireq['status'] || 'JOB_ONGOING' == $apireq['status']) {
218 218
                         // SUCCESS: request has a valid result
219 219
                         // Process a PENDING job
220 220
                         // Update job properties.
221 221
                         $jprops['jqstat'] = $apireq['status'];
222
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . '> unchanged', 3 );
223
-                    } elseif ( 'JOB_DONE' == $apireq['status'] ) {
222
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful, remote id <'.$jprops['jid'].'>, status <'.$jprops['jqstat'].'> unchanged', 3);
223
+                    } elseif ('JOB_DONE' == $apireq['status']) {
224 224
                         // Process a DONE job
225 225
                         // New resultStatus from ccss.com "HTML_404", consider as "GOOD" for now.
226
-                        if ( 'HTML_404' == $apireq['resultStatus'] ) {
226
+                        if ('HTML_404' == $apireq['resultStatus']) {
227 227
                             $apireq['resultStatus'] = 'GOOD';
228 228
                         }
229 229
 
230
-                        if ( 'GOOD' == $apireq['resultStatus'] && ( 'GOOD' == $apireq['validationStatus'] || 'WARN' == $apireq['validationStatus'] ) ) {
230
+                        if ('GOOD' == $apireq['resultStatus'] && ('GOOD' == $apireq['validationStatus'] || 'WARN' == $apireq['validationStatus'])) {
231 231
                             // SUCCESS: GOOD job with GOOD or WARN validation
232 232
                             // Update job properties.
233
-                            $jprops['file']   = $this->ao_ccss_save_file( $apireq['css'], $trule, false );
233
+                            $jprops['file']   = $this->ao_ccss_save_file($apireq['css'], $trule, false);
234 234
                             $jprops['jqstat'] = $apireq['status'];
235 235
                             $jprops['jrstat'] = $apireq['resultStatus'];
236 236
                             $jprops['jvstat'] = $apireq['validationStatus'];
237
-                            $jprops['jftime'] = microtime( true );
237
+                            $jprops['jftime'] = microtime(true);
238 238
                             $rule_update      = true;
239
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . '>, file saved <' . $jprops['file'] . '>', 3 );
240
-                        } elseif ( 'GOOD' == $apireq['resultStatus'] && ( 'BAD' == $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' == $apireq['validationStatus'] ) ) {
239
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful, remote id <'.$jprops['jid'].'>, status <'.$jprops['jqstat'].'>, file saved <'.$jprops['file'].'>', 3);
240
+                        } elseif ('GOOD' == $apireq['resultStatus'] && ('BAD' == $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' == $apireq['validationStatus'])) {
241 241
                             // SUCCESS: GOOD job with BAD or SCREENSHOT_WARN_BLANK validation
242 242
                             // Update job properties.
243 243
                             $jprops['jqstat'] = $apireq['status'];
244 244
                             $jprops['jrstat'] = $apireq['resultStatus'];
245 245
                             $jprops['jvstat'] = $apireq['validationStatus'];
246
-                            $jprops['jftime'] = microtime( true );
247
-                            if ( apply_filters( 'autoptimize_filter_ccss_save_review_rules', true ) ) {
248
-                                $jprops['file']   = $this->ao_ccss_save_file( $apireq['css'], $trule, true );
246
+                            $jprops['jftime'] = microtime(true);
247
+                            if (apply_filters('autoptimize_filter_ccss_save_review_rules', true)) {
248
+                                $jprops['file']   = $this->ao_ccss_save_file($apireq['css'], $trule, true);
249 249
                                 $rule_update      = true;
250
-                                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 );
250
+                                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);
251 251
                             } else {
252
-                                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . ', file not saved because it required REVIEW.', 3 );
252
+                                autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful, remote id <'.$jprops['jid'].'>, status <'.$jprops['jqstat'].', file not saved because it required REVIEW.', 3);
253 253
                             }
254
-                        } elseif ( 'GOOD' != $apireq['resultStatus'] && ( 'GOOD' != $apireq['validationStatus'] || 'WARN' != $apireq['validationStatus'] || 'BAD' != $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' != $apireq['validationStatus'] ) ) {
254
+                        } elseif ('GOOD' != $apireq['resultStatus'] && ('GOOD' != $apireq['validationStatus'] || 'WARN' != $apireq['validationStatus'] || 'BAD' != $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' != $apireq['validationStatus'])) {
255 255
                             // ERROR: no GOOD, WARN or BAD results
256 256
                             // Update job properties.
257 257
                             $jprops['jqstat'] = $apireq['status'];
258 258
                             $jprops['jrstat'] = $apireq['resultStatus'];
259 259
                             $jprops['jvstat'] = $apireq['validationStatus'];
260
-                            $jprops['jftime'] = microtime( true );
261
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful but job FAILED, status now is <' . $jprops['jqstat'] . '>', 3 );
260
+                            $jprops['jftime'] = microtime(true);
261
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful but job FAILED, status now is <'.$jprops['jqstat'].'>', 3);
262 262
                             $apireq['css'] = '/* critical css removed for DEBUG logging purposes */';
263
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job response was: ' . json_encode( $apireq ), 3 );
263
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job response was: '.json_encode($apireq), 3);
264 264
                         } else {
265 265
                             // UNKNOWN: unhandled JOB_DONE exception
266 266
                             // Update job properties.
267 267
                             $jprops['jqstat'] = 'JOB_UNKNOWN';
268 268
                             $jprops['jrstat'] = $apireq['resultStatus'];
269 269
                             $jprops['jvstat'] = $apireq['validationStatus'];
270
-                            $jprops['jftime'] = microtime( true );
271
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful but job is UNKNOWN, status now is <' . $jprops['jqstat'] . '>', 2 );
270
+                            $jprops['jftime'] = microtime(true);
271
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful but job is UNKNOWN, status now is <'.$jprops['jqstat'].'>', 2);
272 272
                             $apireq['css'] = '/* critical css removed for DEBUG logging purposes */';
273
-                            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job response was: ' . json_encode( $apireq ), 3 );
273
+                            autoptimizeCriticalCSSCore::ao_ccss_log('Job response was: '.json_encode($apireq), 3);
274 274
                         }
275
-                    } elseif ( 'JOB_FAILED' == $apireq['job']['status'] || 'STATUS_JOB_BAD' == $apireq['job']['status'] ) {
275
+                    } elseif ('JOB_FAILED' == $apireq['job']['status'] || 'STATUS_JOB_BAD' == $apireq['job']['status']) {
276 276
                         // ERROR: failed job
277 277
                         // Update job properties.
278 278
                         $jprops['jqstat'] = $apireq['job']['status'];
279
-                        if ( $apireq['job']['error'] ) {
279
+                        if ($apireq['job']['error']) {
280 280
                             $jprops['jrstat'] = $apireq['job']['error'];
281 281
                         } else {
282 282
                             $jprops['jrstat'] = 'Baby did a bad bad thing';
283 283
                         }
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 ( 'This css no longer exists. Please re-generate it.' == $apireq['error'] ) {
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 ('This css no longer exists. Please re-generate it.' == $apireq['error']) {
288 288
                         // ERROR: CSS doesn't exist
289 289
                         // Update job properties.
290 290
                         $jprops['jqstat'] = 'NO_CSS';
291 291
                         $jprops['jrstat'] = $apireq['error'];
292 292
                         $jprops['jvstat'] = 'NONE';
293
-                        $jprops['jftime'] = microtime( true );
294
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> result request successful but job FAILED, status now is <' . $jprops['jqstat'] . '>', 3 );
295
-                    } elseif ( empty( $apireq ) ) {
293
+                        $jprops['jftime'] = microtime(true);
294
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> result request successful but job FAILED, status now is <'.$jprops['jqstat'].'>', 3);
295
+                    } elseif (empty($apireq)) {
296 296
                         // ERROR: no response
297 297
                         // Update job properties.
298 298
                         $jprops['jqstat'] = 'NO_RESPONSE';
299 299
                         $jprops['jrstat'] = 'NONE';
300 300
                         $jprops['jvstat'] = 'NONE';
301
-                        $jprops['jftime'] = microtime( true );
302
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> request has no response, status now is <' . $jprops['jqstat'] . '>', 3 );
301
+                        $jprops['jftime'] = microtime(true);
302
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> request has no response, status now is <'.$jprops['jqstat'].'>', 3);
303 303
                     } else {
304 304
                         // UNKNOWN: unhandled results exception
305 305
                         // Update job properties.
306 306
                         $jprops['jqstat'] = 'JOB_UNKNOWN';
307 307
                         $jprops['jrstat'] = 'NONE';
308 308
                         $jprops['jvstat'] = 'NONE';
309
-                        $jprops['jftime'] = microtime( true );
310
-                        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 );
309
+                        $jprops['jftime'] = microtime(true);
310
+                        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);
311 311
                     }
312 312
 
313 313
                     // Set queue update flag.
@@ -315,40 +315,40 @@  discard block
 block discarded – undo
315 315
                 }
316 316
 
317 317
                 // Mark DONE jobs for removal.
318
-                if ( 'JOB_DONE' == $jprops['jqstat'] ) {
318
+                if ('JOB_DONE' == $jprops['jqstat']) {
319 319
                     $update = true;
320 320
                     $deljob = true;
321 321
                 }
322 322
 
323 323
                 // Persist updated queue object.
324
-                if ( $update ) {
325
-                    if ( ! $deljob ) {
324
+                if ($update) {
325
+                    if (!$deljob) {
326 326
                         // Update properties of a NEW or PENDING job...
327
-                        $ao_ccss_queue[ $path ] = $jprops;
327
+                        $ao_ccss_queue[$path] = $jprops;
328 328
                     } else {
329 329
                         // ...or remove the DONE job.
330
-                        unset( $ao_ccss_queue[ $path ] );
331
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> is DONE and was removed from the queue', 3 );
330
+                        unset($ao_ccss_queue[$path]);
331
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> is DONE and was removed from the queue', 3);
332 332
                     }
333 333
 
334 334
                     // Update queue object.
335
-                    $ao_ccss_queue_raw = json_encode( $ao_ccss_queue );
336
-                    update_option( 'autoptimize_ccss_queue', $ao_ccss_queue_raw, false );
337
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue updated by job id <' . $jprops['ljid'] . '>', 3 );
335
+                    $ao_ccss_queue_raw = json_encode($ao_ccss_queue);
336
+                    update_option('autoptimize_ccss_queue', $ao_ccss_queue_raw, false);
337
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Queue updated by job id <'.$jprops['ljid'].'>', 3);
338 338
 
339 339
                     // Update target rule.
340
-                    if ( $rule_update ) {
341
-                        $this->ao_ccss_rule_update( $jprops['ljid'], $jprops['rtarget'], $jprops['file'], $jprops['hash'] );
342
-                        autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $jprops['ljid'] . '> updated the target rule <' . $jprops['rtarget'] . '>', 3 );
340
+                    if ($rule_update) {
341
+                        $this->ao_ccss_rule_update($jprops['ljid'], $jprops['rtarget'], $jprops['file'], $jprops['hash']);
342
+                        autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$jprops['ljid'].'> updated the target rule <'.$jprops['rtarget'].'>', 3);
343 343
                     }
344 344
                 } else {
345 345
                     // Or log no queue action.
346
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Nothing to do on this job', 3 );
346
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Nothing to do on this job', 3);
347 347
                 }
348 348
 
349 349
                 // Break the loop if request time limit is (almost exceeded).
350
-                if ( time() > $mt ) {
351
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'The time limit of ' . $ao_ccss_rtimelimit . ' seconds was exceeded, queue control must finish now', 3 );
350
+                if (time() > $mt) {
351
+                    autoptimizeCriticalCSSCore::ao_ccss_log('The time limit of '.$ao_ccss_rtimelimit.' seconds was exceeded, queue control must finish now', 3);
352 352
                     break;
353 353
                 }
354 354
 
@@ -357,46 +357,46 @@  discard block
 block discarded – undo
357 357
             }
358 358
 
359 359
             // Remove the lock file and log the queue end.
360
-            if ( file_exists( AO_CCSS_LOCK ) ) {
361
-                unlink( AO_CCSS_LOCK );
362
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue control unlocked', 3 );
360
+            if (file_exists(AO_CCSS_LOCK)) {
361
+                unlink(AO_CCSS_LOCK);
362
+                autoptimizeCriticalCSSCore::ao_ccss_log('Queue control unlocked', 3);
363 363
             }
364
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue control finished', 3 );
364
+            autoptimizeCriticalCSSCore::ao_ccss_log('Queue control finished', 3);
365 365
 
366 366
             // Log that queue is locked.
367 367
         } else {
368
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue is already running, skipping the attempt to run it again', 3 );
368
+            autoptimizeCriticalCSSCore::ao_ccss_log('Queue is already running, skipping the attempt to run it again', 3);
369 369
         }
370 370
     }
371 371
 
372
-    public function ao_ccss_diff_hashes( $ljid, $hash, $hashes, $rule ) {
372
+    public function ao_ccss_diff_hashes($ljid, $hash, $hashes, $rule) {
373 373
         // Compare job hashes
374 374
         // STEP 1: update job hashes.
375
-        if ( 1 == count( $hashes ) ) {
375
+        if (1 == count($hashes)) {
376 376
             // Job with a single hash
377 377
             // Set job hash.
378 378
             $hash = $hashes[0];
379
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> updated with SINGLE hash <' . $hash . '>', 3 );
379
+            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> updated with SINGLE hash <'.$hash.'>', 3);
380 380
         } else {
381 381
             // Job with multiple hashes
382 382
             // Loop through hashes to concatenate them.
383 383
             $nhash = '';
384
-            foreach ( $hashes as $shash ) {
384
+            foreach ($hashes as $shash) {
385 385
                 $nhash .= $shash;
386 386
             }
387 387
 
388 388
             // Set job hash.
389
-            $hash = md5( $nhash );
390
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> updated with a COMPOSITE hash <' . $hash . '>', 3 );
389
+            $hash = md5($nhash);
390
+            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> updated with a COMPOSITE hash <'.$hash.'>', 3);
391 391
         }
392 392
 
393 393
         // STEP 2: compare job to existing jobs to prevent double submission for same type+hash.
394 394
         global $ao_ccss_queue;
395 395
 
396
-        foreach ( $ao_ccss_queue as $queue_item ) {
397
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Comparing <' . $rule . $hash . '> with <' . $queue_item['rtarget'] . $queue_item['hash'] . '>', 3 );
398
-            if ( $queue_item['hash'] == $hash && $queue_item['rtarget'] == $rule && in_array( $queue_item['jqstat'], array( 'JOB_QUEUED', 'JOB_ONGOING', 'JOB_DONE' ) ) ) {
399
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> matches the already pending job <' . $queue_item['ljid'] . '>', 3 );
396
+        foreach ($ao_ccss_queue as $queue_item) {
397
+            autoptimizeCriticalCSSCore::ao_ccss_log('Comparing <'.$rule.$hash.'> with <'.$queue_item['rtarget'].$queue_item['hash'].'>', 3);
398
+            if ($queue_item['hash'] == $hash && $queue_item['rtarget'] == $rule && in_array($queue_item['jqstat'], array('JOB_QUEUED', 'JOB_ONGOING', 'JOB_DONE'))) {
399
+                autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> matches the already pending job <'.$queue_item['ljid'].'>', 3);
400 400
                 return false;
401 401
             }
402 402
         }
@@ -406,32 +406,32 @@  discard block
 block discarded – undo
406 406
         global $ao_ccss_rules;
407 407
 
408 408
         // Prepare rule variables.
409
-        $trule = explode( '|', $rule );
410
-        $srule = $ao_ccss_rules[ $trule[0] ][ $trule[1] ];
409
+        $trule = explode('|', $rule);
410
+        $srule = $ao_ccss_rules[$trule[0]][$trule[1]];
411 411
 
412 412
         // Check if a MANUAL rule exist and return false.
413
-        if ( ! empty( $srule ) && ( 0 == $srule['hash'] && 0 != $srule['file'] ) ) {
414
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> matches the MANUAL rule <' . $trule[0] . '|' . $trule[1] . '>', 3 );
413
+        if (!empty($srule) && (0 == $srule['hash'] && 0 != $srule['file'])) {
414
+            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> matches the MANUAL rule <'.$trule[0].'|'.$trule[1].'>', 3);
415 415
             return false;
416
-        } elseif ( ! empty( $srule ) ) {
416
+        } elseif (!empty($srule)) {
417 417
             // Check if an AUTO rule exist.
418
-            if ( $hash === $srule['hash'] && is_file( AO_CCSS_DIR . $srule['file'] ) && 0 != filesize( AO_CCSS_DIR . $srule['file'] ) ) {
418
+            if ($hash === $srule['hash'] && is_file(AO_CCSS_DIR.$srule['file']) && 0 != filesize(AO_CCSS_DIR.$srule['file'])) {
419 419
                 // Check if job hash matches rule, if the CCSS file exists said file is not empty and return FALSE is so.
420
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> with hash <' . $hash . '> MATCH the one in rule <' . $trule[0] . '|' . $trule[1] . '>', 3 );
420
+                autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> with hash <'.$hash.'> MATCH the one in rule <'.$trule[0].'|'.$trule[1].'>', 3);
421 421
                 return false;
422 422
             } else {
423 423
                 // Or return the new hash if they differ.
424
-                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 );
424
+                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);
425 425
                 return $hash;
426 426
             }
427 427
         } else {
428 428
             // Or just return the hash if no rule exist yet.
429
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Job id <' . $ljid . '> with hash <' . $hash . '> has no rule yet', 3 );
429
+            autoptimizeCriticalCSSCore::ao_ccss_log('Job id <'.$ljid.'> with hash <'.$hash.'> has no rule yet', 3);
430 430
             return $hash;
431 431
         }
432 432
     }
433 433
 
434
-    public function ao_ccss_api_generate( $path, $debug, $dcode ) {
434
+    public function ao_ccss_api_generate($path, $debug, $dcode) {
435 435
         // POST jobs to criticalcss.com and return responses
436 436
         // Get key and key status.
437 437
         global $ao_ccss_key;
@@ -443,35 +443,35 @@  discard block
 block discarded – undo
443 443
         global $ao_ccss_noptimize;
444 444
 
445 445
         $site_host = get_site_url();
446
-        $site_path = parse_url( $site_host, PHP_URL_PATH );
446
+        $site_path = parse_url($site_host, PHP_URL_PATH);
447 447
 
448
-        if ( ! empty( $site_path ) ) {
449
-            $site_host = str_replace( $site_path, '', $site_host );
448
+        if (!empty($site_path)) {
449
+            $site_host = str_replace($site_path, '', $site_host);
450 450
         }
451 451
 
452 452
         // Logic to bind to one domain to avoid site clones of sites would
453 453
         // automatically begin spawning requests to criticalcss.com which has
454 454
         // a per domain cost.
455 455
         global $ao_ccss_domain;
456
-        if ( empty( $ao_ccss_domain ) ) {
456
+        if (empty($ao_ccss_domain)) {
457 457
             // first request being done, update option to allow future requests are only allowed if from same domain.
458
-            update_option( 'autoptimize_ccss_domain', str_rot13( $site_host ) );
459
-        } 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 ) ) {
458
+            update_option('autoptimize_ccss_domain', str_rot13($site_host));
459
+        } 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)) {
460 460
             // not the same domain, log as error and return without posting to criticalcss.com.
461
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Request for domain ' . $site_host . ' does not match bound domain ' . $ao_ccss_domain . ' so not proceeding.', 2 );
461
+            autoptimizeCriticalCSSCore::ao_ccss_log('Request for domain '.$site_host.' does not match bound domain '.$ao_ccss_domain.' so not proceeding.', 2);
462 462
             return false;
463 463
         }
464 464
 
465
-        $src_url = $site_host . $path;
465
+        $src_url = $site_host.$path;
466 466
 
467 467
         // Avoid AO optimizations if required by config or avoid lazyload if lazyload is active in AO.
468
-        if ( ! empty( $ao_ccss_noptimize ) ) {
468
+        if (!empty($ao_ccss_noptimize)) {
469 469
             $src_url .= '?ao_noptirocket=1';
470
-        } elseif ( class_exists( 'autoptimizeImages', false ) && autoptimizeImages::should_lazyload_wrapper() ) {
470
+        } elseif (class_exists('autoptimizeImages', false) && autoptimizeImages::should_lazyload_wrapper()) {
471 471
             $src_url .= '?ao_nolazy=1';
472 472
         }
473 473
 
474
-        $src_url = apply_filters( 'autoptimize_filter_ccss_cron_srcurl', $src_url );
474
+        $src_url = apply_filters('autoptimize_filter_ccss_cron_srcurl', $src_url);
475 475
 
476 476
         // Initialize request body.
477 477
         $body           = array();
@@ -481,88 +481,88 @@  discard block
 block discarded – undo
481 481
 
482 482
         // Prepare and add viewport size to the body if available.
483 483
         $viewport = autoptimizeCriticalCSSCore::ao_ccss_viewport();
484
-        if ( ! empty( $viewport['w'] ) && ! empty( $viewport['h'] ) ) {
484
+        if (!empty($viewport['w']) && !empty($viewport['h'])) {
485 485
             $body['width']  = $viewport['w'];
486 486
             $body['height'] = $viewport['h'];
487 487
         }
488 488
 
489 489
         // Prepare and add forceInclude to the body if available.
490 490
         global $ao_ccss_finclude;
491
-        $finclude = $this->ao_ccss_finclude( $ao_ccss_finclude );
492
-        if ( ! empty( $finclude ) ) {
491
+        $finclude = $this->ao_ccss_finclude($ao_ccss_finclude);
492
+        if (!empty($finclude)) {
493 493
             $body['forceInclude'] = $finclude;
494 494
         }
495 495
 
496 496
         // Add filter to allow the body array to be altered (e.g. to add customPageHeaders).
497
-        $body = apply_filters( 'autoptimize_ccss_cron_api_generate_body', $body );
497
+        $body = apply_filters('autoptimize_ccss_cron_api_generate_body', $body);
498 498
 
499 499
         // Body must be json and log it.
500
-        $body = json_encode( $body );
501
-        autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request body is ' . $body, 3 );
500
+        $body = json_encode($body);
501
+        autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request body is '.$body, 3);
502 502
 
503 503
         // Prepare the request.
504
-        $url  = esc_url_raw( AO_CCSS_API . 'generate?aover=' . AO_CCSS_VER );
504
+        $url  = esc_url_raw(AO_CCSS_API.'generate?aover='.AO_CCSS_VER);
505 505
         $args = array(
506 506
             'headers' => array(
507
-                'User-Agent'    => 'Autoptimize v' . AO_CCSS_VER,
507
+                'User-Agent'    => 'Autoptimize v'.AO_CCSS_VER,
508 508
                 'Content-type'  => 'application/json; charset=utf-8',
509
-                'Authorization' => 'JWT ' . $key,
509
+                'Authorization' => 'JWT '.$key,
510 510
                 'Connection'    => 'close',
511 511
             ),
512 512
             'body'    => $body,
513 513
         );
514 514
 
515 515
         // Dispatch the request and store its response code.
516
-        $req  = wp_safe_remote_post( $url, $args );
517
-        $code = wp_remote_retrieve_response_code( $req );
518
-        $body = json_decode( wp_remote_retrieve_body( $req ), true );
516
+        $req  = wp_safe_remote_post($url, $args);
517
+        $code = wp_remote_retrieve_response_code($req);
518
+        $body = json_decode(wp_remote_retrieve_body($req), true);
519 519
 
520
-        if ( $debug && $dcode ) {
520
+        if ($debug && $dcode) {
521 521
             // If queue debug is active, change response code.
522 522
             $code = $dcode;
523 523
         }
524 524
 
525
-        if ( 200 == $code ) {
525
+        if (200 == $code) {
526 526
             // Response code is OK.
527 527
             // Workaround criticalcss.com non-RESTful reponses.
528
-            if ( 'JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status'] || 'STATUS_JOB_BAD' == $body['job']['status'] ) {
528
+            if ('JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status'] || 'STATUS_JOB_BAD' == $body['job']['status']) {
529 529
                 // Log successful and return encoded request body.
530
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request for path <' . $src_url . '> replied successfully', 3 );
530
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request for path <'.$src_url.'> replied successfully', 3);
531 531
 
532 532
                 // This code also means the key is valid, so cache key status for 24h if not already cached.
533
-                if ( ( ! $key_status || 2 != $key_status ) && $key ) {
534
-                    update_option( 'autoptimize_ccss_keyst', 2 );
535
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is valid, updating key status', 3 );
533
+                if ((!$key_status || 2 != $key_status) && $key) {
534
+                    update_option('autoptimize_ccss_keyst', 2);
535
+                    autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is valid, updating key status', 3);
536 536
                 }
537 537
 
538 538
                 // Return the request body.
539 539
                 return $body;
540 540
             } else {
541 541
                 // Log successful requests with invalid reponses.
542
-                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 );
543
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
542
+                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);
543
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
544 544
                 return $body;
545 545
             }
546 546
         } else {
547 547
             // Response code is anything else.
548 548
             // Log failed request with a valid response code and return body.
549
-            if ( $code ) {
550
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request for path <' . $src_url . '> replied with error code <' . $code . '>, body follows...', 2 );
551
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
549
+            if ($code) {
550
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request for path <'.$src_url.'> replied with error code <'.$code.'>, body follows...', 2);
551
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
552 552
 
553
-                if ( 401 == $code ) {
553
+                if (401 == $code) {
554 554
                     // If request is unauthorized, also clear key status.
555
-                    update_option( 'autoptimize_ccss_keyst', 1 );
556
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is invalid, updating key status', 3 );
555
+                    update_option('autoptimize_ccss_keyst', 1);
556
+                    autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is invalid, updating key status', 3);
557 557
                 }
558 558
 
559 559
                 // Return the request body.
560 560
                 return $body;
561 561
             } else {
562 562
                 // Log failed request with no response and return false.
563
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: POST generate request for path <' . $src_url . '> has no response, this could be a service timeout', 2 );
564
-                if ( is_wp_error( $req ) ) {
565
-                    autoptimizeCriticalCSSCore::ao_ccss_log( $req->get_error_message(), 2 );
563
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: POST generate request for path <'.$src_url.'> has no response, this could be a service timeout', 2);
564
+                if (is_wp_error($req)) {
565
+                    autoptimizeCriticalCSSCore::ao_ccss_log($req->get_error_message(), 2);
566 566
                 }
567 567
 
568 568
                 return false;
@@ -570,76 +570,76 @@  discard block
 block discarded – undo
570 570
         }
571 571
     }
572 572
 
573
-    public function ao_ccss_api_results( $jobid, $debug, $dcode ) {
573
+    public function ao_ccss_api_results($jobid, $debug, $dcode) {
574 574
         // GET jobs from criticalcss.com and return responses
575 575
         // Get key.
576 576
         global $ao_ccss_key;
577 577
         $key = $ao_ccss_key;
578 578
 
579 579
         // Prepare the request.
580
-        $url  = AO_CCSS_API . 'results?resultId=' . $jobid;
580
+        $url  = AO_CCSS_API.'results?resultId='.$jobid;
581 581
         $args = array(
582 582
             'headers' => array(
583
-                'User-Agent'    => 'Autoptimize CriticalCSS Power-Up v' . AO_CCSS_VER,
584
-                'Authorization' => 'JWT ' . $key,
583
+                'User-Agent'    => 'Autoptimize CriticalCSS Power-Up v'.AO_CCSS_VER,
584
+                'Authorization' => 'JWT '.$key,
585 585
                 'Connection'    => 'close',
586 586
             ),
587 587
         );
588 588
 
589 589
         // Dispatch the request and store its response code.
590
-        $req  = wp_safe_remote_get( $url, $args );
591
-        $code = wp_remote_retrieve_response_code( $req );
592
-        $body = json_decode( wp_remote_retrieve_body( $req ), true );
590
+        $req  = wp_safe_remote_get($url, $args);
591
+        $code = wp_remote_retrieve_response_code($req);
592
+        $body = json_decode(wp_remote_retrieve_body($req), true);
593 593
 
594
-        if ( $debug && $dcode ) {
594
+        if ($debug && $dcode) {
595 595
             // If queue debug is active, change response code.
596 596
             $code = $dcode;
597 597
         }
598 598
 
599
-        if ( 200 == $code ) {
599
+        if (200 == $code) {
600 600
             // Response code is OK.
601
-            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'] ) ) {
601
+            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'])) {
602 602
                 // Workaround criticalcss.com non-RESTful reponses
603 603
                 // Log successful and return encoded request body.
604
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied successfully', 3 );
604
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: GET results request for remote job id <'.$jobid.'> replied successfully', 3);
605 605
                 return $body;
606
-            } elseif ( is_array( $body ) && ( array_key_exists( 'error', $body ) && 'This css no longer exists. Please re-generate it.' == $body['error'] ) ) {
606
+            } elseif (is_array($body) && (array_key_exists('error', $body) && 'This css no longer exists. Please re-generate it.' == $body['error'])) {
607 607
                 // Handle no CSS reply
608 608
                 // Log no CSS error and return encoded request body.
609
-                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 );
609
+                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);
610 610
                 return $body;
611 611
             } else {
612 612
                 // Log failed request and return false.
613
-                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 );
614
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
613
+                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);
614
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
615 615
                 return false;
616 616
             }
617 617
         } else {
618 618
             // Response code is anything else
619 619
             // Log failed request with a valid response code and return body.
620
-            if ( $code ) {
621
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied with error code <' . $code . '>, body follows...', 2 );
622
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
623
-                if ( 401 == $code ) {
620
+            if ($code) {
621
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: GET results request for remote job id <'.$jobid.'> replied with error code <'.$code.'>, body follows...', 2);
622
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
623
+                if (401 == $code) {
624 624
                     // If request is unauthorized, also clear key status.
625
-                    update_option( 'autoptimize_ccss_keyst', 1 );
626
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is invalid, updating key status', 3 );
625
+                    update_option('autoptimize_ccss_keyst', 1);
626
+                    autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is invalid, updating key status', 3);
627 627
                 }
628 628
 
629 629
                 // Return the request body.
630 630
                 return $body;
631 631
             } else {
632 632
                 // Log failed request with no response and return false.
633
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> has no response, this could be a service timeout', 2 );
633
+                autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: GET results request for remote job id <'.$jobid.'> has no response, this could be a service timeout', 2);
634 634
                 return false;
635 635
             }
636 636
         }
637 637
     }
638 638
 
639
-    public function ao_ccss_save_file( $ccss, $target, $review ) {
639
+    public function ao_ccss_save_file($ccss, $target, $review) {
640 640
         // Save critical CSS into the filesystem and return its filename
641 641
         // Prepare review mark.
642
-        if ( $review ) {
642
+        if ($review) {
643 643
             $rmark = '_R';
644 644
         } else {
645 645
             $rmark = '';
@@ -649,21 +649,21 @@  discard block
 block discarded – undo
649 649
         $filename = false;
650 650
         $content  = $ccss;
651 651
 
652
-        if ( autoptimizeCriticalCSSCore::ao_ccss_check_contents( $content ) ) {
652
+        if (autoptimizeCriticalCSSCore::ao_ccss_check_contents($content)) {
653 653
             // Sanitize content, set filename and try to save file.
654
-            $file     = AO_CCSS_DIR . 'ccss_' . md5( $ccss . $target[1] ) . $rmark . '.css';
655
-            $status   = file_put_contents( $file, $content, LOCK_EX );
656
-            $filename = pathinfo( $file, PATHINFO_BASENAME );
657
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS file for the rule <' . $target[0] . '|' . $target[1] . '> was saved as <' . $filename . '>, size in bytes is <' . $status . '>', 3 );
654
+            $file     = AO_CCSS_DIR.'ccss_'.md5($ccss.$target[1]).$rmark.'.css';
655
+            $status   = file_put_contents($file, $content, LOCK_EX);
656
+            $filename = pathinfo($file, PATHINFO_BASENAME);
657
+            autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS file for the rule <'.$target[0].'|'.$target[1].'> was saved as <'.$filename.'>, size in bytes is <'.$status.'>', 3);
658 658
 
659
-            if ( ! $status ) {
659
+            if (!$status) {
660 660
                 // If file has not been saved, reset filename.
661
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS file <' . $filename . '> could not be not saved', 2 );
661
+                autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS file <'.$filename.'> could not be not saved', 2);
662 662
                 $filename = false;
663 663
                 return $filename;
664 664
             }
665 665
         } else {
666
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS received did not pass content check', 2 );
666
+            autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS received did not pass content check', 2);
667 667
             return $filename;
668 668
         }
669 669
 
@@ -673,15 +673,15 @@  discard block
 block discarded – undo
673 673
         global $ao_ccss_rules;
674 674
 
675 675
         // Prepare rule variables.
676
-        $srule   = $ao_ccss_rules[ $target[0] ][ $target[1] ];
676
+        $srule   = $ao_ccss_rules[$target[0]][$target[1]];
677 677
         $oldfile = $srule['file'];
678 678
 
679
-        if ( $oldfile && $oldfile !== $filename ) {
680
-            $delfile = AO_CCSS_DIR . $oldfile;
681
-            if ( file_exists( $delfile ) ) {
682
-                $unlinkst = unlink( $delfile );
683
-                if ( $unlinkst ) {
684
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'A previous critical CSS file <' . $oldfile . '> was removed for the rule <' . $target[0] . '|' . $target[1] . '>', 3 );
679
+        if ($oldfile && $oldfile !== $filename) {
680
+            $delfile = AO_CCSS_DIR.$oldfile;
681
+            if (file_exists($delfile)) {
682
+                $unlinkst = unlink($delfile);
683
+                if ($unlinkst) {
684
+                    autoptimizeCriticalCSSCore::ao_ccss_log('A previous critical CSS file <'.$oldfile.'> was removed for the rule <'.$target[0].'|'.$target[1].'>', 3);
685 685
                 }
686 686
             }
687 687
         }
@@ -690,29 +690,29 @@  discard block
 block discarded – undo
690 690
         return $filename;
691 691
     }
692 692
 
693
-    public function ao_ccss_rule_update( $ljid, $srule, $file, $hash ) {
693
+    public function ao_ccss_rule_update($ljid, $srule, $file, $hash) {
694 694
         // Update or create a rule
695 695
         // Attach required arrays.
696 696
         global $ao_ccss_rules;
697 697
 
698 698
         // Prepare rule variables.
699
-        $trule  = explode( '|', $srule );
700
-        $rule   = $ao_ccss_rules[ $trule[0] ][ $trule[1] ];
699
+        $trule  = explode('|', $srule);
700
+        $rule   = $ao_ccss_rules[$trule[0]][$trule[1]];
701 701
         $action = false;
702 702
         $rtype  = '';
703 703
 
704
-        if ( 0 === $rule['hash'] && 0 !== $rule['file'] ) {
704
+        if (0 === $rule['hash'] && 0 !== $rule['file']) {
705 705
             // manual rule, don't ever overwrite.
706 706
             $action = 'NOT UPDATED';
707 707
             $rtype  = 'MANUAL';
708
-        } elseif ( 0 === $rule['hash'] && 0 === $rule['file'] ) {
708
+        } elseif (0 === $rule['hash'] && 0 === $rule['file']) {
709 709
             // If this is an user created AUTO rule with no hash and file yet, update its hash and filename
710 710
             // Set rule hash, file and action flag.
711 711
             $rule['hash'] = $hash;
712 712
             $rule['file'] = $file;
713 713
             $action       = 'UPDATED';
714 714
             $rtype        = 'AUTO';
715
-        } elseif ( 0 !== $rule['hash'] && ctype_alnum( $rule['hash'] ) ) {
715
+        } elseif (0 !== $rule['hash'] && ctype_alnum($rule['hash'])) {
716 716
             // If this is an genuine AUTO rule, update its hash and filename
717 717
             // Set rule hash, file and action flag.
718 718
             $rule['hash'] = $hash;
@@ -722,7 +722,7 @@  discard block
 block discarded – undo
722 722
         } else {
723 723
             // If rule doesn't exist, create an AUTO rule
724 724
             // AUTO rules were only for types, but will now also work for paths.
725
-            if ( ( 'types' == $trule[0] || 'paths' == $trule[0] ) && ! empty( $trule[1] ) ) {
725
+            if (('types' == $trule[0] || 'paths' == $trule[0]) && !empty($trule[1])) {
726 726
                 // Set rule hash and file and action flag.
727 727
                 $rule['hash'] = $hash;
728 728
                 $rule['file'] = $file;
@@ -730,47 +730,47 @@  discard block
 block discarded – undo
730 730
                 $rtype        = 'AUTO';
731 731
             } else {
732 732
                 // Log that no rule was created.
733
-                autoptimizeCriticalCSSCore::ao_ccss_log( 'Exception, no AUTO rule created', 3 );
733
+                autoptimizeCriticalCSSCore::ao_ccss_log('Exception, no AUTO rule created', 3);
734 734
             }
735 735
         }
736 736
 
737
-        if ( $action ) {
737
+        if ($action) {
738 738
             // If a rule creation/update is required, persist updated rules object.
739
-            $ao_ccss_rules[ $trule[0] ][ $trule[1] ] = $rule;
740
-            $ao_ccss_rules_raw                       = json_encode( $ao_ccss_rules );
741
-            update_option( 'autoptimize_ccss_rules', $ao_ccss_rules_raw );
742
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Target rule <' . $srule . '> of type <' . $rtype . '> was ' . $action . ' for job id <' . $ljid . '>', 3 );
739
+            $ao_ccss_rules[$trule[0]][$trule[1]] = $rule;
740
+            $ao_ccss_rules_raw                       = json_encode($ao_ccss_rules);
741
+            update_option('autoptimize_ccss_rules', $ao_ccss_rules_raw);
742
+            autoptimizeCriticalCSSCore::ao_ccss_log('Target rule <'.$srule.'> of type <'.$rtype.'> was '.$action.' for job id <'.$ljid.'>', 3);
743 743
         } else {
744
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'No rule action required', 3 );
744
+            autoptimizeCriticalCSSCore::ao_ccss_log('No rule action required', 3);
745 745
         }
746 746
     }
747 747
 
748
-    function ao_ccss_finclude( $finclude_raw ) {
748
+    function ao_ccss_finclude($finclude_raw) {
749 749
         // Prepare forceInclude object.
750
-        if ( ! empty( $finclude_raw ) ) {
750
+        if (!empty($finclude_raw)) {
751 751
             // If there are any content
752 752
             // Convert raw string into arra and initialize the returning object.
753
-            $fincludes = explode( ',', $finclude_raw );
753
+            $fincludes = explode(',', $finclude_raw);
754 754
             $finclude  = array();
755 755
 
756 756
             // Interacts over every rule.
757 757
             $i = 0;
758
-            foreach ( $fincludes as $include ) {
758
+            foreach ($fincludes as $include) {
759 759
                 // Trim leading and trailing whitespaces.
760
-                $include = trim( $include );
760
+                $include = trim($include);
761 761
 
762
-                if ( substr( $include, 0, 2 ) === '//' ) {
762
+                if (substr($include, 0, 2) === '//') {
763 763
                     // Regex rule
764 764
                     // Format value as required.
765
-                    $include = str_replace( '//', '/', $include );
766
-                    $include = $include . '/i';
765
+                    $include = str_replace('//', '/', $include);
766
+                    $include = $include.'/i';
767 767
 
768 768
                     // Store regex object.
769
-                    $finclude[ $i ]['type']  = 'RegExp';
770
-                    $finclude[ $i ]['value'] = $include;
769
+                    $finclude[$i]['type']  = 'RegExp';
770
+                    $finclude[$i]['value'] = $include;
771 771
                 } else {
772 772
                     // Simple value rule.
773
-                    $finclude[ $i ]['value'] = $include;
773
+                    $finclude[$i]['value'] = $include;
774 774
                 }
775 775
 
776 776
                 $i++;
@@ -787,54 +787,54 @@  discard block
 block discarded – undo
787 787
     public function ao_ccss_cleaning() {
788 788
         // Perform plugin maintenance
789 789
         // Truncate log file >= 1MB .
790
-        if ( file_exists( AO_CCSS_LOG ) ) {
791
-            if ( filesize( AO_CCSS_LOG ) >= 1048576 ) {
792
-                $logfile = fopen( AO_CCSS_LOG, 'w' );
793
-                fclose( $logfile );
790
+        if (file_exists(AO_CCSS_LOG)) {
791
+            if (filesize(AO_CCSS_LOG) >= 1048576) {
792
+                $logfile = fopen(AO_CCSS_LOG, 'w');
793
+                fclose($logfile);
794 794
             }
795 795
         }
796 796
 
797 797
         // Remove lock file.
798
-        if ( file_exists( AO_CCSS_LOCK ) ) {
799
-            unlink( AO_CCSS_LOCK );
798
+        if (file_exists(AO_CCSS_LOCK)) {
799
+            unlink(AO_CCSS_LOCK);
800 800
         }
801 801
 
802 802
         // Make sure queue processing is scheduled, recreate if not.
803
-        if ( ! wp_next_scheduled( 'ao_ccss_queue' ) ) {
804
-            wp_schedule_event( time(), apply_filters( 'ao_ccss_queue_schedule', 'ao_ccss' ), 'ao_ccss_queue' );
803
+        if (!wp_next_scheduled('ao_ccss_queue')) {
804
+            wp_schedule_event(time(), apply_filters('ao_ccss_queue_schedule', 'ao_ccss'), 'ao_ccss_queue');
805 805
         }
806 806
 
807 807
         // Queue cleaning.
808 808
         global $ao_ccss_queue;
809 809
         $queue_purge_threshold = 100;
810
-        $queue_purge_age       = 24 * 60 * 60;
811
-        $queue_length          = count( $ao_ccss_queue );
812
-        $timestamp_yesterday   = microtime( true ) - $queue_purge_age;
810
+        $queue_purge_age       = 24*60*60;
811
+        $queue_length          = count($ao_ccss_queue);
812
+        $timestamp_yesterday   = microtime(true) - $queue_purge_age;
813 813
         $remove_old_new        = false;
814 814
         $queue_altered         = false;
815 815
 
816
-        if ( $queue_length > $queue_purge_threshold ) {
816
+        if ($queue_length > $queue_purge_threshold) {
817 817
             $remove_old_new = true;
818 818
         }
819 819
 
820
-        foreach ( $ao_ccss_queue as $path => $job ) {
821
-            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' ) ) ) {
822
-                unset( $ao_ccss_queue[ $path ] );
820
+        foreach ($ao_ccss_queue as $path => $job) {
821
+            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'))) {
822
+                unset($ao_ccss_queue[$path]);
823 823
                 $queue_altered = true;
824 824
             }
825 825
         }
826 826
 
827 827
         // save queue to options!
828
-        if ( $queue_altered ) {
829
-            $ao_ccss_queue_raw = json_encode( $ao_ccss_queue );
830
-            update_option( 'autoptimize_ccss_queue', $ao_ccss_queue_raw, false );
831
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Queue cleaning done.', 3 );
828
+        if ($queue_altered) {
829
+            $ao_ccss_queue_raw = json_encode($ao_ccss_queue);
830
+            update_option('autoptimize_ccss_queue', $ao_ccss_queue_raw, false);
831
+            autoptimizeCriticalCSSCore::ao_ccss_log('Queue cleaning done.', 3);
832 832
         }
833 833
 
834 834
         // re-check key if invalid.
835 835
         global $ao_ccss_keyst;
836
-        if ( 1 == $ao_ccss_keyst ) {
837
-            $this->ao_ccss_api_generate( '', '', '' );
836
+        if (1 == $ao_ccss_keyst) {
837
+            $this->ao_ccss_api_generate('', '', '');
838 838
         }
839 839
     }
840 840
 }
Please login to merge, or discard this patch.
classes/autoptimizeCache.php 1 patch
Spacing   +183 added lines, -183 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Handles disk-cache-related operations.
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -38,22 +38,22 @@  discard block
 block discarded – undo
38 38
      * @param string $md5 Hash.
39 39
      * @param string $ext Extension.
40 40
      */
41
-    public function __construct( $md5, $ext = 'php' )
41
+    public function __construct($md5, $ext = 'php')
42 42
     {
43 43
         $_min_ext = '';
44
-        if ( apply_filters( 'autoptimize_filter_cache_url_add_min_ext', false ) ) {
44
+        if (apply_filters('autoptimize_filter_cache_url_add_min_ext', false)) {
45 45
             $_min_ext = '.min';
46 46
         }
47 47
 
48 48
         $this->cachedir = AUTOPTIMIZE_CACHE_DIR;
49 49
         $this->nogzip   = AUTOPTIMIZE_CACHE_NOGZIP;
50
-        if ( ! $this->nogzip ) {
51
-            $this->filename = AUTOPTIMIZE_CACHEFILE_PREFIX . $md5 . $_min_ext . '.php';
50
+        if (!$this->nogzip) {
51
+            $this->filename = AUTOPTIMIZE_CACHEFILE_PREFIX.$md5.$_min_ext.'.php';
52 52
         } else {
53
-            if ( in_array( $ext, array( 'js', 'css' ) ) ) {
54
-                $this->filename = $ext . '/' . AUTOPTIMIZE_CACHEFILE_PREFIX . $md5 . $_min_ext . '.' . $ext;
53
+            if (in_array($ext, array('js', 'css'))) {
54
+                $this->filename = $ext.'/'.AUTOPTIMIZE_CACHEFILE_PREFIX.$md5.$_min_ext.'.'.$ext;
55 55
             } else {
56
-                $this->filename = AUTOPTIMIZE_CACHEFILE_PREFIX . $md5 . $_min_ext . '.' . $ext;
56
+                $this->filename = AUTOPTIMIZE_CACHEFILE_PREFIX.$md5.$_min_ext.'.'.$ext;
57 57
             }
58 58
         }
59 59
     }
@@ -65,7 +65,7 @@  discard block
 block discarded – undo
65 65
      */
66 66
     public function check()
67 67
     {
68
-        return file_exists( $this->cachedir . $this->filename );
68
+        return file_exists($this->cachedir.$this->filename);
69 69
     }
70 70
 
71 71
     /**
@@ -75,11 +75,11 @@  discard block
 block discarded – undo
75 75
      */
76 76
     public function retrieve()
77 77
     {
78
-        if ( $this->check() ) {
79
-            if ( false == $this->nogzip ) {
80
-                return file_get_contents( $this->cachedir . $this->filename . '.none' );
78
+        if ($this->check()) {
79
+            if (false == $this->nogzip) {
80
+                return file_get_contents($this->cachedir.$this->filename.'.none');
81 81
             } else {
82
-                return file_get_contents( $this->cachedir . $this->filename );
82
+                return file_get_contents($this->cachedir.$this->filename);
83 83
             }
84 84
         }
85 85
         return false;
@@ -93,10 +93,10 @@  discard block
 block discarded – undo
93 93
      *
94 94
      * @return void
95 95
      */
96
-    public function cache( $data, $mime )
96
+    public function cache($data, $mime)
97 97
     {
98 98
         // readonly FS explicitly OK'ed by developer, so just pretend all is OK.
99
-        if ( defined( 'AUTOPTIMIZE_CACHE_READONLY' ) ) {
99
+        if (defined('AUTOPTIMIZE_CACHE_READONLY')) {
100 100
             return true;
101 101
         }
102 102
 
@@ -104,44 +104,44 @@  discard block
 block discarded – undo
104 104
         //
105 105
         // to be activated for users that experience these ugly errors;
106 106
         // PHP Warning: file_put_contents failed to open stream: No such file or directory.
107
-        if ( apply_filters( 'autoptimize_filter_cache_checkdirs_on_write', false ) ) {
107
+        if (apply_filters('autoptimize_filter_cache_checkdirs_on_write', false)) {
108 108
             $this->check_and_create_dirs();
109 109
         }
110 110
 
111
-        if ( false === $this->nogzip ) {
111
+        if (false === $this->nogzip) {
112 112
             // We handle gzipping ourselves.
113 113
             $file    = 'default.php';
114
-            $phpcode = file_get_contents( AUTOPTIMIZE_PLUGIN_DIR . 'config/' . $file );
115
-            $phpcode = str_replace( array( '%%CONTENT%%', 'exit;' ), array( $mime, '' ), $phpcode );
114
+            $phpcode = file_get_contents(AUTOPTIMIZE_PLUGIN_DIR.'config/'.$file);
115
+            $phpcode = str_replace(array('%%CONTENT%%', 'exit;'), array($mime, ''), $phpcode);
116 116
 
117
-            file_put_contents( $this->cachedir . $this->filename, $phpcode );
118
-            file_put_contents( $this->cachedir . $this->filename . '.none', $data );
117
+            file_put_contents($this->cachedir.$this->filename, $phpcode);
118
+            file_put_contents($this->cachedir.$this->filename.'.none', $data);
119 119
         } else {
120 120
             // Write code to cache without doing anything else.
121
-            file_put_contents( $this->cachedir . $this->filename, $data );
121
+            file_put_contents($this->cachedir.$this->filename, $data);
122 122
 
123 123
             // save fallback .js or .css file if filter true (to be false by default) but not if snippet or single.
124
-            if ( self::do_fallback() && strpos( $this->filename, '_snippet_' ) === false && strpos( $this->filename, '_single_' ) === false ) {
125
-                $_extension     = pathinfo( $this->filename, PATHINFO_EXTENSION );
126
-                $_fallback_file = AUTOPTIMIZE_CACHEFILE_PREFIX . 'fallback.' . $_extension;
127
-                if ( ( 'css' === $_extension || 'js' === $_extension ) && ! file_exists( $this->cachedir . $_extension . '/' . $_fallback_file ) ) {
128
-                    file_put_contents( $this->cachedir . $_extension . '/' . $_fallback_file, $data );
124
+            if (self::do_fallback() && strpos($this->filename, '_snippet_') === false && strpos($this->filename, '_single_') === false) {
125
+                $_extension     = pathinfo($this->filename, PATHINFO_EXTENSION);
126
+                $_fallback_file = AUTOPTIMIZE_CACHEFILE_PREFIX.'fallback.'.$_extension;
127
+                if (('css' === $_extension || 'js' === $_extension) && !file_exists($this->cachedir.$_extension.'/'.$_fallback_file)) {
128
+                    file_put_contents($this->cachedir.$_extension.'/'.$_fallback_file, $data);
129 129
                 }
130 130
             }
131 131
 
132
-            if ( apply_filters( 'autoptimize_filter_cache_create_static_gzip', false ) ) {
132
+            if (apply_filters('autoptimize_filter_cache_create_static_gzip', false)) {
133 133
                 // Create an additional cached gzip file.
134
-                file_put_contents( $this->cachedir . $this->filename . '.gz', gzencode( $data, 9, FORCE_GZIP ) );
134
+                file_put_contents($this->cachedir.$this->filename.'.gz', gzencode($data, 9, FORCE_GZIP));
135 135
                 // If PHP Brotli extension is installed, create an additional cached Brotli file.
136
-                if ( function_exists( 'brotli_compress' ) ) {
137
-                    file_put_contents( $this->cachedir . $this->filename . '.br', brotli_compress( $data, 11, BROTLI_GENERIC ) );
136
+                if (function_exists('brotli_compress')) {
137
+                    file_put_contents($this->cachedir.$this->filename.'.br', brotli_compress($data, 11, BROTLI_GENERIC));
138 138
                 }
139 139
             }
140 140
         }
141 141
 
142 142
         // Provide 3rd party action hook for every cache file that is created.
143 143
         // This hook can for example be used to inject a copy of the created cache file to a other domain.
144
-        do_action( 'autoptimize_action_cache_file_created', $this->cachedir . $this->filename );
144
+        do_action('autoptimize_action_cache_file_created', $this->cachedir.$this->filename);
145 145
     }
146 146
 
147 147
     /**
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
         // The original idea here was to provide 3rd party code a hook so that
157 157
         // it can "listen" to all the complete autoptimized-urls that the page
158 158
         // will emit... Or something to that effect I think?
159
-        apply_filters( 'autoptimize_filter_cache_getname', AUTOPTIMIZE_CACHE_URL . $this->filename );
159
+        apply_filters('autoptimize_filter_cache_getname', AUTOPTIMIZE_CACHE_URL.$this->filename);
160 160
 
161 161
         return $this->filename;
162 162
     }
@@ -169,11 +169,11 @@  discard block
 block discarded – undo
169 169
      * @param string $file Filename.
170 170
      * @return bool
171 171
      */
172
-    protected static function is_valid_cache_file( $dir, $file )
172
+    protected static function is_valid_cache_file($dir, $file)
173 173
     {
174
-        if ( '.' !== $file && '..' !== $file &&
175
-            false !== strpos( $file, AUTOPTIMIZE_CACHEFILE_PREFIX ) &&
176
-            is_file( $dir . $file ) ) {
174
+        if ('.' !== $file && '..' !== $file &&
175
+            false !== strpos($file, AUTOPTIMIZE_CACHEFILE_PREFIX) &&
176
+            is_file($dir.$file)) {
177 177
 
178 178
             // It's a valid file!
179 179
             return true;
@@ -191,16 +191,16 @@  discard block
 block discarded – undo
191 191
     protected static function clear_cache_classic()
192 192
     {
193 193
         $contents = self::get_cache_contents();
194
-        foreach ( $contents as $name => $files ) {
195
-            $dir = rtrim( AUTOPTIMIZE_CACHE_DIR . $name, '/' ) . '/';
196
-            foreach ( $files as $file ) {
197
-                if ( self::is_valid_cache_file( $dir, $file ) ) {
198
-                    @unlink( $dir . $file ); // @codingStandardsIgnoreLine
194
+        foreach ($contents as $name => $files) {
195
+            $dir = rtrim(AUTOPTIMIZE_CACHE_DIR.$name, '/').'/';
196
+            foreach ($files as $file) {
197
+                if (self::is_valid_cache_file($dir, $file)) {
198
+                    @unlink($dir.$file); // @codingStandardsIgnoreLine
199 199
                 }
200 200
             }
201 201
         }
202 202
 
203
-        @unlink( AUTOPTIMIZE_CACHE_DIR . '/.htaccess' ); // @codingStandardsIgnoreLine
203
+        @unlink(AUTOPTIMIZE_CACHE_DIR.'/.htaccess'); // @codingStandardsIgnoreLine
204 204
     }
205 205
 
206 206
     /**
@@ -211,19 +211,19 @@  discard block
 block discarded – undo
211 211
      *
212 212
      * @return bool
213 213
      */
214
-    protected static function rmdir( $pathname )
214
+    protected static function rmdir($pathname)
215 215
     {
216
-        $files = self::get_dir_contents( $pathname );
217
-        foreach ( $files as $file ) {
218
-            $path = $pathname . '/' . $file;
219
-            if ( is_dir( $path ) ) {
220
-                self::rmdir( $path );
216
+        $files = self::get_dir_contents($pathname);
217
+        foreach ($files as $file) {
218
+            $path = $pathname.'/'.$file;
219
+            if (is_dir($path)) {
220
+                self::rmdir($path);
221 221
             } else {
222
-                unlink( $path );
222
+                unlink($path);
223 223
             }
224 224
         }
225 225
 
226
-        return rmdir( $pathname );
226
+        return rmdir($pathname);
227 227
     }
228 228
 
229 229
     /**
@@ -244,12 +244,12 @@  discard block
 block discarded – undo
244 244
         $new_name = self::get_unique_name();
245 245
 
246 246
         // Makes sure the new pathname is on the same level...
247
-        $new_pathname = dirname( $dir ) . '/' . $new_name;
248
-        $renamed      = @rename( $dir, $new_pathname ); // @codingStandardsIgnoreLine
247
+        $new_pathname = dirname($dir).'/'.$new_name;
248
+        $renamed      = @rename($dir, $new_pathname); // @codingStandardsIgnoreLine
249 249
 
250 250
         // When renamed, re-create the default cache directory back so it's
251 251
         // available again...
252
-        if ( $renamed ) {
252
+        if ($renamed) {
253 253
             $ok = self::cacheavail();
254 254
         }
255 255
 
@@ -263,7 +263,7 @@  discard block
 block discarded – undo
263 263
      */
264 264
     public static function advanced_cache_clear_enabled()
265 265
     {
266
-        return apply_filters( 'autoptimize_filter_cache_clear_advanced', false );
266
+        return apply_filters('autoptimize_filter_cache_clear_advanced', false);
267 267
     }
268 268
 
269 269
     /**
@@ -274,7 +274,7 @@  discard block
 block discarded – undo
274 274
     protected static function get_unique_name()
275 275
     {
276 276
         $prefix   = self::get_advanced_cache_clear_prefix();
277
-        $new_name = uniqid( $prefix, true );
277
+        $new_name = uniqid($prefix, true);
278 278
 
279 279
         return $new_name;
280 280
     }
@@ -287,8 +287,8 @@  discard block
 block discarded – undo
287 287
     protected static function get_advanced_cache_clear_prefix()
288 288
     {
289 289
         $pathname = self::get_pathname_base();
290
-        $basename = basename( $pathname );
291
-        $prefix   = $basename . '-artifact-';
290
+        $basename = basename($pathname);
291
+        $prefix   = $basename.'-artifact-';
292 292
 
293 293
         return $prefix;
294 294
     }
@@ -301,9 +301,9 @@  discard block
 block discarded – undo
301 301
      *
302 302
      * @return array
303 303
      */
304
-    protected static function get_dir_contents( $pathname )
304
+    protected static function get_dir_contents($pathname)
305 305
     {
306
-        return array_slice( scandir( $pathname ), 2 );
306
+        return array_slice(scandir($pathname), 2);
307 307
     }
308 308
 
309 309
     /**
@@ -316,24 +316,24 @@  discard block
 block discarded – undo
316 316
     public static function delete_advanced_cache_clear_artifacts()
317 317
     {
318 318
         // Don't go through these motions (called from the cachechecker) if advanced cache clear isn't even active.
319
-        if ( ! self::advanced_cache_clear_enabled() ) {
319
+        if (!self::advanced_cache_clear_enabled()) {
320 320
             return false;
321 321
         }
322 322
 
323 323
         $dir    = self::get_pathname_base();
324 324
         $prefix = self::get_advanced_cache_clear_prefix();
325
-        $parent = dirname( $dir );
325
+        $parent = dirname($dir);
326 326
         $ok     = false;
327 327
 
328 328
         // Returns the list of files without '.' and '..' elements.
329
-        $files = self::get_dir_contents( $parent );
330
-        if ( is_array( $files ) && ! empty( $files ) ) {
331
-            foreach ( $files as $file ) {
332
-                $path     = $parent . '/' . $file;
333
-                $prefixed = ( false !== strpos( $path, $prefix ) );
329
+        $files = self::get_dir_contents($parent);
330
+        if (is_array($files) && !empty($files)) {
331
+            foreach ($files as $file) {
332
+                $path     = $parent.'/'.$file;
333
+                $prefixed = (false !== strpos($path, $prefix));
334 334
                 // Removing only our own (prefixed) directories...
335
-                if ( is_dir( $path ) && $prefixed ) {
336
-                    $ok = self::rmdir( $path );
335
+                if (is_dir($path) && $prefixed) {
336
+                    $ok = self::rmdir($path);
337 337
                 }
338 338
             }
339 339
         }
@@ -353,9 +353,9 @@  discard block
 block discarded – undo
353 353
     {
354 354
         $pathname = self::get_pathname_base();
355 355
 
356
-        if ( is_multisite() && apply_filters( 'autoptimize_separate_blog_caches', true ) ) {
356
+        if (is_multisite() && apply_filters('autoptimize_separate_blog_caches', true)) {
357 357
             $blog_id   = get_current_blog_id();
358
-            $pathname .= $blog_id . '/';
358
+            $pathname .= $blog_id.'/';
359 359
         }
360 360
 
361 361
         return $pathname;
@@ -368,7 +368,7 @@  discard block
 block discarded – undo
368 368
      */
369 369
     protected static function get_pathname_base()
370 370
     {
371
-        $pathname = WP_CONTENT_DIR . AUTOPTIMIZE_CACHE_CHILD_DIR;
371
+        $pathname = WP_CONTENT_DIR.AUTOPTIMIZE_CACHE_CHILD_DIR;
372 372
 
373 373
         return $pathname;
374 374
     }
@@ -380,46 +380,46 @@  discard block
 block discarded – undo
380 380
      *
381 381
      * @return bool
382 382
      */
383
-    public static function clearall( $propagate = true )
383
+    public static function clearall($propagate = true)
384 384
     {
385
-        if ( ! self::cacheavail() ) {
385
+        if (!self::cacheavail()) {
386 386
             return false;
387 387
         }
388 388
 
389 389
         // TODO/FIXME: If cache is big, switch to advanced/new cache clearing automatically?
390
-        if ( self::advanced_cache_clear_enabled() ) {
390
+        if (self::advanced_cache_clear_enabled()) {
391 391
             self::clear_cache_via_rename();
392 392
         } else {
393 393
             self::clear_cache_classic();
394 394
         }
395 395
 
396 396
         // Remove 404 handler if required.
397
-        if ( self::do_fallback() ) {
398
-            $_fallback_php = trailingslashit( WP_CONTENT_DIR ) . 'autoptimize_404_handler.php';
399
-            @unlink( $_fallback_php ); // @codingStandardsIgnoreLine
397
+        if (self::do_fallback()) {
398
+            $_fallback_php = trailingslashit(WP_CONTENT_DIR).'autoptimize_404_handler.php';
399
+            @unlink($_fallback_php); // @codingStandardsIgnoreLine
400 400
         }
401 401
 
402 402
         // Remove the transient so it gets regenerated...
403
-        delete_transient( 'autoptimize_stats' );
403
+        delete_transient('autoptimize_stats');
404 404
 
405 405
         // Cache was just purged, clear page cache and allow others to hook into our purging...
406
-        if ( true === $propagate ) {
407
-            if ( ! function_exists( 'autoptimize_do_cachepurged_action' ) ) {
406
+        if (true === $propagate) {
407
+            if (!function_exists('autoptimize_do_cachepurged_action')) {
408 408
                 function autoptimize_do_cachepurged_action() {
409
-                    do_action( 'autoptimize_action_cachepurged' );
409
+                    do_action('autoptimize_action_cachepurged');
410 410
                 }
411 411
             }
412
-            add_action( 'shutdown', 'autoptimize_do_cachepurged_action', 11 );
413
-            add_action( 'autoptimize_action_cachepurged', array( 'autoptimizeCache', 'flushPageCache' ), 10, 0 );
412
+            add_action('shutdown', 'autoptimize_do_cachepurged_action', 11);
413
+            add_action('autoptimize_action_cachepurged', array('autoptimizeCache', 'flushPageCache'), 10, 0);
414 414
         }
415 415
 
416 416
         // Warm cache (part of speedupper)!
417
-        if ( apply_filters( 'autoptimize_filter_speedupper', true ) && false == get_transient( 'autoptimize_cache_warmer_protector' ) ) {
418
-            set_transient( 'autoptimize_cache_warmer_protector', 'I shall not warm cache for another 10 minutes.', 60 * 10 );
419
-            $url   = site_url() . '/?ao_speedup_cachebuster=' . rand( 1, 100000 );
420
-            $url   = apply_filters( 'autoptimize_filter_cache_warmer_url', $url );
421
-            $cache = @wp_remote_get( $url ); // @codingStandardsIgnoreLine
422
-            unset( $cache );
417
+        if (apply_filters('autoptimize_filter_speedupper', true) && false == get_transient('autoptimize_cache_warmer_protector')) {
418
+            set_transient('autoptimize_cache_warmer_protector', 'I shall not warm cache for another 10 minutes.', 60*10);
419
+            $url   = site_url().'/?ao_speedup_cachebuster='.rand(1, 100000);
420
+            $url   = apply_filters('autoptimize_filter_cache_warmer_url', $url);
421
+            $cache = @wp_remote_get($url); // @codingStandardsIgnoreLine
422
+            unset($cache);
423 423
         }
424 424
 
425 425
         return true;
@@ -434,7 +434,7 @@  discard block
 block discarded – undo
434 434
      */
435 435
     public static function clearall_actionless()
436 436
     {
437
-        return self::clearall( false );
437
+        return self::clearall(false);
438 438
     }
439 439
 
440 440
     /**
@@ -446,8 +446,8 @@  discard block
 block discarded – undo
446 446
     {
447 447
         $contents = array();
448 448
 
449
-        foreach ( array( '', 'js', 'css' ) as $dir ) {
450
-            $contents[ $dir ] = scandir( AUTOPTIMIZE_CACHE_DIR . $dir );
449
+        foreach (array('', 'js', 'css') as $dir) {
450
+            $contents[$dir] = scandir(AUTOPTIMIZE_CACHE_DIR.$dir);
451 451
         }
452 452
 
453 453
         return $contents;
@@ -460,21 +460,21 @@  discard block
 block discarded – undo
460 460
      */
461 461
     public static function stats()
462 462
     {
463
-        $stats = get_transient( 'autoptimize_stats' );
463
+        $stats = get_transient('autoptimize_stats');
464 464
 
465 465
         // If no transient, do the actual scan!
466
-        if ( ! is_array( $stats ) ) {
467
-            if ( ! self::cacheavail() ) {
466
+        if (!is_array($stats)) {
467
+            if (!self::cacheavail()) {
468 468
                 return 0;
469 469
             }
470 470
             $stats = self::stats_scan();
471 471
             $count = $stats[0];
472
-            if ( $count > 100 ) {
472
+            if ($count > 100) {
473 473
                 // Store results in transient.
474 474
                 set_transient(
475 475
                     'autoptimize_stats',
476 476
                     $stats,
477
-                    apply_filters( 'autoptimize_filter_cache_statsexpiry', HOUR_IN_SECONDS )
477
+                    apply_filters('autoptimize_filter_cache_statsexpiry', HOUR_IN_SECONDS)
478 478
                 );
479 479
             }
480 480
         }
@@ -497,30 +497,30 @@  discard block
 block discarded – undo
497 497
         $size  = 0;
498 498
 
499 499
         // Scan everything in our cache directories.
500
-        foreach ( self::get_cache_contents() as $name => $files ) {
501
-            $dir = rtrim( AUTOPTIMIZE_CACHE_DIR . $name, '/' ) . '/';
502
-            foreach ( $files as $file ) {
503
-                if ( self::is_valid_cache_file( $dir, $file ) ) {
504
-                    if ( AUTOPTIMIZE_CACHE_NOGZIP &&
500
+        foreach (self::get_cache_contents() as $name => $files) {
501
+            $dir = rtrim(AUTOPTIMIZE_CACHE_DIR.$name, '/').'/';
502
+            foreach ($files as $file) {
503
+                if (self::is_valid_cache_file($dir, $file)) {
504
+                    if (AUTOPTIMIZE_CACHE_NOGZIP &&
505 505
                         (
506
-                            false !== strpos( $file, '.js' ) ||
507
-                            false !== strpos( $file, '.css' ) ||
508
-                            false !== strpos( $file, '.img' ) ||
509
-                            false !== strpos( $file, '.txt' )
506
+                            false !== strpos($file, '.js') ||
507
+                            false !== strpos($file, '.css') ||
508
+                            false !== strpos($file, '.img') ||
509
+                            false !== strpos($file, '.txt')
510 510
                         )
511 511
                     ) {
512 512
                         // Web server is gzipping, we count .js|.css|.img|.txt files.
513 513
                         $count++;
514
-                    } elseif ( ! AUTOPTIMIZE_CACHE_NOGZIP && false !== strpos( $file, '.none' ) ) {
514
+                    } elseif (!AUTOPTIMIZE_CACHE_NOGZIP && false !== strpos($file, '.none')) {
515 515
                         // We are gzipping ourselves via php, counting only .none files.
516 516
                         $count++;
517 517
                     }
518
-                    $size += filesize( $dir . $file );
518
+                    $size += filesize($dir.$file);
519 519
                 }
520 520
             }
521 521
         }
522 522
 
523
-        $stats = array( $count, $size, time() );
523
+        $stats = array($count, $size, time());
524 524
 
525 525
         return $stats;
526 526
     }
@@ -535,26 +535,26 @@  discard block
 block discarded – undo
535 535
     public static function cacheavail()
536 536
     {
537 537
         // readonly FS explicitly OK'ed by dev, let's assume the cache dirs are there!
538
-        if ( defined( 'AUTOPTIMIZE_CACHE_READONLY' ) ) {
538
+        if (defined('AUTOPTIMIZE_CACHE_READONLY')) {
539 539
             return true;
540 540
         }
541 541
 
542
-        if ( false === autoptimizeCache::check_and_create_dirs() ) {
542
+        if (false === autoptimizeCache::check_and_create_dirs()) {
543 543
             return false;
544 544
         }
545 545
 
546 546
         // Using .htaccess inside our cache folder to overrule wp-super-cache.
547
-        $htaccess = AUTOPTIMIZE_CACHE_DIR . '/.htaccess';
548
-        if ( ! is_file( $htaccess ) ) {
547
+        $htaccess = AUTOPTIMIZE_CACHE_DIR.'/.htaccess';
548
+        if (!is_file($htaccess)) {
549 549
             /**
550 550
              * Create `wp-content/AO_htaccess_tmpl` file with
551 551
              * whatever htaccess rules you might need
552 552
              * if you want to override default AO htaccess
553 553
              */
554
-            $htaccess_tmpl = WP_CONTENT_DIR . '/AO_htaccess_tmpl';
555
-            if ( is_file( $htaccess_tmpl ) ) {
556
-                $content = file_get_contents( $htaccess_tmpl );
557
-            } elseif ( is_multisite() || ! AUTOPTIMIZE_CACHE_NOGZIP ) {
554
+            $htaccess_tmpl = WP_CONTENT_DIR.'/AO_htaccess_tmpl';
555
+            if (is_file($htaccess_tmpl)) {
556
+                $content = file_get_contents($htaccess_tmpl);
557
+            } elseif (is_multisite() || !AUTOPTIMIZE_CACHE_NOGZIP) {
558 558
                 $content = '<IfModule mod_expires.c>
559 559
         ExpiresActive On
560 560
         ExpiresByType text/css A30672000
@@ -608,13 +608,13 @@  discard block
 block discarded – undo
608 608
 </IfModule>';
609 609
             }
610 610
 
611
-            if ( self::do_fallback() === true ) {
612
-                $content .= "\nErrorDocument 404 " . trailingslashit( parse_url( content_url(), PHP_URL_PATH ) ) . 'autoptimize_404_handler.php';
611
+            if (self::do_fallback() === true) {
612
+                $content .= "\nErrorDocument 404 ".trailingslashit(parse_url(content_url(), PHP_URL_PATH)).'autoptimize_404_handler.php';
613 613
             }
614
-            @file_put_contents( $htaccess, $content ); // @codingStandardsIgnoreLine
614
+            @file_put_contents($htaccess, $content); // @codingStandardsIgnoreLine
615 615
         }
616 616
 
617
-        if ( self::do_fallback() ) {
617
+        if (self::do_fallback()) {
618 618
             self::check_fallback_php();
619 619
         }
620 620
 
@@ -629,17 +629,17 @@  discard block
 block discarded – undo
629 629
      */
630 630
     public static function check_fallback_php() {
631 631
         $_fallback_filename = 'autoptimize_404_handler.php';
632
-        $_fallback_php      = trailingslashit( WP_CONTENT_DIR ) . $_fallback_filename;
632
+        $_fallback_php      = trailingslashit(WP_CONTENT_DIR).$_fallback_filename;
633 633
         $_fallback_status   = true;
634 634
 
635
-        if ( ! file_exists( $_fallback_php ) && is_writable( WP_CONTENT_DIR ) ) {
636
-            $_fallback_php_contents = file_get_contents( AUTOPTIMIZE_PLUGIN_DIR . 'config/' . $_fallback_filename );
637
-            $_fallback_php_contents = str_replace( '<?php exit;', '<?php', $_fallback_php_contents );
638
-            $_fallback_php_contents = str_replace( '<!--ao-cache-dir-->', AUTOPTIMIZE_CACHE_DIR, $_fallback_php_contents );
639
-            if ( apply_filters( 'autoptimize_filter_cache_fallback_log_errors', false ) ) {
640
-                $_fallback_php_contents = str_replace( '// error_log', 'error_log', $_fallback_php_contents );
635
+        if (!file_exists($_fallback_php) && is_writable(WP_CONTENT_DIR)) {
636
+            $_fallback_php_contents = file_get_contents(AUTOPTIMIZE_PLUGIN_DIR.'config/'.$_fallback_filename);
637
+            $_fallback_php_contents = str_replace('<?php exit;', '<?php', $_fallback_php_contents);
638
+            $_fallback_php_contents = str_replace('<!--ao-cache-dir-->', AUTOPTIMIZE_CACHE_DIR, $_fallback_php_contents);
639
+            if (apply_filters('autoptimize_filter_cache_fallback_log_errors', false)) {
640
+                $_fallback_php_contents = str_replace('// error_log', 'error_log', $_fallback_php_contents);
641 641
             }
642
-            $_fallback_status = file_put_contents( $_fallback_php, $_fallback_php_contents );
642
+            $_fallback_status = file_put_contents($_fallback_php, $_fallback_php_contents);
643 643
         }
644 644
 
645 645
         return $_fallback_status;
@@ -656,8 +656,8 @@  discard block
 block discarded – undo
656 656
     public static function do_fallback() {
657 657
         static $_do_fallback = null;
658 658
 
659
-        if ( null === $_do_fallback ) {
660
-            $_do_fallback = (bool) apply_filters( 'autoptimize_filter_cache_do_fallback', autoptimizeOptionWrapper::get_option( 'autoptimize_cache_fallback', '1' ) );
659
+        if (null === $_do_fallback) {
660
+            $_do_fallback = (bool) apply_filters('autoptimize_filter_cache_do_fallback', autoptimizeOptionWrapper::get_option('autoptimize_cache_fallback', '1'));
661 661
         }
662 662
 
663 663
         return $_do_fallback;
@@ -669,31 +669,31 @@  discard block
 block discarded – undo
669 669
      * and 410'ing ("Gone") if fallback not available.
670 670
      */
671 671
     public static function wordpress_notfound_fallback() {
672
-        $original_request = strtok( $_SERVER['REQUEST_URI'], '?' );
673
-        if ( strpos( $original_request, wp_basename( WP_CONTENT_DIR ) . AUTOPTIMIZE_CACHE_CHILD_DIR ) !== false && is_404() ) {
672
+        $original_request = strtok($_SERVER['REQUEST_URI'], '?');
673
+        if (strpos($original_request, wp_basename(WP_CONTENT_DIR).AUTOPTIMIZE_CACHE_CHILD_DIR) !== false && is_404()) {
674 674
             // make sure this is not considered a 404.
675 675
             global $wp_query;
676 676
             $wp_query->is_404 = false;
677 677
 
678 678
             // set fallback path.
679
-            $js_or_css     = pathinfo( $original_request, PATHINFO_EXTENSION );
680
-            $fallback_path = AUTOPTIMIZE_CACHE_DIR . $js_or_css . '/autoptimize_fallback.' . $js_or_css;
679
+            $js_or_css     = pathinfo($original_request, PATHINFO_EXTENSION);
680
+            $fallback_path = AUTOPTIMIZE_CACHE_DIR.$js_or_css.'/autoptimize_fallback.'.$js_or_css;
681 681
 
682 682
             // prepare for Shakeeb's Unused CSS files to be 404-handled as well.
683
-            if ( strpos( $original_request, 'uucss/uucss-' ) !== false ) {
684
-                $original_request = preg_replace( '/uucss\/uucss-[a-z0-9]{32}-/', 'css/', $original_request  );
683
+            if (strpos($original_request, 'uucss/uucss-') !== false) {
684
+                $original_request = preg_replace('/uucss\/uucss-[a-z0-9]{32}-/', 'css/', $original_request);
685 685
             }
686 686
 
687 687
             // set fallback URL.
688
-            $fallback_target = preg_replace( '/(.*)_(?:[a-z0-9]{32})\.(js|css)$/', '${1}_fallback.${2}', $original_request );
688
+            $fallback_target = preg_replace('/(.*)_(?:[a-z0-9]{32})\.(js|css)$/', '${1}_fallback.${2}', $original_request);
689 689
 
690 690
             // redirect to fallback if possible.
691
-            if ( $original_request !== $fallback_target && file_exists( $fallback_path ) ) {
691
+            if ($original_request !== $fallback_target && file_exists($fallback_path)) {
692 692
                 // redirect to fallback.
693
-                wp_redirect( $fallback_target, 302 );
693
+                wp_redirect($fallback_target, 302);
694 694
             } else {
695 695
                 // return HTTP 410 (gone) reponse.
696
-                status_header( 410 );
696
+                status_header(410);
697 697
             }
698 698
         }
699 699
     }
@@ -705,13 +705,13 @@  discard block
 block discarded – undo
705 705
      * @return bool
706 706
      */
707 707
     public static function check_and_create_dirs() {
708
-        if ( ! defined( 'AUTOPTIMIZE_CACHE_DIR' ) ) {
708
+        if (!defined('AUTOPTIMIZE_CACHE_DIR')) {
709 709
             // We didn't set a cache.
710 710
             return false;
711 711
         }
712 712
 
713
-        foreach ( array( '', 'js', 'css' ) as $dir ) {
714
-            if ( ! self::check_cache_dir( AUTOPTIMIZE_CACHE_DIR . $dir ) ) {
713
+        foreach (array('', 'js', 'css') as $dir) {
714
+            if (!self::check_cache_dir(AUTOPTIMIZE_CACHE_DIR.$dir)) {
715 715
                 return false;
716 716
             }
717 717
         }
@@ -726,25 +726,25 @@  discard block
 block discarded – undo
726 726
      *
727 727
      * @return bool
728 728
      */
729
-    protected static function check_cache_dir( $dir )
729
+    protected static function check_cache_dir($dir)
730 730
     {
731 731
         // Try creating the dir if it doesn't exist.
732
-        if ( ! file_exists( $dir ) ) {
733
-            @mkdir( $dir, 0775, true ); // @codingStandardsIgnoreLine
734
-            if ( ! file_exists( $dir ) ) {
732
+        if (!file_exists($dir)) {
733
+            @mkdir($dir, 0775, true); // @codingStandardsIgnoreLine
734
+            if (!file_exists($dir)) {
735 735
                 return false;
736 736
             }
737 737
         }
738 738
 
739 739
         // If we still cannot write, bail.
740
-        if ( ! is_writable( $dir ) ) {
740
+        if (!is_writable($dir)) {
741 741
             return false;
742 742
         }
743 743
 
744 744
         // Create an index.html in there to avoid prying eyes!
745
-        $idx_file = rtrim( $dir, '/\\' ) . '/index.html';
746
-        if ( ! is_file( $idx_file ) ) {
747
-            @file_put_contents( $idx_file, '<html><head><meta name="robots" content="noindex, nofollow"></head><body>Generated by <a href="http://wordpress.org/extend/plugins/autoptimize/" rel="nofollow">Autoptimize</a></body></html>' ); // @codingStandardsIgnoreLine
745
+        $idx_file = rtrim($dir, '/\\').'/index.html';
746
+        if (!is_file($idx_file)) {
747
+            @file_put_contents($idx_file, '<html><head><meta name="robots" content="noindex, nofollow"></head><body>Generated by <a href="http://wordpress.org/extend/plugins/autoptimize/" rel="nofollow">Autoptimize</a></body></html>'); // @codingStandardsIgnoreLine
748 748
         }
749 749
 
750 750
         return true;
@@ -758,54 +758,54 @@  discard block
 block discarded – undo
758 758
     // @codingStandardsIgnoreStart
759 759
     public static function flushPageCache()
760 760
     {
761
-        if ( function_exists( 'wp_cache_clear_cache' ) ) {
762
-            if ( is_multisite() ) {
761
+        if (function_exists('wp_cache_clear_cache')) {
762
+            if (is_multisite()) {
763 763
                 $blog_id = get_current_blog_id();
764
-                wp_cache_clear_cache( $blog_id );
764
+                wp_cache_clear_cache($blog_id);
765 765
             } else {
766 766
                 wp_cache_clear_cache();
767 767
             }
768
-        } elseif ( has_action( 'cachify_flush_cache' ) ) {
769
-            do_action( 'cachify_flush_cache' );
770
-        } elseif ( function_exists( 'w3tc_pgcache_flush' ) ) {
768
+        } elseif (has_action('cachify_flush_cache')) {
769
+            do_action('cachify_flush_cache');
770
+        } elseif (function_exists('w3tc_pgcache_flush')) {
771 771
             w3tc_pgcache_flush();
772
-        } elseif ( function_exists( 'wp_fast_cache_bulk_delete_all' ) ) {
772
+        } elseif (function_exists('wp_fast_cache_bulk_delete_all')) {
773 773
             wp_fast_cache_bulk_delete_all();
774
-        } elseif ( function_exists( 'rapidcache_clear_cache' ) ) {
774
+        } elseif (function_exists('rapidcache_clear_cache')) {
775 775
             rapidcache_clear_cache();
776
-        } elseif ( class_exists( 'Swift_Performance_Cache' ) ) {
776
+        } elseif (class_exists('Swift_Performance_Cache')) {
777 777
             Swift_Performance_Cache::clear_all_cache();
778
-        } elseif ( class_exists( 'WpFastestCache' ) ) {
778
+        } elseif (class_exists('WpFastestCache')) {
779 779
             $wpfc = new WpFastestCache();
780 780
             $wpfc->deleteCache();
781
-        } elseif ( class_exists( 'c_ws_plugin__qcache_purging_routines' ) ) {
781
+        } elseif (class_exists('c_ws_plugin__qcache_purging_routines')) {
782 782
             c_ws_plugin__qcache_purging_routines::purge_cache_dir(); // quick cache
783
-        } elseif ( class_exists( 'zencache' ) ) {
783
+        } elseif (class_exists('zencache')) {
784 784
             zencache::clear();
785
-        } elseif ( class_exists( 'comet_cache' ) ) {
785
+        } elseif (class_exists('comet_cache')) {
786 786
             comet_cache::clear();
787
-        } elseif ( class_exists( 'WpeCommon' ) ) {
787
+        } elseif (class_exists('WpeCommon')) {
788 788
             // WPEngine cache purge/flush methods to call by default
789 789
             $wpe_methods = array(
790 790
                 'purge_varnish_cache',
791 791
             );
792 792
 
793 793
             // More agressive clear/flush/purge behind a filter
794
-            if ( apply_filters( 'autoptimize_flush_wpengine_aggressive', false ) ) {
795
-                $wpe_methods = array_merge( $wpe_methods, array( 'purge_memcached', 'clear_maxcdn_cache' ) );
794
+            if (apply_filters('autoptimize_flush_wpengine_aggressive', false)) {
795
+                $wpe_methods = array_merge($wpe_methods, array('purge_memcached', 'clear_maxcdn_cache'));
796 796
             }
797 797
 
798 798
             // Filtering the entire list of WpeCommon methods to be called (for advanced usage + easier testing)
799
-            $wpe_methods = apply_filters( 'autoptimize_flush_wpengine_methods', $wpe_methods );
799
+            $wpe_methods = apply_filters('autoptimize_flush_wpengine_methods', $wpe_methods);
800 800
 
801
-            foreach ( $wpe_methods as $wpe_method ) {
802
-                if ( method_exists( 'WpeCommon', $wpe_method ) ) {
801
+            foreach ($wpe_methods as $wpe_method) {
802
+                if (method_exists('WpeCommon', $wpe_method)) {
803 803
                     WpeCommon::$wpe_method();
804 804
                 }
805 805
             }
806
-        } elseif ( function_exists( 'sg_cachepress_purge_cache' ) ) {
806
+        } elseif (function_exists('sg_cachepress_purge_cache')) {
807 807
             sg_cachepress_purge_cache();
808
-        } elseif ( array_key_exists( 'KINSTA_CACHE_ZONE', $_SERVER ) ) {
808
+        } elseif (array_key_exists('KINSTA_CACHE_ZONE', $_SERVER)) {
809 809
             $_kinsta_clear_cache_url = 'https://localhost/kinsta-clear-cache-all';
810 810
             $_kinsta_response        = wp_remote_get(
811 811
                 $_kinsta_clear_cache_url,
@@ -814,20 +814,20 @@  discard block
 block discarded – undo
814 814
                     'timeout' => 5,
815 815
                     )
816 816
             );
817
-        } elseif ( defined('NGINX_HELPER_BASENAME') ) {
818
-            do_action( 'rt_nginx_helper_purge_all' );
819
-        } elseif ( file_exists( WP_CONTENT_DIR . '/wp-cache-config.php' ) && function_exists( 'prune_super_cache' ) ) {
817
+        } elseif (defined('NGINX_HELPER_BASENAME')) {
818
+            do_action('rt_nginx_helper_purge_all');
819
+        } elseif (file_exists(WP_CONTENT_DIR.'/wp-cache-config.php') && function_exists('prune_super_cache')) {
820 820
             // fallback for WP-Super-Cache
821 821
             global $cache_path;
822
-            if ( is_multisite() ) {
822
+            if (is_multisite()) {
823 823
                 $blog_id = get_current_blog_id();
824
-                prune_super_cache( get_supercache_dir( $blog_id ), true );
825
-                prune_super_cache( $cache_path . 'blogs/', true );
824
+                prune_super_cache(get_supercache_dir($blog_id), true);
825
+                prune_super_cache($cache_path.'blogs/', true);
826 826
             } else {
827
-                prune_super_cache( $cache_path . 'supercache/', true );
828
-                prune_super_cache( $cache_path, true );
827
+                prune_super_cache($cache_path.'supercache/', true);
828
+                prune_super_cache($cache_path, true);
829 829
             }
830
-        } elseif ( class_exists( 'NginxCache' ) ) {
830
+        } elseif (class_exists('NginxCache')) {
831 831
             $nginx_cache = new NginxCache();
832 832
             $nginx_cache->purge_zone_once();
833 833
         }
Please login to merge, or discard this patch.
classes/autoptimizeBase.php 1 patch
Spacing   +151 added lines, -151 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Base class other (more-specific) classes inherit from.
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
      */
31 31
     public $cdn_url = '';
32 32
 
33
-    public function __construct( $content )
33
+    public function __construct($content)
34 34
     {
35 35
         $this->content = $content;
36 36
     }
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
      *
43 43
      * @return bool
44 44
      */
45
-    abstract public function read( $options );
45
+    abstract public function read($options);
46 46
 
47 47
     /**
48 48
      * Joins and optimizes collected things.
@@ -73,40 +73,40 @@  discard block
 block discarded – undo
73 73
      *
74 74
      * @return bool|string
75 75
      */
76
-    public function getpath( $url )
76
+    public function getpath($url)
77 77
     {
78
-        $url = apply_filters( 'autoptimize_filter_cssjs_alter_url', $url );
78
+        $url = apply_filters('autoptimize_filter_cssjs_alter_url', $url);
79 79
 
80
-        if ( false !== strpos( $url, '%' ) ) {
81
-            $url = urldecode( $url );
80
+        if (false !== strpos($url, '%')) {
81
+            $url = urldecode($url);
82 82
         }
83 83
 
84
-        $site_host    = parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST );
85
-        $content_host = parse_url( AUTOPTIMIZE_WP_ROOT_URL, PHP_URL_HOST );
84
+        $site_host    = parse_url(AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST);
85
+        $content_host = parse_url(AUTOPTIMIZE_WP_ROOT_URL, PHP_URL_HOST);
86 86
 
87 87
         // Normalizing attempts...
88
-        $double_slash_position = strpos( $url, '//' );
89
-        if ( 0 === $double_slash_position ) {
90
-            if ( is_ssl() ) {
91
-                $url = 'https:' . $url;
88
+        $double_slash_position = strpos($url, '//');
89
+        if (0 === $double_slash_position) {
90
+            if (is_ssl()) {
91
+                $url = 'https:'.$url;
92 92
             } else {
93
-                $url = 'http:' . $url;
93
+                $url = 'http:'.$url;
94 94
             }
95
-        } elseif ( ( false === $double_slash_position ) && ( false === strpos( $url, $site_host ) ) ) {
96
-            if ( AUTOPTIMIZE_WP_SITE_URL === $site_host ) {
97
-                $url = AUTOPTIMIZE_WP_SITE_URL . $url;
95
+        } elseif ((false === $double_slash_position) && (false === strpos($url, $site_host))) {
96
+            if (AUTOPTIMIZE_WP_SITE_URL === $site_host) {
97
+                $url = AUTOPTIMIZE_WP_SITE_URL.$url;
98 98
             } else {
99
-                $url = AUTOPTIMIZE_WP_SITE_URL . autoptimizeUtils::path_canonicalize( $url );
99
+                $url = AUTOPTIMIZE_WP_SITE_URL.autoptimizeUtils::path_canonicalize($url);
100 100
             }
101 101
         }
102 102
 
103
-        if ( $site_host !== $content_host ) {
104
-            $url = str_replace( AUTOPTIMIZE_WP_CONTENT_URL, AUTOPTIMIZE_WP_SITE_URL . AUTOPTIMIZE_WP_CONTENT_NAME, $url );
103
+        if ($site_host !== $content_host) {
104
+            $url = str_replace(AUTOPTIMIZE_WP_CONTENT_URL, AUTOPTIMIZE_WP_SITE_URL.AUTOPTIMIZE_WP_CONTENT_NAME, $url);
105 105
         }
106 106
 
107 107
         // First check; hostname wp site should be hostname of url!
108
-        $url_host = @parse_url( $url, PHP_URL_HOST ); // @codingStandardsIgnoreLine
109
-        if ( $url_host !== $site_host ) {
108
+        $url_host = @parse_url($url, PHP_URL_HOST); // @codingStandardsIgnoreLine
109
+        if ($url_host !== $site_host) {
110 110
             /**
111 111
              * First try to get all domains from WPML (if available)
112 112
              * then explicitely declare $this->cdn_url as OK as well
@@ -115,20 +115,20 @@  discard block
 block discarded – undo
115 115
              */
116 116
             $multidomains = array();
117 117
 
118
-            $multidomains_wpml = apply_filters( 'wpml_setting', array(), 'language_domains' );
119
-            if ( ! empty( $multidomains_wpml ) ) {
120
-                $multidomains = array_map( array( $this, 'get_url_hostname' ), $multidomains_wpml );
118
+            $multidomains_wpml = apply_filters('wpml_setting', array(), 'language_domains');
119
+            if (!empty($multidomains_wpml)) {
120
+                $multidomains = array_map(array($this, 'get_url_hostname'), $multidomains_wpml);
121 121
             }
122 122
 
123
-            if ( ! empty( $this->cdn_url ) ) {
124
-                $multidomains[] = parse_url( $this->cdn_url, PHP_URL_HOST );
123
+            if (!empty($this->cdn_url)) {
124
+                $multidomains[] = parse_url($this->cdn_url, PHP_URL_HOST);
125 125
             }
126 126
 
127
-            $multidomains = apply_filters( 'autoptimize_filter_cssjs_multidomain', $multidomains );
127
+            $multidomains = apply_filters('autoptimize_filter_cssjs_multidomain', $multidomains);
128 128
 
129
-            if ( ! empty( $multidomains ) ) {
130
-                if ( in_array( $url_host, $multidomains ) ) {
131
-                    $url = str_replace( $url_host, $site_host, $url );
129
+            if (!empty($multidomains)) {
130
+                if (in_array($url_host, $multidomains)) {
131
+                    $url = str_replace($url_host, $site_host, $url);
132 132
                 } else {
133 133
                     return false;
134 134
                 }
@@ -138,36 +138,36 @@  discard block
 block discarded – undo
138 138
         }
139 139
 
140 140
         // Try to remove "wp root url" from url while not minding http<>https.
141
-        $tmp_ao_root = preg_replace( '/https?:/', '', AUTOPTIMIZE_WP_ROOT_URL );
141
+        $tmp_ao_root = preg_replace('/https?:/', '', AUTOPTIMIZE_WP_ROOT_URL);
142 142
 
143
-        if ( $site_host !== $content_host ) {
143
+        if ($site_host !== $content_host) {
144 144
             // As we replaced the content-domain with the site-domain, we should match against that.
145
-            $tmp_ao_root = preg_replace( '/https?:/', '', AUTOPTIMIZE_WP_SITE_URL );
145
+            $tmp_ao_root = preg_replace('/https?:/', '', AUTOPTIMIZE_WP_SITE_URL);
146 146
         }
147 147
         
148
-        if ( is_multisite() && ! is_main_site() && ! empty( $this->cdn_url ) ) {
148
+        if (is_multisite() && !is_main_site() && !empty($this->cdn_url)) {
149 149
             // multisite child sites with CDN need the network_site_url as tmp_ao_root but only if directory-based multisite.
150 150
             $_network_site_url = network_site_url();
151
-            if ( strpos( AUTOPTIMIZE_WP_SITE_URL, $_network_site_url ) !== false ) {
152
-                $tmp_ao_root = preg_replace( '/https?:/', '', $_network_site_url );
151
+            if (strpos(AUTOPTIMIZE_WP_SITE_URL, $_network_site_url) !== false) {
152
+                $tmp_ao_root = preg_replace('/https?:/', '', $_network_site_url);
153 153
             }
154 154
         }
155 155
 
156
-        $tmp_url = preg_replace( '/https?:/', '', $url );
157
-        $path    = str_replace( $tmp_ao_root, '', $tmp_url );
156
+        $tmp_url = preg_replace('/https?:/', '', $url);
157
+        $path    = str_replace($tmp_ao_root, '', $tmp_url);
158 158
 
159 159
         // If path starts with :// or //, this is not a URL in the WP context and
160 160
         // we have to assume we can't aggregate.
161
-        if ( preg_match( '#^:?//#', $path ) ) {
161
+        if (preg_match('#^:?//#', $path)) {
162 162
             // External script/css (adsense, etc).
163 163
             return false;
164 164
         }
165 165
 
166 166
         // Prepend with WP_ROOT_DIR to have full path to file.
167
-        $path = str_replace( '//', '/', trailingslashit( WP_ROOT_DIR ) . $path );
167
+        $path = str_replace('//', '/', trailingslashit(WP_ROOT_DIR).$path);
168 168
 
169 169
         // Final check: does file exist and is it readable?
170
-        if ( file_exists( $path ) && is_file( $path ) && is_readable( $path ) ) {
170
+        if (file_exists($path) && is_file($path) && is_readable($path)) {
171 171
             return $path;
172 172
         } else {
173 173
             return false;
@@ -184,18 +184,18 @@  discard block
 block discarded – undo
184 184
      *
185 185
      * @return string
186 186
      */
187
-    protected function get_url_hostname( $url )
187
+    protected function get_url_hostname($url)
188 188
     {
189 189
         // Checking that the url starts with something vaguely resembling a protocol.
190
-        if ( ( 0 !== strpos( $url, 'http' ) ) && ( 0 !== strpos( $url, '//' ) ) ) {
191
-            $url = 'http://' . $url;
190
+        if ((0 !== strpos($url, 'http')) && (0 !== strpos($url, '//'))) {
191
+            $url = 'http://'.$url;
192 192
         }
193 193
 
194 194
         // Grab the hostname.
195
-        $hostname = parse_url( $url, PHP_URL_HOST );
195
+        $hostname = parse_url($url, PHP_URL_HOST);
196 196
 
197 197
         // Fallback when parse_url() fails.
198
-        if ( empty( $hostname ) ) {
198
+        if (empty($hostname)) {
199 199
             $hostname = $url;
200 200
         }
201 201
 
@@ -209,7 +209,7 @@  discard block
 block discarded – undo
209 209
      *
210 210
      * @return string
211 211
      */
212
-    protected function hide_noptimize( $markup )
212
+    protected function hide_noptimize($markup)
213 213
     {
214 214
         return $this->replace_contents_with_marker_if_exists(
215 215
             'NOPTIMIZE',
@@ -226,9 +226,9 @@  discard block
 block discarded – undo
226 226
      *
227 227
      * @return string
228 228
      */
229
-    protected function restore_noptimize( $markup )
229
+    protected function restore_noptimize($markup)
230 230
     {
231
-        return $this->restore_marked_content( 'NOPTIMIZE', $markup );
231
+        return $this->restore_marked_content('NOPTIMIZE', $markup);
232 232
     }
233 233
 
234 234
     /**
@@ -238,7 +238,7 @@  discard block
 block discarded – undo
238 238
      *
239 239
      * @return string
240 240
      */
241
-    protected function hide_iehacks( $markup )
241
+    protected function hide_iehacks($markup)
242 242
     {
243 243
         return $this->replace_contents_with_marker_if_exists(
244 244
             'IEHACK', // Marker name...
@@ -255,9 +255,9 @@  discard block
 block discarded – undo
255 255
      *
256 256
      * @return string
257 257
      */
258
-    protected function restore_iehacks( $markup )
258
+    protected function restore_iehacks($markup)
259 259
     {
260
-        return $this->restore_marked_content( 'IEHACK', $markup );
260
+        return $this->restore_marked_content('IEHACK', $markup);
261 261
     }
262 262
 
263 263
     /**
@@ -269,7 +269,7 @@  discard block
 block discarded – undo
269 269
      *
270 270
      * @return string
271 271
      */
272
-    protected function hide_comments( $markup )
272
+    protected function hide_comments($markup)
273 273
     {
274 274
         return $this->replace_contents_with_marker_if_exists(
275 275
             'COMMENTS',
@@ -287,9 +287,9 @@  discard block
 block discarded – undo
287 287
      *
288 288
      * @return string
289 289
      */
290
-    protected function restore_comments( $markup )
290
+    protected function restore_comments($markup)
291 291
     {
292
-        return $this->restore_marked_content( 'COMMENTS', $markup );
292
+        return $this->restore_marked_content('COMMENTS', $markup);
293 293
     }
294 294
 
295 295
     /**
@@ -300,44 +300,44 @@  discard block
 block discarded – undo
300 300
      *
301 301
      * @return string
302 302
      */
303
-    public function url_replace_cdn( $url )
303
+    public function url_replace_cdn($url)
304 304
     {
305 305
         // For 2.3 back-compat in which cdn-ing appeared to be automatically
306 306
         // including WP subfolder/subdirectory into account as part of cdn-ing,
307 307
         // even though it might've caused serious troubles in certain edge-cases.
308
-        $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed( $this->cdn_url );
308
+        $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed($this->cdn_url);
309 309
 
310 310
         // Allows API/filter to further tweak the cdn url...
311
-        $cdn_url = apply_filters( 'autoptimize_filter_base_cdnurl', $cdn_url );
312
-        if ( ! empty( $cdn_url ) ) {
313
-            $this->debug_log( 'before=' . $url );
311
+        $cdn_url = apply_filters('autoptimize_filter_base_cdnurl', $cdn_url);
312
+        if (!empty($cdn_url)) {
313
+            $this->debug_log('before='.$url);
314 314
 
315 315
             // Simple str_replace-based approach fails when $url is protocol-or-host-relative.
316
-            $is_protocol_relative = autoptimizeUtils::is_protocol_relative( $url );
317
-            $is_host_relative     = ( ! $is_protocol_relative && ( '/' === $url[0] ) );
318
-            $cdn_url              = rtrim( $cdn_url, '/' );
316
+            $is_protocol_relative = autoptimizeUtils::is_protocol_relative($url);
317
+            $is_host_relative     = (!$is_protocol_relative && ('/' === $url[0]));
318
+            $cdn_url              = rtrim($cdn_url, '/');
319 319
 
320
-            if ( $is_host_relative ) {
320
+            if ($is_host_relative) {
321 321
                 // Prepending host-relative urls with the cdn url.
322
-                $url = $cdn_url . $url;
322
+                $url = $cdn_url.$url;
323 323
             } else {
324 324
                 // Either a protocol-relative or "regular" url, replacing it either way.
325
-                if ( $is_protocol_relative ) {
325
+                if ($is_protocol_relative) {
326 326
                     // Massage $site_url so that simple str_replace() still "works" by
327 327
                     // searching for the protocol-relative version of AUTOPTIMIZE_WP_SITE_URL.
328
-                    $site_url = str_replace( array( 'http:', 'https:' ), '', AUTOPTIMIZE_WP_SITE_URL );
328
+                    $site_url = str_replace(array('http:', 'https:'), '', AUTOPTIMIZE_WP_SITE_URL);
329 329
                 } else {
330 330
                     $site_url = AUTOPTIMIZE_WP_SITE_URL;
331 331
                 }
332
-                $this->debug_log( '`' . $site_url . '` -> `' . $cdn_url . '` in `' . $url . '`' );
333
-                $url = str_replace( $site_url, $cdn_url, $url );
332
+                $this->debug_log('`'.$site_url.'` -> `'.$cdn_url.'` in `'.$url.'`');
333
+                $url = str_replace($site_url, $cdn_url, $url);
334 334
             }
335 335
 
336
-            $this->debug_log( 'after=' . $url );
336
+            $this->debug_log('after='.$url);
337 337
         }
338 338
 
339 339
         // Allow API filter to take further care of CDN replacement.
340
-        $url = apply_filters( 'autoptimize_filter_base_replace_cdn', $url );
340
+        $url = apply_filters('autoptimize_filter_base_replace_cdn', $url);
341 341
 
342 342
         return $url;
343 343
     }
@@ -355,18 +355,18 @@  discard block
 block discarded – undo
355 355
      *
356 356
      * @return void
357 357
      */
358
-    protected function inject_in_html( $payload, $where )
358
+    protected function inject_in_html($payload, $where)
359 359
     {
360 360
         $warned   = false;
361
-        $position = autoptimizeUtils::strpos( $this->content, $where[0] );
362
-        if ( false !== $position ) {
361
+        $position = autoptimizeUtils::strpos($this->content, $where[0]);
362
+        if (false !== $position) {
363 363
             // Found the tag, setup content/injection as specified.
364
-            if ( 'after' === $where[1] ) {
365
-                $content = $where[0] . $payload;
366
-            } elseif ( 'replace' === $where[1] ) {
364
+            if ('after' === $where[1]) {
365
+                $content = $where[0].$payload;
366
+            } elseif ('replace' === $where[1]) {
367 367
                 $content = $payload;
368 368
             } else {
369
-                $content = $payload . $where[0];
369
+                $content = $payload.$where[0];
370 370
             }
371 371
             // Place where specified.
372 372
             $this->content = autoptimizeUtils::substr_replace(
@@ -375,14 +375,14 @@  discard block
 block discarded – undo
375 375
                 $position,
376 376
                 // Using plain strlen() should be safe here for now, since
377 377
                 // we're not searching for multibyte chars here still...
378
-                strlen( $where[0] )
378
+                strlen($where[0])
379 379
             );
380 380
         } else {
381 381
             // Couldn't find what was specified, just append and add a warning.
382 382
             $this->content .= $payload;
383
-            if ( ! $warned ) {
384
-                $tag_display    = str_replace( array( '<', '>' ), '', $where[0] );
385
-                $this->content .= '<!--noptimize--><!-- Autoptimize found a problem with the HTML in your Theme, tag `' . $tag_display . '` missing --><!--/noptimize-->';
383
+            if (!$warned) {
384
+                $tag_display    = str_replace(array('<', '>'), '', $where[0]);
385
+                $this->content .= '<!--noptimize--><!-- Autoptimize found a problem with the HTML in your Theme, tag `'.$tag_display.'` missing --><!--/noptimize-->';
386 386
                 $warned         = true;
387 387
             }
388 388
         }
@@ -396,10 +396,10 @@  discard block
 block discarded – undo
396 396
      *
397 397
      * @return bool
398 398
      */
399
-    protected function isremovable( $tag, $removables )
399
+    protected function isremovable($tag, $removables)
400 400
     {
401
-        foreach ( $removables as $match ) {
402
-            if ( false !== strpos( $tag, $match ) ) {
401
+        foreach ($removables as $match) {
402
+            if (false !== strpos($tag, $match)) {
403 403
                 return true;
404 404
             }
405 405
         }
@@ -414,10 +414,10 @@  discard block
 block discarded – undo
414 414
      *
415 415
      * @return string
416 416
      */
417
-    public function inject_minified_callback( $matches )
417
+    public function inject_minified_callback($matches)
418 418
     {
419 419
         static $conf = null;
420
-        if ( null === $conf ) {
420
+        if (null === $conf) {
421 421
             $conf = autoptimizeConfig::instance();
422 422
         }
423 423
 
@@ -432,62 +432,62 @@  discard block
 block discarded – undo
432 432
         $filehash = null;
433 433
 
434 434
         // Grab the parts we need.
435
-        $parts = explode( '|', $matches[1] );
436
-        if ( ! empty( $parts ) ) {
437
-            $filepath = isset( $parts[0] ) ? base64_decode( $parts[0] ) : null;
438
-            $filehash = isset( $parts[1] ) ? $parts[1] : null;
435
+        $parts = explode('|', $matches[1]);
436
+        if (!empty($parts)) {
437
+            $filepath = isset($parts[0]) ? base64_decode($parts[0]) : null;
438
+            $filehash = isset($parts[1]) ? $parts[1] : null;
439 439
         }
440 440
 
441 441
         // Bail early if something's not right...
442
-        if ( ! $filepath || ! $filehash ) {
442
+        if (!$filepath || !$filehash) {
443 443
             return "\n";
444 444
         }
445 445
 
446
-        $filecontent = file_get_contents( $filepath );
446
+        $filecontent = file_get_contents($filepath);
447 447
 
448 448
         // Some things are differently handled for css/js...
449
-        $is_js_file = ( '.js' === substr( $filepath, -3, 3 ) );
449
+        $is_js_file = ('.js' === substr($filepath, -3, 3));
450 450
 
451 451
         $is_css_file = false;
452
-        if ( ! $is_js_file ) {
453
-            $is_css_file = ( '.css' === substr( $filepath, -4, 4 ) );
452
+        if (!$is_js_file) {
453
+            $is_css_file = ('.css' === substr($filepath, -4, 4));
454 454
         }
455 455
 
456 456
         // BOMs being nuked here unconditionally (regardless of where they are)!
457
-        $filecontent = preg_replace( "#\x{EF}\x{BB}\x{BF}#", '', $filecontent );
457
+        $filecontent = preg_replace("#\x{EF}\x{BB}\x{BF}#", '', $filecontent);
458 458
 
459 459
         // Remove comments and blank lines.
460
-        if ( $is_js_file ) {
461
-            $filecontent = preg_replace( '#^\s*\/\/.*$#Um', '', $filecontent );
460
+        if ($is_js_file) {
461
+            $filecontent = preg_replace('#^\s*\/\/.*$#Um', '', $filecontent);
462 462
         }
463 463
 
464 464
         // Nuke un-important comments.
465
-        $filecontent = preg_replace( '#^\s*\/\*[^!].*\*\/\s?#Um', '', $filecontent );
465
+        $filecontent = preg_replace('#^\s*\/\*[^!].*\*\/\s?#Um', '', $filecontent);
466 466
 
467 467
         // Normalize newlines.
468
-        $filecontent = preg_replace( '#(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+#', "\n", $filecontent );
468
+        $filecontent = preg_replace('#(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+#', "\n", $filecontent);
469 469
 
470 470
         // JS specifics.
471
-        if ( $is_js_file ) {
471
+        if ($is_js_file) {
472 472
             // Append a semicolon at the end of js files if it's missing.
473
-            $last_char = substr( $filecontent, -1, 1 );
474
-            if ( ';' !== $last_char && '}' !== $last_char ) {
473
+            $last_char = substr($filecontent, -1, 1);
474
+            if (';' !== $last_char && '}' !== $last_char) {
475 475
                 $filecontent .= ';';
476 476
             }
477 477
             // Check if try/catch should be used.
478
-            $opt_js_try_catch = $conf->get( 'autoptimize_js_trycatch' );
479
-            if ( 'on' === $opt_js_try_catch ) {
478
+            $opt_js_try_catch = $conf->get('autoptimize_js_trycatch');
479
+            if ('on' === $opt_js_try_catch) {
480 480
                 // It should, wrap in try/catch.
481
-                $filecontent = 'try{' . $filecontent . '}catch(e){}';
481
+                $filecontent = 'try{'.$filecontent.'}catch(e){}';
482 482
             }
483
-        } elseif ( $is_css_file ) {
484
-            $filecontent = autoptimizeStyles::fixurls( $filepath, $filecontent );
483
+        } elseif ($is_css_file) {
484
+            $filecontent = autoptimizeStyles::fixurls($filepath, $filecontent);
485 485
         } else {
486 486
             $filecontent = '';
487 487
         }
488 488
 
489 489
         // Return modified (or empty!) code/content.
490
-        return "\n" . $filecontent;
490
+        return "\n".$filecontent;
491 491
     }
492 492
 
493 493
     /**
@@ -497,13 +497,13 @@  discard block
 block discarded – undo
497 497
      *
498 498
      * @return string
499 499
      */
500
-    protected function inject_minified( $in )
500
+    protected function inject_minified($in)
501 501
     {
502 502
         $out = $in;
503
-        if ( false !== strpos( $in, '%%INJECTLATER%%' ) ) {
503
+        if (false !== strpos($in, '%%INJECTLATER%%')) {
504 504
             $out = preg_replace_callback(
505
-                '#\/\*\!%%INJECTLATER' . AUTOPTIMIZE_HASH . '%%(.*?)%%INJECTLATER%%\*\/#is',
506
-                array( $this, 'inject_minified_callback' ),
505
+                '#\/\*\!%%INJECTLATER'.AUTOPTIMIZE_HASH.'%%(.*?)%%INJECTLATER%%\*\/#is',
506
+                array($this, 'inject_minified_callback'),
507 507
                 $in
508 508
             );
509 509
         }
@@ -523,9 +523,9 @@  discard block
 block discarded – undo
523 523
      *
524 524
      * @return string
525 525
      */
526
-    public static function build_injectlater_marker( $filepath, $hash )
526
+    public static function build_injectlater_marker($filepath, $hash)
527 527
     {
528
-        $contents = '/*!' . self::build_marker( 'INJECTLATER', $filepath, $hash ) . '*/';
528
+        $contents = '/*!'.self::build_marker('INJECTLATER', $filepath, $hash).'*/';
529 529
 
530 530
         return $contents;
531 531
     }
@@ -543,18 +543,18 @@  discard block
 block discarded – undo
543 543
      *
544 544
      * @return string
545 545
      */
546
-    public static function build_marker( $name, $data, $hash = null )
546
+    public static function build_marker($name, $data, $hash = null)
547 547
     {
548 548
         // Start the marker, add the data.
549
-        $marker = '%%' . $name . AUTOPTIMIZE_HASH . '%%' . base64_encode( $data );
549
+        $marker = '%%'.$name.AUTOPTIMIZE_HASH.'%%'.base64_encode($data);
550 550
 
551 551
         // Add the hash if provided.
552
-        if ( null !== $hash ) {
553
-            $marker .= '|' . $hash;
552
+        if (null !== $hash) {
553
+            $marker .= '|'.$hash;
554 554
         }
555 555
 
556 556
         // Close the marker.
557
-        $marker .= '%%' . $name . '%%';
557
+        $marker .= '%%'.$name.'%%';
558 558
 
559 559
         return $marker;
560 560
     }
@@ -574,22 +574,22 @@  discard block
 block discarded – undo
574 574
      *
575 575
      * @return string
576 576
      */
577
-    public static function replace_contents_with_marker_if_exists( $marker, $search, $re_replace_pattern, $content )
577
+    public static function replace_contents_with_marker_if_exists($marker, $search, $re_replace_pattern, $content)
578 578
     {
579 579
         $found = false;
580 580
 
581
-        $is_regex = autoptimizeUtils::str_is_valid_regex( $search );
582
-        if ( $is_regex ) {
583
-            $found = preg_match( $search, $content );
581
+        $is_regex = autoptimizeUtils::str_is_valid_regex($search);
582
+        if ($is_regex) {
583
+            $found = preg_match($search, $content);
584 584
         } else {
585
-            $found = ( false !== strpos( $content, $search ) );
585
+            $found = (false !== strpos($content, $search));
586 586
         }
587 587
 
588
-        if ( $found ) {
588
+        if ($found) {
589 589
             $content = preg_replace_callback(
590 590
                 $re_replace_pattern,
591
-                function( $matches ) use ( $marker ) {
592
-                    return autoptimizeBase::build_marker( $marker, $matches[0] );
591
+                function($matches) use ($marker) {
592
+                    return autoptimizeBase::build_marker($marker, $matches[0]);
593 593
                 },
594 594
                 $content
595 595
             );
@@ -606,13 +606,13 @@  discard block
 block discarded – undo
606 606
      *
607 607
      * @return string
608 608
      */
609
-    public static function restore_marked_content( $marker, $content )
609
+    public static function restore_marked_content($marker, $content)
610 610
     {
611
-        if ( false !== strpos( $content, $marker ) ) {
611
+        if (false !== strpos($content, $marker)) {
612 612
             $content = preg_replace_callback(
613
-                '#%%' . $marker . AUTOPTIMIZE_HASH . '%%(.*?)%%' . $marker . '%%#is',
614
-                function ( $matches ) {
615
-                    return base64_decode( $matches[1] );
613
+                '#%%'.$marker.AUTOPTIMIZE_HASH.'%%(.*?)%%'.$marker.'%%#is',
614
+                function($matches) {
615
+                    return base64_decode($matches[1]);
616 616
                 },
617 617
                 $content
618 618
             );
@@ -628,17 +628,17 @@  discard block
 block discarded – undo
628 628
      *
629 629
      * @return void
630 630
      */
631
-    protected function debug_log( $data )
631
+    protected function debug_log($data)
632 632
     {
633
-        if ( ! isset( $this->debug_log ) || ! $this->debug_log ) {
633
+        if (!isset($this->debug_log) || !$this->debug_log) {
634 634
             return;
635 635
         }
636 636
 
637
-        if ( ! is_string( $data ) && ! is_resource( $data ) ) {
638
-            $data = var_export( $data, true );
637
+        if (!is_string($data) && !is_resource($data)) {
638
+            $data = var_export($data, true);
639 639
         }
640 640
 
641
-        error_log( $data );
641
+        error_log($data);
642 642
     }
643 643
 
644 644
     /**
@@ -648,12 +648,12 @@  discard block
 block discarded – undo
648 648
      *
649 649
      * @return bool|string to be minified code or false.
650 650
      */
651
-    protected function prepare_minify_single( $filepath )
651
+    protected function prepare_minify_single($filepath)
652 652
     {
653 653
         // Decide what we're dealing with, return false if we don't know.
654
-        if ( autoptimizeUtils::str_ends_in( $filepath, '.js' ) ) {
654
+        if (autoptimizeUtils::str_ends_in($filepath, '.js')) {
655 655
             $type = 'js';
656
-        } elseif ( autoptimizeUtils::str_ends_in( $filepath, '.css' ) ) {
656
+        } elseif (autoptimizeUtils::str_ends_in($filepath, '.css')) {
657 657
             $type = 'css';
658 658
         } else {
659 659
             return false;
@@ -662,18 +662,18 @@  discard block
 block discarded – undo
662 662
         // Bail if it looks like its already minifed (by having -min or .min
663 663
         // in filename) or if it looks like WP jquery.js (which is minified).
664 664
         $minified_variants = array(
665
-            '-min.' . $type,
666
-            '.min.' . $type,
665
+            '-min.'.$type,
666
+            '.min.'.$type,
667 667
             'js/jquery/jquery.js',
668 668
         );
669
-        foreach ( $minified_variants as $ending ) {
670
-            if ( autoptimizeUtils::str_ends_in( $filepath, $ending ) ) {
669
+        foreach ($minified_variants as $ending) {
670
+            if (autoptimizeUtils::str_ends_in($filepath, $ending)) {
671 671
                 return false;
672 672
             }
673 673
         }
674 674
 
675 675
         // Get file contents, bail if empty.
676
-        $contents = file_get_contents( $filepath );
676
+        $contents = file_get_contents($filepath);
677 677
 
678 678
         return $contents;
679 679
     }
@@ -686,12 +686,12 @@  discard block
 block discarded – undo
686 686
      *
687 687
      * @return string
688 688
      */
689
-    protected function build_minify_single_url( autoptimizeCache $cache )
689
+    protected function build_minify_single_url(autoptimizeCache $cache)
690 690
     {
691
-        $url = AUTOPTIMIZE_CACHE_URL . $cache->getname();
691
+        $url = AUTOPTIMIZE_CACHE_URL.$cache->getname();
692 692
 
693 693
         // CDN-replace the resulting URL if needed...
694
-        $url = $this->url_replace_cdn( $url );
694
+        $url = $this->url_replace_cdn($url);
695 695
 
696 696
         return $url;
697 697
     }
Please login to merge, or discard this patch.
classes/external/php/ao-minify-html.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -73,7 +73,7 @@  discard block
 block discarded – undo
73 73
     {
74 74
         $this->_html = str_replace("\r\n", "\n", trim($html));
75 75
         if (isset($options['xhtml'])) {
76
-            $this->_isXhtml = (bool)$options['xhtml'];
76
+            $this->_isXhtml = (bool) $options['xhtml'];
77 77
         }
78 78
         if (isset($options['cssMinifier'])) {
79 79
             $this->_cssMinifier = $options['cssMinifier'];
@@ -98,7 +98,7 @@  discard block
 block discarded – undo
98 98
             $this->_isXhtml = (false !== strpos($this->_html, '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML'));
99 99
         }
100 100
 
101
-        $this->_replacementHash = 'MINIFYHTML' . md5($_SERVER['REQUEST_TIME']);
101
+        $this->_replacementHash = 'MINIFYHTML'.md5($_SERVER['REQUEST_TIME']);
102 102
         $this->_placeholders = array();
103 103
 
104 104
         // replace SCRIPTs (and minify) with placeholders
@@ -114,7 +114,7 @@  discard block
 block discarded – undo
114 114
             ,$this->_html);
115 115
 
116 116
         // remove HTML comments (not containing IE conditional comments).
117
-        if  ($this->_keepComments == false) {
117
+        if ($this->_keepComments == false) {
118 118
             $this->_html = preg_replace_callback(
119 119
                 '/<!--([\\s\\S]*?)-->/'
120 120
                 ,array($this, '_commentCB')
@@ -159,7 +159,7 @@  discard block
 block discarded – undo
159 159
         //$this->_html = preg_replace('/(<[a-z\\-]+)\\s+([^>]+>)/i', "$1\n$2", $this->_html);
160 160
 
161 161
         // reverse order while preserving keys to ensure the last replacement is done first, etc ...
162
-        $this->_placeholders = array_reverse( $this->_placeholders, true );
162
+        $this->_placeholders = array_reverse($this->_placeholders, true);
163 163
 
164 164
         // fill placeholders
165 165
         $this->_html = str_replace(
@@ -179,7 +179,7 @@  discard block
 block discarded – undo
179 179
 
180 180
     protected function _reservePlace($content)
181 181
     {
182
-        $placeholder = '%' . $this->_replacementHash . count($this->_placeholders) . '%';
182
+        $placeholder = '%'.$this->_replacementHash.count($this->_placeholders).'%';
183 183
         $this->_placeholders[$placeholder] = $content;
184 184
         return $placeholder;
185 185
     }
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
 
194 194
     protected function _outsideTagCB($m)
195 195
     {
196
-        return '>' . preg_replace('/^\\s+|\\s+$/', ' ', $m[1]) . '<';
196
+        return '>'.preg_replace('/^\\s+|\\s+$/', ' ', $m[1]).'<';
197 197
     }
198 198
 
199 199
     protected function _removePreCB($m)
@@ -265,7 +265,7 @@  discard block
 block discarded – undo
265 265
     protected function _removeCdata($str)
266 266
     {
267 267
         return (false !== strpos($str, '<![CDATA['))
268
-            ? str_replace(array('/* <![CDATA[ */','/* ]]> */','/*<![CDATA[*/','/*]]>*/','<![CDATA[', ']]>'), '', $str)
268
+            ? str_replace(array('/* <![CDATA[ */', '/* ]]> */', '/*<![CDATA[*/', '/*]]>*/', '<![CDATA[', ']]>'), '', $str)
269 269
             : $str;
270 270
     }
271 271
 
Please login to merge, or discard this patch.
classes/autoptimizeImages.php 1 patch
Spacing   +369 added lines, -369 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,18 +23,18 @@  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
         $this->lazyload_counter = 0;
35 35
     }
36 36
 
37
-    public function set_options( array $options )
37
+    public function set_options(array $options)
38 38
     {
39 39
         $this->options = $options;
40 40
 
@@ -43,17 +43,17 @@  discard block
 block discarded – undo
43 43
 
44 44
     public static function fetch_options()
45 45
     {
46
-        $value = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_settings' );
47
-        if ( empty( $value ) ) {
46
+        $value = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_settings');
47
+        if (empty($value)) {
48 48
             // Fallback to returning defaults when no stored option exists yet.
49 49
             $value = autoptimizeConfig::get_ao_imgopt_default_options();
50 50
         }
51 51
 
52 52
         // get service availability and add it to the options-array.
53
-        $value['availabilities'] = autoptimizeOptionWrapper::get_option( 'autoptimize_service_availablity' );
53
+        $value['availabilities'] = autoptimizeOptionWrapper::get_option('autoptimize_service_availablity');
54 54
 
55
-        if ( empty( $value['availabilities'] ) ) {
56
-            $value['availabilities'] = autoptimizeUtils::check_service_availability( true );
55
+        if (empty($value['availabilities'])) {
56
+            $value['availabilities'] = autoptimizeUtils::check_service_availability(true);
57 57
         }
58 58
 
59 59
         return $value;
@@ -66,9 +66,9 @@  discard block
 block discarded – undo
66 66
         // and does not use/ request the availablity data (which could slow things down).
67 67
         static $imgopt_active = null;
68 68
 
69
-        if ( null === $imgopt_active ) {
70
-            $opts = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_settings', '' );
71
-            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'] ) {
69
+        if (null === $imgopt_active) {
70
+            $opts = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_settings', '');
71
+            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']) {
72 72
                 $imgopt_active = true;
73 73
             } else {
74 74
                 $imgopt_active = false;
@@ -88,7 +88,7 @@  discard block
 block discarded – undo
88 88
      */
89 89
     public static function instance()
90 90
     {
91
-        if ( null === self::$instance ) {
91
+        if (null === self::$instance) {
92 92
             self::$instance = new self();
93 93
         }
94 94
 
@@ -97,34 +97,34 @@  discard block
 block discarded – undo
97 97
 
98 98
     public function run()
99 99
     {
100
-        if ( is_admin() ) {
101
-            if ( is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) {
102
-                add_action( 'network_admin_menu', array( $this, 'imgopt_admin_menu' ) );
100
+        if (is_admin()) {
101
+            if (is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network()) {
102
+                add_action('network_admin_menu', array($this, 'imgopt_admin_menu'));
103 103
             } else {
104
-                add_action( 'admin_menu', array( $this, 'imgopt_admin_menu' ) );
104
+                add_action('admin_menu', array($this, 'imgopt_admin_menu'));
105 105
             }
106
-            add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_imgopt_tab' ), 9 );
106
+            add_filter('autoptimize_filter_settingsscreen_tabs', array($this, 'add_imgopt_tab'), 9);
107 107
         } else {
108
-            add_action( 'wp', array( $this, 'run_on_frontend' ) );
108
+            add_action('wp', array($this, 'run_on_frontend'));
109 109
         }
110 110
     }
111 111
 
112 112
     public function run_on_frontend() {
113
-        if ( ! $this->should_run() ) {
114
-            if ( $this->should_lazyload() ) {
113
+        if (!$this->should_run()) {
114
+            if ($this->should_lazyload()) {
115 115
                 add_filter(
116 116
                     'wp_lazy_loading_enabled',
117 117
                     '__return_false'
118 118
                 );
119 119
                 add_filter(
120 120
                     'autoptimize_html_after_minify',
121
-                    array( $this, 'filter_lazyload_images' ),
121
+                    array($this, 'filter_lazyload_images'),
122 122
                     10,
123 123
                     1
124 124
                 );
125 125
                 add_action(
126 126
                     'wp_footer',
127
-                    array( $this, 'add_lazyload_js_footer' ),
127
+                    array($this, 'add_lazyload_js_footer'),
128 128
                     10,
129 129
                     0
130 130
                 );
@@ -134,43 +134,43 @@  discard block
 block discarded – undo
134 134
 
135 135
         $active = false;
136 136
 
137
-        if ( apply_filters( 'autoptimize_filter_imgopt_do', true ) ) {
137
+        if (apply_filters('autoptimize_filter_imgopt_do', true)) {
138 138
             add_filter(
139 139
                 'autoptimize_html_after_minify',
140
-                array( $this, 'filter_optimize_images' ),
140
+                array($this, 'filter_optimize_images'),
141 141
                 10,
142 142
                 1
143 143
             );
144 144
             $active = true;
145 145
         }
146 146
 
147
-        if ( apply_filters( 'autoptimize_filter_imgopt_do_css', true ) ) {
147
+        if (apply_filters('autoptimize_filter_imgopt_do_css', true)) {
148 148
             add_filter(
149 149
                 'autoptimize_filter_base_replace_cdn',
150
-                array( $this, 'filter_optimize_css_images' ),
150
+                array($this, 'filter_optimize_css_images'),
151 151
                 10,
152 152
                 1
153 153
             );
154 154
             $active = true;
155 155
         }
156 156
 
157
-        if ( $active ) {
157
+        if ($active) {
158 158
             add_filter(
159 159
                 'autoptimize_extra_filter_tobepreconn',
160
-                array( $this, 'filter_preconnect_imgopt_url' ),
160
+                array($this, 'filter_preconnect_imgopt_url'),
161 161
                 10,
162 162
                 1
163 163
             );
164 164
         }
165 165
 
166
-        if ( $this->should_lazyload() ) {
166
+        if ($this->should_lazyload()) {
167 167
             add_filter(
168 168
                 'wp_lazy_loading_enabled',
169 169
                 '__return_false'
170 170
             );
171 171
             add_action(
172 172
                 'wp_footer',
173
-                array( $this, 'add_lazyload_js_footer' ),
173
+                array($this, 'add_lazyload_js_footer'),
174 174
                 10,
175 175
                 0
176 176
             );
@@ -185,12 +185,12 @@  discard block
 block discarded – undo
185 185
     protected function should_run()
186 186
     {
187 187
         $opts              = $this->options;
188
-        $service_not_down  = ( 'down' !== $opts['availabilities']['extra_imgopt']['status'] );
189
-        $not_launch_status = ( 'launch' !== $opts['availabilities']['extra_imgopt']['status'] );
188
+        $service_not_down  = ('down' !== $opts['availabilities']['extra_imgopt']['status']);
189
+        $not_launch_status = ('launch' !== $opts['availabilities']['extra_imgopt']['status']);
190 190
 
191 191
         $do_cdn      = true;
192 192
         $_userstatus = $this->get_imgopt_provider_userstatus();
193
-        if ( isset( $_userstatus['Status'] ) && ( -2 == $_userstatus['Status'] || -3 == $_userstatus['Status'] ) ) {
193
+        if (isset($_userstatus['Status']) && ( -2 == $_userstatus['Status'] || -3 == $_userstatus['Status'] )) {
194 194
             // don't even attempt to put images on CDN if heavily exceeded threshold or if site not reachable.
195 195
             $do_cdn = false;
196 196
         }
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
             $this->imgopt_active()
200 200
             && $do_cdn
201 201
             && $service_not_down
202
-            && ( $not_launch_status || $this->launch_ok() )
202
+            && ($not_launch_status || $this->launch_ok())
203 203
         ) {
204 204
             return true;
205 205
         }
@@ -210,13 +210,13 @@  discard block
 block discarded – undo
210 210
     {
211 211
         static $imgopt_host = null;
212 212
 
213
-        if ( null === $imgopt_host ) {
213
+        if (null === $imgopt_host) {
214 214
             $imgopt_host  = 'https://cdn.shortpixel.ai/';
215 215
             $avail_imgopt = $this->options['availabilities']['extra_imgopt'];
216
-            if ( ! empty( $avail_imgopt ) && array_key_exists( 'hosts', $avail_imgopt ) && is_array( $avail_imgopt['hosts'] ) ) {
217
-                $imgopt_host = array_rand( array_flip( $avail_imgopt['hosts'] ) );
216
+            if (!empty($avail_imgopt) && array_key_exists('hosts', $avail_imgopt) && is_array($avail_imgopt['hosts'])) {
217
+                $imgopt_host = array_rand(array_flip($avail_imgopt['hosts']));
218 218
             }
219
-            $imgopt_host = apply_filters( 'autoptimize_filter_imgopt_host', $imgopt_host );
219
+            $imgopt_host = apply_filters('autoptimize_filter_imgopt_host', $imgopt_host);
220 220
         }
221 221
 
222 222
         return $imgopt_host;
@@ -231,7 +231,7 @@  discard block
 block discarded – undo
231 231
 
232 232
     public static function get_service_url_suffix()
233 233
     {
234
-        $suffix = '/af/SPZURYE109483/' . AUTOPTIMIZE_SITE_DOMAIN;
234
+        $suffix = '/af/SPZURYE109483/'.AUTOPTIMIZE_SITE_DOMAIN;
235 235
 
236 236
         return $suffix;
237 237
     }
@@ -240,12 +240,12 @@  discard block
 block discarded – undo
240 240
     {
241 241
         static $quality = null;
242 242
 
243
-        if ( null === $quality ) {
243
+        if (null === $quality) {
244 244
             $q_array = $this->get_img_quality_array();
245 245
             $setting = $this->get_img_quality_setting();
246 246
             $quality = apply_filters(
247 247
                 'autoptimize_filter_imgopt_quality',
248
-                'q_' . $q_array[ $setting ]
248
+                'q_'.$q_array[$setting]
249 249
             );
250 250
         }
251 251
 
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
     {
257 257
         static $map = null;
258 258
 
259
-        if ( null === $map ) {
259
+        if (null === $map) {
260 260
             $map = array(
261 261
                 '1' => 'lossy',
262 262
                 '2' => 'glossy',
@@ -275,12 +275,12 @@  discard block
 block discarded – undo
275 275
     {
276 276
         static $q = null;
277 277
 
278
-        if ( null === $q ) {
279
-            if ( is_array( $this->options ) && array_key_exists( 'autoptimize_imgopt_select_field_2', $this->options ) ) {
278
+        if (null === $q) {
279
+            if (is_array($this->options) && array_key_exists('autoptimize_imgopt_select_field_2', $this->options)) {
280 280
                 $setting = $this->options['autoptimize_imgopt_select_field_2'];
281 281
             }
282 282
 
283
-            if ( ! isset( $setting ) || empty( $setting ) || ( '1' !== $setting && '3' !== $setting ) ) {
283
+            if (!isset($setting) || empty($setting) || ('1' !== $setting && '3' !== $setting)) {
284 284
                 // default image opt. value is 2 ("glossy").
285 285
                 $q = '2';
286 286
             } else {
@@ -291,10 +291,10 @@  discard block
 block discarded – undo
291 291
         return $q;
292 292
     }
293 293
 
294
-    public function filter_preconnect_imgopt_url( array $in )
294
+    public function filter_preconnect_imgopt_url(array $in)
295 295
     {
296
-        $url_parts = parse_url( $this->get_imgopt_base_url() );
297
-        $in[]      = $url_parts['scheme'] . '://' . $url_parts['host'];
296
+        $url_parts = parse_url($this->get_imgopt_base_url());
297
+        $in[]      = $url_parts['scheme'].'://'.$url_parts['host'];
298 298
 
299 299
         return $in;
300 300
     }
@@ -307,20 +307,20 @@  discard block
 block discarded – undo
307 307
      *
308 308
      * @return string
309 309
      */
310
-    private function normalize_img_url( $in )
310
+    private function normalize_img_url($in)
311 311
     {
312 312
         // Only parse the site url once.
313 313
         static $parsed_site_url = null;
314
-        if ( null === $parsed_site_url ) {
315
-            $parsed_site_url = parse_url( site_url() );
314
+        if (null === $parsed_site_url) {
315
+            $parsed_site_url = parse_url(site_url());
316 316
         }
317 317
 
318 318
         // get CDN domain once.
319 319
         static $cdn_domain = null;
320
-        if ( is_null( $cdn_domain ) ) {
320
+        if (is_null($cdn_domain)) {
321 321
             $cdn_url = $this->get_cdn_url();
322
-            if ( ! empty( $cdn_url ) ) {
323
-                $cdn_domain = parse_url( $cdn_url, PHP_URL_HOST );
322
+            if (!empty($cdn_url)) {
323
+                $cdn_domain = parse_url($cdn_url, PHP_URL_HOST);
324 324
             } else {
325 325
                 $cdn_domain = '';
326 326
             }
@@ -336,47 +336,47 @@  discard block
 block discarded – undo
336 336
          * identical string operations).
337 337
          */
338 338
         static $cache = null;
339
-        if ( null === $cache ) {
339
+        if (null === $cache) {
340 340
             $cache = array();
341 341
         }
342 342
 
343 343
         // Do the work on cache miss only.
344
-        if ( ! isset( $cache[ $in ] ) ) {
344
+        if (!isset($cache[$in])) {
345 345
             // Default to (the trimmed version of) what was given to us.
346
-            $result = trim( $in );
346
+            $result = trim($in);
347 347
 
348 348
             // Some silly plugins wrap background images in html-encoded quotes, so remove those from the img url.
349
-            $result = $this->fix_silly_bgimg_quotes( $result );
349
+            $result = $this->fix_silly_bgimg_quotes($result);
350 350
 
351
-            if ( autoptimizeUtils::is_protocol_relative( $result ) ) {
352
-                $result = $parsed_site_url['scheme'] . ':' . $result;
353
-            } elseif ( 0 === strpos( $result, '/' ) ) {
351
+            if (autoptimizeUtils::is_protocol_relative($result)) {
352
+                $result = $parsed_site_url['scheme'].':'.$result;
353
+            } elseif (0 === strpos($result, '/')) {
354 354
                 // Root-relative...
355
-                $result = $parsed_site_url['scheme'] . '://' . $parsed_site_url['host'] . $result;
356
-            } elseif ( ! empty( $cdn_domain ) && strpos( $result, $cdn_domain ) !== 0 ) {
357
-                $result = str_replace( $cdn_domain, $parsed_site_url['host'], $result );
355
+                $result = $parsed_site_url['scheme'].'://'.$parsed_site_url['host'].$result;
356
+            } elseif (!empty($cdn_domain) && strpos($result, $cdn_domain) !== 0) {
357
+                $result = str_replace($cdn_domain, $parsed_site_url['host'], $result);
358 358
             }
359 359
 
360 360
             // filter (default off) to remove QS from image URL's to avoid eating away optimization credits.
361
-            if ( apply_filters( 'autoptimize_filter_imgopt_no_querystring', false ) && strpos( $result, '?' ) !== false ) {
362
-                $result = strtok( $result, '?' );
361
+            if (apply_filters('autoptimize_filter_imgopt_no_querystring', false) && strpos($result, '?') !== false) {
362
+                $result = strtok($result, '?');
363 363
             }
364 364
 
365
-            $result = apply_filters( 'autoptimize_filter_imgopt_normalized_url', $result );
365
+            $result = apply_filters('autoptimize_filter_imgopt_normalized_url', $result);
366 366
 
367 367
             // Store in cache.
368
-            $cache[ $in ] = $result;
368
+            $cache[$in] = $result;
369 369
         }
370 370
 
371
-        return $cache[ $in ];
371
+        return $cache[$in];
372 372
     }
373 373
 
374
-    public function filter_optimize_css_images( $in )
374
+    public function filter_optimize_css_images($in)
375 375
     {
376
-        $in = $this->normalize_img_url( $in );
376
+        $in = $this->normalize_img_url($in);
377 377
 
378
-        if ( $this->can_optimize_image( $in ) ) {
379
-            return $this->build_imgopt_url( $in, '', '' );
378
+        if ($this->can_optimize_image($in)) {
379
+            return $this->build_imgopt_url($in, '', '');
380 380
         } else {
381 381
             return $in;
382 382
         }
@@ -386,53 +386,53 @@  discard block
 block discarded – undo
386 386
     {
387 387
         static $imgopt_base_url = null;
388 388
 
389
-        if ( null === $imgopt_base_url ) {
389
+        if (null === $imgopt_base_url) {
390 390
             $imgopt_host     = $this->get_imgopt_host();
391 391
             $quality         = $this->get_img_quality_string();
392
-            $ret_val         = apply_filters( 'autoptimize_filter_imgopt_wait', 'ret_img' ); // values: ret_wait, ret_img, ret_json, ret_blank.
393
-            $imgopt_base_url = $imgopt_host . 'client/' . $quality . ',' . $ret_val;
394
-            $imgopt_base_url = apply_filters( 'autoptimize_filter_imgopt_base_url', $imgopt_base_url );
392
+            $ret_val         = apply_filters('autoptimize_filter_imgopt_wait', 'ret_img'); // values: ret_wait, ret_img, ret_json, ret_blank.
393
+            $imgopt_base_url = $imgopt_host.'client/'.$quality.','.$ret_val;
394
+            $imgopt_base_url = apply_filters('autoptimize_filter_imgopt_base_url', $imgopt_base_url);
395 395
         }
396 396
 
397 397
         return $imgopt_base_url;
398 398
     }
399 399
 
400
-    private function can_optimize_image( $url, $tag = '', $testing = false )
400
+    private function can_optimize_image($url, $tag = '', $testing = false)
401 401
     {
402 402
         static $cdn_url      = null;
403 403
         static $nopti_images = null;
404 404
 
405
-        if ( null === $cdn_url ) {
405
+        if (null === $cdn_url) {
406 406
             $cdn_url = apply_filters(
407 407
                 'autoptimize_filter_base_cdnurl',
408
-                autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url', '' )
408
+                autoptimizeOptionWrapper::get_option('autoptimize_cdn_url', '')
409 409
             );
410 410
         }
411 411
 
412
-        if ( null === $nopti_images || $testing ) {
413
-            if ( is_array( $this->options ) && array_key_exists( 'autoptimize_imgopt_text_field_6', $this->options ) ) {
412
+        if (null === $nopti_images || $testing) {
413
+            if (is_array($this->options) && array_key_exists('autoptimize_imgopt_text_field_6', $this->options)) {
414 414
                 $nopti_images = $this->options['autoptimize_imgopt_text_field_6'];
415 415
             }
416
-            $nopti_images = apply_filters( 'autoptimize_filter_imgopt_noptimize', $nopti_images );
416
+            $nopti_images = apply_filters('autoptimize_filter_imgopt_noptimize', $nopti_images);
417 417
         }
418 418
 
419 419
         $site_host  = AUTOPTIMIZE_SITE_DOMAIN;
420
-        $url        = $this->normalize_img_url( $url );
421
-        $url_parsed = parse_url( $url );
420
+        $url        = $this->normalize_img_url($url);
421
+        $url_parsed = parse_url($url);
422 422
 
423
-        if ( array_key_exists( 'host', $url_parsed ) && $url_parsed['host'] !== $site_host && empty( $cdn_url ) ) {
423
+        if (array_key_exists('host', $url_parsed) && $url_parsed['host'] !== $site_host && empty($cdn_url)) {
424 424
             return false;
425
-        } elseif ( ! empty( $cdn_url ) && strpos( $url, $cdn_url ) === false && array_key_exists( 'host', $url_parsed ) && $url_parsed['host'] !== $site_host ) {
425
+        } elseif (!empty($cdn_url) && strpos($url, $cdn_url) === false && array_key_exists('host', $url_parsed) && $url_parsed['host'] !== $site_host) {
426 426
             return false;
427
-        } elseif ( strpos( $url, '.php' ) !== false ) {
427
+        } elseif (strpos($url, '.php') !== false) {
428 428
             return false;
429
-        } elseif ( str_ireplace( array( '.png', '.gif', '.jpg', '.jpeg', '.webp', '.avif' ), '', $url_parsed['path'] ) === $url_parsed['path'] ) {
429
+        } elseif (str_ireplace(array('.png', '.gif', '.jpg', '.jpeg', '.webp', '.avif'), '', $url_parsed['path']) === $url_parsed['path']) {
430 430
             // fixme: better check against end of string.
431 431
             return false;
432
-        } elseif ( ! empty( $nopti_images ) ) {
433
-            $nopti_images_array = array_filter( array_map( 'trim', explode( ',', $nopti_images ) ) );
434
-            foreach ( $nopti_images_array as $nopti_image ) {
435
-                if ( strpos( $url, $nopti_image ) !== false || ( ( '' !== $tag && strpos( $tag, $nopti_image ) !== false ) ) ) {
432
+        } elseif (!empty($nopti_images)) {
433
+            $nopti_images_array = array_filter(array_map('trim', explode(',', $nopti_images)));
434
+            foreach ($nopti_images_array as $nopti_image) {
435
+                if (strpos($url, $nopti_image) !== false || (('' !== $tag && strpos($tag, $nopti_image) !== false))) {
436 436
                     return false;
437 437
                 }
438 438
             }
@@ -440,13 +440,13 @@  discard block
 block discarded – undo
440 440
         return true;
441 441
     }
442 442
 
443
-    private function build_imgopt_url( $orig_url, $width = 0, $height = 0 )
443
+    private function build_imgopt_url($orig_url, $width = 0, $height = 0)
444 444
     {
445 445
         // sanitize width and height.
446
-        if ( strpos( $width, '%' ) !== false ) {
446
+        if (strpos($width, '%') !== false) {
447 447
             $width = 0;
448 448
         }
449
-        if ( strpos( $height, '%' ) !== false ) {
449
+        if (strpos($height, '%') !== false) {
450 450
             $height = 0;
451 451
         }
452 452
         $width  = (int) $width;
@@ -460,52 +460,52 @@  discard block
 block discarded – undo
460 460
         );
461 461
 
462 462
         // If filter modified the url, return that.
463
-        if ( $filtered_url !== $orig_url ) {
463
+        if ($filtered_url !== $orig_url) {
464 464
             return $filtered_url;
465 465
         }
466 466
 
467
-        $normalized_url = $this->normalize_img_url( $orig_url );
467
+        $normalized_url = $this->normalize_img_url($orig_url);
468 468
 
469 469
         // if the URL is ascii we check if we have a real URL with filter_var (which only works on ascii url's) and if not a real URL we return the original one.
470
-        if ( apply_filters( 'autoptimize_filter_imgopt_check_normalized_url', true ) && ! preg_match( '/[^\x20-\x7e]/', $normalized_url ) && false === filter_var( $normalized_url, FILTER_VALIDATE_URL ) ) {
470
+        if (apply_filters('autoptimize_filter_imgopt_check_normalized_url', true) && !preg_match('/[^\x20-\x7e]/', $normalized_url) && false === filter_var($normalized_url, FILTER_VALIDATE_URL)) {
471 471
             return $orig_url;
472 472
         }
473 473
 
474 474
         $imgopt_base_url = $this->get_imgopt_base_url();
475 475
         $imgopt_size     = '';
476 476
 
477
-        if ( $width && 0 !== $width ) {
478
-            $imgopt_size = ',w_' . $width;
477
+        if ($width && 0 !== $width) {
478
+            $imgopt_size = ',w_'.$width;
479 479
         }
480 480
 
481
-        if ( $height && 0 !== $height ) {
482
-            $imgopt_size .= ',h_' . $height;
481
+        if ($height && 0 !== $height) {
482
+            $imgopt_size .= ',h_'.$height;
483 483
         }
484 484
 
485
-        $url = $imgopt_base_url . $imgopt_size . '/' . $normalized_url;
485
+        $url = $imgopt_base_url.$imgopt_size.'/'.$normalized_url;
486 486
 
487 487
         return $url;
488 488
     }
489 489
 
490
-    public function replace_data_thumbs( $matches )
490
+    public function replace_data_thumbs($matches)
491 491
     {
492
-        return $this->replace_img_callback( $matches, 150, 150 );
492
+        return $this->replace_img_callback($matches, 150, 150);
493 493
     }
494 494
 
495
-    public function replace_img_callback( $matches, $width = 0, $height = 0 )
495
+    public function replace_img_callback($matches, $width = 0, $height = 0)
496 496
     {
497
-        $_normalized_img_url = $this->normalize_img_url( $matches[1] );
498
-        if ( $this->can_optimize_image( $matches[1], $matches[0] ) ) {
499
-            return str_replace( $matches[1], $this->build_imgopt_url( $_normalized_img_url, $width, $height ), $matches[0] );
497
+        $_normalized_img_url = $this->normalize_img_url($matches[1]);
498
+        if ($this->can_optimize_image($matches[1], $matches[0])) {
499
+            return str_replace($matches[1], $this->build_imgopt_url($_normalized_img_url, $width, $height), $matches[0]);
500 500
         } else {
501 501
             return $matches[0];
502 502
         }
503 503
     }
504 504
 
505
-    public function replace_icon_callback( $matches )
505
+    public function replace_icon_callback($matches)
506 506
     {
507
-        if ( array_key_exists( '2', $matches ) ) {
508
-            $sizes  = explode( 'x', $matches[2] );
507
+        if (array_key_exists('2', $matches)) {
508
+            $sizes  = explode('x', $matches[2]);
509 509
             $width  = $sizes[0];
510 510
             $height = $sizes[1];
511 511
         } else {
@@ -514,14 +514,14 @@  discard block
 block discarded – undo
514 514
         }
515 515
 
516 516
         // make sure we're not trying to optimize a *.ico file
517
-        if ( strpos( $matches[1], '.ico' ) === false ) {
518
-            return $this->replace_img_callback( $matches, $width, $height );
517
+        if (strpos($matches[1], '.ico') === false) {
518
+            return $this->replace_img_callback($matches, $width, $height);
519 519
         } else {
520 520
             return $matches[0];
521 521
         }
522 522
     }
523 523
 
524
-    public function filter_optimize_images( $in, $testing = false )
524
+    public function filter_optimize_images($in, $testing = false)
525 525
     {
526 526
         /*
527 527
          * potential future functional improvements:
@@ -531,7 +531,7 @@  discard block
 block discarded – undo
531 531
         $to_replace = array();
532 532
 
533 533
         // hide noscript tags to avoid nesting noscript tags (as lazyloaded images add noscript).
534
-        if ( $this->should_lazyload() ) {
534
+        if ($this->should_lazyload()) {
535 535
             $in = autoptimizeBase::replace_contents_with_marker_if_exists(
536 536
                 'SCRIPT',
537 537
                 '<script',
@@ -541,165 +541,165 @@  discard block
 block discarded – undo
541 541
         }
542 542
 
543 543
         // extract img tags.
544
-        if ( preg_match_all( '#<img[^>]*src[^>]*>#Usmi', $in, $matches ) ) {
545
-            foreach ( $matches[0] as $tag ) {
546
-                $tag = apply_filters( 'autoptimize_filter_imgopt_tag_preopt' , $tag );
544
+        if (preg_match_all('#<img[^>]*src[^>]*>#Usmi', $in, $matches)) {
545
+            foreach ($matches[0] as $tag) {
546
+                $tag = apply_filters('autoptimize_filter_imgopt_tag_preopt', $tag);
547 547
 
548 548
                 $orig_tag = $tag;
549 549
                 $imgopt_w = '';
550 550
                 $imgopt_h = '';
551 551
 
552 552
                 // first do (data-)srcsets.
553
-                if ( preg_match_all( '#srcset=("|\')(.*)("|\')#Usmi', $tag, $allsrcsets, PREG_SET_ORDER ) ) {
554
-                    foreach ( $allsrcsets as $srcset ) {
553
+                if (preg_match_all('#srcset=("|\')(.*)("|\')#Usmi', $tag, $allsrcsets, PREG_SET_ORDER)) {
554
+                    foreach ($allsrcsets as $srcset) {
555 555
                         $srcset      = $srcset[2];
556 556
                         $orig_srcset = $srcset;
557
-                        $srcsets     = explode( ',', $srcset );
558
-                        foreach ( $srcsets as $indiv_srcset ) {
559
-                            $indiv_srcset_parts = explode( ' ', trim( $indiv_srcset ) );
560
-                            if ( isset( $indiv_srcset_parts[1] ) && rtrim( $indiv_srcset_parts[1], 'w' ) !== $indiv_srcset_parts[1] ) {
561
-                                $imgopt_w = rtrim( $indiv_srcset_parts[1], 'w' );
557
+                        $srcsets     = explode(',', $srcset);
558
+                        foreach ($srcsets as $indiv_srcset) {
559
+                            $indiv_srcset_parts = explode(' ', trim($indiv_srcset));
560
+                            if (isset($indiv_srcset_parts[1]) && rtrim($indiv_srcset_parts[1], 'w') !== $indiv_srcset_parts[1]) {
561
+                                $imgopt_w = rtrim($indiv_srcset_parts[1], 'w');
562 562
                             }
563
-                            if ( $this->can_optimize_image( $indiv_srcset_parts[0], $tag, $testing ) ) {
564
-                                $imgopt_url = $this->build_imgopt_url( $indiv_srcset_parts[0], $imgopt_w, '' );
565
-                                $srcset     = str_replace( $indiv_srcset_parts[0], $imgopt_url, $srcset );
563
+                            if ($this->can_optimize_image($indiv_srcset_parts[0], $tag, $testing)) {
564
+                                $imgopt_url = $this->build_imgopt_url($indiv_srcset_parts[0], $imgopt_w, '');
565
+                                $srcset     = str_replace($indiv_srcset_parts[0], $imgopt_url, $srcset);
566 566
                             }
567 567
                         }
568
-                        $tag = str_replace( $orig_srcset, $srcset, $tag );
568
+                        $tag = str_replace($orig_srcset, $srcset, $tag);
569 569
                     }
570 570
                 }
571 571
 
572 572
                 // proceed with img src.
573 573
                 // get width and height and add to $imgopt_size.
574
-                $_get_size = $this->get_size_from_tag( $tag );
574
+                $_get_size = $this->get_size_from_tag($tag);
575 575
                 $imgopt_w  = $_get_size['width'];
576 576
                 $imgopt_h  = $_get_size['height'];
577 577
 
578 578
                 // then start replacing images src.
579
-                if ( preg_match_all( '#src=(?:"|\')(?!data)(.*)(?:"|\')#Usmi', $tag, $urls, PREG_SET_ORDER ) ) {
580
-                    foreach ( $urls as $url ) {
579
+                if (preg_match_all('#src=(?:"|\')(?!data)(.*)(?:"|\')#Usmi', $tag, $urls, PREG_SET_ORDER)) {
580
+                    foreach ($urls as $url) {
581 581
                         $full_src_orig = $url[0];
582 582
                         $url           = $url[1];
583
-                        if ( $this->can_optimize_image( $url, $tag, $testing ) ) {
584
-                            $imgopt_url      = $this->build_imgopt_url( $url, $imgopt_w, $imgopt_h );
585
-                            $full_imgopt_src = str_replace( $url, $imgopt_url, $full_src_orig );
586
-                            $tag             = str_replace( $full_src_orig, $full_imgopt_src, $tag );
583
+                        if ($this->can_optimize_image($url, $tag, $testing)) {
584
+                            $imgopt_url      = $this->build_imgopt_url($url, $imgopt_w, $imgopt_h);
585
+                            $full_imgopt_src = str_replace($url, $imgopt_url, $full_src_orig);
586
+                            $tag             = str_replace($full_src_orig, $full_imgopt_src, $tag);
587 587
                         }
588 588
                     }
589 589
                 }
590 590
 
591 591
                 // do lazyload stuff.
592
-                if ( $this->should_lazyload( $in ) && ! empty( $url ) ) {
592
+                if ($this->should_lazyload($in) && !empty($url)) {
593 593
                     // first do lpiq placeholder logic.
594
-                    if ( strpos( $url, $this->get_imgopt_host() ) === 0 ) {
594
+                    if (strpos($url, $this->get_imgopt_host()) === 0) {
595 595
                         // if all img src have been replaced during srcset, we have to extract the
596 596
                         // origin url from the imgopt one to be able to set a lqip placeholder.
597
-                        $_url = substr( $url, strpos( $url, '/http' ) + 1 );
597
+                        $_url = substr($url, strpos($url, '/http') + 1);
598 598
                     } else {
599 599
                         $_url = $url;
600 600
                     }
601 601
 
602
-                    $_url = $this->normalize_img_url( $_url );
602
+                    $_url = $this->normalize_img_url($_url);
603 603
 
604 604
                     $placeholder = '';
605
-                    if ( $this->can_optimize_image( $_url, $tag ) && apply_filters( 'autoptimize_filter_imgopt_lazyload_dolqip', true, $_url ) ) {
605
+                    if ($this->can_optimize_image($_url, $tag) && apply_filters('autoptimize_filter_imgopt_lazyload_dolqip', true, $_url)) {
606 606
                         $lqip_w = '';
607 607
                         $lqip_h = '';
608
-                        if ( isset( $imgopt_w ) && ! empty( $imgopt_w ) ) {
609
-                            $lqip_w = ',w_' . $imgopt_w;
608
+                        if (isset($imgopt_w) && !empty($imgopt_w)) {
609
+                            $lqip_w = ',w_'.$imgopt_w;
610 610
                         }
611
-                        if ( isset( $imgopt_h ) && ! empty( $imgopt_h ) ) {
612
-                            $lqip_h = ',h_' . $imgopt_h;
611
+                        if (isset($imgopt_h) && !empty($imgopt_h)) {
612
+                            $lqip_h = ',h_'.$imgopt_h;
613 613
                         }
614
-                        $placeholder = $this->get_imgopt_host() . 'client/q_lqip,ret_wait' . $lqip_w . $lqip_h . '/' . $_url;
614
+                        $placeholder = $this->get_imgopt_host().'client/q_lqip,ret_wait'.$lqip_w.$lqip_h.'/'.$_url;
615 615
                     }
616 616
                     // then call add_lazyload-function with lpiq placeholder if set.
617
-                    $tag = $this->add_lazyload( $tag, $placeholder );
617
+                    $tag = $this->add_lazyload($tag, $placeholder);
618 618
                 }
619 619
 
620
-                $tag = apply_filters( 'autoptimize_filter_imgopt_tag_postopt' , $tag );
620
+                $tag = apply_filters('autoptimize_filter_imgopt_tag_postopt', $tag);
621 621
 
622 622
                 // and add tag to array for later replacement.
623
-                if ( $tag !== $orig_tag ) {
624
-                    $to_replace[ $orig_tag ] = $tag;
623
+                if ($tag !== $orig_tag) {
624
+                    $to_replace[$orig_tag] = $tag;
625 625
                 }
626 626
             }
627 627
         }
628 628
 
629 629
         // and replace all.
630
-        $out = str_replace( array_keys( $to_replace ), array_values( $to_replace ), $in );
630
+        $out = str_replace(array_keys($to_replace), array_values($to_replace), $in);
631 631
 
632 632
         // img thumbnails in e.g. woocommerce.
633
-        if ( strpos( $out, 'data-thumb' ) !== false && apply_filters( 'autoptimize_filter_imgopt_datathumbs', true ) ) {
633
+        if (strpos($out, 'data-thumb') !== false && apply_filters('autoptimize_filter_imgopt_datathumbs', true)) {
634 634
             $out = preg_replace_callback(
635 635
                 '/\<div(?:[^>]?)\sdata-thumb\=(?:\"|\')(.+?)(?:\"|\')(?:[^>]*)?\>/s',
636
-                array( $this, 'replace_data_thumbs' ),
636
+                array($this, 'replace_data_thumbs'),
637 637
                 $out
638 638
             );
639 639
         }
640 640
 
641 641
         // background-image in inline style.
642
-        if ( strpos( $out, 'background-image:' ) !== false && apply_filters( 'autoptimize_filter_imgopt_backgroundimages', true ) ) {
642
+        if (strpos($out, 'background-image:') !== false && apply_filters('autoptimize_filter_imgopt_backgroundimages', true)) {
643 643
             $out = preg_replace_callback(
644 644
                 '/style=(?:"|\')[^<>]*?background-image:\s?url\((?:"|\')?([^"\')]*)(?:"|\')?\)/',
645
-                array( $this, 'replace_img_callback' ),
645
+                array($this, 'replace_img_callback'),
646 646
                 $out
647 647
             );
648 648
         }
649 649
 
650 650
         // act on icon links.
651
-        if ( ( strpos( $out, '<link rel="icon"' ) !== false || ( strpos( $out, "<link rel='icon'" ) !== false ) ) && apply_filters( 'autoptimize_filter_imgopt_linkicon', true ) ) {
651
+        if ((strpos($out, '<link rel="icon"') !== false || (strpos($out, "<link rel='icon'") !== false)) && apply_filters('autoptimize_filter_imgopt_linkicon', true)) {
652 652
             $out = preg_replace_callback(
653 653
                 '/<link\srel=(?:"|\')(?:apple-touch-)?icon(?:"|\').*\shref=(?:"|\')(.*)(?:"|\')(?:\ssizes=(?:"|\')(\d*x\d*)(?:"|\'))?\s\/>/Um',
654
-                array( $this, 'replace_icon_callback' ),
654
+                array($this, 'replace_icon_callback'),
655 655
                 $out
656 656
             );
657 657
         }
658 658
 
659 659
         // lazyload: restore noscript tags + lazyload picture source tags and bgimage.
660
-        if ( $this->should_lazyload() ) {
660
+        if ($this->should_lazyload()) {
661 661
             $out = autoptimizeBase::restore_marked_content(
662 662
                 'SCRIPT',
663 663
                 $out
664 664
             );
665 665
 
666
-            $out = $this->process_picture_tag( $out, true, true );
667
-            $out = $this->process_bgimage( $out );
666
+            $out = $this->process_picture_tag($out, true, true);
667
+            $out = $this->process_bgimage($out);
668 668
         } else {
669
-            $out = $this->process_picture_tag( $out, true, false );
669
+            $out = $this->process_picture_tag($out, true, false);
670 670
         }
671 671
 
672 672
         return $out;
673 673
     }
674 674
 
675
-    public function get_size_from_tag( $tag ) {
675
+    public function get_size_from_tag($tag) {
676 676
         // reusable function to extract widht and height from an image tag
677 677
         // enforcing a filterable maximum width and height (default 4999X4999).
678 678
         $width  = '';
679 679
         $height = '';
680 680
 
681
-        if ( preg_match( '#width=("|\')(.*)("|\')#Usmi', $tag, $_width ) ) {
682
-            if ( strpos( $_width[2], '%' ) === false ) {
681
+        if (preg_match('#width=("|\')(.*)("|\')#Usmi', $tag, $_width)) {
682
+            if (strpos($_width[2], '%') === false) {
683 683
                 $width = (int) $_width[2];
684 684
             }
685 685
         }
686
-        if ( preg_match( '#height=("|\')(.*)("|\')#Usmi', $tag, $_height ) ) {
687
-            if ( strpos( $_height[2], '%' ) === false ) {
686
+        if (preg_match('#height=("|\')(.*)("|\')#Usmi', $tag, $_height)) {
687
+            if (strpos($_height[2], '%') === false) {
688 688
                 $height = (int) $_height[2];
689 689
             }
690 690
         }
691 691
 
692 692
         // check for and enforce (filterable) max sizes.
693
-        $_max_width = apply_filters( 'autoptimize_filter_imgopt_max_width', 4999 );
694
-        if ( $width > $_max_width ) {
693
+        $_max_width = apply_filters('autoptimize_filter_imgopt_max_width', 4999);
694
+        if ($width > $_max_width) {
695 695
             $_width = $_max_width;
696
-            $height = $_width / $width * $height;
696
+            $height = $_width/$width*$height;
697 697
             $width  = $_width;
698 698
         }
699
-        $_max_height = apply_filters( 'autoptimize_filter_imgopt_max_height', 4999 );
700
-        if ( $height > $_max_height ) {
699
+        $_max_height = apply_filters('autoptimize_filter_imgopt_max_height', 4999);
700
+        if ($height > $_max_height) {
701 701
             $_height = $_max_height;
702
-            $width   = $_height / $height * $width;
702
+            $width   = $_height/$height*$width;
703 703
             $height  = $_height;
704 704
         }
705 705
 
@@ -718,26 +718,26 @@  discard block
 block discarded – undo
718 718
         return $self->should_lazyload();
719 719
     }
720 720
 
721
-    public function should_lazyload( $context = '' ) {
722
-        if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_3'] ) && false === $this->check_nolazy() ) {
721
+    public function should_lazyload($context = '') {
722
+        if (!empty($this->options['autoptimize_imgopt_checkbox_field_3']) && false === $this->check_nolazy()) {
723 723
             $lazyload_return = true;
724 724
         } else {
725 725
             $lazyload_return = false;
726 726
         }
727
-        $lazyload_return = apply_filters( 'autoptimize_filter_imgopt_should_lazyload', $lazyload_return, $context );
727
+        $lazyload_return = apply_filters('autoptimize_filter_imgopt_should_lazyload', $lazyload_return, $context);
728 728
 
729 729
         return $lazyload_return;
730 730
     }
731 731
 
732 732
     public function check_nolazy() {
733
-        if ( array_key_exists( 'ao_nolazy', $_GET ) && '1' === $_GET['ao_nolazy'] ) {
733
+        if (array_key_exists('ao_nolazy', $_GET) && '1' === $_GET['ao_nolazy']) {
734 734
             return true;
735 735
         } else {
736 736
             return false;
737 737
         }
738 738
     }
739 739
 
740
-    public function filter_lazyload_images( $in )
740
+    public function filter_lazyload_images($in)
741 741
     {
742 742
         // only used is image optimization is NOT active but lazyload is.
743 743
         $to_replace = array();
@@ -751,20 +751,20 @@  discard block
 block discarded – undo
751 751
         );
752 752
 
753 753
         // extract img tags and add lazyload attribs.
754
-        if ( preg_match_all( '#<img[^>]*src[^>]*>#Usmi', $out, $matches ) ) {
755
-            foreach ( $matches[0] as $tag ) {
756
-                if ( $this->should_lazyload( $out ) ) {
757
-                    $to_replace[ $tag ] = $this->add_lazyload( $tag );
754
+        if (preg_match_all('#<img[^>]*src[^>]*>#Usmi', $out, $matches)) {
755
+            foreach ($matches[0] as $tag) {
756
+                if ($this->should_lazyload($out)) {
757
+                    $to_replace[$tag] = $this->add_lazyload($tag);
758 758
                 }
759 759
             }
760
-            $out = str_replace( array_keys( $to_replace ), array_values( $to_replace ), $out );
760
+            $out = str_replace(array_keys($to_replace), array_values($to_replace), $out);
761 761
         }
762 762
 
763 763
         // and also lazyload picture tag.
764
-        $out = $this->process_picture_tag( $out, false, true );
764
+        $out = $this->process_picture_tag($out, false, true);
765 765
 
766 766
         // and inline style blocks with background-image.
767
-        $out = $this->process_bgimage( $out );
767
+        $out = $this->process_bgimage($out);
768 768
 
769 769
         // restore noscript tags.
770 770
         $out = autoptimizeBase::restore_marked_content(
@@ -775,92 +775,92 @@  discard block
 block discarded – undo
775 775
         return $out;
776 776
     }
777 777
 
778
-    public function add_lazyload( $tag, $placeholder = '' ) {
778
+    public function add_lazyload($tag, $placeholder = '') {
779 779
         // adds actual lazyload-attributes to an image node.
780 780
         $this->lazyload_counter++;
781 781
 
782 782
         $_lazyload_from_nth = '';
783
-        if ( array_key_exists( 'autoptimize_imgopt_number_field_7', $this->options ) ) {
783
+        if (array_key_exists('autoptimize_imgopt_number_field_7', $this->options)) {
784 784
             $_lazyload_from_nth = $this->options['autoptimize_imgopt_number_field_7'];
785 785
         }
786
-        $_lazyload_from_nth = apply_filters( 'autoptimize_filter_imgopt_lazyload_from_nth', $_lazyload_from_nth );
786
+        $_lazyload_from_nth = apply_filters('autoptimize_filter_imgopt_lazyload_from_nth', $_lazyload_from_nth);
787 787
 
788
-        if ( str_ireplace( $this->get_lazyload_exclusions(), '', $tag ) === $tag && $this->lazyload_counter >= $_lazyload_from_nth ) {
789
-            $tag = $this->maybe_fix_missing_quotes( $tag );
788
+        if (str_ireplace($this->get_lazyload_exclusions(), '', $tag) === $tag && $this->lazyload_counter >= $_lazyload_from_nth) {
789
+            $tag = $this->maybe_fix_missing_quotes($tag);
790 790
 
791 791
             // store original tag for use in noscript version.
792
-            $noscript_tag = '<noscript>' . autoptimizeUtils::remove_id_from_node( $tag ) . '</noscript>';
792
+            $noscript_tag = '<noscript>'.autoptimizeUtils::remove_id_from_node($tag).'</noscript>';
793 793
 
794
-            $lazyload_class = apply_filters( 'autoptimize_filter_imgopt_lazyload_class', 'lazyload' );
794
+            $lazyload_class = apply_filters('autoptimize_filter_imgopt_lazyload_class', 'lazyload');
795 795
 
796 796
             // insert lazyload class.
797
-            $tag = $this->inject_classes_in_tag( $tag, "$lazyload_class " );
797
+            $tag = $this->inject_classes_in_tag($tag, "$lazyload_class ");
798 798
 
799
-            if ( ! $placeholder || empty( $placeholder ) ) {
799
+            if (!$placeholder || empty($placeholder)) {
800 800
                 // get image width & heigth for placeholder fun (and to prevent content reflow).
801
-                $_get_size = $this->get_size_from_tag( $tag );
801
+                $_get_size = $this->get_size_from_tag($tag);
802 802
                 $width     = $_get_size['width'];
803 803
                 $height    = $_get_size['height'];
804
-                if ( false === $width || empty( $width ) ) {
804
+                if (false === $width || empty($width)) {
805 805
                     $width = 210; // default width for SVG placeholder.
806 806
                 }
807
-                if ( false === $height || empty( $height ) ) {
808
-                    $height = $width / 3 * 2; // if no height, base it on width using the 3/2 aspect ratio.
807
+                if (false === $height || empty($height)) {
808
+                    $height = $width/3*2; // if no height, base it on width using the 3/2 aspect ratio.
809 809
                 }
810 810
 
811 811
                 // insert the actual lazyload stuff.
812 812
                 // see https://css-tricks.com/preventing-content-reflow-from-lazy-loaded-images/ for great read on why we're using empty svg's.
813
-                $placeholder = apply_filters( 'autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder( $width, $height ) );
813
+                $placeholder = apply_filters('autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder($width, $height));
814 814
             }
815 815
 
816
-            $tag = preg_replace( '/(\s)src=/', ' src=\'' . $placeholder . '\' data-src=', $tag );
817
-            $tag = preg_replace( '/(\s)srcset=/', ' data-srcset=', $tag );
816
+            $tag = preg_replace('/(\s)src=/', ' src=\''.$placeholder.'\' data-src=', $tag);
817
+            $tag = preg_replace('/(\s)srcset=/', ' data-srcset=', $tag);
818 818
 
819 819
             // move sizes to data-sizes unless filter says no.
820
-            if ( apply_filters( 'autoptimize_filter_imgopt_lazyload_move_sizes', true ) ) {
821
-                $tag = str_replace( ' sizes=', ' data-sizes=', $tag );
820
+            if (apply_filters('autoptimize_filter_imgopt_lazyload_move_sizes', true)) {
821
+                $tag = str_replace(' sizes=', ' data-sizes=', $tag);
822 822
             }
823 823
 
824 824
             // add the noscript-tag from earlier.
825
-            $tag = $noscript_tag . $tag;
826
-            $tag = apply_filters( 'autoptimize_filter_imgopt_lazyloaded_img', $tag );
825
+            $tag = $noscript_tag.$tag;
826
+            $tag = apply_filters('autoptimize_filter_imgopt_lazyloaded_img', $tag);
827 827
         }
828 828
 
829 829
         return $tag;
830 830
     }
831 831
 
832 832
     public function add_lazyload_js_footer() {
833
-        if ( false === autoptimizeMain::should_buffer() ) {
833
+        if (false === autoptimizeMain::should_buffer()) {
834 834
             return;
835 835
         }
836 836
 
837 837
         // The JS will by default be excluded form autoptimization but this can be changed with a filter.
838 838
         $noptimize_flag = '';
839
-        if ( apply_filters( 'autoptimize_filter_imgopt_lazyload_js_noptimize', true ) ) {
839
+        if (apply_filters('autoptimize_filter_imgopt_lazyload_js_noptimize', true)) {
840 840
             $noptimize_flag = ' data-noptimize="1"';
841 841
         }
842 842
 
843
-        $lazysizes_js = plugins_url( 'external/js/lazysizes.min.js?ao_version=' . AUTOPTIMIZE_PLUGIN_VERSION, __FILE__ );
843
+        $lazysizes_js = plugins_url('external/js/lazysizes.min.js?ao_version='.AUTOPTIMIZE_PLUGIN_VERSION, __FILE__);
844 844
         $cdn_url      = $this->get_cdn_url();
845
-        if ( ! empty( $cdn_url ) ) {
846
-            $cdn_url      = rtrim( $cdn_url, '/' );
847
-            $lazysizes_js = str_replace( AUTOPTIMIZE_WP_SITE_URL, $cdn_url, $lazysizes_js );
845
+        if (!empty($cdn_url)) {
846
+            $cdn_url      = rtrim($cdn_url, '/');
847
+            $lazysizes_js = str_replace(AUTOPTIMIZE_WP_SITE_URL, $cdn_url, $lazysizes_js);
848 848
         }
849 849
 
850 850
         $type_js = '';
851
-        if ( apply_filters( 'autoptimize_filter_cssjs_addtype', false ) ) {
851
+        if (apply_filters('autoptimize_filter_cssjs_addtype', false)) {
852 852
             $type_js = ' type="text/javascript"';
853 853
         }
854 854
 
855 855
         // Adds lazyload CSS & JS to footer, using echo because wp_enqueue_script seems not to support pushing attributes (async).
856
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_cssoutput', '<noscript><style>.lazyload{display:none;}</style></noscript>' );
857
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_jsconfig', '<script' . $type_js . $noptimize_flag . '>window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script>' );
858
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_js', '<script async' . $type_js . $noptimize_flag . ' src=\'' . $lazysizes_js . '\'></script>' );
856
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_cssoutput', '<noscript><style>.lazyload{display:none;}</style></noscript>');
857
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_jsconfig', '<script'.$type_js.$noptimize_flag.'>window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script>');
858
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_js', '<script async'.$type_js.$noptimize_flag.' src=\''.$lazysizes_js.'\'></script>');
859 859
 
860 860
         // And add webp detection and loading JS.
861
-        if ( $this->should_ngimg() ) {
861
+        if ($this->should_ngimg()) {
862 862
             // Add AVIF code, can be disabled for now to only do webp.
863
-            if ( apply_filters( 'autoptimize_filter_imgopt_do_avif', true ) ) {
863
+            if (apply_filters('autoptimize_filter_imgopt_do_avif', true)) {
864 864
                 $_ngimg_detect = 'function c_img(a,b){src="avif"==b?"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABoAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACJtZGF0EgAKCBgADsgQEAwgMgwf8AAAWAAAAACvJ+o=":"data:image/webp;base64,UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==";var c=new Image;c.onload=function(){var d=0<c.width&&0<c.height;a(d,b)},c.onerror=function(){a(!1,b)},c.src=src}function s_img(a,b){w=window,"avif"==b?!1==a?c_img(s_img,"webp"):w.ngImg="avif":!1==a?w.ngImg=!1:w.ngImg="webp"}c_img(s_img,"avif");';
865 865
                 $_ngimg_load   = 'document.addEventListener("lazybeforeunveil",function({target:a}){window.ngImg&&["data-src","data-srcset"].forEach(function(b){attr=a.getAttribute(b),null!==attr&&-1==attr.indexOf("/client/to_")&&a.setAttribute(b,attr.replace(/\/client\//,"/client/to_"+window.ngImg+","))})});';
866 866
             } else {
@@ -868,8 +868,8 @@  discard block
 block discarded – undo
868 868
                 $_ngimg_load   = "document.addEventListener('lazybeforeunveil',function({target:b}){window.supportsWebP&&['data-src','data-srcset'].forEach(function(c){attr=b.getAttribute(c),null!==attr&&-1==attr.indexOf('/client/to_webp')&&b.setAttribute(c,attr.replace(/\/client\//,'/client/to_webp,'))})});";
869 869
             }
870 870
             // Keeping autoptimize_filter_imgopt_webp_js filter for now, but it is deprecated as not only for webp any more.
871
-            $_ngimg_output = apply_filters( 'autoptimize_filter_imgopt_webp_js', '<script' . $type_js . $noptimize_flag . '>' . $_ngimg_detect . $_ngimg_load . '</script>' );
872
-            echo apply_filters( 'autoptimize_filter_imgopt_ngimg_js', $_ngimg_output );
871
+            $_ngimg_output = apply_filters('autoptimize_filter_imgopt_webp_js', '<script'.$type_js.$noptimize_flag.'>'.$_ngimg_detect.$_ngimg_load.'</script>');
872
+            echo apply_filters('autoptimize_filter_imgopt_ngimg_js', $_ngimg_output);
873 873
         }
874 874
     }
875 875
 
@@ -877,10 +877,10 @@  discard block
 block discarded – undo
877 877
         // getting CDN url here to avoid having to make bigger changes to autoptimizeBase.
878 878
         static $cdn_url = null;
879 879
 
880
-        if ( null === $cdn_url ) {
881
-            $cdn_url = autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url', '' );
882
-            $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed( $cdn_url );
883
-            $cdn_url = apply_filters( 'autoptimize_filter_base_cdnurl', $cdn_url );
880
+        if (null === $cdn_url) {
881
+            $cdn_url = autoptimizeOptionWrapper::get_option('autoptimize_cdn_url', '');
882
+            $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed($cdn_url);
883
+            $cdn_url = apply_filters('autoptimize_filter_base_cdnurl', $cdn_url);
884 884
         }
885 885
 
886 886
         return $cdn_url;
@@ -890,47 +890,47 @@  discard block
 block discarded – undo
890 890
         // returns array of strings that if found in an <img tag will stop the img from being lazy-loaded.
891 891
         static $exclude_lazyload_array = null;
892 892
 
893
-        if ( null === $exclude_lazyload_array ) {
893
+        if (null === $exclude_lazyload_array) {
894 894
             $options = $this->options;
895 895
 
896 896
             // set default exclusions.
897
-            $exclude_lazyload_array = array( 'skip-lazy', 'data-no-lazy', 'notlazy', 'data-src', 'data-srcset', 'data:image/', 'data-lazyload', 'rev-slidebg', 'loading="eager"' );
897
+            $exclude_lazyload_array = array('skip-lazy', 'data-no-lazy', 'notlazy', 'data-src', 'data-srcset', 'data:image/', 'data-lazyload', 'rev-slidebg', 'loading="eager"');
898 898
 
899 899
             // add from setting.
900
-            if ( array_key_exists( 'autoptimize_imgopt_text_field_5', $options ) ) {
900
+            if (array_key_exists('autoptimize_imgopt_text_field_5', $options)) {
901 901
                 $exclude_lazyload_option = $options['autoptimize_imgopt_text_field_5'];
902
-                if ( ! empty( $exclude_lazyload_option ) ) {
903
-                    $exclude_lazyload_array = array_merge( $exclude_lazyload_array, array_filter( array_map( 'trim', explode( ',', $options['autoptimize_imgopt_text_field_5'] ) ) ) );
902
+                if (!empty($exclude_lazyload_option)) {
903
+                    $exclude_lazyload_array = array_merge($exclude_lazyload_array, array_filter(array_map('trim', explode(',', $options['autoptimize_imgopt_text_field_5']))));
904 904
                 }
905 905
             }
906 906
 
907 907
             // and filter for developer-initiated changes.
908
-            $exclude_lazyload_array = apply_filters( 'autoptimize_filter_imgopt_lazyload_exclude_array', $exclude_lazyload_array );
908
+            $exclude_lazyload_array = apply_filters('autoptimize_filter_imgopt_lazyload_exclude_array', $exclude_lazyload_array);
909 909
         }
910 910
 
911 911
         return $exclude_lazyload_array;
912 912
     }
913 913
 
914
-    public function inject_classes_in_tag( $tag, $target_class ) {
915
-        if ( strpos( $tag, 'class=' ) !== false ) {
916
-            $tag = preg_replace( '/(\sclass\s?=\s?("|\'))/', '$1' . $target_class, $tag );
914
+    public function inject_classes_in_tag($tag, $target_class) {
915
+        if (strpos($tag, 'class=') !== false) {
916
+            $tag = preg_replace('/(\sclass\s?=\s?("|\'))/', '$1'.$target_class, $tag);
917 917
         } else {
918
-            $tag = preg_replace( '/(<[a-zA-Z]*)\s/', '$1 class="' . trim( $target_class ) . '" ', $tag );
918
+            $tag = preg_replace('/(<[a-zA-Z]*)\s/', '$1 class="'.trim($target_class).'" ', $tag);
919 919
         }
920 920
 
921 921
         return $tag;
922 922
     }
923 923
 
924
-    public function get_default_lazyload_placeholder( $imgopt_w, $imgopt_h ) {
925
-        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';
924
+    public function get_default_lazyload_placeholder($imgopt_w, $imgopt_h) {
925
+        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';
926 926
     }
927 927
 
928 928
     public function should_ngimg() {
929 929
         static $ngimg_return = null;
930 930
 
931
-        if ( is_null( $ngimg_return ) ) {
931
+        if (is_null($ngimg_return)) {
932 932
             // webp only works if imgopt and lazyload are also active.
933
-            if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_4'] ) && ! empty( $this->options['autoptimize_imgopt_checkbox_field_3'] ) && $this->imgopt_active() ) {
933
+            if (!empty($this->options['autoptimize_imgopt_checkbox_field_4']) && !empty($this->options['autoptimize_imgopt_checkbox_field_3']) && $this->imgopt_active()) {
934 934
                 $ngimg_return = true;
935 935
             } else {
936 936
                 $ngimg_return = false;
@@ -940,9 +940,9 @@  discard block
 block discarded – undo
940 940
         return $ngimg_return;
941 941
     }
942 942
 
943
-    public function process_picture_tag( $in, $imgopt = false, $lazy = false ) {
943
+    public function process_picture_tag($in, $imgopt = false, $lazy = false) {
944 944
         // check if "<picture" is present and if filter allows us to process <picture>.
945
-        if ( strpos( $in, '<picture' ) === false || apply_filters( 'autoptimize_filter_imgopt_dopicture', true ) === false ) {
945
+        if (strpos($in, '<picture') === false || apply_filters('autoptimize_filter_imgopt_dopicture', true) === false) {
946 946
             return $in;
947 947
         }
948 948
 
@@ -950,37 +950,37 @@  discard block
 block discarded – undo
950 950
         $to_replace_pict = array();
951 951
 
952 952
         // extract and process each picture-node.
953
-        preg_match_all( '#<picture.*</picture>#Usmi', $in, $_pictures, PREG_SET_ORDER );
954
-        foreach ( $_pictures as $_picture ) {
955
-            $_picture = $this->maybe_fix_missing_quotes( $_picture );
956
-            if ( strpos( $_picture[0], '<source ' ) !== false && preg_match_all( '#<source .*srcset=(?:"|\')(?!data)(.*)(?:"|\').*>#Usmi', $_picture[0], $_sources, PREG_SET_ORDER ) !== false ) {
957
-                foreach ( $_sources as $_source ) {
953
+        preg_match_all('#<picture.*</picture>#Usmi', $in, $_pictures, PREG_SET_ORDER);
954
+        foreach ($_pictures as $_picture) {
955
+            $_picture = $this->maybe_fix_missing_quotes($_picture);
956
+            if (strpos($_picture[0], '<source ') !== false && preg_match_all('#<source .*srcset=(?:"|\')(?!data)(.*)(?:"|\').*>#Usmi', $_picture[0], $_sources, PREG_SET_ORDER) !== false) {
957
+                foreach ($_sources as $_source) {
958 958
                     $_picture_replacement = $_source[0];
959 959
 
960 960
                     // should we optimize the image?
961
-                    if ( $imgopt && $this->can_optimize_image( $_source[1], $_picture[0] ) ) {
962
-                        $_picture_replacement = str_replace( $_source[1], $this->build_imgopt_url( $_source[1] ), $_picture_replacement );
961
+                    if ($imgopt && $this->can_optimize_image($_source[1], $_picture[0])) {
962
+                        $_picture_replacement = str_replace($_source[1], $this->build_imgopt_url($_source[1]), $_picture_replacement);
963 963
                     }
964 964
                     // should we lazy-load?
965
-                    if ( $lazy && $this->should_lazyload() && str_ireplace( $_exclusions, '', $_picture_replacement ) === $_picture_replacement ) {
966
-                        $_picture_replacement = str_replace( ' srcset=', ' data-srcset=', $_picture_replacement );
965
+                    if ($lazy && $this->should_lazyload() && str_ireplace($_exclusions, '', $_picture_replacement) === $_picture_replacement) {
966
+                        $_picture_replacement = str_replace(' srcset=', ' data-srcset=', $_picture_replacement);
967 967
                     }
968
-                    $to_replace_pict[ $_source[0] ] = $_picture_replacement;
968
+                    $to_replace_pict[$_source[0]] = $_picture_replacement;
969 969
                 }
970 970
             }
971 971
         }
972 972
 
973 973
         // and return the fully procesed $in.
974
-        $out = str_replace( array_keys( $to_replace_pict ), array_values( $to_replace_pict ), $in );
974
+        $out = str_replace(array_keys($to_replace_pict), array_values($to_replace_pict), $in);
975 975
 
976 976
         return $out;
977 977
     }
978 978
 
979
-    public function process_bgimage( $in ) {
980
-        if ( strpos( $in, 'background-image:' ) !== false && apply_filters( 'autoptimize_filter_imgopt_lazyload_backgroundimages', true ) ) {
979
+    public function process_bgimage($in) {
980
+        if (strpos($in, 'background-image:') !== false && apply_filters('autoptimize_filter_imgopt_lazyload_backgroundimages', true)) {
981 981
             $out = preg_replace_callback(
982 982
                 '/(<(?:article|aside|body|div|footer|header|p|section|span|table)[^>]*)\sstyle=(?:"|\')[^<>]*?background-image:\s?url\((?:"|\')?([^"\')]*)(?:"|\')?\)[^>]*/',
983
-                array( $this, 'lazyload_bgimg_callback' ),
983
+                array($this, 'lazyload_bgimg_callback'),
984 984
                 $in
985 985
             );
986 986
             return $out;
@@ -988,34 +988,34 @@  discard block
 block discarded – undo
988 988
         return $in;
989 989
     }
990 990
 
991
-    public function lazyload_bgimg_callback( $matches ) {
992
-        if ( str_ireplace( $this->get_lazyload_exclusions(), '', $matches[0] ) === $matches[0] ) {
991
+    public function lazyload_bgimg_callback($matches) {
992
+        if (str_ireplace($this->get_lazyload_exclusions(), '', $matches[0]) === $matches[0]) {
993 993
             // get placeholder & lazyload class strings.
994
-            $placeholder    = apply_filters( 'autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder( 500, 300 ) );
995
-            $lazyload_class = apply_filters( 'autoptimize_filter_imgopt_lazyload_class', 'lazyload' );
994
+            $placeholder    = apply_filters('autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder(500, 300));
995
+            $lazyload_class = apply_filters('autoptimize_filter_imgopt_lazyload_class', 'lazyload');
996 996
             // replace background-image URL with SVG placeholder.
997
-            $out = str_replace( 'url(' . $matches[2], 'url(' . $placeholder, $matches[0] );
997
+            $out = str_replace('url('.$matches[2], 'url('.$placeholder, $matches[0]);
998 998
             // sanitize bgimg src for quote sillyness.
999
-            $bgimg_src = $this->fix_silly_bgimg_quotes( $matches[2] );
999
+            $bgimg_src = $this->fix_silly_bgimg_quotes($matches[2]);
1000 1000
             // add data-bg attribute with real background-image URL for lazyload to pick up.
1001
-            $out = str_replace( $matches[1], $matches[1] . ' data-bg="' . $bgimg_src . '"', $out );
1001
+            $out = str_replace($matches[1], $matches[1].' data-bg="'.$bgimg_src.'"', $out);
1002 1002
             // and finally add lazyload class to tag.
1003
-            $out = $this->inject_classes_in_tag( $out, "$lazyload_class " );
1003
+            $out = $this->inject_classes_in_tag($out, "$lazyload_class ");
1004 1004
             return $out;
1005 1005
         }
1006 1006
         return $matches[0];
1007 1007
     }
1008 1008
     
1009
-    public function fix_silly_bgimg_quotes( $tag_in ) {
1009
+    public function fix_silly_bgimg_quotes($tag_in) {
1010 1010
         // some themes/ pagebuilders wrap backgroundimages in HTML-encoded quotes (or linebreaks) which breaks imgopt/ lazyloading, this removes them.
1011
-        return trim( str_replace( array( "\r\n", '&quot;', '&#034;', '&apos;', '&#039;' ), '', $tag_in ) );
1011
+        return trim(str_replace(array("\r\n", '&quot;', '&#034;', '&apos;', '&#039;'), '', $tag_in));
1012 1012
     }
1013 1013
 
1014
-    public function maybe_fix_missing_quotes( $tag_in ) {
1014
+    public function maybe_fix_missing_quotes($tag_in) {
1015 1015
         // 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.
1016
-        if ( file_exists( WP_PLUGIN_DIR . '/w3-total-cache/w3-total-cache.php' ) && class_exists( 'Minify_HTML' ) && apply_filters( 'autoptimize_filter_imgopt_fixquotes', true ) ) {
1017
-            $tag_out = preg_replace( '/class\s?=([^("|\')]*)(\s|>)/U', 'class=\'$1\'$2', $tag_in );
1018
-            $tag_out = preg_replace( '/\s(width|height)=(?:"|\')?([^\s"\'>]*)(?:"|\')?/', ' $1=\'$2\'', $tag_out );
1016
+        if (file_exists(WP_PLUGIN_DIR.'/w3-total-cache/w3-total-cache.php') && class_exists('Minify_HTML') && apply_filters('autoptimize_filter_imgopt_fixquotes', true)) {
1017
+            $tag_out = preg_replace('/class\s?=([^("|\')]*)(\s|>)/U', 'class=\'$1\'$2', $tag_in);
1018
+            $tag_out = preg_replace('/\s(width|height)=(?:"|\')?([^\s"\'>]*)(?:"|\')?/', ' $1=\'$2\'', $tag_out);
1019 1019
             return $tag_out;
1020 1020
         } else {
1021 1021
             return $tag_in;
@@ -1028,23 +1028,23 @@  discard block
 block discarded – undo
1028 1028
     public function imgopt_admin_menu()
1029 1029
     {
1030 1030
         // no acces if multisite and not network admin and no site config allowed.
1031
-        if ( autoptimizeConfig::should_show_menu_tabs() ) {
1031
+        if (autoptimizeConfig::should_show_menu_tabs()) {
1032 1032
             add_submenu_page(
1033 1033
                 null,
1034 1034
                 'autoptimize_imgopt',
1035 1035
                 'autoptimize_imgopt',
1036 1036
                 'manage_options',
1037 1037
                 'autoptimize_imgopt',
1038
-                array( $this, 'imgopt_options_page' )
1038
+                array($this, 'imgopt_options_page')
1039 1039
             );
1040 1040
         }
1041
-        register_setting( 'autoptimize_imgopt_settings', 'autoptimize_imgopt_settings' );
1041
+        register_setting('autoptimize_imgopt_settings', 'autoptimize_imgopt_settings');
1042 1042
     }
1043 1043
 
1044
-    public function add_imgopt_tab( $in )
1044
+    public function add_imgopt_tab($in)
1045 1045
     {
1046
-        if ( autoptimizeConfig::should_show_menu_tabs() ) {
1047
-            $in = array_merge( $in, array( 'autoptimize_imgopt' => __( 'Images', 'autoptimize' ) ) );
1046
+        if (autoptimizeConfig::should_show_menu_tabs()) {
1047
+            $in = array_merge($in, array('autoptimize_imgopt' => __('Images', 'autoptimize')));
1048 1048
         }
1049 1049
 
1050 1050
         return $in;
@@ -1053,8 +1053,8 @@  discard block
 block discarded – undo
1053 1053
     public function imgopt_options_page()
1054 1054
     {
1055 1055
         // Check querystring for "refreshCacheChecker" and call cachechecker if so.
1056
-        if ( array_key_exists( 'refreshImgProvStats', $_GET ) && 1 == $_GET['refreshImgProvStats'] ) {
1057
-            $this->query_img_provider_stats( true );
1056
+        if (array_key_exists('refreshImgProvStats', $_GET) && 1 == $_GET['refreshImgProvStats']) {
1057
+            $this->query_img_provider_stats(true);
1058 1058
         }
1059 1059
 
1060 1060
         $options       = $this->fetch_options();
@@ -1065,47 +1065,47 @@  discard block
 block discarded – undo
1065 1065
         #ao_settings_form .form-table th {font-weight: normal;}
1066 1066
         #autoptimize_imgopt_descr{font-size: 120%;}
1067 1067
     </style>
1068
-    <script>document.title = "Autoptimize: <?php _e( 'Images', 'autoptimize' ); ?> " + document.title;</script>
1068
+    <script>document.title = "Autoptimize: <?php _e('Images', 'autoptimize'); ?> " + document.title;</script>
1069 1069
     <div class="wrap">
1070
-    <h1><?php _e( 'Autoptimize Settings', 'autoptimize' ); ?></h1>
1070
+    <h1><?php _e('Autoptimize Settings', 'autoptimize'); ?></h1>
1071 1071
         <?php echo autoptimizeConfig::ao_admin_tabs(); ?>
1072
-        <?php if ( 'down' === $options['availabilities']['extra_imgopt']['status'] ) { ?>
1072
+        <?php if ('down' === $options['availabilities']['extra_imgopt']['status']) { ?>
1073 1073
             <div class="notice-warning notice"><p>
1074 1074
             <?php
1075 1075
             // translators: "Autoptimize support forum" will appear in a "a href".
1076
-            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>' );
1076
+            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>');
1077 1077
             ?>
1078 1078
             </p></div>
1079 1079
         <?php } ?>
1080 1080
 
1081
-        <?php if ( 'launch' === $options['availabilities']['extra_imgopt']['status'] && ! autoptimizeImages::instance()->launch_ok() ) { ?>
1081
+        <?php if ('launch' === $options['availabilities']['extra_imgopt']['status'] && !autoptimizeImages::instance()->launch_ok()) { ?>
1082 1082
             <div class="notice-warning notice"><p>
1083
-            <?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' ); ?>
1083
+            <?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'); ?>
1084 1084
             </p></div>
1085 1085
         <?php } ?>
1086 1086
 
1087
-        <?php if ( class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'get_active_modules' ) && in_array( 'photon', Jetpack::get_active_modules() ) ) { ?>
1087
+        <?php if (class_exists('Jetpack') && method_exists('Jetpack', 'get_active_modules') && in_array('photon', Jetpack::get_active_modules())) { ?>
1088 1088
             <div class="notice-warning notice"><p>
1089 1089
             <?php
1090 1090
             // translators: "disable  Jetpack's site accelerator for images" will appear in a "a href" linking to the jetpack settings page.
1091
-            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>' );
1091
+            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>');
1092 1092
             ?>
1093 1093
             </p></div>
1094 1094
         <?php } ?>
1095
-    <form id='ao_settings_form' action='<?php echo admin_url( 'options.php' ); ?>' method='post'>
1096
-        <?php settings_fields( 'autoptimize_imgopt_settings' ); ?>
1097
-        <h2><?php _e( 'Image optimization', 'autoptimize' ); ?></h2>
1098
-        <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 and AVIF support included!', 'autoptimize' ); ?></span>
1095
+    <form id='ao_settings_form' action='<?php echo admin_url('options.php'); ?>' method='post'>
1096
+        <?php settings_fields('autoptimize_imgopt_settings'); ?>
1097
+        <h2><?php _e('Image optimization', 'autoptimize'); ?></h2>
1098
+        <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 and AVIF support included!', 'autoptimize'); ?></span>
1099 1099
         <table class="form-table">
1100 1100
             <tr>
1101
-                <th scope="row"><?php _e( 'Optimize Images', 'autoptimize' ); ?></th>
1101
+                <th scope="row"><?php _e('Optimize Images', 'autoptimize'); ?></th>
1102 1102
                 <td>
1103
-                    <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>
1103
+                    <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>
1104 1104
                     <?php
1105 1105
                     // show shortpixel status.
1106 1106
                     $_notice = autoptimizeImages::instance()->get_imgopt_status_notice();
1107
-                    if ( $_notice ) {
1108
-                        switch ( $_notice['status'] ) {
1107
+                    if ($_notice) {
1108
+                        switch ($_notice['status']) {
1109 1109
                             case 2:
1110 1110
                                 $_notice_color = 'green';
1111 1111
                                 break;
@@ -1120,35 +1120,35 @@  discard block
 block discarded – undo
1120 1120
                             default:
1121 1121
                                 $_notice_color = 'green';
1122 1122
                         }
1123
-                        echo apply_filters( 'autoptimize_filter_imgopt_settings_status', '<p><strong><span style="color:' . $_notice_color . ';">' . __( 'Shortpixel status: ', 'autoptimize' ) . '</span></strong>' . $_notice['notice'] . '</p>' );
1123
+                        echo apply_filters('autoptimize_filter_imgopt_settings_status', '<p><strong><span style="color:'.$_notice_color.';">'.__('Shortpixel status: ', 'autoptimize').'</span></strong>'.$_notice['notice'].'</p>');
1124 1124
                     } else {
1125 1125
                         // translators: link points to shortpixel.
1126
-                        $upsell_msg_1 = '<p>' . sprintf( __( 'Get more Google love by speeding up your website. Start serving on-the-fly optimized images (also in the "next-gen" <strong>WebP</strong> and <strong>AVIF</strong> image formats) by %1$sShortPixel%2$s. The optimized images are cached and served from %3$sShortPixel\'s global CDN%2$s.', 'autoptimize' ), '<a href="https://shortpixel.com/aospai' . $sp_url_suffix . '" target="_blank">', '</a>', '<a href="https://help.shortpixel.com/article/62-where-does-the-cdn-has-pops" target="_blank">' );
1127
-                        if ( 'launch' === $options['availabilities']['extra_imgopt']['status'] ) {
1128
-                            $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' );
1126
+                        $upsell_msg_1 = '<p>'.sprintf(__('Get more Google love by speeding up your website. Start serving on-the-fly optimized images (also in the "next-gen" <strong>WebP</strong> and <strong>AVIF</strong> image formats) by %1$sShortPixel%2$s. The optimized images are cached and served from %3$sShortPixel\'s global CDN%2$s.', 'autoptimize'), '<a href="https://shortpixel.com/aospai'.$sp_url_suffix.'" target="_blank">', '</a>', '<a href="https://help.shortpixel.com/article/62-where-does-the-cdn-has-pops" target="_blank">');
1127
+                        if ('launch' === $options['availabilities']['extra_imgopt']['status']) {
1128
+                            $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');
1129 1129
                         } else {
1130 1130
                             // translators: link points to shortpixel.
1131
-                            $upsell_msg_2 = sprintf( __( '%1$sSign-up now%2$s to receive x2 more CDN traffic or image optimization credits for free! This offer also applies to any future plan that you\'ll choose to purchase.', 'autoptimize' ), '<a href="https://shortpixel.com/aospai' . $sp_url_suffix . '" target="_blank">', '</a>' );
1131
+                            $upsell_msg_2 = sprintf(__('%1$sSign-up now%2$s to receive x2 more CDN traffic or image optimization credits for free! This offer also applies to any future plan that you\'ll choose to purchase.', 'autoptimize'), '<a href="https://shortpixel.com/aospai'.$sp_url_suffix.'" target="_blank">', '</a>');
1132 1132
                         }
1133
-                        echo apply_filters( 'autoptimize_imgopt_imgopt_settings_copy', $upsell_msg_1 . ' ' . $upsell_msg_2 . '</p>' );
1133
+                        echo apply_filters('autoptimize_imgopt_imgopt_settings_copy', $upsell_msg_1.' '.$upsell_msg_2.'</p>');
1134 1134
                     }
1135 1135
                     // translators: link points to shortpixel FAQ.
1136
-                    $faqcopy = sprintf( __( '<strong>Questions</strong>? Have a look at the %1$sAutoptimize + ShortPixel FAQ%2$s!', 'autoptimize' ), '<strong><a href="https://help.shortpixel.com/category/405-autoptimize" target="_blank">', '</strong></a>' );
1137
-                    $faqcopy = $faqcopy . ' ' . __( 'Only works for websites and images that are publicly available.', 'autoptimize' );
1136
+                    $faqcopy = sprintf(__('<strong>Questions</strong>? Have a look at the %1$sAutoptimize + ShortPixel FAQ%2$s!', 'autoptimize'), '<strong><a href="https://help.shortpixel.com/category/405-autoptimize" target="_blank">', '</strong></a>');
1137
+                    $faqcopy = $faqcopy.' '.__('Only works for websites and images that are publicly available.', 'autoptimize');
1138 1138
                     // translators: links points to shortpixel TOS & Privacy Policy.
1139
-                    $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>' );
1140
-                    echo apply_filters( 'autoptimize_imgopt_imgopt_settings_tos', '<p>' . $faqcopy . ' ' . $toscopy . '</p>' );
1139
+                    $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>');
1140
+                    echo apply_filters('autoptimize_imgopt_imgopt_settings_tos', '<p>'.$faqcopy.' '.$toscopy.'</p>');
1141 1141
                     ?>
1142 1142
                 </td>
1143 1143
             </tr>
1144
-            <tr id='autoptimize_imgopt_optimization_exclusions' <?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"'; } ?>>
1145
-                <th scope="row"><?php _e( 'Optimization exclusions', 'autoptimize' ); ?></th>
1144
+            <tr id='autoptimize_imgopt_optimization_exclusions' <?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"'; } ?>>
1145
+                <th scope="row"><?php _e('Optimization exclusions', 'autoptimize'); ?></th>
1146 1146
                 <td>
1147
-                    <label><input type='text' style='width:80%' id='autoptimize_imgopt_optimization_exclusions' name='autoptimize_imgopt_settings[autoptimize_imgopt_text_field_6]' value='<?php if ( ! empty( $options['autoptimize_imgopt_text_field_6'] ) ) { echo esc_attr( $options['autoptimize_imgopt_text_field_6'] ); } ?>'><br /><?php _e( 'Comma-separated list of image classes or filenames that should not be optimized.', 'autoptimize' ); ?></label>
1147
+                    <label><input type='text' style='width:80%' id='autoptimize_imgopt_optimization_exclusions' name='autoptimize_imgopt_settings[autoptimize_imgopt_text_field_6]' value='<?php if (!empty($options['autoptimize_imgopt_text_field_6'])) { echo esc_attr($options['autoptimize_imgopt_text_field_6']); } ?>'><br /><?php _e('Comma-separated list of image classes or filenames that should not be optimized.', 'autoptimize'); ?></label>
1148 1148
                 </td>
1149 1149
             </tr>
1150
-            <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"'; } ?>>
1151
-                <th scope="row"><?php _e( 'Image Optimization quality', 'autoptimize' ); ?></th>
1150
+            <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"'; } ?>>
1151
+                <th scope="row"><?php _e('Image Optimization quality', 'autoptimize'); ?></th>
1152 1152
                 <td>
1153 1153
                     <label>
1154 1154
                     <select name='autoptimize_imgopt_settings[autoptimize_imgopt_select_field_2]'>
@@ -1156,12 +1156,12 @@  discard block
 block discarded – undo
1156 1156
                         $_imgopt_array = autoptimizeImages::instance()->get_img_quality_array();
1157 1157
                         $_imgopt_val   = autoptimizeImages::instance()->get_img_quality_setting();
1158 1158
 
1159
-                        foreach ( $_imgopt_array as $key => $value ) {
1160
-                            echo '<option value="' . $key . '"';
1161
-                            if ( $_imgopt_val == $key ) {
1159
+                        foreach ($_imgopt_array as $key => $value) {
1160
+                            echo '<option value="'.$key.'"';
1161
+                            if ($_imgopt_val == $key) {
1162 1162
                                 echo ' selected';
1163 1163
                             }
1164
-                            echo '>' . ucfirst( $value ) . '</option>';
1164
+                            echo '>'.ucfirst($value).'</option>';
1165 1165
                         }
1166 1166
                         echo "\n";
1167 1167
                         ?>
@@ -1170,37 +1170,37 @@  discard block
 block discarded – undo
1170 1170
                     <p>
1171 1171
                         <?php
1172 1172
                             // translators: link points to shortpixel image test page.
1173
-                            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>' ) );
1173
+                            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>'));
1174 1174
                         ?>
1175 1175
                     </p>
1176 1176
                 </td>
1177 1177
             </tr>
1178
-            <tr id='autoptimize_imgopt_ngimg' <?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"'; } ?>>
1179
-                <th scope="row"><?php _e( 'Load WebP or AVIF in supported browsers?', 'autoptimize' ); ?></th>
1178
+            <tr id='autoptimize_imgopt_ngimg' <?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"'; } ?>>
1179
+                <th scope="row"><?php _e('Load WebP or AVIF in supported browsers?', 'autoptimize'); ?></th>
1180 1180
                 <td>
1181
-                    <label><input type='checkbox' id='autoptimize_imgopt_ngimg_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 or AVIF image formats to any browser that supports it (requires lazy load to be active).', 'autoptimize' ); ?></label>
1181
+                    <label><input type='checkbox' id='autoptimize_imgopt_ngimg_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 or AVIF image formats to any browser that supports it (requires lazy load to be active).', 'autoptimize'); ?></label>
1182 1182
                 </td>
1183 1183
             </tr>
1184 1184
             <tr>
1185
-                <th scope="row"><?php _e( 'Lazy-load images?', 'autoptimize' ); ?></th>
1185
+                <th scope="row"><?php _e('Lazy-load images?', 'autoptimize'); ?></th>
1186 1186
                 <td>
1187
-                    <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>
1187
+                    <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>
1188 1188
                 </td>
1189 1189
             </tr>
1190
-            <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="autoptimize_lazyload_child hidden"'; } else { echo 'class="autoptimize_lazyload_child"'; } ?>>
1191
-                <th scope="row"><?php _e( 'Lazy-load exclusions', 'autoptimize' ); ?></th>
1190
+            <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="autoptimize_lazyload_child hidden"'; } else { echo 'class="autoptimize_lazyload_child"'; } ?>>
1191
+                <th scope="row"><?php _e('Lazy-load exclusions', 'autoptimize'); ?></th>
1192 1192
                 <td>
1193
-                    <label><input type='text' style='width:80%' id='autoptimize_imgopt_lazyload_exclusions_text' 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>
1193
+                    <label><input type='text' style='width:80%' id='autoptimize_imgopt_lazyload_exclusions_text' 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>
1194 1194
                 </td>
1195 1195
             </tr>
1196
-            <tr id='autoptimize_imgopt_lazyload_from_nth_image' <?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="autoptimize_lazyload_child hidden"'; } else { echo 'class="autoptimize_lazyload_child"'; } ?>>
1197
-                <th scope="row"><?php _e( 'Lazy-load from nth image', 'autoptimize' ); ?></th>
1196
+            <tr id='autoptimize_imgopt_lazyload_from_nth_image' <?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="autoptimize_lazyload_child hidden"'; } else { echo 'class="autoptimize_lazyload_child"'; } ?>>
1197
+                <th scope="row"><?php _e('Lazy-load from nth image', 'autoptimize'); ?></th>
1198 1198
                 <td>
1199
-                    <label><input type='number' min='0' max='50' style='width:80%' id='autoptimize_imgopt_lazyload_from_nth_image_number' name='autoptimize_imgopt_settings[autoptimize_imgopt_number_field_7]' value='<?php if ( ! empty( $options['autoptimize_imgopt_number_field_7'] ) ) { echo esc_attr( $options['autoptimize_imgopt_number_field_7'] ); } else { echo '0'; } ?>'><br /><?php _e( 'Don\'t lazyload the first X images, \'0\' lazyloads all.', 'autoptimize' ); ?></label>
1199
+                    <label><input type='number' min='0' max='50' style='width:80%' id='autoptimize_imgopt_lazyload_from_nth_image_number' name='autoptimize_imgopt_settings[autoptimize_imgopt_number_field_7]' value='<?php if (!empty($options['autoptimize_imgopt_number_field_7'])) { echo esc_attr($options['autoptimize_imgopt_number_field_7']); } else { echo '0'; } ?>'><br /><?php _e('Don\'t lazyload the first X images, \'0\' lazyloads all.', 'autoptimize'); ?></label>
1200 1200
                 </td>
1201 1201
             </tr>
1202 1202
         </table>
1203
-        <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e( 'Save Changes', 'autoptimize' ); ?>" /></p>
1203
+        <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Changes', 'autoptimize'); ?>" /></p>
1204 1204
     </form>
1205 1205
     <script>
1206 1206
         jQuery(document).ready(function() {
@@ -1238,50 +1238,50 @@  discard block
 block discarded – undo
1238 1238
      * Ïmg opt status as used on dashboard.
1239 1239
      */
1240 1240
     public function get_imgopt_status_notice() {
1241
-        if ( $this->imgopt_active() ) {
1241
+        if ($this->imgopt_active()) {
1242 1242
             $_imgopt_notice  = '';
1243
-            $_stat           = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' );
1243
+            $_stat           = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_provider_stat', '');
1244 1244
             $_site_host      = AUTOPTIMIZE_SITE_DOMAIN;
1245
-            $_imgopt_upsell  = 'https://shortpixel.com/aospai/af/SPZURYE109483/' . $_site_host;
1245
+            $_imgopt_upsell  = 'https://shortpixel.com/aospai/af/SPZURYE109483/'.$_site_host;
1246 1246
             $_imgopt_assoc   = 'https://shortpixel.helpscoutdocs.com/article/94-how-to-associate-a-domain-to-my-account';
1247 1247
             $_imgopt_unreach = 'https://shortpixel.helpscoutdocs.com/article/148-why-are-my-images-redirected-from-cdn-shortpixel-ai';
1248 1248
 
1249
-            if ( is_array( $_stat ) ) {
1250
-                if ( 1 == $_stat['Status'] ) {
1249
+            if (is_array($_stat)) {
1250
+                if (1 == $_stat['Status']) {
1251 1251
                     // translators: "add more credits" will appear in a "a href".
1252
-                    $_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>' );
1252
+                    $_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>');
1253 1253
                 } elseif ( -1 == $_stat['Status'] || -2 == $_stat['Status'] ) {
1254 1254
                     // translators: "add more credits" will appear in a "a href".
1255
-                    $_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>' );
1255
+                    $_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>');
1256 1256
                     // translators: "associate your domain" will appear in a "a href".
1257
-                    $_imgopt_notice = $_imgopt_notice . ' ' . sprintf( __( 'If you have enough CDN quota remaining, 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>' );
1257
+                    $_imgopt_notice = $_imgopt_notice.' '.sprintf(__('If you have enough CDN quota remaining, 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>');
1258 1258
                 } elseif ( -3 == $_stat['Status'] ) {
1259 1259
                     // translators: "check the documentation here" will appear in a "a href".
1260
-                    $_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>' );
1260
+                    $_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>');
1261 1261
                 } else {
1262 1262
                     $_imgopt_upsell = 'https://shortpixel.com/g/af/SPZURYE109483';
1263 1263
                     // translators: "log in to check your account" will appear in a "a href".
1264
-                    $_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>' );
1264
+                    $_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>');
1265 1265
                 }
1266 1266
 
1267 1267
                 // add info on freshness + refresh link if status is not 2 (good shape).
1268
-                if ( 2 != $_stat['Status'] ) {
1269
-                    $_imgopt_stats_refresh_url = add_query_arg( array(
1268
+                if (2 != $_stat['Status']) {
1269
+                    $_imgopt_stats_refresh_url = add_query_arg(array(
1270 1270
                         'page'                => 'autoptimize_imgopt',
1271 1271
                         'refreshImgProvStats' => '1',
1272
-                    ), admin_url( 'options-general.php' ) );
1273
-                    if ( $_stat && array_key_exists( 'timestamp', $_stat ) && ! empty( $_stat['timestamp'] ) ) {
1274
-                        $_imgopt_stats_last_run = __( 'based on status at ', 'autoptimize' ) . date_i18n( autoptimizeOptionWrapper::get_option( 'time_format' ), $_stat['timestamp'] );
1272
+                    ), admin_url('options-general.php'));
1273
+                    if ($_stat && array_key_exists('timestamp', $_stat) && !empty($_stat['timestamp'])) {
1274
+                        $_imgopt_stats_last_run = __('based on status at ', 'autoptimize').date_i18n(autoptimizeOptionWrapper::get_option('time_format'), $_stat['timestamp']);
1275 1275
                     } else {
1276
-                        $_imgopt_stats_last_run = __( 'based on previously fetched data', 'autoptimize' );
1276
+                        $_imgopt_stats_last_run = __('based on previously fetched data', 'autoptimize');
1277 1277
                     }
1278
-                    $_imgopt_notice .= ' (' . $_imgopt_stats_last_run . ', ';
1278
+                    $_imgopt_notice .= ' ('.$_imgopt_stats_last_run.', ';
1279 1279
                     // translators: "here to refresh" links to the Autoptimize Extra page and forces a refresh of the img opt stats.
1280
-                    $_imgopt_notice .= sprintf( __( 'you can click %1$shere to refresh your quota status%2$s', 'autoptimize' ), '<a href="' . $_imgopt_stats_refresh_url . '">', '</a>).' );
1280
+                    $_imgopt_notice .= sprintf(__('you can click %1$shere to refresh your quota status%2$s', 'autoptimize'), '<a href="'.$_imgopt_stats_refresh_url.'">', '</a>).');
1281 1281
                 }
1282 1282
 
1283 1283
                 // and make the full notice filterable.
1284
-                $_imgopt_notice = apply_filters( 'autoptimize_filter_imgopt_notice', $_imgopt_notice );
1284
+                $_imgopt_notice = apply_filters('autoptimize_filter_imgopt_notice', $_imgopt_notice);
1285 1285
 
1286 1286
                 return array(
1287 1287
                     'status' => $_stat['Status'],
@@ -1301,18 +1301,18 @@  discard block
 block discarded – undo
1301 1301
     /**
1302 1302
      * Get img provider stats (used to display notice).
1303 1303
      */
1304
-    public function query_img_provider_stats( $_refresh = false ) {
1305
-        if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_1'] ) ) {
1304
+    public function query_img_provider_stats($_refresh = false) {
1305
+        if (!empty($this->options['autoptimize_imgopt_checkbox_field_1'])) {
1306 1306
             $url      = '';
1307 1307
             $stat_dom = 'https://no-cdn.shortpixel.ai/';
1308
-            $endpoint = $stat_dom . 'read-domain/';
1308
+            $endpoint = $stat_dom.'read-domain/';
1309 1309
             $domain   = AUTOPTIMIZE_SITE_DOMAIN;
1310 1310
 
1311 1311
             // make sure parse_url result makes sense, keeping $url empty if not.
1312
-            if ( $domain && ! empty( $domain ) ) {
1313
-                $url = $endpoint . $domain;
1314
-                if ( true === $_refresh ) {
1315
-                    $url = $url . '/refresh';
1312
+            if ($domain && !empty($domain)) {
1313
+                $url = $endpoint.$domain;
1314
+                if (true === $_refresh) {
1315
+                    $url = $url.'/refresh';
1316 1316
                 }
1317 1317
             }
1318 1318
 
@@ -1323,12 +1323,12 @@  discard block
 block discarded – undo
1323 1323
 
1324 1324
             // only do the remote call if $url is not empty to make sure no parse_url
1325 1325
             // weirdness results in useless calls.
1326
-            if ( ! empty( $url ) ) {
1327
-                $response = wp_remote_get( $url );
1328
-                if ( ! is_wp_error( $response ) ) {
1329
-                    if ( '200' == wp_remote_retrieve_response_code( $response ) ) {
1330
-                        $stats = json_decode( wp_remote_retrieve_body( $response ), true );
1331
-                        autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_provider_stat', $stats );
1326
+            if (!empty($url)) {
1327
+                $response = wp_remote_get($url);
1328
+                if (!is_wp_error($response)) {
1329
+                    if ('200' == wp_remote_retrieve_response_code($response)) {
1330
+                        $stats = json_decode(wp_remote_retrieve_body($response), true);
1331
+                        autoptimizeOptionWrapper::update_option('autoptimize_imgopt_provider_stat', $stats);
1332 1332
                     }
1333 1333
                 }
1334 1334
             }
@@ -1351,15 +1351,15 @@  discard block
 block discarded – undo
1351 1351
     {
1352 1352
         static $launch_status = null;
1353 1353
 
1354
-        if ( null === $launch_status ) {
1354
+        if (null === $launch_status) {
1355 1355
             $avail_imgopt  = $this->options['availabilities']['extra_imgopt'];
1356
-            $magic_number  = intval( substr( md5( parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ) ), 0, 3 ), 16 );
1357
-            $has_launched  = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_launched', '' );
1356
+            $magic_number  = intval(substr(md5(parse_url(AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST)), 0, 3), 16);
1357
+            $has_launched  = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_launched', '');
1358 1358
             $launch_status = false;
1359
-            if ( $has_launched || ( is_array( $avail_imgopt ) && array_key_exists( 'launch-threshold', $avail_imgopt ) && $magic_number < $avail_imgopt['launch-threshold'] ) ) {
1359
+            if ($has_launched || (is_array($avail_imgopt) && array_key_exists('launch-threshold', $avail_imgopt) && $magic_number < $avail_imgopt['launch-threshold'])) {
1360 1360
                 $launch_status = true;
1361
-                if ( ! $has_launched ) {
1362
-                    autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_launched', 'on' );
1361
+                if (!$has_launched) {
1362
+                    autoptimizeOptionWrapper::update_option('autoptimize_imgopt_launched', 'on');
1363 1363
                 }
1364 1364
             }
1365 1365
         }
@@ -1376,16 +1376,16 @@  discard block
 block discarded – undo
1376 1376
     public function get_imgopt_provider_userstatus() {
1377 1377
         static $_provider_userstatus = null;
1378 1378
 
1379
-        if ( is_null( $_provider_userstatus ) ) {
1380
-            $_stat = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' );
1381
-            if ( is_array( $_stat ) ) {
1382
-                if ( array_key_exists( 'Status', $_stat ) ) {
1379
+        if (is_null($_provider_userstatus)) {
1380
+            $_stat = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_provider_stat', '');
1381
+            if (is_array($_stat)) {
1382
+                if (array_key_exists('Status', $_stat)) {
1383 1383
                     $_provider_userstatus['Status'] = $_stat['Status'];
1384 1384
                 } else {
1385 1385
                     // if no stats then we assume all is well.
1386 1386
                     $_provider_userstatus['Status'] = 2;
1387 1387
                 }
1388
-                if ( array_key_exists( 'timestamp', $_stat ) ) {
1388
+                if (array_key_exists('timestamp', $_stat)) {
1389 1389
                     $_provider_userstatus['timestamp'] = $_stat['timestamp'];
1390 1390
                 } else {
1391 1391
                     // if no timestamp then we return "".
Please login to merge, or discard this patch.
autoptimize.php 1 patch
Spacing   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -17,66 +17,66 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 
20
-if ( ! defined( 'ABSPATH' ) ) {
20
+if (!defined('ABSPATH')) {
21 21
     exit;
22 22
 }
23 23
 
24
-define( 'AUTOPTIMIZE_PLUGIN_VERSION', '2.8.3' );
24
+define('AUTOPTIMIZE_PLUGIN_VERSION', '2.8.3');
25 25
 
26 26
 // plugin_dir_path() returns the trailing slash!
27
-define( 'AUTOPTIMIZE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
28
-define( 'AUTOPTIMIZE_PLUGIN_FILE', __FILE__ );
27
+define('AUTOPTIMIZE_PLUGIN_DIR', plugin_dir_path(__FILE__));
28
+define('AUTOPTIMIZE_PLUGIN_FILE', __FILE__);
29 29
 
30 30
 // Bail early if attempting to run on non-supported php versions.
31
-if ( version_compare( PHP_VERSION, '5.6', '<' ) ) {
31
+if (version_compare(PHP_VERSION, '5.6', '<')) {
32 32
     function autoptimize_incompatible_admin_notice() {
33
-        echo '<div class="error"><p>' . __( 'Autoptimize requires PHP 5.6 (or higher) to function properly. Please upgrade PHP. The Plugin has been auto-deactivated.', 'autoptimize' ) . '</p></div>';
34
-        if ( isset( $_GET['activate'] ) ) {
35
-            unset( $_GET['activate'] );
33
+        echo '<div class="error"><p>'.__('Autoptimize requires PHP 5.6 (or higher) to function properly. Please upgrade PHP. The Plugin has been auto-deactivated.', 'autoptimize').'</p></div>';
34
+        if (isset($_GET['activate'])) {
35
+            unset($_GET['activate']);
36 36
         }
37 37
     }
38 38
     function autoptimize_deactivate_self() {
39
-        deactivate_plugins( plugin_basename( AUTOPTIMIZE_PLUGIN_FILE ) );
39
+        deactivate_plugins(plugin_basename(AUTOPTIMIZE_PLUGIN_FILE));
40 40
     }
41
-    add_action( 'admin_notices', 'autoptimize_incompatible_admin_notice' );
42
-    add_action( 'admin_init', 'autoptimize_deactivate_self' );
41
+    add_action('admin_notices', 'autoptimize_incompatible_admin_notice');
42
+    add_action('admin_init', 'autoptimize_deactivate_self');
43 43
     return;
44 44
 }
45 45
 
46
-function autoptimize_autoload( $class_name ) {
47
-    if ( in_array( $class_name, array( 'AO_Minify_HTML', 'JSMin' ) ) ) {
48
-        $file     = strtolower( $class_name );
49
-        $file     = str_replace( '_', '-', $file );
50
-        $path     = dirname( __FILE__ ) . '/classes/external/php/';
51
-        $filepath = $path . $file . '.php';
52
-    } elseif ( false !== strpos( $class_name, 'Autoptimize\\tubalmartin\\CssMin' ) ) {
53
-        $file     = str_replace( 'Autoptimize\\tubalmartin\\CssMin\\', '', $class_name );
54
-        $path     = dirname( __FILE__ ) . '/classes/external/php/yui-php-cssmin-bundled/';
55
-        $filepath = $path . $file . '.php';
56
-    } elseif ( 'autoptimize' === substr( $class_name, 0, 11 ) ) {
46
+function autoptimize_autoload($class_name) {
47
+    if (in_array($class_name, array('AO_Minify_HTML', 'JSMin'))) {
48
+        $file     = strtolower($class_name);
49
+        $file     = str_replace('_', '-', $file);
50
+        $path     = dirname(__FILE__).'/classes/external/php/';
51
+        $filepath = $path.$file.'.php';
52
+    } elseif (false !== strpos($class_name, 'Autoptimize\\tubalmartin\\CssMin')) {
53
+        $file     = str_replace('Autoptimize\\tubalmartin\\CssMin\\', '', $class_name);
54
+        $path     = dirname(__FILE__).'/classes/external/php/yui-php-cssmin-bundled/';
55
+        $filepath = $path.$file.'.php';
56
+    } elseif ('autoptimize' === substr($class_name, 0, 11)) {
57 57
         // One of our "old" classes.
58 58
         $file     = $class_name;
59
-        $path     = dirname( __FILE__ ) . '/classes/';
60
-        $filepath = $path . $file . '.php';
61
-    } elseif ( 'PAnD' === $class_name ) {
59
+        $path     = dirname(__FILE__).'/classes/';
60
+        $filepath = $path.$file.'.php';
61
+    } elseif ('PAnD' === $class_name) {
62 62
         $file     = 'persist-admin-notices-dismissal';
63
-        $path     = dirname( __FILE__ ) . '/classes/external/php/persist-admin-notices-dismissal/';
64
-        $filepath = $path . $file . '.php';
63
+        $path     = dirname(__FILE__).'/classes/external/php/persist-admin-notices-dismissal/';
64
+        $filepath = $path.$file.'.php';
65 65
     }
66 66
 
67 67
     // If we didn't match one of our rules, bail!
68
-    if ( ! isset( $filepath ) ) {
68
+    if (!isset($filepath)) {
69 69
         return;
70 70
     }
71 71
 
72 72
     require $filepath;
73 73
 }
74 74
 
75
-spl_autoload_register( 'autoptimize_autoload' );
75
+spl_autoload_register('autoptimize_autoload');
76 76
 
77 77
 // Load WP CLI command(s) on demand.
78
-if ( defined( 'WP_CLI' ) && WP_CLI ) {
79
-    require AUTOPTIMIZE_PLUGIN_DIR . 'classes/autoptimizeCLI.php';
78
+if (defined('WP_CLI') && WP_CLI) {
79
+    require AUTOPTIMIZE_PLUGIN_DIR.'classes/autoptimizeCLI.php';
80 80
 }
81 81
 
82 82
 /**
@@ -87,8 +87,8 @@  discard block
 block discarded – undo
87 87
 function autoptimize() {
88 88
     static $plugin = null;
89 89
 
90
-    if ( null === $plugin ) {
91
-        $plugin = new autoptimizeMain( AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE );
90
+    if (null === $plugin) {
91
+        $plugin = new autoptimizeMain(AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE);
92 92
     }
93 93
 
94 94
     return $plugin;
Please login to merge, or discard this patch.
classes/autoptimizeStyles.php 1 patch
Spacing   +349 added lines, -349 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,54 +161,54 @@  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
-        $allowlist_css = apply_filters( 'autoptimize_filter_css_allowlist', '', $this->content );
172
-        $allowlist_css = apply_filters( 'autoptimize_filter_css_whitelist', $allowlist_css, $this->content ); // fixme: to be removed in next version.
173
-        if ( ! empty( $allowlist_css ) ) {
174
-            $this->allowlist = array_filter( array_map( 'trim', explode( ',', $allowlist_css ) ) );
171
+        $allowlist_css = apply_filters('autoptimize_filter_css_allowlist', '', $this->content);
172
+        $allowlist_css = apply_filters('autoptimize_filter_css_whitelist', $allowlist_css, $this->content); // fixme: to be removed in next version.
173
+        if (!empty($allowlist_css)) {
174
+            $this->allowlist = array_filter(array_map('trim', explode(',', $allowlist_css)));
175 175
         }
176 176
 
177
-        $removable_css = apply_filters( 'autoptimize_filter_css_removables', '' );
178
-        if ( ! empty( $removable_css ) ) {
179
-            $this->cssremovables = array_filter( array_map( 'trim', explode( ',', $removable_css ) ) );
177
+        $removable_css = apply_filters('autoptimize_filter_css_removables', '');
178
+        if (!empty($removable_css)) {
179
+            $this->cssremovables = array_filter(array_map('trim', explode(',', $removable_css)));
180 180
         }
181 181
 
182
-        $this->cssinlinesize = apply_filters( 'autoptimize_filter_css_inlinesize', 256 );
182
+        $this->cssinlinesize = apply_filters('autoptimize_filter_css_inlinesize', 256);
183 183
 
184 184
         // filter to "late inject minified CSS", default to true for now (it is faster).
185
-        $this->inject_min_late = apply_filters( 'autoptimize_filter_css_inject_min_late', true );
185
+        $this->inject_min_late = apply_filters('autoptimize_filter_css_inject_min_late', true);
186 186
 
187 187
         // Remove everything that's not the header.
188
-        if ( apply_filters( 'autoptimize_filter_css_justhead', $options['justhead'] ) ) {
189
-            $content             = explode( '</head>', $this->content, 2 );
190
-            $this->content       = $content[0] . '</head>';
188
+        if (apply_filters('autoptimize_filter_css_justhead', $options['justhead'])) {
189
+            $content             = explode('</head>', $this->content, 2);
190
+            $this->content       = $content[0].'</head>';
191 191
             $this->restofcontent = $content[1];
192 192
         }
193 193
 
194 194
         // Determine whether we're doing CSS-files aggregation or not.
195
-        if ( isset( $options['aggregate'] ) && ! $options['aggregate'] ) {
195
+        if (isset($options['aggregate']) && !$options['aggregate']) {
196 196
             $this->aggregate = false;
197 197
         }
198 198
         // Returning true for "dontaggregate" turns off aggregation.
199
-        if ( $this->aggregate && apply_filters( 'autoptimize_filter_css_dontaggregate', false ) ) {
199
+        if ($this->aggregate && apply_filters('autoptimize_filter_css_dontaggregate', false)) {
200 200
             $this->aggregate = false;
201 201
         }
202 202
 
203 203
         // include inline?
204
-        if ( apply_filters( 'autoptimize_css_include_inline', $options['include_inline'] ) ) {
204
+        if (apply_filters('autoptimize_css_include_inline', $options['include_inline'])) {
205 205
             $this->include_inline = true;
206 206
         }
207 207
 
208 208
         // List of CSS strings which are excluded from autoptimization.
209
-        $exclude_css = apply_filters( 'autoptimize_filter_css_exclude', $options['css_exclude'], $this->content );
210
-        if ( '' !== $exclude_css ) {
211
-            $this->dontmove = array_filter( array_map( 'trim', explode( ',', $exclude_css ) ) );
209
+        $exclude_css = apply_filters('autoptimize_filter_css_exclude', $options['css_exclude'], $this->content);
210
+        if ('' !== $exclude_css) {
211
+            $this->dontmove = array_filter(array_map('trim', explode(',', $exclude_css)));
212 212
         } else {
213 213
             $this->dontmove = array();
214 214
         }
@@ -219,16 +219,16 @@  discard block
 block discarded – undo
219 219
         // Should we defer css?
220 220
         // value: true / false.
221 221
         $this->defer = $options['defer'];
222
-        $this->defer = apply_filters( 'autoptimize_filter_css_defer', $this->defer, $this->content );
222
+        $this->defer = apply_filters('autoptimize_filter_css_defer', $this->defer, $this->content);
223 223
 
224 224
         // Should we inline while deferring?
225 225
         // value: inlined CSS.
226
-        $this->defer_inline = apply_filters( 'autoptimize_filter_css_defer_inline', $this->sanitize_css( $options['defer_inline'] ), $this->content );
226
+        $this->defer_inline = apply_filters('autoptimize_filter_css_defer_inline', $this->sanitize_css($options['defer_inline']), $this->content);
227 227
 
228 228
         // Should we inline?
229 229
         // value: true / false.
230 230
         $this->inline = $options['inline'];
231
-        $this->inline = apply_filters( 'autoptimize_filter_css_inline', $this->inline, $this->content );
231
+        $this->inline = apply_filters('autoptimize_filter_css_inline', $this->inline, $this->content);
232 232
 
233 233
         // Store cdn url.
234 234
         $this->cdn_url = $options['cdn_url'];
@@ -237,16 +237,16 @@  discard block
 block discarded – undo
237 237
         $this->datauris = $options['datauris'];
238 238
 
239 239
         // Determine whether excluded files should be minified if not yet so.
240
-        if ( ! $options['minify_excluded'] && $options['aggregate'] ) {
240
+        if (!$options['minify_excluded'] && $options['aggregate']) {
241 241
             $this->minify_excluded = false;
242 242
         }
243
-        $this->minify_excluded = apply_filters( 'autoptimize_filter_css_minify_excluded', $this->minify_excluded, '' );
243
+        $this->minify_excluded = apply_filters('autoptimize_filter_css_minify_excluded', $this->minify_excluded, '');
244 244
 
245 245
         // should we force all media-attributes to all?
246
-        $this->media_force_all = apply_filters( 'autoptimize_filter_css_tagmedia_forceall', false );
246
+        $this->media_force_all = apply_filters('autoptimize_filter_css_tagmedia_forceall', false);
247 247
 
248 248
         // noptimize me.
249
-        $this->content = $this->hide_noptimize( $this->content );
249
+        $this->content = $this->hide_noptimize($this->content);
250 250
 
251 251
         // Exclude (no)script, as those may contain CSS which should be left as is.
252 252
         $this->content = $this->replace_contents_with_marker_if_exists(
@@ -257,25 +257,25 @@  discard block
 block discarded – undo
257 257
         );
258 258
 
259 259
         // Save IE hacks.
260
-        $this->content = $this->hide_iehacks( $this->content );
260
+        $this->content = $this->hide_iehacks($this->content);
261 261
 
262 262
         // Hide HTML comments.
263
-        $this->content = $this->hide_comments( $this->content );
263
+        $this->content = $this->hide_comments($this->content);
264 264
 
265 265
         // Get <style> and <link>.
266
-        if ( preg_match_all( '#(<style[^>]*>.*</style>)|(<link[^>]*stylesheet[^>]*>)#Usmi', $this->content, $matches ) ) {
266
+        if (preg_match_all('#(<style[^>]*>.*</style>)|(<link[^>]*stylesheet[^>]*>)#Usmi', $this->content, $matches)) {
267 267
 
268
-            foreach ( $matches[0] as $tag ) {
269
-                if ( $this->isremovable( $tag, $this->cssremovables ) ) {
270
-                    $this->content = str_replace( $tag, '', $this->content );
271
-                } elseif ( $this->ismovable( $tag ) ) {
268
+            foreach ($matches[0] as $tag) {
269
+                if ($this->isremovable($tag, $this->cssremovables)) {
270
+                    $this->content = str_replace($tag, '', $this->content);
271
+                } elseif ($this->ismovable($tag)) {
272 272
                     // Get the media.
273
-                    if ( false !== strpos( $tag, 'media=' ) ) {
274
-                        preg_match( '#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $medias );
275
-                        $medias = explode( ',', $medias[1] );
273
+                    if (false !== strpos($tag, 'media=')) {
274
+                        preg_match('#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $medias);
275
+                        $medias = explode(',', $medias[1]);
276 276
                         $media  = array();
277
-                        foreach ( $medias as $elem ) {
278
-                            if ( empty( $elem ) ) {
277
+                        foreach ($medias as $elem) {
278
+                            if (empty($elem)) {
279 279
                                 $elem = 'all';
280 280
                             }
281 281
 
@@ -283,68 +283,68 @@  discard block
 block discarded – undo
283 283
                         }
284 284
                     } else {
285 285
                         // No media specified - applies to all.
286
-                        $media = array( 'all' );
286
+                        $media = array('all');
287 287
                     }
288 288
 
289 289
                     // forcing media attribute to all to merge all in one file.
290
-                    if ( $this->media_force_all ) {
291
-                        $media = array( 'all' );
290
+                    if ($this->media_force_all) {
291
+                        $media = array('all');
292 292
                     }
293 293
 
294
-                    $media = apply_filters( 'autoptimize_filter_css_tagmedia', $media, $tag );
294
+                    $media = apply_filters('autoptimize_filter_css_tagmedia', $media, $tag);
295 295
 
296
-                    if ( preg_match( '#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source ) ) {
296
+                    if (preg_match('#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source)) {
297 297
                         // <link>.
298
-                        $url  = current( explode( '?', $source[2], 2 ) );
299
-                        $path = $this->getpath( $url );
298
+                        $url  = current(explode('?', $source[2], 2));
299
+                        $path = $this->getpath($url);
300 300
 
301
-                        if ( false !== $path && preg_match( '#\.css$#', $path ) ) {
301
+                        if (false !== $path && preg_match('#\.css$#', $path)) {
302 302
                             // Good link.
303
-                            $this->css[] = array( $media, $path );
303
+                            $this->css[] = array($media, $path);
304 304
                         } else {
305 305
                             // Link is dynamic (.php etc).
306
-                            $new_tag = $this->optionally_defer_excluded( $tag, 'none' );
307
-                            if ( '' !== $new_tag && $new_tag !== $tag ) {
308
-                                $this->content = str_replace( $tag, $new_tag, $this->content );
306
+                            $new_tag = $this->optionally_defer_excluded($tag, 'none');
307
+                            if ('' !== $new_tag && $new_tag !== $tag) {
308
+                                $this->content = str_replace($tag, $new_tag, $this->content);
309 309
                             }
310 310
                             $tag = '';
311 311
                         }
312 312
                     } else {
313 313
                         // Inline css in style tags can be wrapped in comment tags, so restore comments.
314
-                        $tag = $this->restore_comments( $tag );
315
-                        preg_match( '#<style.*>(.*)</style>#Usmi', $tag, $code );
314
+                        $tag = $this->restore_comments($tag);
315
+                        preg_match('#<style.*>(.*)</style>#Usmi', $tag, $code);
316 316
 
317 317
                         // And re-hide them to be able to to the removal based on tag.
318
-                        $tag = $this->hide_comments( $tag );
318
+                        $tag = $this->hide_comments($tag);
319 319
 
320
-                        if ( $this->include_inline ) {
321
-                            $code        = preg_replace( '#^.*<!\[CDATA\[(?:\s*\*/)?(.*)(?://|/\*)\s*?\]\]>.*$#sm', '$1', $code[1] );
322
-                            $this->css[] = array( $media, 'INLINE;' . $code );
320
+                        if ($this->include_inline) {
321
+                            $code        = preg_replace('#^.*<!\[CDATA\[(?:\s*\*/)?(.*)(?://|/\*)\s*?\]\]>.*$#sm', '$1', $code[1]);
322
+                            $this->css[] = array($media, 'INLINE;'.$code);
323 323
                         } else {
324 324
                             $tag = '';
325 325
                         }
326 326
                     }
327 327
 
328 328
                     // Remove the original style tag.
329
-                    $this->content = str_replace( $tag, '', $this->content );
329
+                    $this->content = str_replace($tag, '', $this->content);
330 330
                 } else {
331
-                    if ( preg_match( '#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source ) ) {
332
-                        $exploded_url = explode( '?', $source[2], 2 );
331
+                    if (preg_match('#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source)) {
332
+                        $exploded_url = explode('?', $source[2], 2);
333 333
                         $url          = $exploded_url[0];
334
-                        $path         = $this->getpath( $url );
334
+                        $path         = $this->getpath($url);
335 335
                         $new_tag      = $tag;
336 336
 
337 337
                         // Excluded CSS, minify that file:
338 338
                         // -> if aggregate is on and exclude minify is on
339 339
                         // -> if aggregate is off and the file is not in dontmove.
340
-                        if ( $path && $this->minify_excluded ) {
341
-                            $consider_minified_array = apply_filters( 'autoptimize_filter_css_consider_minified', false );
342
-                            if ( ( false === $this->aggregate && str_replace( $this->dontmove, '', $path ) === $path ) || ( true === $this->aggregate && ( false === $consider_minified_array || str_replace( $consider_minified_array, '', $path ) === $path ) ) ) {
343
-                                $minified_url = $this->minify_single( $path );
344
-                                if ( ! empty( $minified_url ) ) {
340
+                        if ($path && $this->minify_excluded) {
341
+                            $consider_minified_array = apply_filters('autoptimize_filter_css_consider_minified', false);
342
+                            if ((false === $this->aggregate && str_replace($this->dontmove, '', $path) === $path) || (true === $this->aggregate && (false === $consider_minified_array || str_replace($consider_minified_array, '', $path) === $path))) {
343
+                                $minified_url = $this->minify_single($path);
344
+                                if (!empty($minified_url)) {
345 345
                                     // Replace orig URL with cached minified URL.
346
-                                    $new_tag = str_replace( $url, $minified_url, $tag );
347
-                                } elseif ( apply_filters( 'autoptimize_filter_ccsjs_remove_empty_minified_url', false ) ) {
346
+                                    $new_tag = str_replace($url, $minified_url, $tag);
347
+                                } elseif (apply_filters('autoptimize_filter_ccsjs_remove_empty_minified_url', false)) {
348 348
                                     // Remove the original style tag, because cache content is empty but only if
349 349
                                     // filter is true-ed because $minified_url is also false if file is minified already.
350 350
                                     $new_tag = '';
@@ -352,14 +352,14 @@  discard block
 block discarded – undo
352 352
                             }
353 353
                         }
354 354
 
355
-                        if ( '' !== $new_tag ) {
355
+                        if ('' !== $new_tag) {
356 356
                             // Optionally defer (preload) non-aggregated CSS.
357
-                            $new_tag = $this->optionally_defer_excluded( $new_tag, $url );
357
+                            $new_tag = $this->optionally_defer_excluded($new_tag, $url);
358 358
                         }
359 359
 
360 360
                         // And replace!
361
-                        if ( ( '' !== $new_tag && $new_tag !== $tag ) || ( '' === $new_tag && apply_filters( 'autoptimize_filter_css_remove_empty_files', false ) ) ) {
362
-                            $this->content = str_replace( $tag, $new_tag, $this->content );
361
+                        if (('' !== $new_tag && $new_tag !== $tag) || ('' === $new_tag && apply_filters('autoptimize_filter_css_remove_empty_files', false))) {
362
+                            $this->content = str_replace($tag, $new_tag, $this->content);
363 363
                         }
364 364
                     }
365 365
                 }
@@ -380,30 +380,30 @@  discard block
 block discarded – undo
380 380
      *
381 381
      * @return string $new_tag
382 382
      */
383
-    private function optionally_defer_excluded( $tag, $url = '' )
383
+    private function optionally_defer_excluded($tag, $url = '')
384 384
     {
385 385
         // Defer single CSS if "inline & defer" is ON and there is inline CSS.
386
-        if ( ! empty( $tag ) && false === strpos( $tag, ' onload=' ) && $this->defer && ! empty( $this->defer_inline ) && apply_filters( 'autoptimize_filter_css_defer_excluded', true, $tag ) ) {
386
+        if (!empty($tag) && false === strpos($tag, ' onload=') && $this->defer && !empty($this->defer_inline) && apply_filters('autoptimize_filter_css_defer_excluded', true, $tag)) {
387 387
             // get media attribute and based on that create onload JS attribute value.
388
-            if ( false === strpos( $tag, 'media=' ) ) {
389
-                $tag = str_replace( '<link', "<link media='all'", $tag );
388
+            if (false === strpos($tag, 'media=')) {
389
+                $tag = str_replace('<link', "<link media='all'", $tag);
390 390
             }
391 391
 
392
-            preg_match( '#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $_medias );
392
+            preg_match('#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $_medias);
393 393
             $_media          = $_medias[1];
394
-            $_preload_onload = autoptimizeConfig::get_ao_css_preload_onload( $_media );
394
+            $_preload_onload = autoptimizeConfig::get_ao_css_preload_onload($_media);
395 395
 
396
-            if ( 'print' !== $_media ) {
396
+            if ('print' !== $_media) {
397 397
                 // If not media=print, adapt original <link> element for CSS to be preloaded and add <noscript>-version for fallback.
398
-                $new_tag = '<noscript>' . autoptimizeUtils::remove_id_from_node( $tag ) . '</noscript>' . str_replace(
398
+                $new_tag = '<noscript>'.autoptimizeUtils::remove_id_from_node($tag).'</noscript>'.str_replace(
399 399
                     $_medias[0],
400
-                    "media='print' onload=\"" . $_preload_onload . '"',
400
+                    "media='print' onload=\"".$_preload_onload.'"',
401 401
                     $tag
402 402
                 );
403 403
 
404 404
                 // Optionally (but default false) preload the (excluded) CSS-file.
405
-                if ( apply_filters( 'autoptimize_fitler_css_preload_and_print', false ) && 'none' !== $url ) {
406
-                    $new_tag = '<link rel="preload" as="stylesheet" href="' . $url . '"/>' . $new_tag;
405
+                if (apply_filters('autoptimize_fitler_css_preload_and_print', false) && 'none' !== $url) {
406
+                    $new_tag = '<link rel="preload" as="stylesheet" href="'.$url.'"/>'.$new_tag;
407 407
                 }
408 408
             } else {
409 409
                 $new_tag = $tag;
@@ -423,22 +423,22 @@  discard block
 block discarded – undo
423 423
      * @param string $path image path.
424 424
      * @return boolean
425 425
      */
426
-    private function is_datauri_candidate( $path )
426
+    private function is_datauri_candidate($path)
427 427
     {
428 428
         // Call only once since it's called from a loop.
429 429
         static $max_size = null;
430
-        if ( null === $max_size ) {
430
+        if (null === $max_size) {
431 431
             $max_size = $this->get_datauri_maxsize();
432 432
         }
433 433
 
434
-        if ( $path && preg_match( '#\.(jpe?g|png|gif|webp|bmp)$#i', $path ) &&
435
-            file_exists( $path ) && is_readable( $path ) && filesize( $path ) <= $max_size ) {
434
+        if ($path && preg_match('#\.(jpe?g|png|gif|webp|bmp)$#i', $path) &&
435
+            file_exists($path) && is_readable($path) && filesize($path) <= $max_size) {
436 436
 
437 437
             // Seems we have a candidate.
438 438
             $is_candidate = true;
439 439
         } else {
440 440
             // Filter allows overriding default decision (which checks for local file existence).
441
-            $is_candidate = apply_filters( 'autoptimize_filter_css_is_datauri_candidate', false, $path );
441
+            $is_candidate = apply_filters('autoptimize_filter_css_is_datauri_candidate', false, $path);
442 442
         }
443 443
 
444 444
         return $is_candidate;
@@ -463,29 +463,29 @@  discard block
 block discarded – undo
463 463
          * of thing you're probably better of building assets completely
464 464
          * outside of WordPress anyway.
465 465
          */
466
-        if ( null === $max_size ) {
467
-            $max_size = (int) apply_filters( 'autoptimize_filter_css_datauri_maxsize', 4096 );
466
+        if (null === $max_size) {
467
+            $max_size = (int) apply_filters('autoptimize_filter_css_datauri_maxsize', 4096);
468 468
         }
469 469
 
470 470
         return $max_size;
471 471
     }
472 472
 
473
-    private function check_datauri_exclude_list( $url )
473
+    private function check_datauri_exclude_list($url)
474 474
     {
475 475
         static $exclude_list = null;
476 476
         $no_datauris         = array();
477 477
 
478 478
         // Again, skip doing certain stuff repeatedly when loop-called.
479
-        if ( null === $exclude_list ) {
480
-            $exclude_list = apply_filters( 'autoptimize_filter_css_datauri_exclude', '' );
481
-            $no_datauris  = array_filter( array_map( 'trim', explode( ',', $exclude_list ) ) );
479
+        if (null === $exclude_list) {
480
+            $exclude_list = apply_filters('autoptimize_filter_css_datauri_exclude', '');
481
+            $no_datauris  = array_filter(array_map('trim', explode(',', $exclude_list)));
482 482
         }
483 483
 
484 484
         $matched = false;
485 485
 
486
-        if ( ! empty( $exclude_list ) ) {
487
-            foreach ( $no_datauris as $no_datauri ) {
488
-                if ( false !== strpos( $url, $no_datauri ) ) {
486
+        if (!empty($exclude_list)) {
487
+            foreach ($no_datauris as $no_datauri) {
488
+                if (false !== strpos($url, $no_datauri)) {
489 489
                     $matched = true;
490 490
                     break;
491 491
                 }
@@ -495,7 +495,7 @@  discard block
 block discarded – undo
495 495
         return $matched;
496 496
     }
497 497
 
498
-    private function build_or_get_datauri_image( $path )
498
+    private function build_or_get_datauri_image($path)
499 499
     {
500 500
         /**
501 501
          * TODO/FIXME: document the required return array format, or better yet,
@@ -504,27 +504,27 @@  discard block
 block discarded – undo
504 504
          */
505 505
 
506 506
         // Allows short-circuiting datauri generation for an image.
507
-        $result = apply_filters( 'autoptimize_filter_css_datauri_image', array(), $path );
508
-        if ( ! empty( $result ) ) {
509
-            if ( is_array( $result ) && isset( $result['full'] ) && isset( $result['base64data'] ) ) {
507
+        $result = apply_filters('autoptimize_filter_css_datauri_image', array(), $path);
508
+        if (!empty($result)) {
509
+            if (is_array($result) && isset($result['full']) && isset($result['base64data'])) {
510 510
                 return $result;
511 511
             }
512 512
         }
513 513
 
514
-        $hash  = md5( $path );
515
-        $check = new autoptimizeCache( $hash, 'img' );
516
-        if ( $check->check() ) {
514
+        $hash  = md5($path);
515
+        $check = new autoptimizeCache($hash, 'img');
516
+        if ($check->check()) {
517 517
             // we have the base64 image in cache.
518 518
             $head_and_data = $check->retrieve();
519
-            $_base64data   = explode( ';base64,', $head_and_data );
519
+            $_base64data   = explode(';base64,', $head_and_data);
520 520
             $base64data    = $_base64data[1];
521
-            unset( $_base64data );
521
+            unset($_base64data);
522 522
         } else {
523 523
             // It's an image and we don't have it in cache, get the type by extension.
524
-            $exploded_path = explode( '.', $path );
525
-            $type          = end( $exploded_path );
524
+            $exploded_path = explode('.', $path);
525
+            $type          = end($exploded_path);
526 526
 
527
-            switch ( $type ) {
527
+            switch ($type) {
528 528
                 case 'jpg':
529 529
                 case 'jpeg':
530 530
                     $dataurihead = 'data:image/jpeg;base64,';
@@ -546,13 +546,13 @@  discard block
 block discarded – undo
546 546
             }
547 547
 
548 548
             // Encode the data.
549
-            $base64data    = base64_encode( file_get_contents( $path ) );
550
-            $head_and_data = $dataurihead . $base64data;
549
+            $base64data    = base64_encode(file_get_contents($path));
550
+            $head_and_data = $dataurihead.$base64data;
551 551
 
552 552
             // Save in cache.
553
-            $check->cache( $head_and_data, 'text/plain' );
553
+            $check->cache($head_and_data, 'text/plain');
554 554
         }
555
-        unset( $check );
555
+        unset($check);
556 556
 
557 557
         return array(
558 558
             'full'       => $head_and_data,
@@ -569,13 +569,13 @@  discard block
 block discarded – undo
569 569
      *
570 570
      * @return string
571 571
      */
572
-    protected static function replace_longest_matches_first( $string, $replacements = array() )
572
+    protected static function replace_longest_matches_first($string, $replacements = array())
573 573
     {
574
-        if ( ! empty( $replacements ) ) {
574
+        if (!empty($replacements)) {
575 575
             // Sort the replacements array by key length in desc order (so that the longest strings are replaced first).
576
-            $keys = array_map( 'strlen', array_keys( $replacements ) );
577
-            array_multisort( $keys, SORT_DESC, $replacements );
578
-            $string = str_replace( array_keys( $replacements ), array_values( $replacements ), $string );
576
+            $keys = array_map('strlen', array_keys($replacements));
577
+            array_multisort($keys, SORT_DESC, $replacements);
578
+            $string = str_replace(array_keys($replacements), array_values($replacements), $string);
579 579
         }
580 580
 
581 581
         return $string;
@@ -591,15 +591,15 @@  discard block
 block discarded – undo
591 591
      *
592 592
      * @return string
593 593
      */
594
-    public function replace_urls( $code = '' )
594
+    public function replace_urls($code = '')
595 595
     {
596 596
         $replacements = array();
597 597
 
598
-        preg_match_all( self::ASSETS_REGEX, $code, $url_src_matches );
599
-        if ( is_array( $url_src_matches ) && ! empty( $url_src_matches ) ) {
600
-            foreach ( $url_src_matches[1] as $count => $original_url ) {
598
+        preg_match_all(self::ASSETS_REGEX, $code, $url_src_matches);
599
+        if (is_array($url_src_matches) && !empty($url_src_matches)) {
600
+            foreach ($url_src_matches[1] as $count => $original_url) {
601 601
                 // Removes quotes and other cruft.
602
-                $url = trim( $original_url, " \t\n\r\0\x0B\"'" );
602
+                $url = trim($original_url, " \t\n\r\0\x0B\"'");
603 603
 
604 604
                 /**
605 605
                  * TODO/FIXME: Add a way for other code / callable to be called here
@@ -617,17 +617,17 @@  discard block
 block discarded – undo
617 617
                  */
618 618
 
619 619
                 // Do CDN replacement if needed.
620
-                if ( ! empty( $this->cdn_url ) ) {
621
-                    $replacement_url = $this->url_replace_cdn( $url );
620
+                if (!empty($this->cdn_url)) {
621
+                    $replacement_url = $this->url_replace_cdn($url);
622 622
                     // Prepare replacements array.
623
-                    $replacements[ $url_src_matches[1][ $count ] ] = str_replace(
624
-                        $original_url, $replacement_url, $url_src_matches[1][ $count ]
623
+                    $replacements[$url_src_matches[1][$count]] = str_replace(
624
+                        $original_url, $replacement_url, $url_src_matches[1][$count]
625 625
                     );
626 626
                 }
627 627
             }
628 628
         }
629 629
 
630
-        $code = self::replace_longest_matches_first( $code, $replacements );
630
+        $code = self::replace_longest_matches_first($code, $replacements);
631 631
 
632 632
         return $code;
633 633
     }
@@ -640,26 +640,26 @@  discard block
 block discarded – undo
640 640
      * @param string $code HTML being processed to hide fonts.
641 641
      * @return string
642 642
      */
643
-    public function hide_fontface_and_maybe_cdn( $code )
643
+    public function hide_fontface_and_maybe_cdn($code)
644 644
     {
645 645
         // Proceed only if @font-face declarations exist within $code.
646
-        preg_match_all( self::FONT_FACE_REGEX, $code, $fontfaces );
647
-        if ( isset( $fontfaces[0] ) ) {
646
+        preg_match_all(self::FONT_FACE_REGEX, $code, $fontfaces);
647
+        if (isset($fontfaces[0])) {
648 648
             // Check if we need to cdn fonts or not.
649
-            $do_font_cdn = apply_filters( 'autoptimize_filter_css_fonts_cdn', false );
649
+            $do_font_cdn = apply_filters('autoptimize_filter_css_fonts_cdn', false);
650 650
 
651
-            foreach ( $fontfaces[0] as $full_match ) {
651
+            foreach ($fontfaces[0] as $full_match) {
652 652
                 // Keep original match so we can search/replace it.
653 653
                 $match_search = $full_match;
654 654
 
655 655
                 // Do font cdn if needed.
656
-                if ( $do_font_cdn ) {
657
-                    $full_match = $this->replace_urls( $full_match );
656
+                if ($do_font_cdn) {
657
+                    $full_match = $this->replace_urls($full_match);
658 658
                 }
659 659
 
660 660
                 // Replace declaration with its base64 encoded string.
661
-                $replacement = self::build_marker( 'FONTFACE', $full_match );
662
-                $code        = str_replace( $match_search, $replacement, $code );
661
+                $replacement = self::build_marker('FONTFACE', $full_match);
662
+                $code        = str_replace($match_search, $replacement, $code);
663 663
             }
664 664
         }
665 665
 
@@ -673,9 +673,9 @@  discard block
 block discarded – undo
673 673
      * @param string $code HTML being processed to unhide fonts.
674 674
      * @return string
675 675
      */
676
-    public function restore_fontface( $code )
676
+    public function restore_fontface($code)
677 677
     {
678
-        return $this->restore_marked_content( 'FONTFACE', $code );
678
+        return $this->restore_marked_content('FONTFACE', $code);
679 679
     }
680 680
 
681 681
     /**
@@ -684,10 +684,10 @@  discard block
 block discarded – undo
684 684
      * @param string $code HTML being processed rewrite assets.
685 685
      * @return string
686 686
      */
687
-    public function rewrite_assets( $code )
687
+    public function rewrite_assets($code)
688 688
     {
689 689
         // Handle @font-face rules by hiding and processing them separately.
690
-        $code = $this->hide_fontface_and_maybe_cdn( $code );
690
+        $code = $this->hide_fontface_and_maybe_cdn($code);
691 691
 
692 692
         /**
693 693
          * TODO/FIXME:
@@ -704,35 +704,35 @@  discard block
 block discarded – undo
704 704
         $imgreplace      = array();
705 705
 
706 706
         // Matches and captures anything specified within the literal `url()` and excludes those containing data: URIs.
707
-        preg_match_all( self::ASSETS_REGEX, $code, $url_src_matches );
708
-        if ( is_array( $url_src_matches ) && ! empty( $url_src_matches ) ) {
709
-            foreach ( $url_src_matches[1] as $count => $original_url ) {
707
+        preg_match_all(self::ASSETS_REGEX, $code, $url_src_matches);
708
+        if (is_array($url_src_matches) && !empty($url_src_matches)) {
709
+            foreach ($url_src_matches[1] as $count => $original_url) {
710 710
                 // Removes quotes and other cruft.
711
-                $url = trim( $original_url, " \t\n\r\0\x0B\"'" );
711
+                $url = trim($original_url, " \t\n\r\0\x0B\"'");
712 712
 
713 713
                 // If datauri inlining is turned on, do it.
714 714
                 $inlined = false;
715
-                if ( $this->datauris ) {
715
+                if ($this->datauris) {
716 716
                     $iurl = $url;
717
-                    if ( false !== strpos( $iurl, '?' ) ) {
718
-                        $iurl = strtok( $iurl, '?' );
717
+                    if (false !== strpos($iurl, '?')) {
718
+                        $iurl = strtok($iurl, '?');
719 719
                     }
720 720
 
721
-                    $ipath = $this->getpath( $iurl );
721
+                    $ipath = $this->getpath($iurl);
722 722
 
723
-                    $excluded = $this->check_datauri_exclude_list( $ipath );
724
-                    if ( ! $excluded ) {
725
-                        $is_datauri_candidate = $this->is_datauri_candidate( $ipath );
726
-                        if ( $is_datauri_candidate ) {
727
-                            $datauri    = $this->build_or_get_datauri_image( $ipath );
723
+                    $excluded = $this->check_datauri_exclude_list($ipath);
724
+                    if (!$excluded) {
725
+                        $is_datauri_candidate = $this->is_datauri_candidate($ipath);
726
+                        if ($is_datauri_candidate) {
727
+                            $datauri    = $this->build_or_get_datauri_image($ipath);
728 728
                             $base64data = $datauri['base64data'];
729 729
                             // Add it to the list for replacement.
730
-                            $imgreplace[ $url_src_matches[1][ $count ] ] = str_replace(
730
+                            $imgreplace[$url_src_matches[1][$count]] = str_replace(
731 731
                                 $original_url,
732 732
                                 $datauri['full'],
733
-                                $url_src_matches[1][ $count ]
733
+                                $url_src_matches[1][$count]
734 734
                             );
735
-                            $inlined                                     = true;
735
+                            $inlined = true;
736 736
                         }
737 737
                     }
738 738
                 }
@@ -743,20 +743,20 @@  discard block
 block discarded – undo
743 743
                  * inlining isn't turned on, or if a resource is skipped from
744 744
                  * being inlined for whatever reason above.
745 745
                  */
746
-                if ( ! $inlined && ( ! empty( $this->cdn_url ) || has_filter( 'autoptimize_filter_base_replace_cdn' ) ) ) {
746
+                if (!$inlined && (!empty($this->cdn_url) || has_filter('autoptimize_filter_base_replace_cdn'))) {
747 747
                     // Just do the "simple" CDN replacement.
748
-                    $replacement_url                             = $this->url_replace_cdn( $url );
749
-                    $imgreplace[ $url_src_matches[1][ $count ] ] = str_replace(
750
-                        $original_url, $replacement_url, $url_src_matches[1][ $count ]
748
+                    $replacement_url                             = $this->url_replace_cdn($url);
749
+                    $imgreplace[$url_src_matches[1][$count]] = str_replace(
750
+                        $original_url, $replacement_url, $url_src_matches[1][$count]
751 751
                     );
752 752
                 }
753 753
             }
754 754
         }
755 755
 
756
-        $code = self::replace_longest_matches_first( $code, $imgreplace );
756
+        $code = self::replace_longest_matches_first($code, $imgreplace);
757 757
 
758 758
         // Replace back font-face markers with actual font-face declarations.
759
-        $code = $this->restore_fontface( $code );
759
+        $code = $this->restore_fontface($code);
760 760
 
761 761
         return $code;
762 762
     }
@@ -766,29 +766,29 @@  discard block
 block discarded – undo
766 766
      */
767 767
     public function minify()
768 768
     {
769
-        foreach ( $this->css as $group ) {
770
-            list( $media, $css ) = $group;
771
-            if ( preg_match( '#^INLINE;#', $css ) ) {
769
+        foreach ($this->css as $group) {
770
+            list($media, $css) = $group;
771
+            if (preg_match('#^INLINE;#', $css)) {
772 772
                 // <style>.
773
-                $css      = preg_replace( '#^INLINE;#', '', $css );
774
-                $css      = self::fixurls( ABSPATH . 'index.php', $css ); // ABSPATH already contains a trailing slash.
775
-                $tmpstyle = apply_filters( 'autoptimize_css_individual_style', $css, '' );
776
-                if ( has_filter( 'autoptimize_css_individual_style' ) && ! empty( $tmpstyle ) ) {
773
+                $css      = preg_replace('#^INLINE;#', '', $css);
774
+                $css      = self::fixurls(ABSPATH.'index.php', $css); // ABSPATH already contains a trailing slash.
775
+                $tmpstyle = apply_filters('autoptimize_css_individual_style', $css, '');
776
+                if (has_filter('autoptimize_css_individual_style') && !empty($tmpstyle)) {
777 777
                     $css                   = $tmpstyle;
778 778
                     $this->alreadyminified = true;
779 779
                 }
780 780
             } else {
781 781
                 // <link>
782
-                if ( false !== $css && file_exists( $css ) && is_readable( $css ) ) {
782
+                if (false !== $css && file_exists($css) && is_readable($css)) {
783 783
                     $css_path = $css;
784
-                    $css      = self::fixurls( $css_path, file_get_contents( $css_path ) );
785
-                    $css      = preg_replace( '/\x{EF}\x{BB}\x{BF}/', '', $css );
786
-                    $tmpstyle = apply_filters( 'autoptimize_css_individual_style', $css, $css_path );
787
-                    if ( has_filter( 'autoptimize_css_individual_style' ) && ! empty( $tmpstyle ) ) {
784
+                    $css      = self::fixurls($css_path, file_get_contents($css_path));
785
+                    $css      = preg_replace('/\x{EF}\x{BB}\x{BF}/', '', $css);
786
+                    $tmpstyle = apply_filters('autoptimize_css_individual_style', $css, $css_path);
787
+                    if (has_filter('autoptimize_css_individual_style') && !empty($tmpstyle)) {
788 788
                         $css                   = $tmpstyle;
789 789
                         $this->alreadyminified = true;
790
-                    } elseif ( $this->can_inject_late( $css_path, $css ) ) {
791
-                        $css = self::build_injectlater_marker( $css_path, md5( $css ) );
790
+                    } elseif ($this->can_inject_late($css_path, $css)) {
791
+                        $css = self::build_injectlater_marker($css_path, md5($css));
792 792
                     }
793 793
                 } else {
794 794
                     // Couldn't read CSS. Maybe getpath isn't working?
@@ -796,12 +796,12 @@  discard block
 block discarded – undo
796 796
                 }
797 797
             }
798 798
 
799
-            foreach ( $media as $elem ) {
800
-                if ( ! empty( $css ) ) {
801
-                    if ( ! isset( $this->csscode[ $elem ] ) ) {
802
-                        $this->csscode[ $elem ] = '';
799
+            foreach ($media as $elem) {
800
+                if (!empty($css)) {
801
+                    if (!isset($this->csscode[$elem])) {
802
+                        $this->csscode[$elem] = '';
803 803
                     }
804
-                    $this->csscode[ $elem ] .= "\n/*FILESTART*/" . $css;
804
+                    $this->csscode[$elem] .= "\n/*FILESTART*/".$css;
805 805
                 }
806 806
             }
807 807
         }
@@ -809,133 +809,133 @@  discard block
 block discarded – undo
809 809
         // Check for duplicate code.
810 810
         $md5list = array();
811 811
         $tmpcss  = $this->csscode;
812
-        foreach ( $tmpcss as $media => $code ) {
813
-            $md5sum    = md5( $code );
812
+        foreach ($tmpcss as $media => $code) {
813
+            $md5sum    = md5($code);
814 814
             $medianame = $media;
815
-            foreach ( $md5list as $med => $sum ) {
815
+            foreach ($md5list as $med => $sum) {
816 816
                 // If same code.
817
-                if ( $sum === $md5sum ) {
817
+                if ($sum === $md5sum) {
818 818
                     // Add the merged code.
819
-                    $medianame                   = $med . ', ' . $media;
820
-                    $this->csscode[ $medianame ] = $code;
821
-                    $md5list[ $medianame ]       = $md5list[ $med ];
822
-                    unset( $this->csscode[ $med ], $this->csscode[ $media ], $md5list[ $med ] );
819
+                    $medianame                   = $med.', '.$media;
820
+                    $this->csscode[$medianame] = $code;
821
+                    $md5list[$medianame]       = $md5list[$med];
822
+                    unset($this->csscode[$med], $this->csscode[$media], $md5list[$med]);
823 823
                 }
824 824
             }
825
-            $md5list[ $medianame ] = $md5sum;
825
+            $md5list[$medianame] = $md5sum;
826 826
         }
827
-        unset( $tmpcss );
827
+        unset($tmpcss);
828 828
 
829 829
         // Manage @imports, while is for recursive import management.
830
-        foreach ( $this->csscode as &$thiscss ) {
830
+        foreach ($this->csscode as &$thiscss) {
831 831
             // Flag to trigger import reconstitution and var to hold external imports.
832 832
             $fiximports       = false;
833 833
             $external_imports = '';
834 834
 
835 835
             // remove comments to avoid importing commented-out imports.
836
-            $thiscss_nocomments = preg_replace( '#/\*.*\*/#Us', '', $thiscss );
837
-            while ( preg_match_all( '#@import +(?:url)?(?:(?:\((["\']?)(?:[^"\')]+)\1\)|(["\'])(?:[^"\']+)\2)(?:[^,;"\']+(?:,[^,;"\']+)*)?)(?:;)#mi', $thiscss_nocomments, $matches ) ) {
838
-                foreach ( $matches[0] as $import ) {
839
-                    if ( $this->isremovable( $import, $this->cssremovables ) ) {
840
-                        $thiscss   = str_replace( $import, '', $thiscss );
836
+            $thiscss_nocomments = preg_replace('#/\*.*\*/#Us', '', $thiscss);
837
+            while (preg_match_all('#@import +(?:url)?(?:(?:\((["\']?)(?:[^"\')]+)\1\)|(["\'])(?:[^"\']+)\2)(?:[^,;"\']+(?:,[^,;"\']+)*)?)(?:;)#mi', $thiscss_nocomments, $matches)) {
838
+                foreach ($matches[0] as $import) {
839
+                    if ($this->isremovable($import, $this->cssremovables)) {
840
+                        $thiscss   = str_replace($import, '', $thiscss);
841 841
                         $import_ok = true;
842 842
                     } else {
843
-                        $url       = trim( preg_replace( '#^.*((?:https?:|ftp:)?//.*\.css).*$#', '$1', trim( $import ) ), " \t\n\r\0\x0B\"'" );
844
-                        $path      = $this->getpath( $url );
843
+                        $url       = trim(preg_replace('#^.*((?:https?:|ftp:)?//.*\.css).*$#', '$1', trim($import)), " \t\n\r\0\x0B\"'");
844
+                        $path      = $this->getpath($url);
845 845
                         $import_ok = false;
846
-                        if ( file_exists( $path ) && is_readable( $path ) ) {
847
-                            $code     = addcslashes( self::fixurls( $path, file_get_contents( $path ) ), '\\' );
848
-                            $code     = preg_replace( '/\x{EF}\x{BB}\x{BF}/', '', $code );
849
-                            $tmpstyle = apply_filters( 'autoptimize_css_individual_style', $code, '' );
850
-                            if ( has_filter( 'autoptimize_css_individual_style' ) && ! empty( $tmpstyle ) ) {
846
+                        if (file_exists($path) && is_readable($path)) {
847
+                            $code     = addcslashes(self::fixurls($path, file_get_contents($path)), '\\');
848
+                            $code     = preg_replace('/\x{EF}\x{BB}\x{BF}/', '', $code);
849
+                            $tmpstyle = apply_filters('autoptimize_css_individual_style', $code, '');
850
+                            if (has_filter('autoptimize_css_individual_style') && !empty($tmpstyle)) {
851 851
                                 $code                  = $tmpstyle;
852 852
                                 $this->alreadyminified = true;
853
-                            } elseif ( $this->can_inject_late( $path, $code ) ) {
854
-                                $code = self::build_injectlater_marker( $path, md5( $code ) );
853
+                            } elseif ($this->can_inject_late($path, $code)) {
854
+                                $code = self::build_injectlater_marker($path, md5($code));
855 855
                             }
856 856
 
857
-                            if ( ! empty( $code ) ) {
858
-                                $tmp_thiscss = preg_replace( '#(/\*FILESTART\*/.*)' . preg_quote( $import, '#' ) . '#Us', '/*FILESTART2*/' . $code . '$1', $thiscss );
859
-                                if ( ! empty( $tmp_thiscss ) ) {
857
+                            if (!empty($code)) {
858
+                                $tmp_thiscss = preg_replace('#(/\*FILESTART\*/.*)'.preg_quote($import, '#').'#Us', '/*FILESTART2*/'.$code.'$1', $thiscss);
859
+                                if (!empty($tmp_thiscss)) {
860 860
                                     $thiscss   = $tmp_thiscss;
861 861
                                     $import_ok = true;
862
-                                    unset( $tmp_thiscss );
862
+                                    unset($tmp_thiscss);
863 863
                                 }
864 864
                             }
865
-                            unset( $code );
865
+                            unset($code);
866 866
                         }
867 867
                     }
868
-                    if ( ! $import_ok ) {
868
+                    if (!$import_ok) {
869 869
                         // External imports and general fall-back.
870 870
                         $external_imports .= $import;
871 871
 
872
-                        $thiscss    = str_replace( $import, '', $thiscss );
872
+                        $thiscss    = str_replace($import, '', $thiscss);
873 873
                         $fiximports = true;
874 874
                     }
875 875
                 }
876
-                $thiscss = preg_replace( '#/\*FILESTART\*/#', '', $thiscss );
877
-                $thiscss = preg_replace( '#/\*FILESTART2\*/#', '/*FILESTART*/', $thiscss );
876
+                $thiscss = preg_replace('#/\*FILESTART\*/#', '', $thiscss);
877
+                $thiscss = preg_replace('#/\*FILESTART2\*/#', '/*FILESTART*/', $thiscss);
878 878
 
879 879
                 // and update $thiscss_nocomments before going into next iteration in while loop.
880
-                $thiscss_nocomments = preg_replace( '#/\*.*\*/#Us', '', $thiscss );
880
+                $thiscss_nocomments = preg_replace('#/\*.*\*/#Us', '', $thiscss);
881 881
             }
882
-            unset( $thiscss_nocomments );
882
+            unset($thiscss_nocomments);
883 883
 
884 884
             // Add external imports to top of aggregated CSS.
885
-            if ( $fiximports ) {
886
-                $thiscss = $external_imports . $thiscss;
885
+            if ($fiximports) {
886
+                $thiscss = $external_imports.$thiscss;
887 887
             }
888 888
         }
889
-        unset( $thiscss );
889
+        unset($thiscss);
890 890
 
891 891
         // $this->csscode has all the uncompressed code now.
892
-        foreach ( $this->csscode as &$code ) {
892
+        foreach ($this->csscode as &$code) {
893 893
             // Check for already-minified code.
894
-            $hash = md5( $code );
895
-            do_action( 'autoptimize_action_css_hash', $hash );
896
-            $ccheck = new autoptimizeCache( $hash, 'css' );
897
-            if ( $ccheck->check() ) {
894
+            $hash = md5($code);
895
+            do_action('autoptimize_action_css_hash', $hash);
896
+            $ccheck = new autoptimizeCache($hash, 'css');
897
+            if ($ccheck->check()) {
898 898
                 $code                          = $ccheck->retrieve();
899
-                $this->hashmap[ md5( $code ) ] = $hash;
899
+                $this->hashmap[md5($code)] = $hash;
900 900
                 continue;
901 901
             }
902
-            unset( $ccheck );
902
+            unset($ccheck);
903 903
 
904 904
             // Rewrite and/or inline referenced assets.
905
-            $code = $this->rewrite_assets( $code );
905
+            $code = $this->rewrite_assets($code);
906 906
 
907 907
             // Minify.
908
-            $code = $this->run_minifier_on( $code );
908
+            $code = $this->run_minifier_on($code);
909 909
 
910 910
             // Bring back INJECTLATER stuff.
911
-            $code = $this->inject_minified( $code );
911
+            $code = $this->inject_minified($code);
912 912
 
913 913
             // Filter results.
914
-            $tmp_code = apply_filters( 'autoptimize_css_after_minify', $code );
915
-            if ( ! empty( $tmp_code ) ) {
914
+            $tmp_code = apply_filters('autoptimize_css_after_minify', $code);
915
+            if (!empty($tmp_code)) {
916 916
                 $code = $tmp_code;
917
-                unset( $tmp_code );
917
+                unset($tmp_code);
918 918
             }
919 919
 
920
-            $this->hashmap[ md5( $code ) ] = $hash;
920
+            $this->hashmap[md5($code)] = $hash;
921 921
         }
922 922
 
923
-        unset( $code );
923
+        unset($code);
924 924
         return true;
925 925
     }
926 926
 
927
-    public function run_minifier_on( $code )
927
+    public function run_minifier_on($code)
928 928
     {
929
-        if ( ! $this->alreadyminified ) {
930
-            $do_minify = apply_filters( 'autoptimize_css_do_minify', true );
929
+        if (!$this->alreadyminified) {
930
+            $do_minify = apply_filters('autoptimize_css_do_minify', true);
931 931
 
932
-            if ( $do_minify ) {
932
+            if ($do_minify) {
933 933
                 $cssmin   = new autoptimizeCSSmin();
934
-                $tmp_code = trim( $cssmin->run( $code ) );
934
+                $tmp_code = trim($cssmin->run($code));
935 935
 
936
-                if ( ! empty( $tmp_code ) ) {
936
+                if (!empty($tmp_code)) {
937 937
                     $code = $tmp_code;
938
-                    unset( $tmp_code );
938
+                    unset($tmp_code);
939 939
                 }
940 940
             }
941 941
         }
@@ -949,18 +949,18 @@  discard block
 block discarded – undo
949 949
     public function cache()
950 950
     {
951 951
         // CSS cache.
952
-        foreach ( $this->csscode as $media => $code ) {
953
-            if ( empty( $code ) ) {
952
+        foreach ($this->csscode as $media => $code) {
953
+            if (empty($code)) {
954 954
                 continue;
955 955
             }
956 956
 
957
-            $md5   = $this->hashmap[ md5( $code ) ];
958
-            $cache = new autoptimizeCache( $md5, 'css' );
959
-            if ( ! $cache->check() ) {
957
+            $md5   = $this->hashmap[md5($code)];
958
+            $cache = new autoptimizeCache($md5, 'css');
959
+            if (!$cache->check()) {
960 960
                 // Cache our code.
961
-                $cache->cache( $code, 'text/css' );
961
+                $cache->cache($code, 'text/css');
962 962
             }
963
-            $this->url[ $media ] = AUTOPTIMIZE_CACHE_URL . $cache->getname();
963
+            $this->url[$media] = AUTOPTIMIZE_CACHE_URL.$cache->getname();
964 964
         }
965 965
     }
966 966
 
@@ -970,95 +970,95 @@  discard block
 block discarded – undo
970 970
     public function getcontent()
971 971
     {
972 972
         // Restore the full content (only applies when "autoptimize_filter_css_justhead" filter is true).
973
-        if ( ! empty( $this->restofcontent ) ) {
973
+        if (!empty($this->restofcontent)) {
974 974
             $this->content      .= $this->restofcontent;
975 975
             $this->restofcontent = '';
976 976
         }
977 977
 
978 978
         // type is not added by default.
979 979
         $type_css = '';
980
-        if ( apply_filters( 'autoptimize_filter_cssjs_addtype', false ) ) {
980
+        if (apply_filters('autoptimize_filter_cssjs_addtype', false)) {
981 981
             $type_css = 'type="text/css" ';
982 982
         }
983 983
 
984 984
         // Inject the new stylesheets.
985
-        $replace_tag = array( '<title', 'before' );
986
-        $replace_tag = apply_filters( 'autoptimize_filter_css_replacetag', $replace_tag, $this->content );
985
+        $replace_tag = array('<title', 'before');
986
+        $replace_tag = apply_filters('autoptimize_filter_css_replacetag', $replace_tag, $this->content);
987 987
 
988
-        if ( $this->inline ) {
989
-            foreach ( $this->csscode as $media => $code ) {
990
-                $this->inject_in_html( apply_filters( 'autoptimize_filter_css_bodyreplacementpayload', '<style ' . $type_css . 'media="' . $media . '">' . $code . '</style>' ), $replace_tag );
988
+        if ($this->inline) {
989
+            foreach ($this->csscode as $media => $code) {
990
+                $this->inject_in_html(apply_filters('autoptimize_filter_css_bodyreplacementpayload', '<style '.$type_css.'media="'.$media.'">'.$code.'</style>'), $replace_tag);
991 991
             }
992 992
         } else {
993
-            if ( $this->defer ) {
993
+            if ($this->defer) {
994 994
                 $preload_css_block  = '';
995 995
                 $inlined_ccss_block = '';
996 996
                 $noscript_css_block = '<noscript id="aonoscrcss">';
997 997
 
998 998
                 $defer_inline_code = $this->defer_inline;
999
-                if ( ! empty( $defer_inline_code ) ) {
1000
-                    if ( apply_filters( 'autoptimize_filter_css_critcss_minify', true ) ) {
1001
-                        $icss_hash  = md5( $defer_inline_code );
1002
-                        $icss_cache = new autoptimizeCache( $icss_hash, 'css' );
1003
-                        if ( $icss_cache->check() ) {
999
+                if (!empty($defer_inline_code)) {
1000
+                    if (apply_filters('autoptimize_filter_css_critcss_minify', true)) {
1001
+                        $icss_hash  = md5($defer_inline_code);
1002
+                        $icss_cache = new autoptimizeCache($icss_hash, 'css');
1003
+                        if ($icss_cache->check()) {
1004 1004
                             // we have the optimized inline CSS in cache.
1005 1005
                             $defer_inline_code = $icss_cache->retrieve();
1006 1006
                         } else {
1007 1007
                             $cssmin   = new autoptimizeCSSmin();
1008
-                            $tmp_code = trim( $cssmin->run( $defer_inline_code ) );
1008
+                            $tmp_code = trim($cssmin->run($defer_inline_code));
1009 1009
 
1010
-                            if ( ! empty( $tmp_code ) ) {
1010
+                            if (!empty($tmp_code)) {
1011 1011
                                 $defer_inline_code = $tmp_code;
1012
-                                $icss_cache->cache( $defer_inline_code, 'text/css' );
1013
-                                unset( $tmp_code );
1012
+                                $icss_cache->cache($defer_inline_code, 'text/css');
1013
+                                unset($tmp_code);
1014 1014
                             }
1015 1015
                         }
1016 1016
                     }
1017 1017
                     // inlined critical css set here, but injected when full CSS is injected
1018 1018
                     // to avoid CSS containing SVG with <title tag receiving the full CSS link.
1019
-                    $inlined_ccss_block = '<style ' . $type_css . 'id="aoatfcss" media="all">' . $defer_inline_code . '</style>';
1019
+                    $inlined_ccss_block = '<style '.$type_css.'id="aoatfcss" media="all">'.$defer_inline_code.'</style>';
1020 1020
                 }
1021 1021
             }
1022 1022
 
1023
-            foreach ( $this->url as $media => $url ) {
1024
-                $url = $this->url_replace_cdn( $url );
1023
+            foreach ($this->url as $media => $url) {
1024
+                $url = $this->url_replace_cdn($url);
1025 1025
 
1026 1026
                 // Add the stylesheet either deferred (import at bottom) or normal links in head.
1027
-                if ( $this->defer && 'print' !== $media ) {
1028
-                    $preload_onload = autoptimizeConfig::get_ao_css_preload_onload( $media );
1027
+                if ($this->defer && 'print' !== $media) {
1028
+                    $preload_onload = autoptimizeConfig::get_ao_css_preload_onload($media);
1029 1029
 
1030
-                    $preload_css_block .= '<link rel="stylesheet" media="print" href="' . $url . '" onload="' . $preload_onload . '" />';
1031
-                    if ( apply_filters( 'autoptimize_fitler_css_preload_and_print', false ) ) {
1032
-                        $preload_css_block = '<link rel="preload" as="stylesheet" href="' . $url . '"/>' . $preload_css_block;
1030
+                    $preload_css_block .= '<link rel="stylesheet" media="print" href="'.$url.'" onload="'.$preload_onload.'" />';
1031
+                    if (apply_filters('autoptimize_fitler_css_preload_and_print', false)) {
1032
+                        $preload_css_block = '<link rel="preload" as="stylesheet" href="'.$url.'"/>'.$preload_css_block;
1033 1033
                     }
1034
-                    $noscript_css_block .= '<link ' . $type_css . 'media="' . $media . '" href="' . $url . '" rel="stylesheet" />';
1034
+                    $noscript_css_block .= '<link '.$type_css.'media="'.$media.'" href="'.$url.'" rel="stylesheet" />';
1035 1035
                 } else {
1036
-                    if ( strlen( $this->csscode[ $media ] ) > $this->cssinlinesize ) {
1037
-                        $this->inject_in_html( apply_filters( 'autoptimize_filter_css_bodyreplacementpayload', '<link ' . $type_css . 'media="' . $media . '" href="' . $url . '" rel="stylesheet" />' ), $replace_tag );
1038
-                    } elseif ( strlen( $this->csscode[ $media ] ) > 0 ) {
1039
-                        $this->inject_in_html( apply_filters( 'autoptimize_filter_css_bodyreplacementpayload', '<style ' . $type_css . 'media="' . $media . '">' . $this->csscode[ $media ] . '</style>' ), $replace_tag );
1036
+                    if (strlen($this->csscode[$media]) > $this->cssinlinesize) {
1037
+                        $this->inject_in_html(apply_filters('autoptimize_filter_css_bodyreplacementpayload', '<link '.$type_css.'media="'.$media.'" href="'.$url.'" rel="stylesheet" />'), $replace_tag);
1038
+                    } elseif (strlen($this->csscode[$media]) > 0) {
1039
+                        $this->inject_in_html(apply_filters('autoptimize_filter_css_bodyreplacementpayload', '<style '.$type_css.'media="'.$media.'">'.$this->csscode[$media].'</style>'), $replace_tag);
1040 1040
                     }
1041 1041
                 }
1042 1042
             }
1043 1043
 
1044
-            if ( $this->defer ) {
1044
+            if ($this->defer) {
1045 1045
                 $noscript_css_block .= '</noscript>';
1046 1046
                 // Inject inline critical CSS, the preloaded full CSS and the noscript-CSS.
1047
-                $this->inject_in_html( apply_filters( 'autoptimize_filter_css_bodyreplacementpayload', $inlined_ccss_block . $preload_css_block . $noscript_css_block ), $replace_tag );
1047
+                $this->inject_in_html(apply_filters('autoptimize_filter_css_bodyreplacementpayload', $inlined_ccss_block.$preload_css_block.$noscript_css_block), $replace_tag);
1048 1048
             }
1049 1049
         }
1050 1050
 
1051 1051
         // restore comments.
1052
-        $this->content = $this->restore_comments( $this->content );
1052
+        $this->content = $this->restore_comments($this->content);
1053 1053
 
1054 1054
         // restore IE hacks.
1055
-        $this->content = $this->restore_iehacks( $this->content );
1055
+        $this->content = $this->restore_iehacks($this->content);
1056 1056
 
1057 1057
         // restore (no)script.
1058
-        $this->content = $this->restore_marked_content( 'SCRIPT', $this->content );
1058
+        $this->content = $this->restore_marked_content('SCRIPT', $this->content);
1059 1059
 
1060 1060
         // Restore noptimize.
1061
-        $this->content = $this->restore_noptimize( $this->content );
1061
+        $this->content = $this->restore_noptimize($this->content);
1062 1062
 
1063 1063
         // Return the modified stylesheet.
1064 1064
         return $this->content;
@@ -1070,44 +1070,44 @@  discard block
 block discarded – undo
1070 1070
      * @param string $file filename of optimized CSS-file.
1071 1071
      * @param string $code CSS-code in which to fix URL's.
1072 1072
      */
1073
-    static function fixurls( $file, $code )
1073
+    static function fixurls($file, $code)
1074 1074
     {
1075 1075
         // Switch all imports to the url() syntax.
1076
-        $code = preg_replace( '#@import ("|\')(.+?)\.css.*?("|\')#', '@import url("${2}.css")', $code );
1076
+        $code = preg_replace('#@import ("|\')(.+?)\.css.*?("|\')#', '@import url("${2}.css")', $code);
1077 1077
 
1078
-        if ( preg_match_all( self::ASSETS_REGEX, $code, $matches ) ) {
1079
-            $file = str_replace( WP_ROOT_DIR, '/', $file );
1078
+        if (preg_match_all(self::ASSETS_REGEX, $code, $matches)) {
1079
+            $file = str_replace(WP_ROOT_DIR, '/', $file);
1080 1080
             /**
1081 1081
              * Rollback as per https://github.com/futtta/autoptimize/issues/94
1082 1082
              * $file = str_replace( AUTOPTIMIZE_WP_CONTENT_NAME, '', $file );
1083 1083
              */
1084
-            $dir = dirname( $file ); // Like /themes/expound/css.
1084
+            $dir = dirname($file); // Like /themes/expound/css.
1085 1085
 
1086 1086
             /**
1087 1087
              * $dir should not contain backslashes, since it's used to replace
1088 1088
              * urls, but it can contain them when running on Windows because
1089 1089
              * fixurls() is sometimes called with `ABSPATH . 'index.php'`
1090 1090
              */
1091
-            $dir = str_replace( '\\', '/', $dir );
1092
-            unset( $file ); // not used below at all.
1091
+            $dir = str_replace('\\', '/', $dir);
1092
+            unset($file); // not used below at all.
1093 1093
 
1094 1094
             $replace = array();
1095
-            foreach ( $matches[1] as $k => $url ) {
1095
+            foreach ($matches[1] as $k => $url) {
1096 1096
                 // Remove quotes.
1097
-                $url      = trim( $url, " \t\n\r\0\x0B\"'" );
1098
-                $no_q_url = trim( $url, "\"'" );
1099
-                if ( $url !== $no_q_url ) {
1097
+                $url      = trim($url, " \t\n\r\0\x0B\"'");
1098
+                $no_q_url = trim($url, "\"'");
1099
+                if ($url !== $no_q_url) {
1100 1100
                     $removed_quotes = true;
1101 1101
                 } else {
1102 1102
                     $removed_quotes = false;
1103 1103
                 }
1104 1104
 
1105
-                if ( '' === $no_q_url ) {
1105
+                if ('' === $no_q_url) {
1106 1106
                     continue;
1107 1107
                 }
1108 1108
 
1109 1109
                 $url = $no_q_url;
1110
-                if ( '/' === $url[0] || preg_match( '#^(https?://|ftp://|data:)#i', $url ) ) {
1110
+                if ('/' === $url[0] || preg_match('#^(https?://|ftp://|data:)#i', $url)) {
1111 1111
                     // URL is protocol-relative, host-relative or something we don't touch.
1112 1112
                     continue;
1113 1113
                 } else { // Relative URL.
@@ -1116,49 +1116,49 @@  discard block
 block discarded – undo
1116 1116
                      * rollback as per https://github.com/futtta/autoptimize/issues/94
1117 1117
                      * $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', AUTOPTIMIZE_WP_CONTENT_URL . str_replace( '//', '/', $dir . '/' . $url ) ) );
1118 1118
                      */
1119
-                    $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', AUTOPTIMIZE_WP_ROOT_URL . str_replace( '//', '/', $dir . '/' . $url ) ) );
1120
-                    $newurl = apply_filters( 'autoptimize_filter_css_fixurl_newurl', $newurl );
1119
+                    $newurl = preg_replace('/https?:/', '', str_replace(' ', '%20', AUTOPTIMIZE_WP_ROOT_URL.str_replace('//', '/', $dir.'/'.$url)));
1120
+                    $newurl = apply_filters('autoptimize_filter_css_fixurl_newurl', $newurl);
1121 1121
 
1122 1122
                     /**
1123 1123
                      * Hash the url + whatever was behind potentially for replacement
1124 1124
                      * We must do this, or different css classes referencing the same bg image (but
1125 1125
                      * different parts of it, say, in sprites and such) loose their stuff...
1126 1126
                      */
1127
-                    $hash = md5( $url . $matches[2][ $k ] );
1128
-                    $code = str_replace( $matches[0][ $k ], $hash, $code );
1127
+                    $hash = md5($url.$matches[2][$k]);
1128
+                    $code = str_replace($matches[0][$k], $hash, $code);
1129 1129
 
1130
-                    if ( $removed_quotes ) {
1131
-                        $replace[ $hash ] = "url('" . $newurl . "')" . $matches[2][ $k ];
1130
+                    if ($removed_quotes) {
1131
+                        $replace[$hash] = "url('".$newurl."')".$matches[2][$k];
1132 1132
                     } else {
1133
-                        $replace[ $hash ] = 'url(' . $newurl . ')' . $matches[2][ $k ];
1133
+                        $replace[$hash] = 'url('.$newurl.')'.$matches[2][$k];
1134 1134
                     }
1135 1135
                 }
1136 1136
             }
1137 1137
 
1138
-            $code = self::replace_longest_matches_first( $code, $replace );
1138
+            $code = self::replace_longest_matches_first($code, $replace);
1139 1139
         }
1140 1140
 
1141 1141
         return $code;
1142 1142
     }
1143 1143
 
1144
-    private function ismovable( $tag )
1144
+    private function ismovable($tag)
1145 1145
     {
1146
-        if ( ! $this->aggregate ) {
1146
+        if (!$this->aggregate) {
1147 1147
             return false;
1148 1148
         }
1149 1149
 
1150
-        if ( ! empty( $this->allowlist ) ) {
1151
-            foreach ( $this->allowlist as $match ) {
1152
-                if ( false !== strpos( $tag, $match ) ) {
1150
+        if (!empty($this->allowlist)) {
1151
+            foreach ($this->allowlist as $match) {
1152
+                if (false !== strpos($tag, $match)) {
1153 1153
                     return true;
1154 1154
                 }
1155 1155
             }
1156 1156
             // no match with allowlist.
1157 1157
             return false;
1158 1158
         } else {
1159
-            if ( is_array( $this->dontmove ) && ! empty( $this->dontmove ) ) {
1160
-                foreach ( $this->dontmove as $match ) {
1161
-                    if ( false !== strpos( $tag, $match ) ) {
1159
+            if (is_array($this->dontmove) && !empty($this->dontmove)) {
1160
+                foreach ($this->dontmove as $match) {
1161
+                    if (false !== strpos($tag, $match)) {
1162 1162
                         // Matched something.
1163 1163
                         return false;
1164 1164
                     }
@@ -1170,22 +1170,22 @@  discard block
 block discarded – undo
1170 1170
         }
1171 1171
     }
1172 1172
 
1173
-    private function can_inject_late( $css_path, $css )
1173
+    private function can_inject_late($css_path, $css)
1174 1174
     {
1175
-        $consider_minified_array = apply_filters( 'autoptimize_filter_css_consider_minified', false, $css_path );
1176
-        if ( true !== $this->inject_min_late ) {
1175
+        $consider_minified_array = apply_filters('autoptimize_filter_css_consider_minified', false, $css_path);
1176
+        if (true !== $this->inject_min_late) {
1177 1177
             // late-inject turned off.
1178 1178
             return false;
1179
-        } elseif ( ( false === strpos( $css_path, 'min.css' ) ) && ( str_replace( $consider_minified_array, '', $css_path ) === $css_path ) ) {
1179
+        } elseif ((false === strpos($css_path, 'min.css')) && (str_replace($consider_minified_array, '', $css_path) === $css_path)) {
1180 1180
             // file not minified based on filename & filter.
1181 1181
             return false;
1182
-        } elseif ( false !== strpos( $css, '@import' ) ) {
1182
+        } elseif (false !== strpos($css, '@import')) {
1183 1183
             // can't late-inject files with imports as those need to be aggregated.
1184 1184
             return false;
1185
-        } elseif ( ( false !== strpos( $css, '@font-face' ) ) && ( apply_filters( 'autoptimize_filter_css_fonts_cdn', false ) === true ) && ( ! empty( $this->cdn_url ) ) ) {
1185
+        } elseif ((false !== strpos($css, '@font-face')) && (apply_filters('autoptimize_filter_css_fonts_cdn', false) === true) && (!empty($this->cdn_url))) {
1186 1186
             // don't late-inject CSS with font-src's if fonts are set to be CDN'ed.
1187 1187
             return false;
1188
-        } elseif ( ( ( true == $this->datauris ) || ( ! empty( $this->cdn_url ) ) ) && preg_match( '#background[^;}]*url\(#Ui', $css ) ) {
1188
+        } elseif (((true == $this->datauris) || (!empty($this->cdn_url))) && preg_match('#background[^;}]*url\(#Ui', $css)) {
1189 1189
             // don't late-inject CSS with images if CDN is set OR if image inlining is on.
1190 1190
             return false;
1191 1191
         } else {
@@ -1203,44 +1203,44 @@  discard block
 block discarded – undo
1203 1203
      *
1204 1204
      * @return bool|string Url pointing to the minified css file or false.
1205 1205
      */
1206
-    public function minify_single( $filepath, $cache_miss = false )
1206
+    public function minify_single($filepath, $cache_miss = false)
1207 1207
     {
1208
-        $contents = $this->prepare_minify_single( $filepath );
1208
+        $contents = $this->prepare_minify_single($filepath);
1209 1209
 
1210
-        if ( empty( $contents ) ) {
1210
+        if (empty($contents)) {
1211 1211
             return false;
1212 1212
         }
1213 1213
 
1214 1214
         // Check cache.
1215
-        $hash  = 'single_' . md5( $contents );
1216
-        $cache = new autoptimizeCache( $hash, 'css' );
1217
-        do_action( 'autoptimize_action_css_hash', $hash );
1215
+        $hash  = 'single_'.md5($contents);
1216
+        $cache = new autoptimizeCache($hash, 'css');
1217
+        do_action('autoptimize_action_css_hash', $hash);
1218 1218
 
1219 1219
         // If not in cache already, minify...
1220
-        if ( ! $cache->check() || $cache_miss ) {
1220
+        if (!$cache->check() || $cache_miss) {
1221 1221
             // Fixurls...
1222
-            $contents = self::fixurls( $filepath, $contents );
1222
+            $contents = self::fixurls($filepath, $contents);
1223 1223
             // CDN-replace any referenced assets if needed...
1224
-            $contents = $this->hide_fontface_and_maybe_cdn( $contents );
1225
-            $contents = $this->replace_urls( $contents );
1226
-            $contents = $this->restore_fontface( $contents );
1224
+            $contents = $this->hide_fontface_and_maybe_cdn($contents);
1225
+            $contents = $this->replace_urls($contents);
1226
+            $contents = $this->restore_fontface($contents);
1227 1227
             // Now minify...
1228 1228
             $cssmin   = new autoptimizeCSSmin();
1229
-            $contents = trim( $cssmin->run( $contents ) );
1229
+            $contents = trim($cssmin->run($contents));
1230 1230
 
1231 1231
             // Check if minified cache content is empty.
1232
-            if ( empty( $contents ) ) {
1232
+            if (empty($contents)) {
1233 1233
                 return false;
1234 1234
             }
1235 1235
 
1236 1236
             // Filter contents of excluded minified CSS.
1237
-            $contents = apply_filters( 'autoptimize_filter_css_single_after_minify', $contents );
1237
+            $contents = apply_filters('autoptimize_filter_css_single_after_minify', $contents);
1238 1238
 
1239 1239
             // Store in cache.
1240
-            $cache->cache( $contents, 'text/css' );
1240
+            $cache->cache($contents, 'text/css');
1241 1241
         }
1242 1242
 
1243
-        $url = $this->build_minify_single_url( $cache );
1243
+        $url = $this->build_minify_single_url($cache);
1244 1244
 
1245 1245
         return $url;
1246 1246
     }
@@ -1260,20 +1260,20 @@  discard block
 block discarded – undo
1260 1260
         return $this->options;
1261 1261
     }
1262 1262
 
1263
-    public function replaceOptions( $options )
1263
+    public function replaceOptions($options)
1264 1264
     {
1265 1265
         $this->options = $options;
1266 1266
     }
1267 1267
 
1268
-    public function setOption( $name, $value )
1268
+    public function setOption($name, $value)
1269 1269
     {
1270
-        $this->options[ $name ] = $value;
1270
+        $this->options[$name] = $value;
1271 1271
         $this->$name            = $value;
1272 1272
     }
1273 1273
 
1274
-    public function getOption( $name )
1274
+    public function getOption($name)
1275 1275
     {
1276
-        return $this->options[ $name ];
1276
+        return $this->options[$name];
1277 1277
     }
1278 1278
 
1279 1279
     /**
@@ -1287,11 +1287,11 @@  discard block
 block discarded – undo
1287 1287
      * @param string $css the to be sanitized CSS
1288 1288
      * @return string sanitized CSS.
1289 1289
      */
1290
-    public static function sanitize_css( $css )
1290
+    public static function sanitize_css($css)
1291 1291
     {
1292
-        $css = strip_tags( $css );
1293
-        if ( strpos( $css, '<' ) !== false ) {
1294
-            $css = preg_replace( '#<(\/?\w+)#', '\00003C$1', $css );
1292
+        $css = strip_tags($css);
1293
+        if (strpos($css, '<') !== false) {
1294
+            $css = preg_replace('#<(\/?\w+)#', '\00003C$1', $css);
1295 1295
         }
1296 1296
         return $css;
1297 1297
     }
Please login to merge, or discard this patch.
classes/autoptimizeCriticalCSSSettings.php 1 patch
Spacing   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Critical CSS Options page.
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -17,34 +17,34 @@  discard block
 block discarded – undo
17 17
 
18 18
     public function __construct()
19 19
     {
20
-        $this->settings_screen_do_remote_http = apply_filters( 'autoptimize_settingsscreen_remotehttp', $this->settings_screen_do_remote_http );
20
+        $this->settings_screen_do_remote_http = apply_filters('autoptimize_settingsscreen_remotehttp', $this->settings_screen_do_remote_http);
21 21
         $this->run();
22 22
     }
23 23
 
24 24
     protected function enabled()
25 25
     {
26
-        return apply_filters( 'autoptimize_filter_show_criticalcss_tabs', true );
26
+        return apply_filters('autoptimize_filter_show_criticalcss_tabs', true);
27 27
     }
28 28
 
29 29
     public function run()
30 30
     {
31
-        if ( $this->enabled() ) {
32
-            add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_critcss_tabs' ), 10, 1 );
33
-            add_action( 'admin_enqueue_scripts', array( $this, 'admin_assets' ) );
31
+        if ($this->enabled()) {
32
+            add_filter('autoptimize_filter_settingsscreen_tabs', array($this, 'add_critcss_tabs'), 10, 1);
33
+            add_action('admin_enqueue_scripts', array($this, 'admin_assets'));
34 34
 
35
-            if ( $this->is_multisite_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) {
36
-                add_action( 'network_admin_menu', array( $this, 'add_critcss_admin_menu' ) );
35
+            if ($this->is_multisite_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network()) {
36
+                add_action('network_admin_menu', array($this, 'add_critcss_admin_menu'));
37 37
             } else {
38
-                add_action( 'admin_menu', array( $this, 'add_critcss_admin_menu' ) );
38
+                add_action('admin_menu', array($this, 'add_critcss_admin_menu'));
39 39
             }
40 40
 
41 41
             $criticalcss_ajax = new autoptimizeCriticalCSSSettingsAjax();
42 42
         }
43 43
     }
44 44
 
45
-    public function add_critcss_tabs( $in )
45
+    public function add_critcss_tabs($in)
46 46
     {
47
-        $in = array_merge( $in, array( 'ao_critcss' => '⚡ ' . __( 'Critical CSS', 'autoptimize' ) ) );
47
+        $in = array_merge($in, array('ao_critcss' => '⚡ '.__('Critical CSS', 'autoptimize')));
48 48
 
49 49
         return $in;
50 50
     }
@@ -52,66 +52,66 @@  discard block
 block discarded – undo
52 52
     public function add_critcss_admin_menu()
53 53
     {
54 54
         // Register settings.
55
-        register_setting( 'ao_ccss_options_group', 'autoptimize_css_defer_inline' );
56
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_rules' );
57
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_additional' );
58
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_queue' );
59
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_viewport' );
60
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_finclude' );
61
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_rtimelimit' );
62
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_noptimize' );
63
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_debug' );
64
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_key' );
65
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_keyst' );
66
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_loggedin' );
67
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_forcepath' );
68
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_deferjquery' );
69
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_domain' );
70
-        register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_unloadccss' );
55
+        register_setting('ao_ccss_options_group', 'autoptimize_css_defer_inline');
56
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_rules');
57
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_additional');
58
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_queue');
59
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_viewport');
60
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_finclude');
61
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_rtimelimit');
62
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_noptimize');
63
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_debug');
64
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_key');
65
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_keyst');
66
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_loggedin');
67
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_forcepath');
68
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_deferjquery');
69
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_domain');
70
+        register_setting('ao_ccss_options_group', 'autoptimize_ccss_unloadccss');
71 71
 
72 72
         // And add submenu-page.
73
-        add_submenu_page( null, 'Critical CSS', 'Critical CSS', 'manage_options', 'ao_critcss', array( $this, 'ao_criticalcsssettings_page' ) );
73
+        add_submenu_page(null, 'Critical CSS', 'Critical CSS', 'manage_options', 'ao_critcss', array($this, 'ao_criticalcsssettings_page'));
74 74
     }
75 75
 
76
-    public function admin_assets( $hook ) {
76
+    public function admin_assets($hook) {
77 77
         // Return if plugin is not hooked.
78
-        if ( 'settings_page_ao_critcss' != $hook && 'admin_page_ao_critcss' != $hook ) {
78
+        if ('settings_page_ao_critcss' != $hook && 'admin_page_ao_critcss' != $hook) {
79 79
             return;
80 80
         }
81 81
 
82 82
         // Stylesheets to add.
83
-        wp_enqueue_style( 'wp-jquery-ui-dialog' );
84
-        wp_enqueue_style( 'ao-tablesorter', plugins_url( 'critcss-inc/css/ao-tablesorter/style.css', __FILE__ ) );
85
-        wp_enqueue_style( 'ao-ccss-admin-css', plugins_url( 'critcss-inc/css/admin_styles.css', __FILE__ ) );
83
+        wp_enqueue_style('wp-jquery-ui-dialog');
84
+        wp_enqueue_style('ao-tablesorter', plugins_url('critcss-inc/css/ao-tablesorter/style.css', __FILE__));
85
+        wp_enqueue_style('ao-ccss-admin-css', plugins_url('critcss-inc/css/admin_styles.css', __FILE__));
86 86
 
87 87
         // Scripts to add.
88
-        wp_enqueue_script( 'jquery-ui-dialog', array( 'jquery' ) );
89
-        wp_enqueue_script( 'md5', plugins_url( 'critcss-inc/js/md5.min.js', __FILE__ ), null, null, true );
90
-        wp_enqueue_script( 'tablesorter', plugins_url( 'critcss-inc/js/jquery.tablesorter.min.js', __FILE__ ), array( 'jquery' ), null, true );
91
-        wp_enqueue_script( 'ao-ccss-admin-license', plugins_url( 'critcss-inc/js/admin_settings.js', __FILE__ ), array( 'jquery' ), null, true );
88
+        wp_enqueue_script('jquery-ui-dialog', array('jquery'));
89
+        wp_enqueue_script('md5', plugins_url('critcss-inc/js/md5.min.js', __FILE__), null, null, true);
90
+        wp_enqueue_script('tablesorter', plugins_url('critcss-inc/js/jquery.tablesorter.min.js', __FILE__), array('jquery'), null, true);
91
+        wp_enqueue_script('ao-ccss-admin-license', plugins_url('critcss-inc/js/admin_settings.js', __FILE__), array('jquery'), null, true);
92 92
     }
93 93
 
94 94
     public function ao_criticalcsssettings_page()
95 95
     {
96 96
         // these are not OO yet, simply require for now.
97
-        require_once( 'critcss-inc/admin_settings_rules.php' );
98
-        require_once( 'critcss-inc/admin_settings_queue.php' );
99
-        require_once( 'critcss-inc/admin_settings_key.php' );
100
-        require_once( 'critcss-inc/admin_settings_adv.php' );
101
-        require_once( 'critcss-inc/admin_settings_explain.php' );
97
+        require_once('critcss-inc/admin_settings_rules.php');
98
+        require_once('critcss-inc/admin_settings_queue.php');
99
+        require_once('critcss-inc/admin_settings_key.php');
100
+        require_once('critcss-inc/admin_settings_adv.php');
101
+        require_once('critcss-inc/admin_settings_explain.php');
102 102
 
103 103
         // fetch all options at once and populate them individually explicitely as globals.
104 104
         $all_options = autoptimizeCriticalCSSBase::fetch_options();
105
-        foreach ( $all_options as $_option => $_value ) {
105
+        foreach ($all_options as $_option => $_value) {
106 106
             global ${$_option};
107 107
             ${$_option} = $_value;
108 108
         }
109 109
         ?>
110
-        <script>document.title = "Autoptimize: <?php _e( 'Critical CSS', 'autoptimize' ); ?> " + document.title;</script>
110
+        <script>document.title = "Autoptimize: <?php _e('Critical CSS', 'autoptimize'); ?> " + document.title;</script>
111 111
         <div class="wrap">
112 112
             <div id="autoptimize_main">
113 113
                 <div id="ao_title_and_button">
114
-                    <h1><?php _e( 'Autoptimize Settings', 'autoptimize' ); ?></h1>
114
+                    <h1><?php _e('Autoptimize Settings', 'autoptimize'); ?></h1>
115 115
                 </div>
116 116
 
117 117
                 <?php
@@ -119,39 +119,39 @@  discard block
 block discarded – undo
119 119
                 echo autoptimizeConfig::ao_admin_tabs();
120 120
 
121 121
                 // Make sure dir to write ao_ccss exists and is writable.
122
-                if ( ! is_dir( AO_CCSS_DIR ) ) {
123
-                    $mkdirresp = @mkdir( AO_CCSS_DIR, 0775, true ); // @codingStandardsIgnoreLine
122
+                if (!is_dir(AO_CCSS_DIR)) {
123
+                    $mkdirresp = @mkdir(AO_CCSS_DIR, 0775, true); // @codingStandardsIgnoreLine
124 124
                 } else {
125 125
                     $mkdirresp = true;
126 126
                 }
127 127
 
128 128
                 // Make sure our index.html is there.
129
-                if ( ! is_file( AO_CCSS_DIR . 'index.html' ) ) {
130
-                    $fileresp = file_put_contents( AO_CCSS_DIR . 'index.html', '<html><head><meta name="robots" content="noindex, nofollow"></head><body>Generated by <a href="http://wordpress.org/extend/plugins/autoptimize/" rel="nofollow">Autoptimize</a></body></html>' );
129
+                if (!is_file(AO_CCSS_DIR.'index.html')) {
130
+                    $fileresp = file_put_contents(AO_CCSS_DIR.'index.html', '<html><head><meta name="robots" content="noindex, nofollow"></head><body>Generated by <a href="http://wordpress.org/extend/plugins/autoptimize/" rel="nofollow">Autoptimize</a></body></html>');
131 131
                 } else {
132 132
                     $fileresp = true;
133 133
                 }
134 134
 
135 135
                 // Warn if we could not create those files.
136
-                if ( ( ! $mkdirresp ) || ( ! $fileresp ) ) {
136
+                if ((!$mkdirresp) || (!$fileresp)) {
137 137
                     ?>
138 138
                     <div class="notice-error notice"><p>
139 139
                     <?php
140
-                    _e( 'Could not create the required directory. Make sure the webserver can write to the wp-content directory.', 'autoptimize' );
140
+                    _e('Could not create the required directory. Make sure the webserver can write to the wp-content directory.', 'autoptimize');
141 141
                     ?>
142 142
                     </p></div>
143 143
                     <?php
144 144
                 }
145 145
 
146 146
                 // Check for "inline & defer CSS" being active in Autoptimize.
147
-                if ( ! empty( $ao_ccss_key ) && ! $ao_css_defer ) {
148
-                    if ( empty( $ao_ccss_keyst ) ) {
147
+                if (!empty($ao_ccss_key) && !$ao_css_defer) {
148
+                    if (empty($ao_ccss_keyst)) {
149 149
                         // no keystate so likely in activation-process of CCSS, let's enable "inline & defer CSS" immediately to make things easier!
150
-                        autoptimizeOptionWrapper::update_option( 'autoptimize_css_defer', 'on' );
150
+                        autoptimizeOptionWrapper::update_option('autoptimize_css_defer', 'on');
151 151
                         ?>
152 152
                         <div class="notice-info notice"><p>
153 153
                         <?php
154
-                        _e( "The \"Inline and Defer CSS\" option was activated to allow critical CSS to be used.", 'autoptimize' );
154
+                        _e("The \"Inline and Defer CSS\" option was activated to allow critical CSS to be used.", 'autoptimize');
155 155
                         ?>
156 156
                         </p></div>
157 157
                         <?php
@@ -160,7 +160,7 @@  discard block
 block discarded – undo
160 160
                         ?>
161 161
                         <div class="notice-warning notice"><p>
162 162
                         <?php
163
-                        _e( "Oops! Please <strong>activate the \"Inline and Defer CSS\" option</strong> on Autoptimize's main settings page to ensure critical CSS is used on the front-end.", 'autoptimize' );
163
+                        _e("Oops! Please <strong>activate the \"Inline and Defer CSS\" option</strong> on Autoptimize's main settings page to ensure critical CSS is used on the front-end.", 'autoptimize');
164 164
                         ?>
165 165
                         </p></div>
166 166
                         <?php
@@ -168,11 +168,11 @@  discard block
 block discarded – undo
168 168
                 }
169 169
 
170 170
                 // check if WordPress cron is disabled and warn if so.
171
-                if ( ! empty( $ao_ccss_key ) && defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON && PAnD::is_admin_notice_active( 'i-know-about-disable-cron-forever' ) ) {
171
+                if (!empty($ao_ccss_key) && defined('DISABLE_WP_CRON') && DISABLE_WP_CRON && PAnD::is_admin_notice_active('i-know-about-disable-cron-forever')) {
172 172
                     ?>
173 173
                     <div data-dismissible="i-know-about-disable-cron-forever" class="notice-warning notice is-dismissible"><p>
174 174
                     <?php
175
-                    _e( 'WordPress cron (for task scheduling) seems to be disabled. Have a look at <a href="https://wordpress.org/plugins/autoptimize-criticalcss/faq/" target="_blank">the FAQ</a> or the info in the Job Queue instructions if all jobs remain in "N" status and no rules are created.', 'autoptimize' );
175
+                    _e('WordPress cron (for task scheduling) seems to be disabled. Have a look at <a href="https://wordpress.org/plugins/autoptimize-criticalcss/faq/" target="_blank">the FAQ</a> or the info in the Job Queue instructions if all jobs remain in "N" status and no rules are created.', 'autoptimize');
176 176
                     ?>
177 177
                     </p></div>
178 178
                     <?php
@@ -180,24 +180,24 @@  discard block
 block discarded – undo
180 180
 
181 181
                 // warn if it looks as though the queue processing job looks isn't running
182 182
                 // but store result in transient as to not to have to go through 2 arrays each and every time.
183
-                $_warn_cron = get_transient( 'ao_ccss_cronwarning' );
184
-                if ( ! empty( $ao_ccss_key ) && false === $_warn_cron ) {
183
+                $_warn_cron = get_transient('ao_ccss_cronwarning');
184
+                if (!empty($ao_ccss_key) && false === $_warn_cron) {
185 185
                     $_jobs_all_new         = true;
186
-                    $_oldest_job_timestamp = microtime( true ); // now.
186
+                    $_oldest_job_timestamp = microtime(true); // now.
187 187
                     $_jobs_too_old         = true;
188 188
 
189 189
                     // go over queue array.
190
-                    if ( empty( $ao_ccss_queue ) ) {
190
+                    if (empty($ao_ccss_queue)) {
191 191
                         // no jobs, then no warning.
192 192
                         $_jobs_all_new = false;
193 193
                     } else {
194
-                        foreach ( $ao_ccss_queue as $job ) {
195
-                            if ( $job['jctime'] < $_oldest_job_timestamp ) {
194
+                        foreach ($ao_ccss_queue as $job) {
195
+                            if ($job['jctime'] < $_oldest_job_timestamp) {
196 196
                                 // we need to catch the oldest job's timestamp.
197 197
                                 $_oldest_job_timestamp = $job['jctime'];
198 198
                             }
199 199
 
200
-                            if ( 'NEW' !== $job['jqstat'] && 'firstrun' !== $job['ljid'] ) {
200
+                            if ('NEW' !== $job['jqstat'] && 'firstrun' !== $job['ljid']) {
201 201
                                 // we have a non-"NEW" job which is not our pending firstrun job either, break the loop.
202 202
                                 $_jobs_all_new = false;
203 203
                                 break;
@@ -206,11 +206,11 @@  discard block
 block discarded – undo
206 206
                     }
207 207
 
208 208
                     // is the oldest job too old (4h)?
209
-                    if ( $_oldest_job_timestamp > microtime( true ) - 60 * 60 * 4 ) {
209
+                    if ($_oldest_job_timestamp > microtime(true) - 60*60*4) {
210 210
                         $_jobs_too_old = false;
211 211
                     }
212 212
 
213
-                    if ( $_jobs_all_new && ! $this->ao_ccss_has_autorules() && $_jobs_too_old ) {
213
+                    if ($_jobs_all_new && !$this->ao_ccss_has_autorules() && $_jobs_too_old) {
214 214
                         $_warn_cron            = 'on';
215 215
                         $_transient_multiplier = 1; // store for 1 hour.
216 216
                     } else {
@@ -218,35 +218,35 @@  discard block
 block discarded – undo
218 218
                         $_transient_multiplier = 4; // store for 4 hours.
219 219
                     }
220 220
                     // and set transient.
221
-                    set_transient( 'ao_ccss_cronwarning', $_warn_cron, $_transient_multiplier * HOUR_IN_SECONDS );
221
+                    set_transient('ao_ccss_cronwarning', $_warn_cron, $_transient_multiplier*HOUR_IN_SECONDS);
222 222
                 }
223 223
 
224
-                if ( ! empty( $ao_ccss_key ) && 'on' == $_warn_cron && PAnD::is_admin_notice_active( 'i-know-about-cron-1' ) ) {
224
+                if (!empty($ao_ccss_key) && 'on' == $_warn_cron && PAnD::is_admin_notice_active('i-know-about-cron-1')) {
225 225
                     ?>
226 226
                     <div data-dismissible="i-know-about-cron-1" class="notice-warning notice is-dismissible"><p>
227 227
                     <?php
228
-                    _e( 'It looks like there might be a problem with WordPress cron (task scheduling). Have a look at <a href="https://wordpress.org/plugins/autoptimize-criticalcss/faq/" target="_blank">the FAQ</a> or the info in the Job Queue instructions if all jobs remain in "N" status and no rules are created.', 'autoptimize' );
228
+                    _e('It looks like there might be a problem with WordPress cron (task scheduling). Have a look at <a href="https://wordpress.org/plugins/autoptimize-criticalcss/faq/" target="_blank">the FAQ</a> or the info in the Job Queue instructions if all jobs remain in "N" status and no rules are created.', 'autoptimize');
229 229
                     ?>
230 230
                     </p></div>
231 231
                     <?php
232
-                } elseif ( ! empty( $ao_ccss_key ) && '2' == $ao_ccss_keyst && 'on' != $_warn_cron && ! $this->ao_ccss_has_autorules() ) {
232
+                } elseif (!empty($ao_ccss_key) && '2' == $ao_ccss_keyst && 'on' != $_warn_cron && !$this->ao_ccss_has_autorules()) {
233 233
                     ?>
234 234
                     <div class="notice-success notice"><p>
235 235
                     <?php
236
-                    _e( 'Great, Autoptimize will now automatically start creating new critical CSS rules, you should see those appearing below in the next couple of hours.', 'autoptimize' );
236
+                    _e('Great, Autoptimize will now automatically start creating new critical CSS rules, you should see those appearing below in the next couple of hours.', 'autoptimize');
237 237
                     echo ' ';
238
-                    _e( 'In the meantime you might want to <strong>edit default rule CSS now</strong>, to avoid all CSS being inlined when no (applicable) rules are found.', 'autoptimize' );
238
+                    _e('In the meantime you might want to <strong>edit default rule CSS now</strong>, to avoid all CSS being inlined when no (applicable) rules are found.', 'autoptimize');
239 239
                     ?>
240 240
                     </p></div>
241 241
                     <?php
242 242
                 }
243 243
 
244 244
                 // warn if service is down.
245
-                if ( ! empty( $ao_ccss_key ) && ! empty( $ao_ccss_servicestatus ) && is_array( $ao_ccss_servicestatus ) && 'down' === $ao_ccss_servicestatus['critcss']['status'] ) {
245
+                if (!empty($ao_ccss_key) && !empty($ao_ccss_servicestatus) && is_array($ao_ccss_servicestatus) && 'down' === $ao_ccss_servicestatus['critcss']['status']) {
246 246
                     ?>
247 247
                     <div class="notice-warning notice"><p>
248 248
                     <?php
249
-                    _e( 'The critical CSS service has been reported to be down. Although no new rules will be created for now, this does not prevent existing rules from being applied.', 'autoptimize' );
249
+                    _e('The critical CSS service has been reported to be down. Although no new rules will be created for now, this does not prevent existing rules from being applied.', 'autoptimize');
250 250
                     ?>
251 251
                     </p></div>
252 252
                     <?php
@@ -254,12 +254,12 @@  discard block
 block discarded – undo
254 254
 
255 255
                 // warn if too many rules (based on length of ao_ccss_rules option) as that might cause issues at e.g. wpengine
256 256
                 // see https://wpengine.com/support/database-optimization-best-practices/#Autoloaded_Data
257
-                $_raw_rules_length = strlen( get_option( 'autoptimize_ccss_rules', '') );
258
-                if ( $_raw_rules_length > apply_filters( 'autoptimize_ccss_rules_length_warning', 500000 ) ) {
257
+                $_raw_rules_length = strlen(get_option('autoptimize_ccss_rules', ''));
258
+                if ($_raw_rules_length > apply_filters('autoptimize_ccss_rules_length_warning', 500000)) {
259 259
                     ?>
260 260
                     <div class="notice-warning notice"><p>
261 261
                     <?php
262
-                    _e( 'It looks like the amount of Critical CSS rules is very high, it is recommended to reconfigure Autoptimize (e.g. by manually creating broader rules) to ensure less rules are created.', 'autoptimize' );
262
+                    _e('It looks like the amount of Critical CSS rules is very high, it is recommended to reconfigure Autoptimize (e.g. by manually creating broader rules) to ensure less rules are created.', 'autoptimize');
263 263
                     ?>
264 264
                     </p></div>
265 265
                     <?php
@@ -269,24 +269,24 @@  discard block
 block discarded – undo
269 269
                 ?>
270 270
                 <form id="settings" method="post" action="options.php">
271 271
                     <?php
272
-                    settings_fields( 'ao_ccss_options_group' );
272
+                    settings_fields('ao_ccss_options_group');
273 273
 
274 274
                     // Get API key status.
275
-                    $key = autoptimizeCriticalCSSCore::ao_ccss_key_status( true );
275
+                    $key = autoptimizeCriticalCSSCore::ao_ccss_key_status(true);
276 276
 
277
-                    if ( $this->is_multisite_network_admin() ) {
277
+                    if ($this->is_multisite_network_admin()) {
278 278
                         ?>
279 279
                         <ul id="key-panel">
280 280
                             <li class="itemDetail">
281 281
                             <?php
282 282
                                 // translators: the placesholder is for a line of code in wp-config.php.
283
-                                echo sprintf( __( '<p>Critical CSS settings cannot be set at network level as critical CSS is specific to each sub-site.</p><p>You can however provide the critical CSS API key for use by all sites by adding this your wp-config.php as %s</p>', 'autoptimize' ), '<br/><code>define(\'AUTOPTIMIZE_CRITICALCSS_API_KEY\', \'eyJhbGmorestringsherexHa7MkOQFtDFkZgLmBLe-LpcHx4\');</code>' );
283
+                                echo sprintf(__('<p>Critical CSS settings cannot be set at network level as critical CSS is specific to each sub-site.</p><p>You can however provide the critical CSS API key for use by all sites by adding this your wp-config.php as %s</p>', 'autoptimize'), '<br/><code>define(\'AUTOPTIMIZE_CRITICALCSS_API_KEY\', \'eyJhbGmorestringsherexHa7MkOQFtDFkZgLmBLe-LpcHx4\');</code>');
284 284
                             ?>
285 285
                             </li>
286 286
                         </ul>
287 287
                         <?php
288 288
                     } else {
289
-                        if ( 'valid' == $key['status'] ) {
289
+                        if ('valid' == $key['status']) {
290 290
                             // If key status is valid, render other panels.
291 291
                             // Render rules section.
292 292
                             ao_ccss_render_rules();
@@ -303,23 +303,23 @@  discard block
 block discarded – undo
303 303
                             $viewport = autoptimizeCriticalCSSCore::ao_ccss_viewport();
304 304
 
305 305
                             // Add hidden fields.
306
-                            echo "<input class='hidden' name='autoptimize_ccss_rules' value='" . $ao_ccss_rules_raw . "'>";
307
-                            echo "<input class='hidden' name='autoptimize_ccss_queue' value='" . $ao_ccss_queue_raw . "'>";
308
-                            echo '<input class="hidden" name="autoptimize_ccss_viewport[w]" value="' . $viewport['w'] . '">';
309
-                            echo '<input class="hidden" name="autoptimize_ccss_viewport[h]" value="' . $viewport['h'] . '">';
310
-                            echo '<input class="hidden" name="autoptimize_ccss_finclude" value="' . esc_attr( $ao_ccss_finclude ) . '">';
311
-                            echo '<input class="hidden" name="autoptimize_ccss_rtimelimit" value="' . $ao_ccss_rtimelimit . '">';
312
-                            echo '<input class="hidden" name="autoptimize_ccss_debug" value="' . $ao_ccss_debug . '">';
313
-                            echo '<input class="hidden" name="autoptimize_ccss_noptimize" value="' . $ao_ccss_noptimize . '">';
314
-                            echo '<input class="hidden" name="autoptimize_css_defer_inline" value="' . esc_attr( $ao_css_defer_inline ) . '">';
315
-                            echo '<input class="hidden" name="autoptimize_ccss_loggedin" value="' . $ao_ccss_loggedin . '">';
316
-                            echo '<input class="hidden" name="autoptimize_ccss_forcepath" value="' . $ao_ccss_forcepath . '">';
306
+                            echo "<input class='hidden' name='autoptimize_ccss_rules' value='".$ao_ccss_rules_raw."'>";
307
+                            echo "<input class='hidden' name='autoptimize_ccss_queue' value='".$ao_ccss_queue_raw."'>";
308
+                            echo '<input class="hidden" name="autoptimize_ccss_viewport[w]" value="'.$viewport['w'].'">';
309
+                            echo '<input class="hidden" name="autoptimize_ccss_viewport[h]" value="'.$viewport['h'].'">';
310
+                            echo '<input class="hidden" name="autoptimize_ccss_finclude" value="'.esc_attr($ao_ccss_finclude).'">';
311
+                            echo '<input class="hidden" name="autoptimize_ccss_rtimelimit" value="'.$ao_ccss_rtimelimit.'">';
312
+                            echo '<input class="hidden" name="autoptimize_ccss_debug" value="'.$ao_ccss_debug.'">';
313
+                            echo '<input class="hidden" name="autoptimize_ccss_noptimize" value="'.$ao_ccss_noptimize.'">';
314
+                            echo '<input class="hidden" name="autoptimize_css_defer_inline" value="'.esc_attr($ao_css_defer_inline).'">';
315
+                            echo '<input class="hidden" name="autoptimize_ccss_loggedin" value="'.$ao_ccss_loggedin.'">';
316
+                            echo '<input class="hidden" name="autoptimize_ccss_forcepath" value="'.$ao_ccss_forcepath.'">';
317 317
                         }
318 318
                         // Render key panel unconditionally.
319
-                        ao_ccss_render_key( $ao_ccss_key, $key['status'], $key['stmsg'], $key['msg'], $key['color'] );
319
+                        ao_ccss_render_key($ao_ccss_key, $key['status'], $key['stmsg'], $key['msg'], $key['color']);
320 320
                         ?>
321 321
                         <p class="submit left">
322
-                            <input type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'autoptimize' ); ?>" />
322
+                            <input type="submit" class="button-primary" value="<?php _e('Save Changes', 'autoptimize'); ?>" />
323 323
                         </p>
324 324
                         <?php
325 325
                     }
@@ -337,31 +337,31 @@  discard block
 block discarded – undo
337 337
                     });
338 338
                 }
339 339
                 </script>
340
-                <form id="importSettingsForm"<?php if ( $this->is_multisite_network_admin() ) { echo ' class="hidden"'; } ?>>
341
-                    <span id="exportSettings" class="button-secondary"><?php _e( 'Export Settings', 'autoptimize' ); ?></span>
342
-                    <input class="button-secondary" id="importSettings" type="button" value="<?php _e( 'Import Settings', 'autoptimize' ); ?>" onclick="upload();return false;" />
340
+                <form id="importSettingsForm"<?php if ($this->is_multisite_network_admin()) { echo ' class="hidden"'; } ?>>
341
+                    <span id="exportSettings" class="button-secondary"><?php _e('Export Settings', 'autoptimize'); ?></span>
342
+                    <input class="button-secondary" id="importSettings" type="button" value="<?php _e('Import Settings', 'autoptimize'); ?>" onclick="upload();return false;" />
343 343
                     <input class="button-secondary" id="settingsfile" name="settingsfile" type="file" />
344 344
                 </form>
345 345
                 <div id="importdialog"></div>
346 346
             </div><!-- /#autoptimize_main -->
347 347
         </div><!-- /#wrap -->
348 348
         <?php
349
-        if ( ! $this->is_multisite_network_admin() ) {
349
+        if (!$this->is_multisite_network_admin()) {
350 350
             // Include debug panel if debug mode is enable.
351
-            if ( $ao_ccss_debug ) {
351
+            if ($ao_ccss_debug) {
352 352
             ?>
353 353
                 <div id="debug">
354 354
                     <?php
355 355
                     // Include debug panel.
356
-                    include( 'critcss-inc/admin_settings_debug.php' );
356
+                    include('critcss-inc/admin_settings_debug.php');
357 357
                     ?>
358 358
                 </div><!-- /#debug -->
359 359
             <?php
360 360
             }
361 361
             echo '<script>';
362
-            include( 'critcss-inc/admin_settings_rules.js.php' );
363
-            include( 'critcss-inc/admin_settings_queue.js.php' );
364
-            include( 'critcss-inc/admin_settings_impexp.js.php' );
362
+            include('critcss-inc/admin_settings_rules.js.php');
363
+            include('critcss-inc/admin_settings_queue.js.php');
364
+            include('critcss-inc/admin_settings_impexp.js.php');
365 365
             echo '</script>';
366 366
         }
367 367
     }
@@ -369,19 +369,19 @@  discard block
 block discarded – undo
369 369
     public static function ao_ccss_has_autorules() {
370 370
         static $_has_auto_rules = null;
371 371
 
372
-        if ( null === $_has_auto_rules ) {
372
+        if (null === $_has_auto_rules) {
373 373
             global $ao_ccss_rules;
374 374
             $_has_auto_rules = false;
375
-            if ( ! empty( $ao_ccss_rules ) ) {
376
-                foreach ( array( 'types', 'paths' ) as $_typat ) {
377
-                    foreach ( $ao_ccss_rules[ $_typat ] as $rule ) {
378
-                        if ( ! empty( $rule['hash'] ) ) {
375
+            if (!empty($ao_ccss_rules)) {
376
+                foreach (array('types', 'paths') as $_typat) {
377
+                    foreach ($ao_ccss_rules[$_typat] as $rule) {
378
+                        if (!empty($rule['hash'])) {
379 379
                             // we have at least one AUTO job, so all is fine.
380 380
                             $_has_auto_rules = true;
381 381
                             break;
382 382
                         }
383 383
                     }
384
-                    if ( $_has_auto_rules ) {
384
+                    if ($_has_auto_rules) {
385 385
                         break;
386 386
                     }
387 387
                 }
@@ -394,8 +394,8 @@  discard block
 block discarded – undo
394 394
     public function is_multisite_network_admin() {
395 395
         static $_multisite_network_admin = null;
396 396
 
397
-        if ( null === $_multisite_network_admin ) {
398
-            if ( is_multisite() && is_network_admin() ) {
397
+        if (null === $_multisite_network_admin) {
398
+            if (is_multisite() && is_network_admin()) {
399 399
                 $_multisite_network_admin = true;
400 400
             } else {
401 401
                 $_multisite_network_admin = false;
Please login to merge, or discard this patch.
classes/autoptimizeCriticalCSSCore.php 1 patch
Spacing   +152 added lines, -152 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
         }
@@ -28,28 +28,28 @@  discard block
 block discarded – undo
28 28
         global $ao_ccss_unloadccss;
29 29
 
30 30
         // add all filters to do CCSS if key present.
31
-        if ( $ao_css_defer && isset( $ao_ccss_key ) && ! empty( $ao_ccss_key ) ) {
31
+        if ($ao_css_defer && isset($ao_ccss_key) && !empty($ao_ccss_key)) {
32 32
             // Set AO behavior: disable minification to avoid double minifying and caching.
33
-            add_filter( 'autoptimize_filter_css_critcss_minify', '__return_false' );
34
-            add_filter( 'autoptimize_filter_css_defer_inline', array( $this, 'ao_ccss_frontend' ), 10, 1 );
33
+            add_filter('autoptimize_filter_css_critcss_minify', '__return_false');
34
+            add_filter('autoptimize_filter_css_defer_inline', array($this, 'ao_ccss_frontend'), 10, 1);
35 35
 
36 36
             // Add the action to enqueue jobs for CriticalCSS cron.
37
-            add_action( 'autoptimize_action_css_hash', array( 'autoptimizeCriticalCSSEnqueue', 'ao_ccss_enqueue' ), 10, 1 );
37
+            add_action('autoptimize_action_css_hash', array('autoptimizeCriticalCSSEnqueue', 'ao_ccss_enqueue'), 10, 1);
38 38
 
39 39
             // conditionally add the filter to defer jquery and others.
40
-            if ( $ao_ccss_deferjquery ) {
41
-                add_filter( 'autoptimize_html_after_minify', array( $this, 'ao_ccss_defer_jquery' ), 11, 1 );
40
+            if ($ao_ccss_deferjquery) {
41
+                add_filter('autoptimize_html_after_minify', array($this, 'ao_ccss_defer_jquery'), 11, 1);
42 42
             }
43 43
 
44 44
             // conditionally add filter to unload the CCSS.
45
-            if ( $ao_ccss_unloadccss ) {
46
-                add_filter( 'autoptimize_html_after_minify', array( $this, 'ao_ccss_unloadccss' ), 12, 1 );
45
+            if ($ao_ccss_unloadccss) {
46
+                add_filter('autoptimize_html_after_minify', array($this, 'ao_ccss_unloadccss'), 12, 1);
47 47
             }
48 48
 
49 49
             // Order paths by length, as longest ones have greater priority in the rules.
50
-            if ( ! empty( $ao_ccss_rules['paths'] ) ) {
51
-                $keys = array_map( 'strlen', array_keys( $ao_ccss_rules['paths'] ) );
52
-                array_multisort( $keys, SORT_DESC, $ao_ccss_rules['paths'] );
50
+            if (!empty($ao_ccss_rules['paths'])) {
51
+                $keys = array_map('strlen', array_keys($ao_ccss_rules['paths']));
52
+                array_multisort($keys, SORT_DESC, $ao_ccss_rules['paths']);
53 53
             }
54 54
 
55 55
             // Add an array with default WordPress's conditional tags
@@ -58,14 +58,14 @@  discard block
 block discarded – undo
58 58
             $ao_ccss_types = $this->get_ao_ccss_core_types();
59 59
 
60 60
             // Extend conditional tags on plugin initalization.
61
-            add_action( apply_filters( 'autoptimize_filter_ccss_extend_types_hook', 'init' ), array( $this, 'ao_ccss_extend_types' ) );
61
+            add_action(apply_filters('autoptimize_filter_ccss_extend_types_hook', 'init'), array($this, 'ao_ccss_extend_types'));
62 62
 
63 63
             // When autoptimize cache is cleared, also clear transient cache for page templates.
64
-            add_action( 'autoptimize_action_cachepurged', array( 'autoptimizeCriticalCSSCore', 'ao_ccss_clear_page_tpl_cache' ), 10, 0 );
64
+            add_action('autoptimize_action_cachepurged', array('autoptimizeCriticalCSSCore', 'ao_ccss_clear_page_tpl_cache'), 10, 0);
65 65
         }
66 66
     }
67 67
 
68
-    public function ao_ccss_frontend( $inlined ) {
68
+    public function ao_ccss_frontend($inlined) {
69 69
         // Apply CriticalCSS to frontend pages
70 70
         // Attach types and settings arrays.
71 71
         global $ao_ccss_types;
@@ -76,23 +76,23 @@  discard block
 block discarded – undo
76 76
         global $ao_ccss_keyst;
77 77
 
78 78
         $no_ccss = '';
79
-        $ao_ccss_additional = autoptimizeStyles::sanitize_css( $ao_ccss_additional );
79
+        $ao_ccss_additional = autoptimizeStyles::sanitize_css($ao_ccss_additional);
80 80
 
81 81
         // Only if keystatus is OK and option to add CCSS for logged on users is on or user is not logged in.
82
-        if ( ( $ao_ccss_keyst && 2 == $ao_ccss_keyst ) && ( $ao_ccss_loggedin || ! is_user_logged_in() ) ) {
82
+        if (($ao_ccss_keyst && 2 == $ao_ccss_keyst) && ($ao_ccss_loggedin || !is_user_logged_in())) {
83 83
             // Check for a valid CriticalCSS based on path to return its contents.
84
-            $req_path = strtok( $_SERVER['REQUEST_URI'], '?' );
85
-            if ( ! empty( $ao_ccss_rules['paths'] ) ) {
86
-                foreach ( $ao_ccss_rules['paths'] as $path => $rule ) {
84
+            $req_path = strtok($_SERVER['REQUEST_URI'], '?');
85
+            if (!empty($ao_ccss_rules['paths'])) {
86
+                foreach ($ao_ccss_rules['paths'] as $path => $rule) {
87 87
                     // explicit match OR partial match if MANUAL rule.
88
-                    if ( $req_path == $path || urldecode( $req_path ) == $path || ( false == $rule['hash'] && false != $rule['file'] && strpos( $req_path, str_replace( site_url(), '', $path ) ) !== false ) ) {
89
-                        if ( file_exists( AO_CCSS_DIR . $rule['file'] ) ) {
90
-                            $_ccss_contents = file_get_contents( AO_CCSS_DIR . $rule['file'] );
91
-                            if ( 'none' != $_ccss_contents ) {
92
-                                if ( $ao_ccss_debug ) {
93
-                                    $_ccss_contents = '/* PATH: ' . $path . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
88
+                    if ($req_path == $path || urldecode($req_path) == $path || (false == $rule['hash'] && false != $rule['file'] && strpos($req_path, str_replace(site_url(), '', $path)) !== false)) {
89
+                        if (file_exists(AO_CCSS_DIR.$rule['file'])) {
90
+                            $_ccss_contents = file_get_contents(AO_CCSS_DIR.$rule['file']);
91
+                            if ('none' != $_ccss_contents) {
92
+                                if ($ao_ccss_debug) {
93
+                                    $_ccss_contents = '/* PATH: '.$path.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
94 94
                                 }
95
-                                return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
95
+                                return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
96 96
                             } else {
97 97
                                 $no_ccss = 'none';
98 98
                             }
@@ -102,55 +102,55 @@  discard block
 block discarded – undo
102 102
             }
103 103
 
104 104
             // Check for a valid CriticalCSS based on conditional tags to return its contents.
105
-            if ( ! empty( $ao_ccss_rules['types'] ) && 'none' !== $no_ccss ) {
105
+            if (!empty($ao_ccss_rules['types']) && 'none' !== $no_ccss) {
106 106
                 // 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.
107
-                $ao_ccss_rules['types'] = array_replace( array_intersect_key( array_flip( $ao_ccss_types ), $ao_ccss_rules['types'] ), $ao_ccss_rules['types'] );
107
+                $ao_ccss_rules['types'] = array_replace(array_intersect_key(array_flip($ao_ccss_types), $ao_ccss_rules['types']), $ao_ccss_rules['types']);
108 108
                 $is_front_page          = is_front_page();
109 109
 
110
-                foreach ( $ao_ccss_rules['types'] as $type => $rule ) {
111
-                    if ( in_array( $type, $ao_ccss_types ) && file_exists( AO_CCSS_DIR . $rule['file'] ) ) {
112
-                        $_ccss_contents = file_get_contents( AO_CCSS_DIR . $rule['file'] );
113
-                        if ( $is_front_page && 'is_front_page' == $type ) {
114
-                            if ( 'none' != $_ccss_contents ) {
115
-                                if ( $ao_ccss_debug ) {
116
-                                    $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
110
+                foreach ($ao_ccss_rules['types'] as $type => $rule) {
111
+                    if (in_array($type, $ao_ccss_types) && file_exists(AO_CCSS_DIR.$rule['file'])) {
112
+                        $_ccss_contents = file_get_contents(AO_CCSS_DIR.$rule['file']);
113
+                        if ($is_front_page && 'is_front_page' == $type) {
114
+                            if ('none' != $_ccss_contents) {
115
+                                if ($ao_ccss_debug) {
116
+                                    $_ccss_contents = '/* TYPES: '.$type.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
117 117
                                 }
118
-                                return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
118
+                                return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
119 119
                             } else {
120 120
                                 $no_ccss = 'none';
121 121
                             }
122
-                        } elseif ( strpos( $type, 'custom_post_' ) === 0 && ! $is_front_page ) {
123
-                            if ( get_post_type( get_the_ID() ) === substr( $type, 12 ) ) {
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 (strpos($type, 'custom_post_') === 0 && !$is_front_page) {
123
+                            if (get_post_type(get_the_ID()) === substr($type, 12)) {
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 ( 0 === strpos( $type, 'template_' ) && ! $is_front_page ) {
134
-                            if ( is_page_template( substr( $type, 9 ) ) ) {
135
-                                if ( 'none' != $_ccss_contents ) {
136
-                                    if ( $ao_ccss_debug ) {
137
-                                        $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
133
+                        } elseif (0 === strpos($type, 'template_') && !$is_front_page) {
134
+                            if (is_page_template(substr($type, 9))) {
135
+                                if ('none' != $_ccss_contents) {
136
+                                    if ($ao_ccss_debug) {
137
+                                        $_ccss_contents = '/* TYPES: '.$type.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
138 138
                                     }
139
-                                    return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
139
+                                    return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
140 140
                                 } else {
141 141
                                     $no_ccss = 'none';
142 142
                                 }
143 143
                             }
144
-                        } elseif ( ! $is_front_page ) {
144
+                        } elseif (!$is_front_page) {
145 145
                             // all "normal" conditional tags, core + woo + buddypress + edd + bbpress
146 146
                             // but we have to remove the prefix for the non-core ones for them to function.
147
-                            $type = str_replace( array( 'woo_', 'bp_', 'bbp_', 'edd_' ), '', $type );
148
-                            if ( function_exists( $type ) && call_user_func( $type ) ) {
149
-                                if ( 'none' != $_ccss_contents ) {
150
-                                    if ( $ao_ccss_debug ) {
151
-                                        $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents;
147
+                            $type = str_replace(array('woo_', 'bp_', 'bbp_', 'edd_'), '', $type);
148
+                            if (function_exists($type) && call_user_func($type)) {
149
+                                if ('none' != $_ccss_contents) {
150
+                                    if ($ao_ccss_debug) {
151
+                                        $_ccss_contents = '/* TYPES: '.$type.' hash: '.$rule['hash'].' file: '.$rule['file'].' */ '.$_ccss_contents;
152 152
                                     }
153
-                                    return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $ao_ccss_additional );
153
+                                    return apply_filters('autoptimize_filter_ccss_core_ccss', $_ccss_contents.$ao_ccss_additional);
154 154
                                 } else {
155 155
                                     $no_ccss = 'none';
156 156
                                 }
@@ -163,45 +163,45 @@  discard block
 block discarded – undo
163 163
 
164 164
         // Finally, inline the default CriticalCSS if any or else the entire CSS for the page
165 165
         // This also applies to logged in users if the option to add CCSS for logged in users has been disabled.
166
-        if ( ! empty( $inlined ) && 'none' !== $no_ccss ) {
167
-            return apply_filters( 'autoptimize_filter_ccss_core_ccss', $inlined . $ao_ccss_additional );
166
+        if (!empty($inlined) && 'none' !== $no_ccss) {
167
+            return apply_filters('autoptimize_filter_ccss_core_ccss', $inlined.$ao_ccss_additional);
168 168
         } else {
169
-            add_filter( 'autoptimize_filter_css_inline', '__return_true' );
169
+            add_filter('autoptimize_filter_css_inline', '__return_true');
170 170
             return;
171 171
         }
172 172
     }
173 173
 
174
-    public function ao_ccss_defer_jquery( $in ) {
174
+    public function ao_ccss_defer_jquery($in) {
175 175
         global $ao_ccss_loggedin;
176 176
         // defer all linked and inline JS.
177
-        if ( ( ! is_user_logged_in() || $ao_ccss_loggedin ) && preg_match_all( '#<script.*>(.*)</script>#Usmi', $in, $matches, PREG_SET_ORDER ) ) {
178
-            foreach ( $matches as $match ) {
179
-                if ( str_replace( apply_filters( 'autoptimize_filter_ccss_core_defer_exclude', array( 'data-noptimize="1"', 'data-cfasync="false"', 'data-pagespeed-no-defer' ) ), '', $match[0] ) !== $match[0] ) {
177
+        if ((!is_user_logged_in() || $ao_ccss_loggedin) && preg_match_all('#<script.*>(.*)</script>#Usmi', $in, $matches, PREG_SET_ORDER)) {
178
+            foreach ($matches as $match) {
179
+                if (str_replace(apply_filters('autoptimize_filter_ccss_core_defer_exclude', array('data-noptimize="1"', 'data-cfasync="false"', 'data-pagespeed-no-defer')), '', $match[0]) !== $match[0]) {
180 180
                     // do not touch JS with noptimize/ cfasync/ pagespeed-no-defer flags.
181 181
                     continue;
182
-                } elseif ( '' !== $match[1] && ( ! preg_match( '/<script.* type\s?=.*>/', $match[0] ) || preg_match( '/type\s*=\s*[\'"]?(?:text|application)\/(?:javascript|ecmascript)[\'"]?/i', $match[0] ) ) ) {
182
+                } elseif ('' !== $match[1] && (!preg_match('/<script.* type\s?=.*>/', $match[0]) || preg_match('/type\s*=\s*[\'"]?(?:text|application)\/(?:javascript|ecmascript)[\'"]?/i', $match[0]))) {
183 183
                     // base64-encode and defer all inline JS.
184
-                    $base64_js = '<script defer src="data:text/javascript;base64,' . base64_encode( $match[1] ) . '"></script>';
185
-                    $in        = str_replace( $match[0], $base64_js, $in );
186
-                } elseif ( str_replace( array( ' defer', ' async' ), '', $match[0] ) === $match[0] ) {
184
+                    $base64_js = '<script defer src="data:text/javascript;base64,'.base64_encode($match[1]).'"></script>';
185
+                    $in        = str_replace($match[0], $base64_js, $in);
186
+                } elseif (str_replace(array(' defer', ' async'), '', $match[0]) === $match[0]) {
187 187
                     // and defer linked JS unless already deferred or asynced.
188
-                    $new_match = str_replace( '<script ', '<script defer ', $match[0] );
189
-                    $in        = str_replace( $match[0], $new_match, $in );
188
+                    $new_match = str_replace('<script ', '<script defer ', $match[0]);
189
+                    $in        = str_replace($match[0], $new_match, $in);
190 190
                 }
191 191
             }
192 192
         }
193 193
         return $in;
194 194
     }
195 195
 
196
-    public function ao_ccss_unloadccss( $html_in ) {
196
+    public function ao_ccss_unloadccss($html_in) {
197 197
         // set media attrib of inline CCSS to none at onLoad to avoid it impacting full CSS (rarely needed).
198
-        $_unloadccss_js = apply_filters( 'autoptimize_filter_ccss_core_unloadccss_js', '<script>window.addEventListener("load", function(event) {document.getElementById("aoatfcss").media="none";})</script>' );
198
+        $_unloadccss_js = apply_filters('autoptimize_filter_ccss_core_unloadccss_js', '<script>window.addEventListener("load", function(event) {document.getElementById("aoatfcss").media="none";})</script>');
199 199
 
200
-        if ( false !== strpos( $html_in, $_unloadccss_js . '</body>' ) ) {
200
+        if (false !== strpos($html_in, $_unloadccss_js.'</body>')) {
201 201
             return $html_in;
202 202
         }
203 203
 
204
-        return str_replace( '</body>', $_unloadccss_js . '</body>', $html_in );
204
+        return str_replace('</body>', $_unloadccss_js.'</body>', $html_in);
205 205
     }
206 206
 
207 207
     public function ao_ccss_extend_types() {
@@ -210,9 +210,9 @@  discard block
 block discarded – undo
210 210
         global $ao_ccss_types;
211 211
 
212 212
         // in some cases $ao_ccss_types is empty and/or not an array, this should work around that problem.
213
-        if ( empty( $ao_ccss_types ) || ! is_array( $ao_ccss_types ) ) {
213
+        if (empty($ao_ccss_types) || !is_array($ao_ccss_types)) {
214 214
             $ao_ccss_types = get_ao_ccss_core_types();
215
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'Empty types array in extend, refetching array with core conditionals.', 3 );
215
+            autoptimizeCriticalCSSCore::ao_ccss_log('Empty types array in extend, refetching array with core conditionals.', 3);
216 216
         }
217 217
 
218 218
         // Custom Post Types.
@@ -224,23 +224,23 @@  discard block
 block discarded – undo
224 224
             'names',
225 225
             'and'
226 226
         );
227
-        foreach ( $cpts as $cpt ) {
228
-            array_unshift( $ao_ccss_types, 'custom_post_' . $cpt );
227
+        foreach ($cpts as $cpt) {
228
+            array_unshift($ao_ccss_types, 'custom_post_'.$cpt);
229 229
         }
230 230
 
231 231
         // Templates.
232 232
         // Transient cache to avoid frequent disk reads.
233
-        $templates = get_transient( 'autoptimize_ccss_page_templates' );
234
-        if ( ! $templates ) {
233
+        $templates = get_transient('autoptimize_ccss_page_templates');
234
+        if (!$templates) {
235 235
             $templates = wp_get_theme()->get_page_templates();
236
-            set_transient( 'autoptimize_ccss_page_templates', $templates, HOUR_IN_SECONDS );
236
+            set_transient('autoptimize_ccss_page_templates', $templates, HOUR_IN_SECONDS);
237 237
         }
238
-        foreach ( $templates as $tplfile => $tplname ) {
239
-            array_unshift( $ao_ccss_types, 'template_' . $tplfile );
238
+        foreach ($templates as $tplfile => $tplname) {
239
+            array_unshift($ao_ccss_types, 'template_'.$tplfile);
240 240
         }
241 241
 
242 242
         // bbPress tags.
243
-        if ( function_exists( 'is_bbpress' ) ) {
243
+        if (function_exists('is_bbpress')) {
244 244
             $ao_ccss_types = array_merge(
245 245
                 array(
246 246
                     'bbp_is_bbpress',
@@ -272,7 +272,7 @@  discard block
 block discarded – undo
272 272
         }
273 273
 
274 274
         // BuddyPress tags.
275
-        if ( function_exists( 'is_buddypress' ) ) {
275
+        if (function_exists('is_buddypress')) {
276 276
             $ao_ccss_types = array_merge(
277 277
                 array(
278 278
                     'bp_is_activation_page',
@@ -314,7 +314,7 @@  discard block
 block discarded – undo
314 314
         }
315 315
 
316 316
         // Easy Digital Downloads (EDD) tags.
317
-        if ( function_exists( 'edd_is_checkout' ) ) {
317
+        if (function_exists('edd_is_checkout')) {
318 318
             $ao_ccss_types = array_merge(
319 319
                 array(
320 320
                     'edd_is_checkout',
@@ -326,7 +326,7 @@  discard block
 block discarded – undo
326 326
         }
327 327
 
328 328
         // WooCommerce tags.
329
-        if ( class_exists( 'WooCommerce' ) ) {
329
+        if (class_exists('WooCommerce')) {
330 330
             $ao_ccss_types = array_merge(
331 331
                 array(
332 332
                     'woo_is_account_page',
@@ -345,7 +345,7 @@  discard block
 block discarded – undo
345 345
 
346 346
     public function get_ao_ccss_core_types() {
347 347
         global $ao_ccss_types;
348
-        if ( empty( $ao_ccss_types ) || ! is_array( $ao_ccss_types ) ) {
348
+        if (empty($ao_ccss_types) || !is_array($ao_ccss_types)) {
349 349
             return array(
350 350
                 'is_404',
351 351
                 'is_archive',
@@ -366,7 +366,7 @@  discard block
 block discarded – undo
366 366
         }
367 367
     }
368 368
 
369
-    public static function ao_ccss_key_status( $render ) {
369
+    public static function ao_ccss_key_status($render) {
370 370
         // Provide key status
371 371
         // Get key and key status.
372 372
         global $ao_ccss_key;
@@ -379,55 +379,55 @@  discard block
 block discarded – undo
379 379
         $key_return = array();
380 380
         $status     = false;
381 381
 
382
-        if ( $key && 2 == $key_status ) {
382
+        if ($key && 2 == $key_status) {
383 383
             // Key exists and its status is valid.
384 384
             // Set valid key status.
385 385
             $status     = 'valid';
386
-            $status_msg = __( 'Valid' );
386
+            $status_msg = __('Valid');
387 387
             $color      = '#46b450'; // Green.
388 388
             $message    = null;
389
-        } elseif ( $key && 1 == $key_status ) {
389
+        } elseif ($key && 1 == $key_status) {
390 390
             // Key exists but its validation has failed.
391 391
             // Set invalid key status.
392 392
             $status     = 'invalid';
393
-            $status_msg = __( 'Invalid' );
393
+            $status_msg = __('Invalid');
394 394
             $color      = '#dc3232'; // Red.
395
-            $message    = __( 'Your API key is invalid. Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> key.', 'autoptimize' );
396
-        } elseif ( $key && ! $key_status ) {
395
+            $message    = __('Your API key is invalid. Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> key.', 'autoptimize');
396
+        } elseif ($key && !$key_status) {
397 397
             // Key exists but it has no valid status yet
398 398
             // Perform key validation.
399
-            $key_check = $self->ao_ccss_key_validation( $key );
399
+            $key_check = $self->ao_ccss_key_validation($key);
400 400
 
401 401
             // Key is valid, set valid status.
402
-            if ( $key_check ) {
402
+            if ($key_check) {
403 403
                 $status     = 'valid';
404
-                $status_msg = __( 'Valid' );
404
+                $status_msg = __('Valid');
405 405
                 $color      = '#46b450'; // Green.
406 406
                 $message    = null;
407 407
             } else {
408 408
                 // Key is invalid, set invalid status.
409 409
                 $status     = 'invalid';
410
-                $status_msg = __( 'Invalid' );
410
+                $status_msg = __('Invalid');
411 411
                 $color      = '#dc3232'; // Red.
412
-                if ( get_option( 'autoptimize_ccss_keyst' ) == 1 ) {
413
-                    $message = __( 'Your API key is invalid. Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> key.', 'autoptimize' );
412
+                if (get_option('autoptimize_ccss_keyst') == 1) {
413
+                    $message = __('Your API key is invalid. Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> key.', 'autoptimize');
414 414
                 } else {
415
-                    $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' );
415
+                    $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');
416 416
                 }
417 417
             }
418 418
         } else {
419 419
             // No key nor status
420 420
             // Set no key status.
421 421
             $status     = 'nokey';
422
-            $status_msg = __( 'None' );
422
+            $status_msg = __('None');
423 423
             $color      = '#ffb900'; // Yellow.
424
-            $message    = __( 'Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> API key to start.', 'autoptimize' );
424
+            $message    = __('Please enter a valid <a href="https://criticalcss.com/?aff=1" target="_blank">criticalcss.com</a> API key to start.', 'autoptimize');
425 425
         }
426 426
 
427 427
         // Fill returned values.
428 428
         $key_return['status'] = $status;
429 429
         // Provide rendering information if required.
430
-        if ( $render ) {
430
+        if ($render) {
431 431
             $key_return['stmsg'] = $status_msg;
432 432
             $key_return['color'] = $color;
433 433
             $key_return['msg']   = $message;
@@ -437,7 +437,7 @@  discard block
 block discarded – undo
437 437
         return $key_return;
438 438
     }
439 439
 
440
-    public function ao_ccss_key_validation( $key ) {
440
+    public function ao_ccss_key_validation($key) {
441 441
         global $ao_ccss_noptimize;
442 442
 
443 443
         // POST a dummy job to criticalcss.com to check for key validation
@@ -445,26 +445,26 @@  discard block
 block discarded – undo
445 445
         $src_url = get_home_url();
446 446
 
447 447
         // Avoid AO optimizations if required by config or avoid lazyload if lazyload is active in AO.
448
-        if ( ! empty( $ao_ccss_noptimize ) ) {
448
+        if (!empty($ao_ccss_noptimize)) {
449 449
             $src_url .= '?ao_noptirocket=1';
450
-        } elseif ( class_exists( 'autoptimizeImages', false ) && autoptimizeImages::should_lazyload_wrapper() ) {
450
+        } elseif (class_exists('autoptimizeImages', false) && autoptimizeImages::should_lazyload_wrapper()) {
451 451
             $src_url .= '?ao_nolazy=1';
452 452
         }
453 453
 
454
-        $src_url = apply_filters( 'autoptimize_filter_ccss_cron_srcurl', $src_url );
454
+        $src_url = apply_filters('autoptimize_filter_ccss_cron_srcurl', $src_url);
455 455
 
456 456
         // Prepare the request.
457
-        $url  = esc_url_raw( AO_CCSS_API . 'generate' );
457
+        $url  = esc_url_raw(AO_CCSS_API.'generate');
458 458
         $args = array(
459 459
             'headers' => array(
460
-                'User-Agent'    => 'Autoptimize v' . AO_CCSS_VER,
460
+                'User-Agent'    => 'Autoptimize v'.AO_CCSS_VER,
461 461
                 'Content-type'  => 'application/json; charset=utf-8',
462
-                'Authorization' => 'JWT ' . $key,
462
+                'Authorization' => 'JWT '.$key,
463 463
                 'Connection'    => 'close',
464 464
             ),
465 465
             // Body must be JSON.
466 466
             'body'    => json_encode(
467
-                apply_filters( 'autoptimize_ccss_cron_api_generate_body',
467
+                apply_filters('autoptimize_ccss_cron_api_generate_body',
468 468
                     array(
469 469
                         'url'    => $src_url,
470 470
                         'aff'    => 1,
@@ -475,23 +475,23 @@  discard block
 block discarded – undo
475 475
         );
476 476
 
477 477
         // Dispatch the request and store its response code.
478
-        $req  = wp_safe_remote_post( $url, $args );
479
-        $code = wp_remote_retrieve_response_code( $req );
480
-        $body = json_decode( wp_remote_retrieve_body( $req ), true );
478
+        $req  = wp_safe_remote_post($url, $args);
479
+        $code = wp_remote_retrieve_response_code($req);
480
+        $body = json_decode(wp_remote_retrieve_body($req), true);
481 481
 
482
-        if ( 200 == $code ) {
482
+        if (200 == $code) {
483 483
             // Response is OK.
484 484
             // Set key status as valid and log key check.
485
-            update_option( 'autoptimize_ccss_keyst', 2 );
486
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is valid, updating key status', 3 );
485
+            update_option('autoptimize_ccss_keyst', 2);
486
+            autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is valid, updating key status', 3);
487 487
 
488 488
             // extract job-id from $body and put it in the queue as a P job
489 489
             // but only if no jobs and no rules!
490 490
             global $ao_ccss_queue;
491 491
             global $ao_ccss_rules;
492 492
 
493
-            if ( 0 == count( $ao_ccss_queue ) && 0 == count( $ao_ccss_rules['types'] ) && 0 == count( $ao_ccss_rules['paths'] ) ) {
494
-                if ( 'JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status'] ) {
493
+            if (0 == count($ao_ccss_queue) && 0 == count($ao_ccss_rules['types']) && 0 == count($ao_ccss_rules['paths'])) {
494
+                if ('JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status']) {
495 495
                     $jprops['ljid']     = 'firstrun';
496 496
                     $jprops['rtarget']  = 'types|is_front_page';
497 497
                     $jprops['ptype']    = 'is_front_page';
@@ -502,30 +502,30 @@  discard block
 block discarded – undo
502 502
                     $jprops['jqstat']   = $body['job']['status'];
503 503
                     $jprops['jrstat']   = null;
504 504
                     $jprops['jvstat']   = null;
505
-                    $jprops['jctime']   = microtime( true );
505
+                    $jprops['jctime']   = microtime(true);
506 506
                     $jprops['jftime']   = null;
507 507
                     $ao_ccss_queue['/'] = $jprops;
508
-                    $ao_ccss_queue_raw  = json_encode( $ao_ccss_queue );
509
-                    update_option( 'autoptimize_ccss_queue', $ao_ccss_queue_raw, false );
510
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Created P job for is_front_page based on API key check response.', 3 );
508
+                    $ao_ccss_queue_raw  = json_encode($ao_ccss_queue);
509
+                    update_option('autoptimize_ccss_queue', $ao_ccss_queue_raw, false);
510
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Created P job for is_front_page based on API key check response.', 3);
511 511
                 }
512 512
             }
513 513
             return true;
514
-        } elseif ( 401 == $code ) {
514
+        } elseif (401 == $code) {
515 515
             // Response is unauthorized
516 516
             // Set key status as invalid and log key check.
517
-            update_option( 'autoptimize_ccss_keyst', 1 );
518
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: API key is invalid, updating key status', 3 );
517
+            update_option('autoptimize_ccss_keyst', 1);
518
+            autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: API key is invalid, updating key status', 3);
519 519
             return false;
520 520
         } else {
521 521
             // Response unkown
522 522
             // Log key check attempt.
523
-            autoptimizeCriticalCSSCore::ao_ccss_log( 'criticalcss.com: could not check API key status, this is a service error, body follows if any...', 2 );
524
-            if ( ! empty( $body ) ) {
525
-                autoptimizeCriticalCSSCore::ao_ccss_log( print_r( $body, true ), 2 );
523
+            autoptimizeCriticalCSSCore::ao_ccss_log('criticalcss.com: could not check API key status, this is a service error, body follows if any...', 2);
524
+            if (!empty($body)) {
525
+                autoptimizeCriticalCSSCore::ao_ccss_log(print_r($body, true), 2);
526 526
             }
527
-            if ( is_wp_error( $req ) ) {
528
-                autoptimizeCriticalCSSCore::ao_ccss_log( $req->get_error_message(), 2 );
527
+            if (is_wp_error($req)) {
528
+                autoptimizeCriticalCSSCore::ao_ccss_log($req->get_error_message(), 2);
529 529
             }
530 530
             return false;
531 531
         }
@@ -540,14 +540,14 @@  discard block
 block discarded – undo
540 540
         $viewport = array();
541 541
 
542 542
         // Viewport Width.
543
-        if ( ! empty( $ao_ccss_viewport['w'] ) ) {
543
+        if (!empty($ao_ccss_viewport['w'])) {
544 544
             $viewport['w'] = $ao_ccss_viewport['w'];
545 545
         } else {
546 546
             $viewport['w'] = '';
547 547
         }
548 548
 
549 549
         // Viewport Height.
550
-        if ( ! empty( $ao_ccss_viewport['h'] ) ) {
550
+        if (!empty($ao_ccss_viewport['h'])) {
551 551
             $viewport['h'] = $ao_ccss_viewport['h'];
552 552
         } else {
553 553
             $viewport['h'] = '';
@@ -556,23 +556,23 @@  discard block
 block discarded – undo
556 556
         return $viewport;
557 557
     }
558 558
 
559
-    public static function ao_ccss_check_contents( $ccss ) {
559
+    public static function ao_ccss_check_contents($ccss) {
560 560
         // Perform basic exploit avoidance and CSS validation.
561
-        if ( ! empty( $ccss ) ) {
561
+        if (!empty($ccss)) {
562 562
             // Try to avoid code injection.
563
-            $blocklist = array( '#!/', 'function(', '<script', '<?php' );
564
-            foreach ( $blocklist as $blocklisted ) {
565
-                if ( strpos( $ccss, $blocklisted ) !== false ) {
566
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS received contained blocklisted content.', 2 );
563
+            $blocklist = array('#!/', 'function(', '<script', '<?php');
564
+            foreach ($blocklist as $blocklisted) {
565
+                if (strpos($ccss, $blocklisted) !== false) {
566
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS received contained blocklisted content.', 2);
567 567
                     return false;
568 568
                 }
569 569
             }
570 570
 
571 571
             // Check for most basics CSS structures.
572
-            $needlist = array( '{', '}', ':' );
573
-            foreach ( $needlist as $needed ) {
574
-                if ( false === strpos( $ccss, $needed ) && 'none' !== $ccss ) {
575
-                    autoptimizeCriticalCSSCore::ao_ccss_log( 'Critical CSS received did not seem to contain real CSS.', 2 );
572
+            $needlist = array('{', '}', ':');
573
+            foreach ($needlist as $needed) {
574
+                if (false === strpos($ccss, $needed) && 'none' !== $ccss) {
575
+                    autoptimizeCriticalCSSCore::ao_ccss_log('Critical CSS received did not seem to contain real CSS.', 2);
576 576
                     return false;
577 577
                 }
578 578
             }
@@ -582,7 +582,7 @@  discard block
 block discarded – undo
582 582
         return true;
583 583
     }
584 584
 
585
-    public static function ao_ccss_log( $msg, $lvl ) {
585
+    public static function ao_ccss_log($msg, $lvl) {
586 586
         // Commom logging facility
587 587
         // Attach debug option.
588 588
         global $ao_ccss_debug;
@@ -593,7 +593,7 @@  discard block
 block discarded – undo
593 593
         // 3: DD (for debug)
594 594
         // Default: UU (for unkown).
595 595
         $level = false;
596
-        switch ( $lvl ) {
596
+        switch ($lvl) {
597 597
             case 1:
598 598
                 $level = 'II';
599 599
                 break;
@@ -602,7 +602,7 @@  discard block
 block discarded – undo
602 602
                 break;
603 603
             case 3:
604 604
                 // Output debug messages only if debug mode is enabled.
605
-                if ( $ao_ccss_debug ) {
605
+                if ($ao_ccss_debug) {
606 606
                     $level = 'DD';
607 607
                 }
608 608
                 break;
@@ -611,19 +611,19 @@  discard block
 block discarded – undo
611 611
         }
612 612
 
613 613
         // Prepare and write a log message if there's a valid level.
614
-        if ( $level ) {
614
+        if ($level) {
615 615
 
616 616
             // Prepare message.
617
-            $message = date( 'c' ) . ' - [' . $level . '] ' . htmlentities( $msg ) . '<br>';
617
+            $message = date('c').' - ['.$level.'] '.htmlentities($msg).'<br>';
618 618
 
619 619
             // Write message to log file.
620
-            error_log( $message, 3, AO_CCSS_LOG );
620
+            error_log($message, 3, AO_CCSS_LOG);
621 621
         }
622 622
     }
623 623
 
624 624
     public static function ao_ccss_clear_page_tpl_cache() {
625 625
         // Clears transient cache for page templates.
626
-        delete_transient( 'autoptimize_ccss_page_templates' );
626
+        delete_transient('autoptimize_ccss_page_templates');
627 627
     }
628 628
 
629 629
 }
Please login to merge, or discard this patch.