Completed
Push — master ( 0e3b51...8538b3 )
by frank
01:43
created
tests/test-ao.php 1 patch
Spacing   +461 added lines, -461 removed lines patch added patch discarded remove patch
@@ -10,17 +10,17 @@  discard block
 block discarded – undo
10 10
     protected $ao;
11 11
 
12 12
     protected static $flexible_url_parts_js = [
13
-        'default'          => 'wp-content/cache/autoptimize/js/' . AUTOPTIMIZE_CACHEFILE_PREFIX,
14
-        'custom'           => 'wp-content/c/ao/js/' . AUTOPTIMIZE_CACHEFILE_PREFIX,
15
-        'multisite'        => 'wp-content/cache/autoptimize/1/js/' . AUTOPTIMIZE_CACHEFILE_PREFIX,
16
-        'multisite_custom' => 'wp-content/c/ao/1/js/' . AUTOPTIMIZE_CACHEFILE_PREFIX,
13
+        'default'          => 'wp-content/cache/autoptimize/js/'.AUTOPTIMIZE_CACHEFILE_PREFIX,
14
+        'custom'           => 'wp-content/c/ao/js/'.AUTOPTIMIZE_CACHEFILE_PREFIX,
15
+        'multisite'        => 'wp-content/cache/autoptimize/1/js/'.AUTOPTIMIZE_CACHEFILE_PREFIX,
16
+        'multisite_custom' => 'wp-content/c/ao/1/js/'.AUTOPTIMIZE_CACHEFILE_PREFIX,
17 17
     ];
18 18
 
19 19
     protected static $flexible_url_parts_css = [
20
-        'default'          => 'wp-content/cache/autoptimize/css/' . AUTOPTIMIZE_CACHEFILE_PREFIX,
21
-        'custom'           => 'wp-content/c/ao/css/' . AUTOPTIMIZE_CACHEFILE_PREFIX,
22
-        'multisite'        => 'wp-content/cache/autoptimize/1/css/' . AUTOPTIMIZE_CACHEFILE_PREFIX,
23
-        'multisite_custom' => 'wp-content/c/ao/1/css/' . AUTOPTIMIZE_CACHEFILE_PREFIX,
20
+        'default'          => 'wp-content/cache/autoptimize/css/'.AUTOPTIMIZE_CACHEFILE_PREFIX,
21
+        'custom'           => 'wp-content/c/ao/css/'.AUTOPTIMIZE_CACHEFILE_PREFIX,
22
+        'multisite'        => 'wp-content/cache/autoptimize/1/css/'.AUTOPTIMIZE_CACHEFILE_PREFIX,
23
+        'multisite_custom' => 'wp-content/c/ao/1/css/'.AUTOPTIMIZE_CACHEFILE_PREFIX,
24 24
     ];
25 25
 
26 26
     protected function getAoStylesDefaultOptions()
@@ -28,17 +28,17 @@  discard block
 block discarded – undo
28 28
         $conf = autoptimizeConfig::instance();
29 29
 
30 30
         return [
31
-            'aggregate'       => $conf->get( 'autoptimize_css_aggregate' ),
32
-            'justhead'        => $conf->get( 'autoptimize_css_justhead' ),
33
-            'datauris'        => $conf->get( 'autoptimize_css_datauris' ),
34
-            'defer'           => $conf->get( 'autoptimize_css_defer' ),
35
-            'defer_inline'    => $conf->get( 'autoptimize_css_defer_inline' ),
36
-            'inline'          => $conf->get( 'autoptimize_css_inline' ),
37
-            'css_exclude'     => $conf->get( 'autoptimize_css_exclude' ),
38
-            'cdn_url'         => $conf->get( 'autoptimize_cdn_url' ),
39
-            'include_inline'  => $conf->get( 'autoptimize_css_include_inline' ),
40
-            'nogooglefont'    => $conf->get( 'autoptimize_css_nogooglefont' ),
41
-            'minify_excluded' => $conf->get( 'autoptimize_minify_excluded' ),
31
+            'aggregate'       => $conf->get('autoptimize_css_aggregate'),
32
+            'justhead'        => $conf->get('autoptimize_css_justhead'),
33
+            'datauris'        => $conf->get('autoptimize_css_datauris'),
34
+            'defer'           => $conf->get('autoptimize_css_defer'),
35
+            'defer_inline'    => $conf->get('autoptimize_css_defer_inline'),
36
+            'inline'          => $conf->get('autoptimize_css_inline'),
37
+            'css_exclude'     => $conf->get('autoptimize_css_exclude'),
38
+            'cdn_url'         => $conf->get('autoptimize_cdn_url'),
39
+            'include_inline'  => $conf->get('autoptimize_css_include_inline'),
40
+            'nogooglefont'    => $conf->get('autoptimize_css_nogooglefont'),
41
+            'minify_excluded' => $conf->get('autoptimize_minify_excluded'),
42 42
         ];
43 43
     }
44 44
 
@@ -47,15 +47,15 @@  discard block
 block discarded – undo
47 47
         $conf = autoptimizeConfig::instance();
48 48
 
49 49
         return [
50
-            'aggregate'           => $conf->get( 'autoptimize_js_aggregate' ),
51
-            'defer_not_aggregate' => $conf->get( 'autoptimize_js_defer_not_aggregate' ),
52
-            'justhead'            => $conf->get( 'autoptimize_js_justhead' ),
53
-            'forcehead'           => $conf->get( 'autoptimize_js_forcehead' ),
54
-            'trycatch'            => $conf->get( 'autoptimize_js_trycatch' ),
55
-            'js_exclude'          => $conf->get( 'autoptimize_js_exclude' ),
56
-            'cdn_url'             => $conf->get( 'autoptimize_cdn_url' ),
57
-            'include_inline'      => $conf->get( 'autoptimize_js_include_inline' ),
58
-            'minify_excluded'     => $conf->get( 'autoptimize_minify_excluded' ),
50
+            'aggregate'           => $conf->get('autoptimize_js_aggregate'),
51
+            'defer_not_aggregate' => $conf->get('autoptimize_js_defer_not_aggregate'),
52
+            'justhead'            => $conf->get('autoptimize_js_justhead'),
53
+            'forcehead'           => $conf->get('autoptimize_js_forcehead'),
54
+            'trycatch'            => $conf->get('autoptimize_js_trycatch'),
55
+            'js_exclude'          => $conf->get('autoptimize_js_exclude'),
56
+            'cdn_url'             => $conf->get('autoptimize_cdn_url'),
57
+            'include_inline'      => $conf->get('autoptimize_js_include_inline'),
58
+            'minify_excluded'     => $conf->get('autoptimize_minify_excluded'),
59 59
         ];
60 60
     }
61 61
 
@@ -65,35 +65,35 @@  discard block
 block discarded – undo
65 65
     protected function get_urls()
66 66
     {
67 67
         static $site_url = null;
68
-        if ( null === $site_url ) {
68
+        if (null === $site_url) {
69 69
             $site_url = site_url();
70 70
         }
71 71
 
72 72
         static $cdn_url = null;
73
-        if ( null === $cdn_url ) {
74
-            $cdn_url = autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url' );
73
+        if (null === $cdn_url) {
74
+            $cdn_url = autoptimizeOptionWrapper::get_option('autoptimize_cdn_url');
75 75
         }
76 76
 
77 77
         static $imgopt_host = null;
78
-        if ( null === $imgopt_host ) {
78
+        if (null === $imgopt_host) {
79 79
             $optimizer   = new autoptimizeImages();
80
-            $imgopt_host = rtrim( $optimizer->get_imgopt_host(), '/' );
80
+            $imgopt_host = rtrim($optimizer->get_imgopt_host(), '/');
81 81
         }
82 82
 
83 83
         static $urls = [];
84 84
 
85
-        if ( empty( $urls ) ) {
85
+        if (empty($urls)) {
86 86
             $parts = autoptimizeUtils::get_ao_wp_site_url_parts();
87 87
             $urls  = [
88 88
                 'siteurl'    => $site_url,
89
-                'prsiteurl'  => '//' . str_replace( array( 'http://', 'https://' ), '', $site_url ),
90
-                'wwwsiteurl' => $parts['scheme'] . '://www.' . str_replace( 'www.', '', $parts['host'] ),
89
+                'prsiteurl'  => '//'.str_replace(array('http://', 'https://'), '', $site_url),
90
+                'wwwsiteurl' => $parts['scheme'].'://www.'.str_replace('www.', '', $parts['host']),
91 91
                 'cdnurl'     => $cdn_url,
92 92
                 'imgopthost' => $imgopt_host,
93 93
                 'subfolder'  => '',
94 94
             ];
95 95
 
96
-            if ( AO_TEST_SUBFOLDER_INSTALL ) {
96
+            if (AO_TEST_SUBFOLDER_INSTALL) {
97 97
                 $urls['subfolder'] = 'wordpress/';
98 98
             }
99 99
         }
@@ -106,7 +106,7 @@  discard block
 block discarded – undo
106 106
      */
107 107
     public function setUp()
108 108
     {
109
-        $this->ao = new autoptimizeMain( AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE );
109
+        $this->ao = new autoptimizeMain(AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE);
110 110
 
111 111
         parent::setUp();
112 112
     }
@@ -125,8 +125,8 @@  discard block
 block discarded – undo
125 125
             'autoptimize_filter_css_inlinesize',
126 126
             'autoptimize_filter_css_fonts_cdn',
127 127
         );
128
-        foreach ( $filter_tags as $filter_tag ) {
129
-            remove_all_filters( $filter_tag );
128
+        foreach ($filter_tags as $filter_tag) {
129
+            remove_all_filters($filter_tag);
130 130
         }
131 131
 
132 132
         parent::tearDown();
@@ -252,20 +252,20 @@  discard block
 block discarded – undo
252 252
     protected function get_test_markup_output()
253 253
     {
254 254
         $key = 'default';
255
-        if ( defined( 'CUSTOM_CONSTANTS_USED' ) && CUSTOM_CONSTANTS_USED ) {
255
+        if (defined('CUSTOM_CONSTANTS_USED') && CUSTOM_CONSTANTS_USED) {
256 256
             $key = 'custom';
257 257
         }
258 258
 
259
-        $csspart = self::$flexible_url_parts_css[ $key ];
260
-        $jspart  = self::$flexible_url_parts_js[ $key ];
259
+        $csspart = self::$flexible_url_parts_css[$key];
260
+        $jspart  = self::$flexible_url_parts_js[$key];
261 261
 
262 262
         $csshash = '863f587e89f100b0223ddccc0dabc57a';
263
-        if ( AO_TEST_SUBFOLDER_INSTALL ) {
263
+        if (AO_TEST_SUBFOLDER_INSTALL) {
264 264
             $csshash = '56398de576d59887e88e3011715250e0';
265 265
         }
266 266
 
267 267
         $urls      = $this->get_urls();
268
-            $siteurl   = $urls['siteurl'];
268
+            $siteurl = $urls['siteurl'];
269 269
         $cdnurl    = $urls['cdnurl'];
270 270
         $subfolder = $urls['subfolder'];
271 271
 
@@ -321,15 +321,15 @@  discard block
 block discarded – undo
321 321
     protected function get_test_markup_output_ms()
322 322
     {
323 323
         $key = 'multisite';
324
-        if ( defined( 'CUSTOM_CONSTANTS_USED' ) && CUSTOM_CONSTANTS_USED ) {
324
+        if (defined('CUSTOM_CONSTANTS_USED') && CUSTOM_CONSTANTS_USED) {
325 325
             $key = 'multisite_custom';
326 326
         }
327 327
 
328
-        $csspart = self::$flexible_url_parts_css[ $key ];
329
-        $jspart  = self::$flexible_url_parts_js[ $key ];
328
+        $csspart = self::$flexible_url_parts_css[$key];
329
+        $jspart  = self::$flexible_url_parts_js[$key];
330 330
 
331 331
         $csshash = '863f587e89f100b0223ddccc0dabc57a';
332
-        if ( AO_TEST_SUBFOLDER_INSTALL ) {
332
+        if (AO_TEST_SUBFOLDER_INSTALL) {
333 333
             $csshash = '56398de576d59887e88e3011715250e0';
334 334
         }
335 335
 
@@ -390,15 +390,15 @@  discard block
 block discarded – undo
390 390
     protected function get_test_markup_output_inline_defer()
391 391
     {
392 392
         $key = 'default';
393
-        if ( defined( 'CUSTOM_CONSTANTS_USED' ) && CUSTOM_CONSTANTS_USED ) {
393
+        if (defined('CUSTOM_CONSTANTS_USED') && CUSTOM_CONSTANTS_USED) {
394 394
             $key = 'custom';
395 395
         }
396 396
 
397
-        $csspart = self::$flexible_url_parts_css[ $key ];
398
-        $jspart  = self::$flexible_url_parts_js[ $key ];
397
+        $csspart = self::$flexible_url_parts_css[$key];
398
+        $jspart  = self::$flexible_url_parts_js[$key];
399 399
 
400 400
         $csshash = '863f587e89f100b0223ddccc0dabc57a';
401
-        if ( AO_TEST_SUBFOLDER_INSTALL ) {
401
+        if (AO_TEST_SUBFOLDER_INSTALL) {
402 402
             $csshash = '56398de576d59887e88e3011715250e0';
403 403
         }
404 404
 
@@ -459,15 +459,15 @@  discard block
 block discarded – undo
459 459
     protected function get_test_markup_output_inline_defer_ms()
460 460
     {
461 461
         $key = 'multisite';
462
-        if ( defined( 'CUSTOM_CONSTANTS_USED' ) && CUSTOM_CONSTANTS_USED ) {
462
+        if (defined('CUSTOM_CONSTANTS_USED') && CUSTOM_CONSTANTS_USED) {
463 463
             $key = 'multisite_custom';
464 464
         }
465 465
 
466
-        $csspart = self::$flexible_url_parts_css[ $key ];
467
-        $jspart  = self::$flexible_url_parts_js[ $key ];
466
+        $csspart = self::$flexible_url_parts_css[$key];
467
+        $jspart  = self::$flexible_url_parts_js[$key];
468 468
 
469 469
         $csshash = '863f587e89f100b0223ddccc0dabc57a';
470
-        if ( AO_TEST_SUBFOLDER_INSTALL ) {
470
+        if (AO_TEST_SUBFOLDER_INSTALL) {
471 471
             $csshash = '56398de576d59887e88e3011715250e0';
472 472
         }
473 473
 
@@ -528,11 +528,11 @@  discard block
 block discarded – undo
528 528
     /**
529 529
      * @dataProvider provider_test_rewrite_markup_with_cdn
530 530
      */
531
-    function test_rewrite_markup_with_cdn( $input, $expected )
531
+    function test_rewrite_markup_with_cdn($input, $expected)
532 532
     {
533
-        $actual = $this->ao->end_buffering( $input );
533
+        $actual = $this->ao->end_buffering($input);
534 534
 
535
-        $this->assertEquals( $expected, $actual );
535
+        $this->assertEquals($expected, $actual);
536 536
     }
537 537
 
538 538
     public function provider_test_rewrite_markup_with_cdn()
@@ -544,7 +544,7 @@  discard block
 block discarded – undo
544 544
                 $this->get_test_markup(),
545 545
                 // Expected output.
546 546
                 // TODO/FIXME: This seemed like the fastest way to get MS crude test to pass...
547
-                ( is_multisite() ? $this->get_test_markup_output_ms() : $this->get_test_markup_output() ),
547
+                (is_multisite() ? $this->get_test_markup_output_ms() : $this->get_test_markup_output()),
548 548
             ),
549 549
 
550 550
         );
@@ -604,12 +604,12 @@  discard block
 block discarded – undo
604 604
 }
605 605
 CSS;
606 606
 
607
-        $instance = new autoptimizeStyles( $css_in );
608
-        $instance->setOption( 'cdn_url', $cdnurl );
607
+        $instance = new autoptimizeStyles($css_in);
608
+        $instance->setOption('cdn_url', $cdnurl);
609 609
 
610
-        $css_actual = $instance->rewrite_assets( $css_in );
610
+        $css_actual = $instance->rewrite_assets($css_in);
611 611
 
612
-        $this->assertEquals( $css_expected, $css_actual );
612
+        $this->assertEquals($css_expected, $css_actual);
613 613
     }
614 614
 
615 615
     public function test_default_cssmin_minifier()
@@ -643,21 +643,21 @@  discard block
 block discarded – undo
643 643
 .bg{background:url('img/something.svg')}.bg-no-quote{background:url(img/something.svg)}.bg-double-quotes{background:url("img/something.svg")}.whitespaces{background:url ("../../somewhere-else/svg.svg")}.host-relative{background:url("/img/something.svg")}.protocol-relative{background:url("//something/somewhere/example.png")}@font-face{font-family:'Roboto';font-style:normal;font-weight:100;src:url(../fonts/roboto-v15-latin-ext_latin-100.eot);src:local('Roboto Thin'),local('Roboto-Thin'),url(../fonts/roboto-v15-latin-ext_latin-100.eot?#iefix) format('embedded-opentype'),url(../fonts/roboto-v15-latin-ext_latin-100.woff2) format('woff2'),url(../fonts/roboto-v15-latin-ext_latin-100.woff) format('woff'),url(../fonts/roboto-v15-latin-ext_latin-100.ttf) format('truetype'),url(../fonts/roboto-v15-latin-ext_latin-100.svg#Roboto) format('svg')}
644 644
 CSS;
645 645
 
646
-        $instance = new autoptimizeStyles( $css );
647
-        $minified = $instance->run_minifier_on( $css );
646
+        $instance = new autoptimizeStyles($css);
647
+        $minified = $instance->run_minifier_on($css);
648 648
 
649
-        $this->assertEquals( $expected, $minified );
649
+        $this->assertEquals($expected, $minified);
650 650
     }
651 651
 
652 652
     /**
653 653
      * @dataProvider provider_test_should_aggregate_script_types
654 654
      */
655
-    public function test_should_aggregate_script_types( $input, $expected )
655
+    public function test_should_aggregate_script_types($input, $expected)
656 656
     {
657
-        $instance = new autoptimizeScripts( '' );
658
-        $actual   = $instance->should_aggregate( $input );
657
+        $instance = new autoptimizeScripts('');
658
+        $actual   = $instance->should_aggregate($input);
659 659
 
660
-        $this->assertEquals( $expected, $actual );
660
+        $this->assertEquals($expected, $actual);
661 661
     }
662 662
 
663 663
     public function provider_test_should_aggregate_script_types()
@@ -719,11 +719,11 @@  discard block
 block discarded – undo
719 719
     /**
720 720
      * @dataProvider provider_is_valid_buffer
721 721
      */
722
-    public function test_valid_buffers( $input, $expected )
722
+    public function test_valid_buffers($input, $expected)
723 723
     {
724
-        $actual = $this->ao->is_valid_buffer( $input );
724
+        $actual = $this->ao->is_valid_buffer($input);
725 725
 
726
-        $this->assertEquals( $expected, $actual );
726
+        $this->assertEquals($expected, $actual);
727 727
     }
728 728
 
729 729
     public function provider_is_valid_buffer()
@@ -792,11 +792,11 @@  discard block
 block discarded – undo
792 792
     /**
793 793
      * @dataProvider provider_is_amp_markup
794 794
      */
795
-    public function test_autoptimize_is_amp_markup( $input, $expected )
795
+    public function test_autoptimize_is_amp_markup($input, $expected)
796 796
     {
797
-        $actual = autoptimizeMain::is_amp_markup( $input );
797
+        $actual = autoptimizeMain::is_amp_markup($input);
798 798
 
799
-        $this->assertEquals( $expected, $actual );
799
+        $this->assertEquals($expected, $actual);
800 800
     }
801 801
 
802 802
     public function provider_is_amp_markup()
@@ -827,31 +827,31 @@  discard block
 block discarded – undo
827 827
     public function test_skips_buffering_when_ao_noptimize_filter_is_true()
828 828
     {
829 829
         // True => disable autoptimize.
830
-        add_filter( 'autoptimize_filter_noptimize', '__return_true' );
830
+        add_filter('autoptimize_filter_noptimize', '__return_true');
831 831
 
832 832
         // Buffering should not run due to the above filter.
833 833
         $expected = false;
834
-        $actual   = $this->ao->should_buffer( $doing_tests = true );
834
+        $actual   = $this->ao->should_buffer($doing_tests = true);
835 835
 
836
-        $this->assertEquals( $expected, $actual );
836
+        $this->assertEquals($expected, $actual);
837 837
     }
838 838
 
839 839
     public function test_does_buffering_when_ao_noptimize_filter_is_false()
840 840
     {
841 841
         // False => disable noptimize, aka, run normally (weird, yes...).
842
-        add_filter( 'autoptimize_filter_noptimize', '__return_false' );
842
+        add_filter('autoptimize_filter_noptimize', '__return_false');
843 843
 
844 844
         // Buffering should run because of above.
845 845
         $expected = true;
846
-        $actual   = $this->ao->should_buffer( $doing_tests = true );
846
+        $actual   = $this->ao->should_buffer($doing_tests = true);
847 847
 
848
-        $this->assertEquals( $expected, $actual );
848
+        $this->assertEquals($expected, $actual);
849 849
     }
850 850
 
851 851
     public function test_ignores_ao_noptimize_qs_when_instructed()
852 852
     {
853 853
         // Should skip checking for the qs completely due to filter.
854
-        add_filter( 'autoptimize_filter_honor_qs_noptimize', '__return_false' );
854
+        add_filter('autoptimize_filter_honor_qs_noptimize', '__return_false');
855 855
 
856 856
         /**
857 857
          * The above should then result in the "current" value being `false`
@@ -862,23 +862,23 @@  discard block
 block discarded – undo
862 862
          */
863 863
 
864 864
         $that = $this; // Makes it work on php 5.3!
865
-        add_filter( 'autoptimize_filter_noptimize', function ( $current_value ) use ( $that ) {
865
+        add_filter('autoptimize_filter_noptimize', function($current_value) use ($that) {
866 866
             $expected = false;
867
-            if ( defined( 'DONOTMINIFY' ) && DONOTMINIFY ) {
867
+            if (defined('DONOTMINIFY') && DONOTMINIFY) {
868 868
                 $expected = true;
869 869
             }
870 870
 
871
-            $that->assertEquals( $expected, $current_value );
871
+            $that->assertEquals($expected, $current_value);
872 872
         });
873 873
 
874
-        $this->ao->should_buffer( $doing_tests = true );
874
+        $this->ao->should_buffer($doing_tests = true);
875 875
     }
876 876
 
877 877
     public function test_wpengine_cache_flush()
878 878
     {
879 879
         // Creating a mock so that we can get past class_exists() and method_exists() checks present
880 880
         // in `autoptimizeCache::flushPageCache()`...
881
-        $stub = $this->getMockBuilder( 'WpeCommon' )->disableAutoload()
881
+        $stub = $this->getMockBuilder('WpeCommon')->disableAutoload()
882 882
                 ->disableOriginalConstructor()->setMethods(
883 883
                     array(
884 884
                         'purge_varnish_cache',
@@ -887,9 +887,9 @@  discard block
 block discarded – undo
887 887
                 ->getMock();
888 888
 
889 889
         $that = $this;
890
-        add_filter( 'autoptimize_flush_wpengine_methods', function( $methods ) use ( $that ) {
891
-            $expected_methods = array( 'purge_varnish_cache' );
892
-            $that->assertEquals( $methods, $expected_methods );
890
+        add_filter('autoptimize_flush_wpengine_methods', function($methods) use ($that) {
891
+            $expected_methods = array('purge_varnish_cache');
892
+            $that->assertEquals($methods, $expected_methods);
893 893
 
894 894
             return $methods;
895 895
         });
@@ -903,7 +903,7 @@  discard block
 block discarded – undo
903 903
     public function test_wpengine_cache_flush_agressive()
904 904
     {
905 905
         // Creating a mock so that we can get past class_exists() and method_exists() checks `autoptimize_flush_pagecache()`...
906
-        $stub = $this->getMockBuilder( 'WpeCommon' )->disableAutoload()
906
+        $stub = $this->getMockBuilder('WpeCommon')->disableAutoload()
907 907
                 ->disableOriginalConstructor()->setMethods(
908 908
                     array(
909 909
                         'purge_varnish_cache',
@@ -913,19 +913,19 @@  discard block
 block discarded – undo
913 913
                 )
914 914
                 ->getMock();
915 915
 
916
-        add_filter( 'autoptimize_flush_wpengine_aggressive', function() {
916
+        add_filter('autoptimize_flush_wpengine_aggressive', function() {
917 917
             return true;
918 918
         });
919 919
 
920 920
         $that = $this;
921
-        add_filter( 'autoptimize_flush_wpengine_methods', function( $methods ) use ( $that ) {
921
+        add_filter('autoptimize_flush_wpengine_methods', function($methods) use ($that) {
922 922
             $expected_methods = array(
923 923
                 'purge_varnish_cache',
924 924
                 'purge_memcached',
925 925
                 'clear_maxcdn_cache',
926 926
             );
927 927
 
928
-            $that->assertEquals( $methods, $expected_methods );
928
+            $that->assertEquals($methods, $expected_methods);
929 929
 
930 930
             return $methods;
931 931
         });
@@ -936,15 +936,15 @@  discard block
 block discarded – undo
936 936
     /**
937 937
      * @dataProvider provider_test_url_replace_cdn
938 938
      */
939
-    public function test_url_replace_cdn( $cdn_url, $input, $expected )
939
+    public function test_url_replace_cdn($cdn_url, $input, $expected)
940 940
     {
941
-        $mock = $this->getMockBuilder( 'autoptimizeBase' )
941
+        $mock = $this->getMockBuilder('autoptimizeBase')
942 942
                 ->disableOriginalConstructor()
943 943
                 ->getMockForAbstractClass();
944 944
 
945 945
         $mock->cdn_url = $cdn_url;
946
-        $actual        = $mock->url_replace_cdn( $input );
947
-        $this->assertEquals( $expected, $actual );
946
+        $actual        = $mock->url_replace_cdn($input);
947
+        $this->assertEquals($expected, $actual);
948 948
     }
949 949
 
950 950
     public function provider_test_url_replace_cdn()
@@ -961,13 +961,13 @@  discard block
 block discarded – undo
961 961
                 // CDN base url, url, expected result...
962 962
                 'http://cdn-test.example.org',
963 963
                 '/a.jpg',
964
-                'http://cdn-test.example.org/' . $subfolder . 'a.jpg',
964
+                'http://cdn-test.example.org/'.$subfolder.'a.jpg',
965 965
             ),
966 966
             // Full link with a matching AUTOPTIMIZE_WP_SITE_URL gets properly replaced...
967 967
             array(
968 968
                 'http://cdn-test.example.org',
969
-                $siteurl . '/wp-content/themes/something/example.svg',
970
-                'http://cdn-test.example.org/' . $subfolder . 'wp-content/themes/something/example.svg',
969
+                $siteurl.'/wp-content/themes/something/example.svg',
970
+                'http://cdn-test.example.org/'.$subfolder.'wp-content/themes/something/example.svg',
971 971
             ),
972 972
             // Protocol-relative url with a "local" hostname that doesn't match example.org (AUTOPTIMIZE_WP_SITE_URL)...
973 973
             array(
@@ -978,59 +978,59 @@  discard block
 block discarded – undo
978 978
             // www.example.org does not match example.org (AUTOPTIMIZE_WP_SITE_URL) so it's left alone...
979 979
             array(
980 980
                 'http://cdn-test.example.org',
981
-                $wwwsiteurl . '/wp-content/themes/something/example.svg',
982
-                $wwwsiteurl . '/wp-content/themes/something/example.svg',
981
+                $wwwsiteurl.'/wp-content/themes/something/example.svg',
982
+                $wwwsiteurl.'/wp-content/themes/something/example.svg',
983 983
             ),
984 984
             // SSL cdn url + host-relative link...
985 985
             array(
986 986
                 'https://cdn.example.org',
987 987
                 '/a.jpg',
988
-                'https://cdn.example.org/' . $subfolder . 'a.jpg',
988
+                'https://cdn.example.org/'.$subfolder.'a.jpg',
989 989
             ),
990 990
             // SSL cdn url + http site url that matches AUTOPTIMIZE_WP_SITE_URL is properly replaced...
991 991
             array(
992 992
                 'https://cdn.example.org',
993
-                $siteurl . '/wp-content/themes/something/example.svg',
994
-                'https://cdn.example.org/' . $subfolder . 'wp-content/themes/something/example.svg',
993
+                $siteurl.'/wp-content/themes/something/example.svg',
994
+                'https://cdn.example.org/'.$subfolder.'wp-content/themes/something/example.svg',
995 995
             ),
996 996
             // Protocol-relative cdn url given with protocol relative link that matches AUTOPTIMIZE_WP_SITE_URL host...
997 997
             array(
998 998
                 '//cdn.example.org',
999
-                $protorelativesiteurl . '/something.jpg',
1000
-                '//cdn.example.org/' . $subfolder . 'something.jpg',
999
+                $protorelativesiteurl.'/something.jpg',
1000
+                '//cdn.example.org/'.$subfolder.'something.jpg',
1001 1001
             ),
1002 1002
             // Protocol-relative cdn url given a http link that matches AUTOPTIMIZE_WP_SITE_URL host...
1003 1003
             array(
1004 1004
                 '//cdn.example.org',
1005
-                $siteurl . '/something.png',
1006
-                '//cdn.example.org/' . $subfolder . 'something.png',
1005
+                $siteurl.'/something.png',
1006
+                '//cdn.example.org/'.$subfolder.'something.png',
1007 1007
             ),
1008 1008
             // Protocol-relative cdn url with a host-relative link...
1009 1009
             array(
1010 1010
                 '//cdn.example.org',
1011 1011
                 '/a.jpg',
1012
-                '//cdn.example.org/' . $subfolder . 'a.jpg',
1012
+                '//cdn.example.org/'.$subfolder.'a.jpg',
1013 1013
             ),
1014 1014
             // Testing cdn urls with an explicit port number...
1015 1015
             array(
1016 1016
                 'http://cdn.com:8080',
1017 1017
                 '/a.jpg',
1018
-                'http://cdn.com:8080/' . $subfolder . 'a.jpg',
1018
+                'http://cdn.com:8080/'.$subfolder.'a.jpg',
1019 1019
             ),
1020 1020
             array(
1021 1021
                 '//cdn.com:4433',
1022 1022
                 '/a.jpg',
1023
-                '//cdn.com:4433/' . $subfolder . 'a.jpg',
1023
+                '//cdn.com:4433/'.$subfolder.'a.jpg',
1024 1024
             ),
1025 1025
             array(
1026 1026
                 '//cdn.com:4433',
1027
-                $siteurl . '/something.jpg',
1028
-                '//cdn.com:4433/' . $subfolder . 'something.jpg',
1027
+                $siteurl.'/something.jpg',
1028
+                '//cdn.com:4433/'.$subfolder.'something.jpg',
1029 1029
             ),
1030 1030
             array(
1031 1031
                 '//cdn.com:1234',
1032
-                $protorelativesiteurl . '/something.jpg',
1033
-                '//cdn.com:1234/' . $subfolder . 'something.jpg',
1032
+                $protorelativesiteurl.'/something.jpg',
1033
+                '//cdn.com:1234/'.$subfolder.'something.jpg',
1034 1034
             ),
1035 1035
             // Relative links should not be touched by url_replace_cdn()...
1036 1036
             array(
@@ -1055,8 +1055,8 @@  discard block
 block discarded – undo
1055 1055
             // even though they are really strange...
1056 1056
             array(
1057 1057
                 $siteurl, // example.org or http://localhost or http://localhost/wordpress
1058
-                $siteurl . '/something.jpg',
1059
-                $siteurl . '/something.jpg',
1058
+                $siteurl.'/something.jpg',
1059
+                $siteurl.'/something.jpg',
1060 1060
             ),
1061 1061
             // These shouldn't really be changed, or even if replacements do
1062 1062
             // happen, they shouldn't be destructive...
@@ -1095,31 +1095,31 @@  discard block
 block discarded – undo
1095 1095
         $test_link = '/a.jpg';
1096 1096
         $cdn_url   = '//cdn.example.org';
1097 1097
 
1098
-        $with_ssl = function( $cdn ) {
1098
+        $with_ssl = function($cdn) {
1099 1099
             return '';
1100 1100
         };
1101 1101
         $expected_with_ssl = '/a.jpg';
1102 1102
 
1103
-        $without_ssl = function( $cdn ) {
1103
+        $without_ssl = function($cdn) {
1104 1104
             return $cdn;
1105 1105
         };
1106
-        $expected_without_ssl = '//cdn.example.org/' . $sub . 'a.jpg';
1106
+        $expected_without_ssl = '//cdn.example.org/'.$sub.'a.jpg';
1107 1107
 
1108 1108
         // With a filter that returns something considered "empty", cdn replacement shouldn't occur...
1109
-        add_filter( 'autoptimize_filter_base_cdnurl', $with_ssl );
1110
-        $mock = $this->getMockBuilder( 'autoptimizeBase' )
1109
+        add_filter('autoptimize_filter_base_cdnurl', $with_ssl);
1110
+        $mock = $this->getMockBuilder('autoptimizeBase')
1111 1111
                 ->disableOriginalConstructor()
1112 1112
                 ->getMockForAbstractClass();
1113 1113
 
1114 1114
         $mock->cdn_url   = $cdn_url;
1115
-        $actual_with_ssl = $mock->url_replace_cdn( $test_link );
1116
-        $this->assertEquals( $expected_with_ssl, $actual_with_ssl );
1117
-        remove_filter( 'autoptimize_filter_base_cdnurl', $with_ssl );
1115
+        $actual_with_ssl = $mock->url_replace_cdn($test_link);
1116
+        $this->assertEquals($expected_with_ssl, $actual_with_ssl);
1117
+        remove_filter('autoptimize_filter_base_cdnurl', $with_ssl);
1118 1118
 
1119 1119
         // With a filter that returns an actual cdn url, cdn replacement should occur.
1120
-        add_filter( 'autoptimize_filter_base_cdnurl', $without_ssl );
1121
-        $actual_without_ssl = $mock->url_replace_cdn( $test_link );
1122
-        $this->assertEquals( $expected_without_ssl, $actual_without_ssl );
1120
+        add_filter('autoptimize_filter_base_cdnurl', $without_ssl);
1121
+        $actual_without_ssl = $mock->url_replace_cdn($test_link);
1122
+        $this->assertEquals($expected_without_ssl, $actual_without_ssl);
1123 1123
     }
1124 1124
 
1125 1125
     public function provider_cssmin_issues()
@@ -1158,11 +1158,11 @@  discard block
 block discarded – undo
1158 1158
     /**
1159 1159
      * @dataProvider provider_cssmin_issues
1160 1160
      */
1161
-    public function test_cssmin_issues( $input, $expected )
1161
+    public function test_cssmin_issues($input, $expected)
1162 1162
     {
1163
-        $minifier = new autoptimizeCSSmin( false ); // No need to raise limits for now.
1164
-        $actual   = $minifier->run( $input );
1165
-        $this->assertEquals( $expected, $actual );
1163
+        $minifier = new autoptimizeCSSmin(false); // No need to raise limits for now.
1164
+        $actual   = $minifier->run($input);
1165
+        $this->assertEquals($expected, $actual);
1166 1166
     }
1167 1167
 
1168 1168
     public function provider_getpath()
@@ -1187,12 +1187,12 @@  discard block
 block discarded – undo
1187 1187
             // This file comes with core, so should exist...
1188 1188
             array(
1189 1189
                 '/wp-includes/js/jquery/jquery.js',
1190
-                WP_ROOT_DIR . '/wp-includes/js/jquery/jquery.js',
1190
+                WP_ROOT_DIR.'/wp-includes/js/jquery/jquery.js',
1191 1191
             ),
1192 1192
             // This file comes with core as of 5.6, so should exist...
1193 1193
             array(
1194 1194
                 '/wp-includes/js/jquery/jquery.min.js',
1195
-                WP_ROOT_DIR . '/wp-includes/js/jquery/jquery.min.js',
1195
+                WP_ROOT_DIR.'/wp-includes/js/jquery/jquery.min.js',
1196 1196
             ),
1197 1197
             // Empty $url should return false.
1198 1198
             array(
@@ -1217,12 +1217,12 @@  discard block
 block discarded – undo
1217 1217
     /**
1218 1218
      * @dataProvider provider_getpath
1219 1219
      */
1220
-    public function test_getpath( $input, $expected )
1220
+    public function test_getpath($input, $expected)
1221 1221
     {
1222
-        $mock = $this->getMockBuilder( 'autoptimizeBase' )->disableOriginalConstructor()->getMockForAbstractClass();
1222
+        $mock = $this->getMockBuilder('autoptimizeBase')->disableOriginalConstructor()->getMockForAbstractClass();
1223 1223
 
1224
-        $actual = $mock->getpath( $input );
1225
-        $this->assertEquals( $expected, $actual );
1224
+        $actual = $mock->getpath($input);
1225
+        $this->assertEquals($expected, $actual);
1226 1226
     }
1227 1227
 
1228 1228
     /**
@@ -1236,7 +1236,7 @@  discard block
 block discarded – undo
1236 1236
 
1237 1237
         $protorelativesiteurl = $urls['prsiteurl'];
1238 1238
 
1239
-        $css_orig     = <<<CSS
1239
+        $css_orig = <<<CSS
1240 1240
 header{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90px' height='110px' viewBox='0 0 90 110'%3E%3Cstyle%3E.a%7Bstop-color:%23FFF;%7D.b%7Bstop-color:%23B2D235;%7D.c%7Bstop-color:%23BEE7FA;%7D.d%7Bfill:%23590C15;%7D%3C/style%3E%3ClinearGradient id='c' y2='135.4' gradientUnits='userSpaceOnUse' x2='209.1' gradientTransform='rotate(-1.467 -4082.888 7786.794)' y1='205.8' x1='262'%3E%3Cstop class='b' offset='0'/%3E%3Cstop class='b' offset='.48'/%3E%3Cstop stop-color='%23829D25' offset='1'/%3E%3C/linearGradient%3E%3Cpath stroke-width='.3' d='M77.3 45.4c-3-3.5-7.1-6.5-11.6-7.8-5.1-1.5-10-.1-14.9 1.5C52 35.4 54.3 29 60 24l-4.8-5.5c-3.4 3-5.8 6.3-7.5 9.4-1.7-4.3-4.1-8.4-7.5-12C33.4 8.6 24.3 4.7 15.1 4.2c-.2 9.3 3.1 18.6 9.9 25.9 5.2 5.6 11.8 9.2 18.7 10.8-2.5.2-4.9-.1-7.7-.9-5.2-1.4-10.5-2.8-15.8-1C10.6 42.3 4.5 51.9 4 61.7c-.5 11.6 3.8 23.8 9.9 33.5 3.9 6.3 9.6 13.7 17.7 13.4 3.8-.1 7-2.1 10.7-2.7 5.2-.8 9.1 1.2 14.1 1.8 16.4 2 24.4-23.6 26.4-35.9 1.2-9.1.8-19.1-5.5-26.4z' stroke='%233E6D1F' fill='url(%23c)'/%3E%3C/svg%3E")}
1241 1241
 section.clipped.clippedTop {clip-path:url("#clipPolygonTop")}
1242 1242
 section.clipped.clippedBottom {clip-path:url("#clipPolygonBottom")}
@@ -1249,13 +1249,13 @@  discard block
 block discarded – undo
1249 1249
 .myimg {background-image: url($protorelativesiteurl/wp-content/themes/my-theme/images/under-left-leaf.png), url($protorelativesiteurl/wp-content/themes/my-theme/images/over-blue-bird.png), url($protorelativesiteurl/wp-content/themes/my-theme/images/under-top.png), url($protorelativesiteurl/wp-content/themes/my-theme/images/bg-top-grunge.png);}
1250 1250
 CSS;
1251 1251
 
1252
-        $fixurls_result = autoptimizeStyles::fixurls( ABSPATH . 'wp-content/themes/my-theme/style.css', $css_orig );
1253
-        $this->assertEquals( $css_expected, $fixurls_result );
1252
+        $fixurls_result = autoptimizeStyles::fixurls(ABSPATH.'wp-content/themes/my-theme/style.css', $css_orig);
1253
+        $this->assertEquals($css_expected, $fixurls_result);
1254 1254
     }
1255 1255
 
1256 1256
     public function test_background_datauri_sprites_with_fixurls()
1257 1257
     {
1258
-        $css_orig     = <<<CSS
1258
+        $css_orig = <<<CSS
1259 1259
 .shadow { background:url(img/1x1.png) top center; }
1260 1260
 .shadow1 { background-image:url(img/1x1.png) 0 -767px repeat-x; }
1261 1261
 .shadow2 {background:url(img/1x1.png) top center}
@@ -1307,27 +1307,27 @@  discard block
 block discarded – undo
1307 1307
 CSS;
1308 1308
 
1309 1309
         // For test purposes, ALL images in the css are being inline with a 1x1 trans png string/datauri.
1310
-        add_filter( 'autoptimize_filter_css_is_datauri_candidate', function( $is_candidate, $path ) {
1310
+        add_filter('autoptimize_filter_css_is_datauri_candidate', function($is_candidate, $path) {
1311 1311
             return true;
1312
-        }, 10, 2 );
1312
+        }, 10, 2);
1313 1313
 
1314 1314
         // For test purposes, ALL images in the css are being inline with a 1x1 trans png string/datauri.
1315
-        add_filter( 'autoptimize_filter_css_datauri_image', function( $base64array, $path ) {
1315
+        add_filter('autoptimize_filter_css_datauri_image', function($base64array, $path) {
1316 1316
             $head = 'data:image/png;base64,';
1317 1317
             $data = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
1318 1318
 
1319
-            $result['full']       = $head . $data;
1319
+            $result['full']       = $head.$data;
1320 1320
             $result['base64data'] = $data;
1321 1321
             return $result;
1322
-        }, 10, 2 );
1322
+        }, 10, 2);
1323 1323
 
1324
-        $instance = new autoptimizeStyles( $css_orig );
1325
-        $instance->setOption( 'datauris', true );
1324
+        $instance = new autoptimizeStyles($css_orig);
1325
+        $instance->setOption('datauris', true);
1326 1326
 
1327
-        $fixurls_result = autoptimizeStyles::fixurls( ABSPATH . 'wp-content/themes/my-theme/style.css', $css_orig );
1328
-        $css_actual     = $instance->rewrite_assets( $fixurls_result );
1327
+        $fixurls_result = autoptimizeStyles::fixurls(ABSPATH.'wp-content/themes/my-theme/style.css', $css_orig);
1328
+        $css_actual     = $instance->rewrite_assets($fixurls_result);
1329 1329
 
1330
-        $this->assertEquals( $css_expected, $css_actual );
1330
+        $this->assertEquals($css_expected, $css_actual);
1331 1331
     }
1332 1332
 
1333 1333
     /**
@@ -1347,7 +1347,7 @@  discard block
 block discarded – undo
1347 1347
      */
1348 1348
     public function test_background_datauri_sprites_without_fixurls()
1349 1349
     {
1350
-        $css_orig     = <<<CSS
1350
+        $css_orig = <<<CSS
1351 1351
 .shadow { background:url(img/1x1.png) top center; }
1352 1352
 .shadow1 { background-image:url(img/1x1.png) 0 -767px repeat-x; }
1353 1353
 .shadow2 {background:url(img/1x1.png) top center}
@@ -1391,24 +1391,24 @@  discard block
 block discarded – undo
1391 1391
 CSS;
1392 1392
 
1393 1393
         // For test purposes, ALL images in the css are being inlined with a 1x1 trans png string/datauri.
1394
-        add_filter( 'autoptimize_filter_css_is_datauri_candidate', function( $is_candidate, $path ) {
1394
+        add_filter('autoptimize_filter_css_is_datauri_candidate', function($is_candidate, $path) {
1395 1395
             return true;
1396
-        }, 10, 2 );
1396
+        }, 10, 2);
1397 1397
 
1398 1398
         // For test purposes, ALL images in the css are being inlined with a 1x1 trans png string/datauri.
1399
-        add_filter( 'autoptimize_filter_css_datauri_image', function( $base64array, $path ) {
1399
+        add_filter('autoptimize_filter_css_datauri_image', function($base64array, $path) {
1400 1400
             $head = 'data:image/png;base64,';
1401 1401
             $data = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
1402 1402
 
1403
-            $result['full']       = $head . $data;
1403
+            $result['full']       = $head.$data;
1404 1404
             $result['base64data'] = $data;
1405 1405
             return $result;
1406
-        }, 10, 2 );
1406
+        }, 10, 2);
1407 1407
 
1408
-        $instance = new autoptimizeStyles( $css_orig );
1409
-        $instance->setOption( 'datauris', true );
1410
-        $css_actual = $instance->rewrite_assets( $css_orig );
1411
-        $this->assertEquals( $css_expected, $css_actual );
1408
+        $instance = new autoptimizeStyles($css_orig);
1409
+        $instance->setOption('datauris', true);
1410
+        $css_actual = $instance->rewrite_assets($css_orig);
1411
+        $this->assertEquals($css_expected, $css_actual);
1412 1412
     }
1413 1413
 
1414 1414
     /**
@@ -1528,12 +1528,12 @@  discard block
 block discarded – undo
1528 1528
 CSS;
1529 1529
 
1530 1530
         // Test with fonts pointed to the CDN + cdn option is set.
1531
-        add_filter( 'autoptimize_filter_css_fonts_cdn', '__return_true' );
1532
-        $instance = new autoptimizeStyles( $css_in );
1533
-        $instance->setOption( 'cdn_url', $cdnurl );
1534
-        $css_actual_fonts_cdn = $instance->rewrite_assets( $css_in );
1531
+        add_filter('autoptimize_filter_css_fonts_cdn', '__return_true');
1532
+        $instance = new autoptimizeStyles($css_in);
1533
+        $instance->setOption('cdn_url', $cdnurl);
1534
+        $css_actual_fonts_cdn = $instance->rewrite_assets($css_in);
1535 1535
 
1536
-        $this->assertEquals( $css_expected_fonts_cdn, $css_actual_fonts_cdn );
1536
+        $this->assertEquals($css_expected_fonts_cdn, $css_actual_fonts_cdn);
1537 1537
     }
1538 1538
 
1539 1539
     /**
@@ -1649,10 +1649,10 @@  discard block
 block discarded – undo
1649 1649
 }
1650 1650
 CSS;
1651 1651
         // Test without moving fonts to CDN, but cdn option is set.
1652
-        $instance = new autoptimizeStyles( $css_in );
1653
-        $instance->setOption( 'cdn_url', $urls['cdnurl'] );
1654
-        $css_actual = $instance->rewrite_assets( $css_in );
1655
-        $this->assertEquals( $css_expected, $css_actual );
1652
+        $instance = new autoptimizeStyles($css_in);
1653
+        $instance->setOption('cdn_url', $urls['cdnurl']);
1654
+        $css_actual = $instance->rewrite_assets($css_in);
1655
+        $this->assertEquals($css_expected, $css_actual);
1656 1656
     }
1657 1657
 
1658 1658
     public function test_assets_regex_replaces_multi_bg_images()
@@ -1673,16 +1673,16 @@  discard block
 block discarded – undo
1673 1673
 }
1674 1674
 CSS;
1675 1675
 
1676
-        $instance = new autoptimizeStyles( $in );
1677
-        $instance->setOption( 'cdn_url', $cdnurl );
1678
-        $actual = $instance->rewrite_assets( $in );
1676
+        $instance = new autoptimizeStyles($in);
1677
+        $instance->setOption('cdn_url', $cdnurl);
1678
+        $actual = $instance->rewrite_assets($in);
1679 1679
 
1680
-        $this->assertEquals( $expected, $actual );
1680
+        $this->assertEquals($expected, $actual);
1681 1681
     }
1682 1682
 
1683 1683
     public function test_at_supports_spacing_issue_110()
1684 1684
     {
1685
-        $in       = <<<CSS
1685
+        $in = <<<CSS
1686 1686
 @supports (-webkit-filter: blur(3px)) or (filter: blur(3px)) {
1687 1687
     .blur {
1688 1688
         filter:blur(3px);
@@ -1696,10 +1696,10 @@  discard block
 block discarded – undo
1696 1696
 @supports (-webkit-filter:blur(3px)) or (filter:blur(3px)){.blur{filter:blur(3px)}}@supports((position:-webkit-sticky) or (position:sticky)){.sticky{position:sticky}}
1697 1697
 CSS;
1698 1698
 
1699
-        $instance = new autoptimizeStyles( $in );
1700
-        $actual   = $instance->run_minifier_on( $in );
1699
+        $instance = new autoptimizeStyles($in);
1700
+        $actual   = $instance->run_minifier_on($in);
1701 1701
 
1702
-        $this->assertEquals( $expected, $actual );
1702
+        $this->assertEquals($expected, $actual);
1703 1703
     }
1704 1704
 
1705 1705
     public function test_css_import_semicolon_url_issue_122()
@@ -1715,18 +1715,18 @@  discard block
 block discarded – undo
1715 1715
 </style>
1716 1716
 HTML;
1717 1717
 
1718
-        $expected = '<style media="all">@import url(' . $cdnurl . '/' . $sub . 'foo.css?a&#038;b);@import url(' . $cdnurl . '/' . $sub . 'bar.css);</style><!--noptimize--><!-- Autoptimize found a problem with the HTML in your Theme, tag `title` missing --><!--/noptimize-->';
1718
+        $expected = '<style media="all">@import url('.$cdnurl.'/'.$sub.'foo.css?a&#038;b);@import url('.$cdnurl.'/'.$sub.'bar.css);</style><!--noptimize--><!-- Autoptimize found a problem with the HTML in your Theme, tag `title` missing --><!--/noptimize-->';
1719 1719
 
1720 1720
         $options = [
1721 1721
             'autoptimizeStyles' => $this->getAoStylesDefaultOptions(),
1722 1722
         ];
1723 1723
 
1724
-        $instance = new autoptimizeStyles( $in );
1725
-        $instance->read( $options['autoptimizeStyles'] );
1724
+        $instance = new autoptimizeStyles($in);
1725
+        $instance->read($options['autoptimizeStyles']);
1726 1726
         $instance->minify();
1727 1727
         $instance->cache();
1728 1728
         $actual = $instance->getcontent();
1729
-        $this->assertEquals( $expected, $actual );
1729
+        $this->assertEquals($expected, $actual);
1730 1730
     }
1731 1731
 
1732 1732
     public function test_fixurls_with_at_imports_and_media_queries()
@@ -1736,10 +1736,10 @@  discard block
 block discarded – undo
1736 1736
         $subfolder = $urls['subfolder'];
1737 1737
 
1738 1738
         $in  = '@import "foo.css"; @import "bar.css" (orientation:landscape);';
1739
-        $exp = '@import url(' . $prsiteurl . '/wp-content/themes/my-theme/foo.css); @import url(' . $prsiteurl . '/wp-content/themes/my-theme/bar.css) (orientation:landscape);';
1739
+        $exp = '@import url('.$prsiteurl.'/wp-content/themes/my-theme/foo.css); @import url('.$prsiteurl.'/wp-content/themes/my-theme/bar.css) (orientation:landscape);';
1740 1740
 
1741
-        $actual = autoptimizeStyles::fixurls( ABSPATH . 'wp-content/themes/my-theme/style.css', $in );
1742
-        $this->assertEquals( $exp, $actual );
1741
+        $actual = autoptimizeStyles::fixurls(ABSPATH.'wp-content/themes/my-theme/style.css', $in);
1742
+        $this->assertEquals($exp, $actual);
1743 1743
     }
1744 1744
 
1745 1745
     public function test_aostyles_at_imports_with_media_queries()
@@ -1754,43 +1754,43 @@  discard block
 block discarded – undo
1754 1754
 </style>
1755 1755
 HTML;
1756 1756
 
1757
-        $expected = '<style media="all">@import url(' . $cdnurl . '/' . $sub . 'foo.css);@import url(' . $cdnurl . '/' . $sub . 'bar.css) (orientation:landscape);</style><!--noptimize--><!-- Autoptimize found a problem with the HTML in your Theme, tag `title` missing --><!--/noptimize-->';
1757
+        $expected = '<style media="all">@import url('.$cdnurl.'/'.$sub.'foo.css);@import url('.$cdnurl.'/'.$sub.'bar.css) (orientation:landscape);</style><!--noptimize--><!-- Autoptimize found a problem with the HTML in your Theme, tag `title` missing --><!--/noptimize-->';
1758 1758
 
1759 1759
         $options = [
1760 1760
             'autoptimizeStyles' => $this->getAoStylesDefaultOptions(),
1761 1761
         ];
1762 1762
 
1763
-        $instance = new autoptimizeStyles( $in );
1764
-        $instance->read( $options['autoptimizeStyles'] );
1763
+        $instance = new autoptimizeStyles($in);
1764
+        $instance->read($options['autoptimizeStyles']);
1765 1765
         $instance->minify();
1766 1766
         $instance->cache();
1767 1767
 
1768 1768
         $actual = $instance->getcontent();
1769
-        $this->assertEquals( $expected, $actual );
1769
+        $this->assertEquals($expected, $actual);
1770 1770
     }
1771 1771
 
1772 1772
     public function test_cache_size_checker_hooked_by_default()
1773 1773
     {
1774
-        $this->assertNotEmpty( autoptimizeCacheChecker::SCHEDULE_HOOK );
1774
+        $this->assertNotEmpty(autoptimizeCacheChecker::SCHEDULE_HOOK);
1775 1775
 
1776 1776
         // No schedule, because it's only added when is_admin() is true.
1777
-        $this->assertEquals( false, wp_get_schedule( autoptimizeCacheChecker::SCHEDULE_HOOK ) );
1777
+        $this->assertEquals(false, wp_get_schedule(autoptimizeCacheChecker::SCHEDULE_HOOK));
1778 1778
 
1779 1779
         // Proving that setup() sets the schedule as needed.
1780 1780
         $checker = new autoptimizeCacheChecker();
1781 1781
         $checker->setup();
1782
-        $this->assertEquals( 'twicedaily', wp_get_schedule( autoptimizeCacheChecker::SCHEDULE_HOOK ) );
1782
+        $this->assertEquals('twicedaily', wp_get_schedule(autoptimizeCacheChecker::SCHEDULE_HOOK));
1783 1783
     }
1784 1784
 
1785 1785
     public function test_cache_size_checker_disabled_with_filter()
1786 1786
     {
1787
-        add_filter( 'autoptimize_filter_cachecheck_do', '__return_false' );
1787
+        add_filter('autoptimize_filter_cachecheck_do', '__return_false');
1788 1788
 
1789 1789
         $checker = new autoptimizeCacheChecker();
1790 1790
         $checker->setup();
1791
-        $this->assertEquals( false, wp_get_schedule( autoptimizeCacheChecker::SCHEDULE_HOOK ) );
1791
+        $this->assertEquals(false, wp_get_schedule(autoptimizeCacheChecker::SCHEDULE_HOOK));
1792 1792
 
1793
-        remove_all_filters( 'autoptimize_filter_cachecheck_do' );
1793
+        remove_all_filters('autoptimize_filter_cachecheck_do');
1794 1794
     }
1795 1795
 
1796 1796
     public function test_is_start_buffering_hooked_properly()
@@ -1803,12 +1803,12 @@  discard block
 block discarded – undo
1803 1803
          * https://www.theaveragedev.com/mocking-constants-in-tests/.
1804 1804
          */
1805 1805
 
1806
-        if ( defined( 'AUTOPTIMIZE_INIT_EARLIER' ) ) {
1806
+        if (defined('AUTOPTIMIZE_INIT_EARLIER')) {
1807 1807
             $this->assertEquals(
1808 1808
                 autoptimizeMain::INIT_EARLIER_PRIORITY,
1809
-                has_action( 'init', array( $instance, 'start_buffering' ) )
1809
+                has_action('init', array($instance, 'start_buffering'))
1810 1810
             );
1811
-            $this->assertTrue( ! defined( 'AUTOPTIMIZE_HOOK_INTO' ) );
1811
+            $this->assertTrue(!defined('AUTOPTIMIZE_HOOK_INTO'));
1812 1812
         }
1813 1813
 
1814 1814
         /*
@@ -1825,18 +1825,18 @@  discard block
 block discarded – undo
1825 1825
 
1826 1826
     public function test_inline_and_defer_markup()
1827 1827
     {
1828
-        add_filter( 'autoptimize_filter_css_defer', '__return_true' );
1829
-        add_filter( 'autoptimize_filter_css_defer_inline', '__return_true' );
1828
+        add_filter('autoptimize_filter_css_defer', '__return_true');
1829
+        add_filter('autoptimize_filter_css_defer_inline', '__return_true');
1830 1830
 
1831
-        $actual = $this->ao->end_buffering( $this->get_test_markup() );
1832
-        if ( is_multisite() ) {
1833
-            $this->assertEquals( $this->get_test_markup_output_inline_defer_ms(), $actual );
1831
+        $actual = $this->ao->end_buffering($this->get_test_markup());
1832
+        if (is_multisite()) {
1833
+            $this->assertEquals($this->get_test_markup_output_inline_defer_ms(), $actual);
1834 1834
         } else {
1835
-            $this->assertEquals( $this->get_test_markup_output_inline_defer(), $actual );
1835
+            $this->assertEquals($this->get_test_markup_output_inline_defer(), $actual);
1836 1836
         }
1837 1837
 
1838
-        remove_all_filters( 'autoptimize_filter_css_defer' );
1839
-        remove_all_filters( 'autoptimize_filter_css_defer_inline' );
1838
+        remove_all_filters('autoptimize_filter_css_defer');
1839
+        remove_all_filters('autoptimize_filter_css_defer_inline');
1840 1840
     }
1841 1841
 
1842 1842
     public function test_js_aggregation_decision_and_dontaggregate_filter()
@@ -1844,47 +1844,47 @@  discard block
 block discarded – undo
1844 1844
         $opts = $this->getAoScriptsDefaultOptions();
1845 1845
 
1846 1846
         // Aggregating: true by default.
1847
-        $scripts = new autoptimizeScripts( '' );
1848
-        $scripts->read( $opts );
1849
-        $this->assertTrue( $scripts->aggregating() );
1847
+        $scripts = new autoptimizeScripts('');
1848
+        $scripts->read($opts);
1849
+        $this->assertTrue($scripts->aggregating());
1850 1850
 
1851 1851
         // Aggregating: option=true (dontaggregate=false by default).
1852 1852
         $opts['aggregate'] = true;
1853
-        $scripts           = new autoptimizeScripts( '' );
1854
-        $scripts->read( $opts );
1855
-        $this->assertTrue( $scripts->aggregating() );
1853
+        $scripts           = new autoptimizeScripts('');
1854
+        $scripts->read($opts);
1855
+        $this->assertTrue($scripts->aggregating());
1856 1856
 
1857 1857
         // Aggregating: option=true, dontaggregate=false explicit.
1858 1858
         $opts['aggregate'] = true;
1859
-        add_filter( 'autoptimize_filter_js_dontaggregate', '__return_false' );
1860
-        $scripts = new autoptimizeScripts( '' );
1861
-        $scripts->read( $opts );
1862
-        $this->assertTrue( $scripts->aggregating() );
1863
-        remove_all_filters( 'autoptimize_filter_js_dontaggregate' );
1859
+        add_filter('autoptimize_filter_js_dontaggregate', '__return_false');
1860
+        $scripts = new autoptimizeScripts('');
1861
+        $scripts->read($opts);
1862
+        $this->assertTrue($scripts->aggregating());
1863
+        remove_all_filters('autoptimize_filter_js_dontaggregate');
1864 1864
 
1865 1865
         // Not aggregating: option=true, dontaggregate=true.
1866 1866
         $opts['aggregate'] = true;
1867
-        add_filter( 'autoptimize_filter_js_dontaggregate', '__return_true' );
1868
-        $scripts = new autoptimizeScripts( '' );
1869
-        $scripts->read( $opts );
1870
-        $this->assertFalse( $scripts->aggregating() );
1871
-        remove_all_filters( 'autoptimize_filter_js_dontaggregate' );
1867
+        add_filter('autoptimize_filter_js_dontaggregate', '__return_true');
1868
+        $scripts = new autoptimizeScripts('');
1869
+        $scripts->read($opts);
1870
+        $this->assertFalse($scripts->aggregating());
1871
+        remove_all_filters('autoptimize_filter_js_dontaggregate');
1872 1872
 
1873 1873
         // Not aggregating: option=false, dontaggregate=false.
1874 1874
         $opts['aggregate'] = false;
1875
-        add_filter( 'autoptimize_filter_js_dontaggregate', '__return_false' );
1876
-        $scripts = new autoptimizeScripts( '' );
1877
-        $scripts->read( $opts );
1878
-        $this->assertFalse( $scripts->aggregating() );
1879
-        remove_all_filters( 'autoptimize_filter_js_dontaggregate' );
1875
+        add_filter('autoptimize_filter_js_dontaggregate', '__return_false');
1876
+        $scripts = new autoptimizeScripts('');
1877
+        $scripts->read($opts);
1878
+        $this->assertFalse($scripts->aggregating());
1879
+        remove_all_filters('autoptimize_filter_js_dontaggregate');
1880 1880
 
1881 1881
         // Not aggregating: option=false, dontaggregate=true.
1882 1882
         $opts['aggregate'] = false;
1883
-        add_filter( 'autoptimize_filter_js_dontaggregate', '__return_true' );
1884
-        $scripts = new autoptimizeScripts( '' );
1885
-        $scripts->read( $opts );
1886
-        $this->assertFalse( $scripts->aggregating() );
1887
-        remove_all_filters( 'autoptimize_filter_js_dontaggregate' );
1883
+        add_filter('autoptimize_filter_js_dontaggregate', '__return_true');
1884
+        $scripts = new autoptimizeScripts('');
1885
+        $scripts->read($opts);
1886
+        $this->assertFalse($scripts->aggregating());
1887
+        remove_all_filters('autoptimize_filter_js_dontaggregate');
1888 1888
     }
1889 1889
 
1890 1890
     public function test_css_aggregation_decision_and_dontaggregate_filter()
@@ -1892,78 +1892,78 @@  discard block
 block discarded – undo
1892 1892
         $opts = $this->getAoStylesDefaultOptions();
1893 1893
 
1894 1894
         // Aggregating: true by default.
1895
-        $styles = new autoptimizeStyles( '' );
1896
-        $this->assertTrue( $styles->aggregating() );
1895
+        $styles = new autoptimizeStyles('');
1896
+        $this->assertTrue($styles->aggregating());
1897 1897
 
1898 1898
         // Aggregating: option=true (dontaggregate=false by default).
1899 1899
         $opts['aggregate'] = true;
1900
-        $styles            = new autoptimizeStyles( '' );
1901
-        $styles->read( $opts );
1902
-        $this->assertTrue( $styles->aggregating() );
1900
+        $styles            = new autoptimizeStyles('');
1901
+        $styles->read($opts);
1902
+        $this->assertTrue($styles->aggregating());
1903 1903
 
1904 1904
         // Aggregating: option=true, dontaggregate=false explicit.
1905 1905
         $opts['aggregate'] = true;
1906
-        add_filter( 'autoptimize_filter_css_dontaggregate', '__return_false' );
1907
-        $styles = new autoptimizeStyles( '' );
1908
-        $styles->read( $opts );
1909
-        $this->assertTrue( $styles->aggregating() );
1910
-        remove_all_filters( 'autoptimize_filter_css_dontaggregate' );
1906
+        add_filter('autoptimize_filter_css_dontaggregate', '__return_false');
1907
+        $styles = new autoptimizeStyles('');
1908
+        $styles->read($opts);
1909
+        $this->assertTrue($styles->aggregating());
1910
+        remove_all_filters('autoptimize_filter_css_dontaggregate');
1911 1911
 
1912 1912
         // Not aggregating: option=true, dontaggregate=true.
1913 1913
         $opts['aggregate'] = true;
1914
-        add_filter( 'autoptimize_filter_css_dontaggregate', '__return_true' );
1915
-        $styles = new autoptimizeStyles( '' );
1916
-        $styles->read( $opts );
1917
-        $this->assertFalse( $styles->aggregating() );
1918
-        remove_all_filters( 'autoptimize_filter_css_dontaggregate' );
1914
+        add_filter('autoptimize_filter_css_dontaggregate', '__return_true');
1915
+        $styles = new autoptimizeStyles('');
1916
+        $styles->read($opts);
1917
+        $this->assertFalse($styles->aggregating());
1918
+        remove_all_filters('autoptimize_filter_css_dontaggregate');
1919 1919
 
1920 1920
         // Not aggregating: option=false, dontaggregate=false.
1921 1921
         $opts['aggregate'] = false;
1922
-        add_filter( 'autoptimize_filter_css_dontaggregate', '__return_false' );
1923
-        $styles = new autoptimizeStyles( '' );
1924
-        $styles->read( $opts );
1925
-        $this->assertFalse( $styles->aggregating() );
1926
-        remove_all_filters( 'autoptimize_filter_css_dontaggregate' );
1922
+        add_filter('autoptimize_filter_css_dontaggregate', '__return_false');
1923
+        $styles = new autoptimizeStyles('');
1924
+        $styles->read($opts);
1925
+        $this->assertFalse($styles->aggregating());
1926
+        remove_all_filters('autoptimize_filter_css_dontaggregate');
1927 1927
 
1928 1928
         // Not aggregating: option=false, dontaggregate=true.
1929 1929
         $opts['aggregate'] = false;
1930
-        add_filter( 'autoptimize_filter_css_dontaggregate', '__return_true' );
1931
-        $styles = new autoptimizeStyles( '' );
1932
-        $styles->read( $opts );
1933
-        $this->assertFalse( $styles->aggregating() );
1934
-        remove_all_filters( 'autoptimize_filter_css_dontaggregate' );
1930
+        add_filter('autoptimize_filter_css_dontaggregate', '__return_true');
1931
+        $styles = new autoptimizeStyles('');
1932
+        $styles->read($opts);
1933
+        $this->assertFalse($styles->aggregating());
1934
+        remove_all_filters('autoptimize_filter_css_dontaggregate');
1935 1935
     }
1936 1936
 
1937 1937
     public function test_css_minify_single_with_cdning()
1938 1938
     {
1939
-        $pathname = dirname( __FILE__ ) . '/fixtures/minify-single.css';
1939
+        $pathname = dirname(__FILE__).'/fixtures/minify-single.css';
1940 1940
         $opts     = $this->getAoStylesDefaultOptions();
1941
-        $styles   = new autoptimizeStyles( '' );
1942
-        $styles->read( $opts );
1941
+        $styles   = new autoptimizeStyles('');
1942
+        $styles->read($opts);
1943 1943
 
1944
-        $url = $styles->minify_single( $pathname, $cache_miss = true );
1944
+        $url = $styles->minify_single($pathname, $cache_miss = true);
1945 1945
 
1946 1946
         // Minified url filename + its pointed to cdn.
1947
-        $this->assertContains( AUTOPTIMIZE_CACHE_CHILD_DIR, $url );
1948
-        $this->assertContains( '/autoptimize_single_', $url );
1949
-        $this->assertContains( $styles->cdn_url, $url );
1947
+        $this->assertContains(AUTOPTIMIZE_CACHE_CHILD_DIR, $url);
1948
+        $this->assertContains('/autoptimize_single_', $url);
1949
+        $this->assertContains($styles->cdn_url, $url);
1950 1950
 
1951 1951
         // Actual minified css contents are minified and cdn-ed.
1952
-        $path     = $styles->getpath( $url );
1953
-        $contents = file_get_contents( $path );
1954
-        $this->assertContains( $styles->cdn_url, $contents );
1955
-        $this->assertContains( '.bg{background:url(' . $styles->cdn_url, $contents );
1952
+        $path     = $styles->getpath($url);
1953
+        $contents = file_get_contents($path);
1954
+        $this->assertContains($styles->cdn_url, $contents);
1955
+        $this->assertContains('.bg{background:url('.$styles->cdn_url, $contents);
1956 1956
     }
1957 1957
 
1958 1958
     public function test_ao_partners_instantiation_without_explicit_include()
1959 1959
     {
1960 1960
         $partners = new autoptimizePartners();
1961
-        $this->assertTrue( $partners instanceof autoptimizePartners );
1961
+        $this->assertTrue($partners instanceof autoptimizePartners);
1962 1962
     }
1963 1963
 
1964 1964
     public function test_html_minify_keep_html_comments_inside_script_blocks()
1965 1965
     {
1966
-        $markup   = <<<MARKUP
1966
+        $markup = <<<MARKUP
1967 1967
 <script>
1968 1968
 <!-- End Support AJAX add to cart -->
1969 1969
 var a = "b";
@@ -1993,23 +1993,23 @@  discard block
 block discarded – undo
1993 1993
             ],
1994 1994
         ];
1995 1995
 
1996
-        $instance = new autoptimizeHTML( $markup );
1997
-        $instance->read( $options['autoptimizeHTML'] );
1996
+        $instance = new autoptimizeHTML($markup);
1997
+        $instance->read($options['autoptimizeHTML']);
1998 1998
         $instance->minify();
1999 1999
         $actual = $instance->getcontent();
2000
-        $this->assertEquals( $expected, $actual );
2000
+        $this->assertEquals($expected, $actual);
2001 2001
 
2002
-        $instance = new autoptimizeHTML( $markup2 );
2003
-        $instance->read( $options['autoptimizeHTML'] );
2002
+        $instance = new autoptimizeHTML($markup2);
2003
+        $instance->read($options['autoptimizeHTML']);
2004 2004
         $instance->minify();
2005 2005
         $actual2 = $instance->getcontent();
2006
-        $this->assertEquals( $expected2, $actual2 );
2006
+        $this->assertEquals($expected2, $actual2);
2007 2007
     }
2008 2008
 
2009 2009
     public function test_html_minify_remove_html_comments_inside_script_blocks()
2010 2010
     {
2011 2011
         // Default case, html comments removed (keepcomments = false).
2012
-        $markup1   = <<<MARKUP
2012
+        $markup1 = <<<MARKUP
2013 2013
 <script>
2014 2014
 var a = "b";
2015 2015
 <!-- End Support AJAX add to cart -->
@@ -2020,7 +2020,7 @@  discard block
 block discarded – undo
2020 2020
 <!-- End Support AJAX add to cart</script>
2021 2021
 MARKUP;
2022 2022
 
2023
-        $markup2   = <<<MARKUP
2023
+        $markup2 = <<<MARKUP
2024 2024
 <script>
2025 2025
 <!-- End Support AJAX add to cart -->
2026 2026
 var a = "b";
@@ -2037,17 +2037,17 @@  discard block
 block discarded – undo
2037 2037
             ],
2038 2038
         ];
2039 2039
 
2040
-        $instance = new autoptimizeHTML( $markup1 );
2041
-        $instance->read( $options['autoptimizeHTML'] );
2040
+        $instance = new autoptimizeHTML($markup1);
2041
+        $instance->read($options['autoptimizeHTML']);
2042 2042
         $instance->minify();
2043 2043
         $actual = $instance->getcontent();
2044
-        $this->assertEquals( $expected1, $actual );
2044
+        $this->assertEquals($expected1, $actual);
2045 2045
 
2046
-        $instance = new autoptimizeHTML( $markup2 );
2047
-        $instance->read( $options['autoptimizeHTML'] );
2046
+        $instance = new autoptimizeHTML($markup2);
2047
+        $instance->read($options['autoptimizeHTML']);
2048 2048
         $instance->minify();
2049 2049
         $actual2 = $instance->getcontent();
2050
-        $this->assertEquals( $expected2, $actual2 );
2050
+        $this->assertEquals($expected2, $actual2);
2051 2051
     }
2052 2052
 
2053 2053
     public function test_html_minify_html_comments_inside_script_blocks_old_school_pattern()
@@ -2071,11 +2071,11 @@  discard block
 block discarded – undo
2071 2071
             ],
2072 2072
         ];
2073 2073
 
2074
-        $instance = new autoptimizeHTML( $markup );
2075
-        $instance->read( $options['autoptimizeHTML'] );
2074
+        $instance = new autoptimizeHTML($markup);
2075
+        $instance->read($options['autoptimizeHTML']);
2076 2076
         $instance->minify();
2077 2077
         $actual = $instance->getcontent();
2078
-        $this->assertEquals( $expected, $actual );
2078
+        $this->assertEquals($expected, $actual);
2079 2079
     }
2080 2080
 
2081 2081
     public function test_html_minify_html_comments_inside_script_blocks_old_school_pattern_untouched()
@@ -2100,49 +2100,49 @@  discard block
 block discarded – undo
2100 2100
             ],
2101 2101
         ];
2102 2102
 
2103
-        $instance = new autoptimizeHTML( $markup );
2104
-        $instance->read( $options['autoptimizeHTML'] );
2103
+        $instance = new autoptimizeHTML($markup);
2104
+        $instance->read($options['autoptimizeHTML']);
2105 2105
         $instance->minify();
2106 2106
         $actual = $instance->getcontent();
2107
-        $this->assertEquals( $expected, $actual );
2107
+        $this->assertEquals($expected, $actual);
2108 2108
     }
2109 2109
 
2110 2110
     public function test_utils_mbstring_availabilty_overriding()
2111 2111
     {
2112 2112
         $orig     = autoptimizeUtils::mbstring_available();
2113
-        $opposite = ! $orig;
2113
+        $opposite = !$orig;
2114 2114
 
2115
-        $this->assertSame( $orig, autoptimizeUtils::mbstring_available() );
2115
+        $this->assertSame($orig, autoptimizeUtils::mbstring_available());
2116 2116
         // Override works...
2117
-        $this->assertSame( $opposite, autoptimizeUtils::mbstring_available( $opposite ) );
2117
+        $this->assertSame($opposite, autoptimizeUtils::mbstring_available($opposite));
2118 2118
         // And override remains cached as the last version.
2119
-        $this->assertSame( $opposite, autoptimizeUtils::mbstring_available() );
2119
+        $this->assertSame($opposite, autoptimizeUtils::mbstring_available());
2120 2120
     }
2121 2121
 
2122 2122
     public function test_utils_mbstring_basics()
2123 2123
     {
2124 2124
         // Turn on mbstring usage.
2125
-        autoptimizeUtils::mbstring_available( true );
2125
+        autoptimizeUtils::mbstring_available(true);
2126 2126
 
2127
-        $this->assertSame( 2, autoptimizeUtils::strlen( "\x00\xFF", 'ASCII' ) );
2128
-        $this->assertSame( 2, autoptimizeUtils::strlen( "\x00\xFF", 'CP850' ) );
2129
-        $this->assertSame( 3, autoptimizeUtils::strlen( '한국어' ) );
2127
+        $this->assertSame(2, autoptimizeUtils::strlen("\x00\xFF", 'ASCII'));
2128
+        $this->assertSame(2, autoptimizeUtils::strlen("\x00\xFF", 'CP850'));
2129
+        $this->assertSame(3, autoptimizeUtils::strlen('한국어'));
2130 2130
 
2131
-        $this->assertFalse( @autoptimizeUtils::strpos( 'abc', '' ) );
2132
-        $this->assertFalse( @autoptimizeUtils::strpos( 'abc', 'a', -1 ) );
2133
-        $this->assertFalse( autoptimizeUtils::strpos( 'abc', 'd' ) );
2134
-        $this->assertFalse( autoptimizeUtils::strpos( 'abc', 'a', 3 ) );
2135
-        $this->assertSame( 1, autoptimizeUtils::strpos( '한국어', '국' ) );
2131
+        $this->assertFalse(@autoptimizeUtils::strpos('abc', ''));
2132
+        $this->assertFalse(@autoptimizeUtils::strpos('abc', 'a', -1));
2133
+        $this->assertFalse(autoptimizeUtils::strpos('abc', 'd'));
2134
+        $this->assertFalse(autoptimizeUtils::strpos('abc', 'a', 3));
2135
+        $this->assertSame(1, autoptimizeUtils::strpos('한국어', '국'));
2136 2136
     }
2137 2137
 
2138 2138
     /**
2139 2139
      * @dataProvider provider_utils_substr_replace
2140 2140
      */
2141
-    function test_utils_substr_replace_basics_mbstring( $s, $repl, $start, $len, $expected )
2141
+    function test_utils_substr_replace_basics_mbstring($s, $repl, $start, $len, $expected)
2142 2142
     {
2143 2143
         // Force mbstring code path...
2144
-        autoptimizeUtils::mbstring_available( true );
2145
-        $this->assertEquals( $expected, autoptimizeUtils::substr_replace( $s, $repl, $start, $len ) );
2144
+        autoptimizeUtils::mbstring_available(true);
2145
+        $this->assertEquals($expected, autoptimizeUtils::substr_replace($s, $repl, $start, $len));
2146 2146
     }
2147 2147
 
2148 2148
     public function provider_utils_substr_replace()
@@ -2184,48 +2184,48 @@  discard block
 block discarded – undo
2184 2184
 
2185 2185
     function test_mb_substr_replace_with_ascii_input_string()
2186 2186
     {
2187
-        autoptimizeUtils::mbstring_available( false );
2187
+        autoptimizeUtils::mbstring_available(false);
2188 2188
 
2189 2189
         $str = 'Ascii';
2190 2190
 
2191
-        $this->assertSame( 'Añ', autoptimizeUtils::substr_replace( $str, 'ñ', 1 ) );
2192
-        $this->assertSame( 'ñcii', autoptimizeUtils::substr_replace( $str, 'ñ', 0, 2 ) );
2193
-        $this->assertSame( 'Asñx', autoptimizeUtils::substr_replace( $str, 'ñx', 2, 3 ) );
2194
-        $this->assertSame( 'Asz', autoptimizeUtils::substr_replace( $str, 'z', 2, 10 ) );
2195
-        $this->assertSame( 'Añii', autoptimizeUtils::substr_replace( $str, 'ñ', 1, 2 ) );
2191
+        $this->assertSame('Añ', autoptimizeUtils::substr_replace($str, 'ñ', 1));
2192
+        $this->assertSame('ñcii', autoptimizeUtils::substr_replace($str, 'ñ', 0, 2));
2193
+        $this->assertSame('Asñx', autoptimizeUtils::substr_replace($str, 'ñx', 2, 3));
2194
+        $this->assertSame('Asz', autoptimizeUtils::substr_replace($str, 'z', 2, 10));
2195
+        $this->assertSame('Añii', autoptimizeUtils::substr_replace($str, 'ñ', 1, 2));
2196 2196
     }
2197 2197
 
2198 2198
     function test_mb_substr_replace_with_utf8_input_string()
2199 2199
     {
2200
-        autoptimizeUtils::mbstring_available( true );
2200
+        autoptimizeUtils::mbstring_available(true);
2201 2201
 
2202 2202
         $str = 'âønæë';
2203 2203
 
2204
-        $this->assertSame( 'âñ', autoptimizeUtils::substr_replace( $str, 'ñ', 1 ) ); // No length.
2205
-        $this->assertSame( 'ñnæë', autoptimizeUtils::substr_replace( $str, 'ñ', 0, 2 ) );
2206
-        $this->assertSame( 'âøñx', autoptimizeUtils::substr_replace( $str, 'ñx', 2, 3 ) );
2207
-        $this->assertSame( 'âøz', autoptimizeUtils::substr_replace( $str, 'z', 2, 10 ) ); // Length larger than possible...
2208
-        $this->assertSame( 'âñæë', autoptimizeUtils::substr_replace( $str, 'ñ', 1, 2 ) );
2204
+        $this->assertSame('âñ', autoptimizeUtils::substr_replace($str, 'ñ', 1)); // No length.
2205
+        $this->assertSame('ñnæë', autoptimizeUtils::substr_replace($str, 'ñ', 0, 2));
2206
+        $this->assertSame('âøñx', autoptimizeUtils::substr_replace($str, 'ñx', 2, 3));
2207
+        $this->assertSame('âøz', autoptimizeUtils::substr_replace($str, 'z', 2, 10)); // Length larger than possible...
2208
+        $this->assertSame('âñæë', autoptimizeUtils::substr_replace($str, 'ñ', 1, 2));
2209 2209
     }
2210 2210
 
2211 2211
     function test_default_substr_replace_with_ascii_input_string()
2212 2212
     {
2213 2213
         // Disable mbstring which should fall ack to substr_replace...
2214
-        autoptimizeUtils::mbstring_available( false );
2214
+        autoptimizeUtils::mbstring_available(false);
2215 2215
 
2216 2216
         $str = 'Ascii';
2217 2217
 
2218
-        $this->assertSame( 'Añ', autoptimizeUtils::substr_replace( $str, 'ñ', 1 ) );
2219
-        $this->assertSame( 'ñcii', autoptimizeUtils::substr_replace( $str, 'ñ', 0, 2 ) );
2220
-        $this->assertSame( 'Asñx', autoptimizeUtils::substr_replace( $str, 'ñx', 2, 3 ) );
2221
-        $this->assertSame( 'Asz', autoptimizeUtils::substr_replace( $str, 'z', 2, 10 ) );
2222
-        $this->assertSame( 'Añii', autoptimizeUtils::substr_replace( $str, 'ñ', 1, 2 ) );
2218
+        $this->assertSame('Añ', autoptimizeUtils::substr_replace($str, 'ñ', 1));
2219
+        $this->assertSame('ñcii', autoptimizeUtils::substr_replace($str, 'ñ', 0, 2));
2220
+        $this->assertSame('Asñx', autoptimizeUtils::substr_replace($str, 'ñx', 2, 3));
2221
+        $this->assertSame('Asz', autoptimizeUtils::substr_replace($str, 'z', 2, 10));
2222
+        $this->assertSame('Añii', autoptimizeUtils::substr_replace($str, 'ñ', 1, 2));
2223 2223
     }
2224 2224
 
2225 2225
     function test_default_substr_replace_with_utf8_input_string()
2226 2226
     {
2227 2227
         // Disabling mbstring, falling back to substr_replace...
2228
-        autoptimizeUtils::mbstring_available( false );
2228
+        autoptimizeUtils::mbstring_available(false);
2229 2229
 
2230 2230
         // This is really impossible to make work properly, since
2231 2231
         // any start/len parameters we give are working with bytes instead
@@ -2234,59 +2234,59 @@  discard block
 block discarded – undo
2234 2234
 
2235 2235
         // $this->assertSame( '�ñ', autoptimizeUtils::substr_replace( $str, 'ñ', 1 ) ); // No length.
2236 2236
         // $this->assertSame( 'ñ�næë', autoptimizeUtils::substr_replace( $str, 'ñ', 1, 2 ) );
2237
-        $this->assertSame( 'ñønæë', autoptimizeUtils::substr_replace( $str, 'ñ', 0, 2 ) );
2238
-        $this->assertSame( 'âñxæë', autoptimizeUtils::substr_replace( $str, 'ñx', 2, 3 ) );
2239
-        $this->assertSame( 'âz', autoptimizeUtils::substr_replace( $str, 'z', 2, 10 ) ); // Length larger than possible...
2237
+        $this->assertSame('ñønæë', autoptimizeUtils::substr_replace($str, 'ñ', 0, 2));
2238
+        $this->assertSame('âñxæë', autoptimizeUtils::substr_replace($str, 'ñx', 2, 3));
2239
+        $this->assertSame('âz', autoptimizeUtils::substr_replace($str, 'z', 2, 10)); // Length larger than possible...
2240 2240
     }
2241 2241
 
2242 2242
     public function test_cache_fast_delete()
2243 2243
     {
2244
-        add_filter( 'autoptimize_filter_cache_clear_advanced', '__return_true' );
2244
+        add_filter('autoptimize_filter_cache_clear_advanced', '__return_true');
2245 2245
 
2246
-        $this->assertTrue( autoptimizeCache::clearall_actionless() );
2246
+        $this->assertTrue(autoptimizeCache::clearall_actionless());
2247 2247
 
2248
-        remove_all_filters( 'autoptimize_filter_cache_clear_advanced' );
2248
+        remove_all_filters('autoptimize_filter_cache_clear_advanced');
2249 2249
     }
2250 2250
 
2251 2251
     public function test_delete_advanced_cache_clear_artifacts()
2252 2252
     {
2253
-        add_filter( 'autoptimize_filter_cache_clear_advanced', '__return_true' );
2253
+        add_filter('autoptimize_filter_cache_clear_advanced', '__return_true');
2254 2254
 
2255
-        $this->assertTrue( autoptimizeCache::delete_advanced_cache_clear_artifacts() );
2255
+        $this->assertTrue(autoptimizeCache::delete_advanced_cache_clear_artifacts());
2256 2256
 
2257
-        remove_all_filters( 'autoptimize_filter_cache_clear_advanced' );
2257
+        remove_all_filters('autoptimize_filter_cache_clear_advanced');
2258 2258
     }
2259 2259
 
2260 2260
     public function provider_canonicalization()
2261 2261
     {
2262 2262
         return array(
2263
-            array( '../common', 'common' ),
2264
-            array( '../what-does-this-mean/really?/', 'what-does-this-mean/really?/' ),
2265
-            array( '../../what/where/how', 'what/where/how' ),
2266
-            array( '/../more.dots.please/', '/more.dots.please/' ),
2267
-            array( '/../../what/where/how', '/what/where/how' ),
2268
-            array( '/a/b/c/../../../d/e/file.txt', '/d/e/file.txt' ),
2269
-            array( 'a/b/../c', 'a/c' ),
2270
-            array( './../../etc/passwd', './etc/passwd' ),
2271
-            array( '/var/.////./user/./././..//.//../////../././.././test/////', '/test/' ),
2272
-            array( '/var/user/./././.././../.././././test/', '/test/' ),
2273
-            array( '/hello/0//how/../are/../you', '/hello/0/you' ),
2274
-            array( '', '' ),
2275
-            array( '.', '.' ),
2276
-            array( '..', '..' ),
2277
-            array( './..', './..' ),
2278
-            array( '../.', '.' ),
2263
+            array('../common', 'common'),
2264
+            array('../what-does-this-mean/really?/', 'what-does-this-mean/really?/'),
2265
+            array('../../what/where/how', 'what/where/how'),
2266
+            array('/../more.dots.please/', '/more.dots.please/'),
2267
+            array('/../../what/where/how', '/what/where/how'),
2268
+            array('/a/b/c/../../../d/e/file.txt', '/d/e/file.txt'),
2269
+            array('a/b/../c', 'a/c'),
2270
+            array('./../../etc/passwd', './etc/passwd'),
2271
+            array('/var/.////./user/./././..//.//../////../././.././test/////', '/test/'),
2272
+            array('/var/user/./././.././../.././././test/', '/test/'),
2273
+            array('/hello/0//how/../are/../you', '/hello/0/you'),
2274
+            array('', ''),
2275
+            array('.', '.'),
2276
+            array('..', '..'),
2277
+            array('./..', './..'),
2278
+            array('../.', '.'),
2279 2279
             // This might be debatable...
2280
-            array( '../..', '..' ),
2280
+            array('../..', '..'),
2281 2281
         );
2282 2282
     }
2283 2283
 
2284 2284
     /**
2285 2285
      * @dataProvider provider_canonicalization
2286 2286
      */
2287
-    public function test_path_canonicalize( $path, $canonicalized )
2287
+    public function test_path_canonicalize($path, $canonicalized)
2288 2288
     {
2289
-        $this->assertSame( $canonicalized, autoptimizeUtils::path_canonicalize( $path ) );
2289
+        $this->assertSame($canonicalized, autoptimizeUtils::path_canonicalize($path));
2290 2290
     }
2291 2291
 
2292 2292
     /**
@@ -2300,16 +2300,16 @@  discard block
 block discarded – undo
2300 2300
     public function test_autoptimize_filter_cdn_magic_path_check()
2301 2301
     {
2302 2302
         $cdnurl = 'http://cdn.example.org';
2303
-        add_filter( 'autoptimize_filter_cdn_magic_path_check', '__return_false', 10, 2 );
2303
+        add_filter('autoptimize_filter_cdn_magic_path_check', '__return_false', 10, 2);
2304 2304
 
2305 2305
         // Even when site is in a subfolder, the resulting cdn-rewritten url
2306 2306
         // should not magically include it, due to the above filter.
2307 2307
         // The second parameter is here to force a cache miss and re-run
2308 2308
         // the filter since we're using the same cdn url all over the place,
2309 2309
         // but want to prove different things with it.
2310
-        $this->assertSame( $cdnurl, autoptimizeUtils::tweak_cdn_url_if_needed( $cdnurl, true ) );
2310
+        $this->assertSame($cdnurl, autoptimizeUtils::tweak_cdn_url_if_needed($cdnurl, true));
2311 2311
 
2312
-        remove_all_filters( 'autoptimize_filter_cdn_magic_path_check' );
2312
+        remove_all_filters('autoptimize_filter_cdn_magic_path_check');
2313 2313
     }
2314 2314
 
2315 2315
     /**
@@ -2334,9 +2334,9 @@  discard block
 block discarded – undo
2334 2334
 <img src='$imgopthost/client/q_glossy,ret_img,w_400,h_200/$siteurl/wp-content/image.jpg' width='400' height='200' srcset="$imgopthost/client/q_glossy,ret_img,w_300/$siteurl/wp-content/image-300X150.jpg 300w, $imgopthost/client/q_glossy,ret_img,w_600/$siteurl/wp-content/image-600X300.jpg 600w" sizes="(max-width: 300px) 100vw, 300px" />
2335 2335
 MARKUP;
2336 2336
         $instance = autoptimizeImages::instance();
2337
-        $instance->set_options( $opts );
2338
-        $actual = $instance->filter_optimize_images( $markup );
2339
-        $this->assertEquals( $expected, $actual );
2337
+        $instance->set_options($opts);
2338
+        $actual = $instance->filter_optimize_images($markup);
2339
+        $this->assertEquals($expected, $actual);
2340 2340
     }
2341 2341
     
2342 2342
     /**
@@ -2364,9 +2364,9 @@  discard block
 block discarded – undo
2364 2364
 <img src='$siteurl/wp-content/excluded.jpg' width='400' height='200' srcset="$siteurl/wp-content/image-300X150.jpg 300w, $siteurl/wp-content/image-600X300.jpg 600w" sizes="(max-width: 300px) 100vw, 300px" />
2365 2365
 MARKUP;
2366 2366
         $instance = autoptimizeImages::instance();
2367
-        $instance->set_options( $opts );
2368
-        $actual = $instance->filter_optimize_images( $markup, true );
2369
-        $this->assertEquals( $expected, $actual );
2367
+        $instance->set_options($opts);
2368
+        $actual = $instance->filter_optimize_images($markup, true);
2369
+        $this->assertEquals($expected, $actual);
2370 2370
     }
2371 2371
 
2372 2372
     /**
@@ -2391,9 +2391,9 @@  discard block
 block discarded – undo
2391 2391
 <picture><source srcset="$imgopthost/client/q_glossy,ret_img/$siteurl/wp-content/image.jpg" media="(min-width: 800px)"><img src="$imgopthost/client/q_glossy,ret_img/$siteurl/wp-content/image.jpg"/></picture>
2392 2392
 MARKUP;
2393 2393
         $instance = autoptimizeImages::instance();
2394
-        $instance->set_options( $opts );
2395
-        $actual = $instance->filter_optimize_images( $markup );
2396
-        $this->assertEquals( $expected, $actual );
2394
+        $instance->set_options($opts);
2395
+        $actual = $instance->filter_optimize_images($markup);
2396
+        $this->assertEquals($expected, $actual);
2397 2397
     }
2398 2398
 
2399 2399
     /**
@@ -2418,9 +2418,9 @@  discard block
 block discarded – undo
2418 2418
 <picture><source data-srcset="$imgopthost/client/q_glossy,ret_img/$siteurl/wp-content/image.jpg" media="(min-width: 800px)"><noscript><img src="$imgopthost/client/q_glossy,ret_img/$siteurl/wp-content/image.jpg"/></noscript><img class="lazyload" src='$imgopthost/client/q_lqip,ret_wait/$siteurl/wp-content/image.jpg' data-src="$imgopthost/client/q_glossy,ret_img/$siteurl/wp-content/image.jpg"/></picture>
2419 2419
 MARKUP;
2420 2420
         $instance = autoptimizeImages::instance();
2421
-        $instance->set_options( $opts );
2422
-        $actual = $instance->filter_optimize_images( $markup );
2423
-        $this->assertEquals( $expected, $actual );
2421
+        $instance->set_options($opts);
2422
+        $actual = $instance->filter_optimize_images($markup);
2423
+        $this->assertEquals($expected, $actual);
2424 2424
     }
2425 2425
 
2426 2426
     /**
@@ -2446,9 +2446,9 @@  discard block
 block discarded – undo
2446 2446
 MARKUP;
2447 2447
 
2448 2448
         $instance = autoptimizeImages::instance();
2449
-        $instance->set_options( $opts );
2450
-        $actual = $instance->filter_optimize_images( $markup );
2451
-        $this->assertEquals( $expected, $actual );
2449
+        $instance->set_options($opts);
2450
+        $actual = $instance->filter_optimize_images($markup);
2451
+        $this->assertEquals($expected, $actual);
2452 2452
     }
2453 2453
 
2454 2454
     /**
@@ -2474,9 +2474,9 @@  discard block
 block discarded – undo
2474 2474
 MARKUP;
2475 2475
 
2476 2476
         $instance = autoptimizeImages::instance();
2477
-        $instance->set_options( $opts );
2478
-        $actual = $instance->filter_optimize_images( $markup );
2479
-        $this->assertEquals( $expected, $actual );
2477
+        $instance->set_options($opts);
2478
+        $actual = $instance->filter_optimize_images($markup);
2479
+        $this->assertEquals($expected, $actual);
2480 2480
     }
2481 2481
 
2482 2482
     /**
@@ -2501,9 +2501,9 @@  discard block
 block discarded – undo
2501 2501
 MARKUP;
2502 2502
 
2503 2503
         $instance = autoptimizeImages::instance();
2504
-        $instance->set_options( $opts );
2505
-        $actual = $instance->filter_lazyload_images( $markup );
2506
-        $this->assertEquals( $expected, $actual );
2504
+        $instance->set_options($opts);
2505
+        $actual = $instance->filter_lazyload_images($markup);
2506
+        $this->assertEquals($expected, $actual);
2507 2507
     }
2508 2508
 
2509 2509
     /**
@@ -2528,9 +2528,9 @@  discard block
 block discarded – undo
2528 2528
 MARKUP;
2529 2529
 
2530 2530
         $instance = autoptimizeImages::instance();
2531
-        $instance->set_options( $opts );
2532
-        $actual = $instance->filter_lazyload_images( $markup );
2533
-        $this->assertEquals( $expected, $actual );
2531
+        $instance->set_options($opts);
2532
+        $actual = $instance->filter_lazyload_images($markup);
2533
+        $this->assertEquals($expected, $actual);
2534 2534
     }
2535 2535
 
2536 2536
     /**
@@ -2555,9 +2555,9 @@  discard block
 block discarded – undo
2555 2555
 MARKUP;
2556 2556
 
2557 2557
         $instance = autoptimizeImages::instance();
2558
-        $instance->set_options( $opts );
2559
-        $actual = $instance->filter_lazyload_images( $markup );
2560
-        $this->assertEquals( $expected, $actual );
2558
+        $instance->set_options($opts);
2559
+        $actual = $instance->filter_lazyload_images($markup);
2560
+        $this->assertEquals($expected, $actual);
2561 2561
     }
2562 2562
 
2563 2563
     /**
@@ -2576,11 +2576,11 @@  discard block
 block discarded – undo
2576 2576
 MARKUP;
2577 2577
 
2578 2578
         $instance = autoptimizeImages::instance();
2579
-        $instance->set_options( $opts );
2580
-        $actual = $instance->filter_optimize_images( $markup );
2579
+        $instance->set_options($opts);
2580
+        $actual = $instance->filter_optimize_images($markup);
2581 2581
 
2582 2582
         // Expecting $markup since replacement should not happen.
2583
-        $this->assertEquals( $markup, $actual );
2583
+        $this->assertEquals($markup, $actual);
2584 2584
     }
2585 2585
 
2586 2586
     /**
@@ -2606,10 +2606,10 @@  discard block
 block discarded – undo
2606 2606
 MARKUP;
2607 2607
 
2608 2608
         $instance = autoptimizeImages::instance();
2609
-        $instance->set_options( $opts );
2610
-        $actual = $instance->filter_optimize_images( $markup );
2609
+        $instance->set_options($opts);
2610
+        $actual = $instance->filter_optimize_images($markup);
2611 2611
 
2612
-        $this->assertEquals( $expected, $actual );
2612
+        $this->assertEquals($expected, $actual);
2613 2613
     }
2614 2614
 
2615 2615
     /**
@@ -2619,8 +2619,8 @@  discard block
 block discarded – undo
2619 2619
     {
2620 2620
         $urls                                        = $this->get_urls();
2621 2621
         $siteurl                                     = $urls['siteurl'];
2622
-        $siteurlparsed                               = parse_url( $siteurl );
2623
-        $sitedomain                                  = $siteurlparsed['scheme'] . '://' . $siteurlparsed['host'];
2622
+        $siteurlparsed                               = parse_url($siteurl);
2623
+        $sitedomain                                  = $siteurlparsed['scheme'].'://'.$siteurlparsed['host'];
2624 2624
         $imgopthost                                  = $urls['imgopthost'];
2625 2625
         $opts                                        = autoptimizeImages::fetch_options();
2626 2626
         $opts['autoptimize_imgopt_checkbox_field_1'] = '1';
@@ -2635,10 +2635,10 @@  discard block
 block discarded – undo
2635 2635
 MARKUP;
2636 2636
 
2637 2637
         $instance = autoptimizeImages::instance();
2638
-        $instance->set_options( $opts );
2639
-        $actual = $instance->filter_optimize_images( $markup );
2638
+        $instance->set_options($opts);
2639
+        $actual = $instance->filter_optimize_images($markup);
2640 2640
 
2641
-        $this->assertEquals( $expected, $actual );
2641
+        $this->assertEquals($expected, $actual);
2642 2642
     }
2643 2643
 
2644 2644
     /**
@@ -2663,53 +2663,53 @@  discard block
 block discarded – undo
2663 2663
 MARKUP;
2664 2664
 
2665 2665
         $instance = autoptimizeImages::instance();
2666
-        $instance->set_options( $opts );
2667
-        $actual = $instance->filter_optimize_images( $markup );
2666
+        $instance->set_options($opts);
2667
+        $actual = $instance->filter_optimize_images($markup);
2668 2668
 
2669
-        $this->assertEquals( $expected, $actual );
2669
+        $this->assertEquals($expected, $actual);
2670 2670
     }
2671 2671
 
2672 2672
     /**
2673 2673
      * @dataProvider provider_str_is_valid_regex
2674 2674
      */
2675
-    public function test_str_is_valid_regex( $str, $expected )
2675
+    public function test_str_is_valid_regex($str, $expected)
2676 2676
     {
2677
-        $actual = autoptimizeUtils::str_is_valid_regex( $str );
2677
+        $actual = autoptimizeUtils::str_is_valid_regex($str);
2678 2678
 
2679
-        $this->assertEquals( $expected, $actual );
2679
+        $this->assertEquals($expected, $actual);
2680 2680
     }
2681 2681
 
2682 2682
     public function provider_str_is_valid_regex()
2683 2683
     {
2684 2684
         return [
2685
-            [ '<!--[if', false ],
2686
-            [ '&lt;--[if', false ],
2687
-            [ '/booya/i', true ],
2688
-            [ '~Valid(Regular)Expression~', true ],
2685
+            ['<!--[if', false],
2686
+            ['&lt;--[if', false],
2687
+            ['/booya/i', true],
2688
+            ['~Valid(Regular)Expression~', true],
2689 2689
         ];
2690 2690
     }
2691 2691
 
2692 2692
     /**
2693 2693
      * @dataProvider provider_protocol_relative_tests
2694 2694
      */
2695
-    public function test_is_protocol_relative( $str, $expected )
2695
+    public function test_is_protocol_relative($str, $expected)
2696 2696
     {
2697
-        $actual = autoptimizeUtils::is_protocol_relative( $str );
2697
+        $actual = autoptimizeUtils::is_protocol_relative($str);
2698 2698
 
2699
-        $this->assertEquals( $expected, $actual );
2699
+        $this->assertEquals($expected, $actual);
2700 2700
     }
2701 2701
 
2702 2702
     public function provider_protocol_relative_tests()
2703 2703
     {
2704 2704
         return [
2705
-            [ '//something-that-might-be-an-url-but-isnt-really', true ],
2706
-            [ '', false ],
2707
-            [ null, false ],
2708
-            [ 'booya/i', false ],
2709
-            [ '/root-relative', false ],
2710
-            [ 'http://what.ever/', false ],
2711
-            [ 'https://booya.kasha', false ],
2712
-            [ '1/', false ],
2705
+            ['//something-that-might-be-an-url-but-isnt-really', true],
2706
+            ['', false],
2707
+            [null, false],
2708
+            ['booya/i', false],
2709
+            ['/root-relative', false],
2710
+            ['http://what.ever/', false],
2711
+            ['https://booya.kasha', false],
2712
+            ['1/', false],
2713 2713
         ];
2714 2714
     }
2715 2715
 
@@ -2724,38 +2724,38 @@  discard block
 block discarded – undo
2724 2724
 
2725 2725
         $expected = 'img.centered,.aligncenter{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}';
2726 2726
 
2727
-        $instance = new autoptimizeStyles( $css );
2728
-        $minified = $instance->run_minifier_on( $css );
2727
+        $instance = new autoptimizeStyles($css);
2728
+        $minified = $instance->run_minifier_on($css);
2729 2729
 
2730
-        $this->assertEquals( $expected, $minified );
2730
+        $this->assertEquals($expected, $minified);
2731 2731
     }
2732 2732
 
2733 2733
     public function test_css_font_names_mangling()
2734 2734
     {
2735 2735
         // Properly quoted font names dont get mangled.
2736 2736
         $css      = 'h2{font-family:"Archivo Black"}';
2737
-        $instance = new autoptimizeStyles( $css );
2738
-        $actual   = $instance->run_minifier_on( $css );
2739
-        $this->assertEquals( $css, $actual );
2737
+        $instance = new autoptimizeStyles($css);
2738
+        $actual   = $instance->run_minifier_on($css);
2739
+        $this->assertEquals($css, $actual);
2740 2740
 
2741 2741
         // When not quoted, 'Black' used to become '#000', but not anymore :) ...
2742 2742
         $css_unquoted = 'h2{font-family:Archivo Black;}';
2743 2743
         $expected     = 'h2{font-family:Archivo Black}';
2744
-        $instance     = new autoptimizeStyles( $css_unquoted );
2745
-        $actual       = $instance->run_minifier_on( $css_unquoted );
2746
-        $this->assertEquals( $expected, $actual );
2744
+        $instance     = new autoptimizeStyles($css_unquoted);
2745
+        $actual       = $instance->run_minifier_on($css_unquoted);
2746
+        $this->assertEquals($expected, $actual);
2747 2747
 
2748 2748
         $css_unquoted = 'h1{font:italic 1.2em Fira White,serif}';
2749
-        $instance     = new autoptimizeStyles( $css_unquoted );
2750
-        $actual       = $instance->run_minifier_on( $css_unquoted );
2751
-        $this->assertEquals( $css_unquoted, $actual );
2749
+        $instance     = new autoptimizeStyles($css_unquoted);
2750
+        $actual       = $instance->run_minifier_on($css_unquoted);
2751
+        $this->assertEquals($css_unquoted, $actual);
2752 2752
     }
2753 2753
 
2754 2754
     public function test_is_plugin_active_utils_wrapper()
2755 2755
     {
2756 2756
         // Our plugin is loaded via "muplugins_loaded" filter in tests/bootstrap.php.
2757
-        $this->assertFalse( autoptimizeUtils::is_plugin_active( 'autoptimize/autoptimize.php' ) );
2758
-        $this->assertFalse( autoptimizeUtils::is_plugin_active( 'async-javascript/async-javascript.php' ) );
2757
+        $this->assertFalse(autoptimizeUtils::is_plugin_active('autoptimize/autoptimize.php'));
2758
+        $this->assertFalse(autoptimizeUtils::is_plugin_active('async-javascript/async-javascript.php'));
2759 2759
     }
2760 2760
 
2761 2761
     public function test_jsminphp_string_literal_minification()
@@ -2769,8 +2769,8 @@  discard block
 block discarded – undo
2769 2769
         $expected = '`line
2770 2770
 break`+`he  llo`;foo`hel( \'\');lo`;`he\nl\`lo`;(`he${one + two}`)';
2771 2771
 
2772
-        $actual = JSMin::minify( $js );
2773
-        $this->assertEquals( $expected, $actual );
2772
+        $actual = JSMin::minify($js);
2773
+        $this->assertEquals($expected, $actual);
2774 2774
     }
2775 2775
 
2776 2776
     /**
@@ -2790,9 +2790,9 @@  discard block
 block discarded – undo
2790 2790
 MARKUP;
2791 2791
 
2792 2792
         $instance = autoptimizeExtra::instance();
2793
-        $instance->set_options( $opts );
2794
-        $actual = $instance->filter_preload( $markup );
2795
-        $this->assertEquals( $expected, $actual );
2793
+        $instance->set_options($opts);
2794
+        $actual = $instance->filter_preload($markup);
2795
+        $this->assertEquals($expected, $actual);
2796 2796
     }
2797 2797
 
2798 2798
     /**
@@ -2812,9 +2812,9 @@  discard block
 block discarded – undo
2812 2812
 MARKUP;
2813 2813
 
2814 2814
         $instance = autoptimizeExtra::instance();
2815
-        $instance->set_options( $opts );
2816
-        $actual = $instance->filter_preload( $markup );
2817
-        $this->assertEquals( $expected, $actual );
2815
+        $instance->set_options($opts);
2816
+        $actual = $instance->filter_preload($markup);
2817
+        $this->assertEquals($expected, $actual);
2818 2818
     }
2819 2819
 
2820 2820
     /**
@@ -2834,9 +2834,9 @@  discard block
 block discarded – undo
2834 2834
 MARKUP;
2835 2835
 
2836 2836
         $instance = autoptimizeExtra::instance();
2837
-        $instance->set_options( $opts );
2838
-        $actual = $instance->filter_optimize_google_fonts( $markup );
2839
-        $this->assertEquals( $expected, $actual );
2837
+        $instance->set_options($opts);
2838
+        $actual = $instance->filter_optimize_google_fonts($markup);
2839
+        $this->assertEquals($expected, $actual);
2840 2840
     }
2841 2841
 
2842 2842
     /**
@@ -2844,19 +2844,19 @@  discard block
 block discarded – undo
2844 2844
      */
2845 2845
     public function test_network_no_site_settings()
2846 2846
     {
2847
-        if ( is_multisite() ) {
2848
-            define( 'TEST_MULTISITE_FORCE_AO_ON_NETWORK', true );
2847
+        if (is_multisite()) {
2848
+            define('TEST_MULTISITE_FORCE_AO_ON_NETWORK', true);
2849 2849
             // set options through WordPress core methods.
2850
-            update_option( 'autoptimize_js_exclude', 'site' );
2851
-            update_network_option( get_main_network_id(), 'autoptimize_js_exclude', 'network' );
2852
-            update_network_option( get_main_network_id(), 'autoptimize_enable_site_config', '' );
2850
+            update_option('autoptimize_js_exclude', 'site');
2851
+            update_network_option(get_main_network_id(), 'autoptimize_js_exclude', 'network');
2852
+            update_network_option(get_main_network_id(), 'autoptimize_enable_site_config', '');
2853 2853
 
2854 2854
             // and then try fetching them through optionwrapper.
2855 2855
             $expected = 'network';
2856
-            $actual   = autoptimizeOptionWrapper::get_option( 'autoptimize_js_exclude' );
2857
-            $this->assertEquals( $expected, $actual );
2856
+            $actual   = autoptimizeOptionWrapper::get_option('autoptimize_js_exclude');
2857
+            $this->assertEquals($expected, $actual);
2858 2858
         } else {
2859
-            $this->assertEquals( 1, 1 ); // just to ensure this isn't marked as a risky test.
2859
+            $this->assertEquals(1, 1); // just to ensure this isn't marked as a risky test.
2860 2860
         }
2861 2861
     }
2862 2862
 
@@ -2865,19 +2865,19 @@  discard block
 block discarded – undo
2865 2865
      */
2866 2866
     public function test_network_per_site_settings()
2867 2867
     {
2868
-        if ( is_multisite() ) {
2868
+        if (is_multisite()) {
2869 2869
             // define of TEST_MULTISITE_FORCE_AO_ON_NETWORK not needed, done in previous test.
2870 2870
             // set options through WordPress core methods.
2871
-            update_option( 'autoptimize_js_exclude', 'site' );
2872
-            update_network_option( get_main_network_id(), 'autoptimize_js_exclude', 'network' );
2873
-            update_network_option( get_main_network_id(), 'autoptimize_enable_site_config', 'on' );
2871
+            update_option('autoptimize_js_exclude', 'site');
2872
+            update_network_option(get_main_network_id(), 'autoptimize_js_exclude', 'network');
2873
+            update_network_option(get_main_network_id(), 'autoptimize_enable_site_config', 'on');
2874 2874
 
2875 2875
             // and then try fetching them through optionwrapper.
2876 2876
             $expected = 'site';
2877
-            $actual   = autoptimizeOptionWrapper::get_option( 'autoptimize_js_exclude' );
2878
-            $this->assertEquals( $expected, $actual );
2877
+            $actual   = autoptimizeOptionWrapper::get_option('autoptimize_js_exclude');
2878
+            $this->assertEquals($expected, $actual);
2879 2879
         } else {
2880
-            $this->assertEquals( 1, 1 ); // just to ensure this isn't marked as a risky test.
2880
+            $this->assertEquals(1, 1); // just to ensure this isn't marked as a risky test.
2881 2881
         }
2882 2882
     }
2883 2883
 }
Please login to merge, or discard this patch.
classes/autoptimizeMain.php 1 patch
Spacing   +182 added lines, -182 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * Wraps base plugin logic/hooks and handles activation/deactivation/uninstall.
4 4
  */
5 5
 
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
     exit;
8 8
 }
9 9
 
@@ -33,7 +33,7 @@  discard block
 block discarded – undo
33 33
      * @param string $version Version.
34 34
      * @param string $filepath Filepath. Needed for activation/deactivation/uninstall hooks.
35 35
      */
36
-    public function __construct( $version, $filepath )
36
+    public function __construct($version, $filepath)
37 37
     {
38 38
         $this->version  = $version;
39 39
         $this->filepath = $filepath;
@@ -50,101 +50,101 @@  discard block
 block discarded – undo
50 50
 
51 51
     protected function add_hooks()
52 52
     {
53
-        if ( ! defined( 'AUTOPTIMIZE_SETUP_INITHOOK' ) ) {
54
-            define( 'AUTOPTIMIZE_SETUP_INITHOOK', 'plugins_loaded' );
53
+        if (!defined('AUTOPTIMIZE_SETUP_INITHOOK')) {
54
+            define('AUTOPTIMIZE_SETUP_INITHOOK', 'plugins_loaded');
55 55
         }
56 56
 
57
-        add_action( AUTOPTIMIZE_SETUP_INITHOOK, array( $this, 'setup' ) );
58
-        add_action( AUTOPTIMIZE_SETUP_INITHOOK, array( $this, 'hook_page_cache_purge' ) );
57
+        add_action(AUTOPTIMIZE_SETUP_INITHOOK, array($this, 'setup'));
58
+        add_action(AUTOPTIMIZE_SETUP_INITHOOK, array($this, 'hook_page_cache_purge'));
59 59
 
60
-        add_action( 'autoptimize_setup_done', array( $this, 'version_upgrades_check' ) );
61
-        add_action( 'autoptimize_setup_done', array( $this, 'check_cache_and_run' ) );
62
-        add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_ao_extra' ), 15 );
63
-        add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_partners_tab' ), 20 );
64
-        add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_criticalcss' ), 11 );
65
-        add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_notfound_fallback' ), 10 );
60
+        add_action('autoptimize_setup_done', array($this, 'version_upgrades_check'));
61
+        add_action('autoptimize_setup_done', array($this, 'check_cache_and_run'));
62
+        add_action('autoptimize_setup_done', array($this, 'maybe_run_ao_extra'), 15);
63
+        add_action('autoptimize_setup_done', array($this, 'maybe_run_partners_tab'), 20);
64
+        add_action('autoptimize_setup_done', array($this, 'maybe_run_criticalcss'), 11);
65
+        add_action('autoptimize_setup_done', array($this, 'maybe_run_notfound_fallback'), 10);
66 66
 
67
-        add_action( 'init', array( $this, 'load_textdomain' ) );
67
+        add_action('init', array($this, 'load_textdomain'));
68 68
 
69
-        if ( is_multisite() && is_admin() ) {
69
+        if (is_multisite() && is_admin()) {
70 70
             // Only if multisite and if in admin we want to check if we need to save options on network level.
71
-            add_action( 'init', 'autoptimizeOptionWrapper::check_multisite_on_saving_options' );
71
+            add_action('init', 'autoptimizeOptionWrapper::check_multisite_on_saving_options');
72 72
         }
73 73
 
74 74
         // register uninstall & deactivation hooks.
75
-        register_uninstall_hook( $this->filepath, 'autoptimizeMain::on_uninstall' );
76
-        register_deactivation_hook( $this->filepath, 'autoptimizeMain::on_deactivation' );
75
+        register_uninstall_hook($this->filepath, 'autoptimizeMain::on_uninstall');
76
+        register_deactivation_hook($this->filepath, 'autoptimizeMain::on_deactivation');
77 77
     }
78 78
 
79 79
     public function load_textdomain()
80 80
     {
81
-        load_plugin_textdomain( 'autoptimize' );
81
+        load_plugin_textdomain('autoptimize');
82 82
     }
83 83
 
84 84
     public function setup()
85 85
     {
86 86
         // Do we gzip in php when caching or is the webserver doing it?
87
-        define( 'AUTOPTIMIZE_CACHE_NOGZIP', (bool) autoptimizeOptionWrapper::get_option( 'autoptimize_cache_nogzip' ) );
87
+        define('AUTOPTIMIZE_CACHE_NOGZIP', (bool) autoptimizeOptionWrapper::get_option('autoptimize_cache_nogzip'));
88 88
 
89 89
         // These can be overridden by specifying them in wp-config.php or such.
90
-        if ( ! defined( 'AUTOPTIMIZE_WP_CONTENT_NAME' ) ) {
91
-            define( 'AUTOPTIMIZE_WP_CONTENT_NAME', '/' . wp_basename( WP_CONTENT_DIR ) );
90
+        if (!defined('AUTOPTIMIZE_WP_CONTENT_NAME')) {
91
+            define('AUTOPTIMIZE_WP_CONTENT_NAME', '/'.wp_basename(WP_CONTENT_DIR));
92 92
         }
93
-        if ( ! defined( 'AUTOPTIMIZE_CACHE_CHILD_DIR' ) ) {
94
-            define( 'AUTOPTIMIZE_CACHE_CHILD_DIR', '/cache/autoptimize/' );
93
+        if (!defined('AUTOPTIMIZE_CACHE_CHILD_DIR')) {
94
+            define('AUTOPTIMIZE_CACHE_CHILD_DIR', '/cache/autoptimize/');
95 95
         }
96
-        if ( ! defined( 'AUTOPTIMIZE_CACHEFILE_PREFIX' ) ) {
97
-            define( 'AUTOPTIMIZE_CACHEFILE_PREFIX', 'autoptimize_' );
96
+        if (!defined('AUTOPTIMIZE_CACHEFILE_PREFIX')) {
97
+            define('AUTOPTIMIZE_CACHEFILE_PREFIX', 'autoptimize_');
98 98
         }
99 99
         // Note: trailing slash is not optional!
100
-        if ( ! defined( 'AUTOPTIMIZE_CACHE_DIR' ) ) {
101
-            define( 'AUTOPTIMIZE_CACHE_DIR', autoptimizeCache::get_pathname() );
100
+        if (!defined('AUTOPTIMIZE_CACHE_DIR')) {
101
+            define('AUTOPTIMIZE_CACHE_DIR', autoptimizeCache::get_pathname());
102 102
         }
103 103
 
104
-        define( 'WP_ROOT_DIR', substr( WP_CONTENT_DIR, 0, strlen( WP_CONTENT_DIR ) - strlen( AUTOPTIMIZE_WP_CONTENT_NAME ) ) );
104
+        define('WP_ROOT_DIR', substr(WP_CONTENT_DIR, 0, strlen(WP_CONTENT_DIR) - strlen(AUTOPTIMIZE_WP_CONTENT_NAME)));
105 105
 
106
-        if ( ! defined( 'AUTOPTIMIZE_WP_SITE_URL' ) ) {
107
-            if ( function_exists( 'domain_mapping_siteurl' ) ) {
108
-                define( 'AUTOPTIMIZE_WP_SITE_URL', domain_mapping_siteurl( get_current_blog_id() ) );
106
+        if (!defined('AUTOPTIMIZE_WP_SITE_URL')) {
107
+            if (function_exists('domain_mapping_siteurl')) {
108
+                define('AUTOPTIMIZE_WP_SITE_URL', domain_mapping_siteurl(get_current_blog_id()));
109 109
             } else {
110
-                define( 'AUTOPTIMIZE_WP_SITE_URL', site_url() );
110
+                define('AUTOPTIMIZE_WP_SITE_URL', site_url());
111 111
             }
112 112
         }
113
-        if ( ! defined( 'AUTOPTIMIZE_WP_CONTENT_URL' ) ) {
114
-            if ( function_exists( 'get_original_url' ) ) {
115
-                define( 'AUTOPTIMIZE_WP_CONTENT_URL', str_replace( get_original_url( AUTOPTIMIZE_WP_SITE_URL ), AUTOPTIMIZE_WP_SITE_URL, content_url() ) );
113
+        if (!defined('AUTOPTIMIZE_WP_CONTENT_URL')) {
114
+            if (function_exists('get_original_url')) {
115
+                define('AUTOPTIMIZE_WP_CONTENT_URL', str_replace(get_original_url(AUTOPTIMIZE_WP_SITE_URL), AUTOPTIMIZE_WP_SITE_URL, content_url()));
116 116
             } else {
117
-                define( 'AUTOPTIMIZE_WP_CONTENT_URL', content_url() );
117
+                define('AUTOPTIMIZE_WP_CONTENT_URL', content_url());
118 118
             }
119 119
         }
120
-        if ( ! defined( 'AUTOPTIMIZE_CACHE_URL' ) ) {
121
-            if ( is_multisite() && apply_filters( 'autoptimize_separate_blog_caches', true ) ) {
120
+        if (!defined('AUTOPTIMIZE_CACHE_URL')) {
121
+            if (is_multisite() && apply_filters('autoptimize_separate_blog_caches', true)) {
122 122
                 $blog_id = get_current_blog_id();
123
-                define( 'AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL . AUTOPTIMIZE_CACHE_CHILD_DIR . $blog_id . '/' );
123
+                define('AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL.AUTOPTIMIZE_CACHE_CHILD_DIR.$blog_id.'/');
124 124
             } else {
125
-                define( 'AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL . AUTOPTIMIZE_CACHE_CHILD_DIR );
125
+                define('AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL.AUTOPTIMIZE_CACHE_CHILD_DIR);
126 126
             }
127 127
         }
128
-        if ( ! defined( 'AUTOPTIMIZE_WP_ROOT_URL' ) ) {
129
-            define( 'AUTOPTIMIZE_WP_ROOT_URL', str_replace( AUTOPTIMIZE_WP_CONTENT_NAME, '', AUTOPTIMIZE_WP_CONTENT_URL ) );
128
+        if (!defined('AUTOPTIMIZE_WP_ROOT_URL')) {
129
+            define('AUTOPTIMIZE_WP_ROOT_URL', str_replace(AUTOPTIMIZE_WP_CONTENT_NAME, '', AUTOPTIMIZE_WP_CONTENT_URL));
130 130
         }
131
-        if ( ! defined( 'AUTOPTIMIZE_HASH' ) ) {
132
-            define( 'AUTOPTIMIZE_HASH', wp_hash( AUTOPTIMIZE_CACHE_URL ) );
131
+        if (!defined('AUTOPTIMIZE_HASH')) {
132
+            define('AUTOPTIMIZE_HASH', wp_hash(AUTOPTIMIZE_CACHE_URL));
133 133
         }
134
-        if ( ! defined( 'AUTOPTIMIZE_SITE_DOMAIN' ) ) {
135
-            define( 'AUTOPTIMIZE_SITE_DOMAIN', parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ) );
134
+        if (!defined('AUTOPTIMIZE_SITE_DOMAIN')) {
135
+            define('AUTOPTIMIZE_SITE_DOMAIN', parse_url(AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST));
136 136
         }
137 137
 
138 138
         // Multibyte-capable string replacements are available with a filter.
139 139
         // Also requires 'mbstring' extension.
140
-        $with_mbstring = apply_filters( 'autoptimize_filter_main_use_mbstring', false );
141
-        if ( $with_mbstring ) {
142
-            autoptimizeUtils::mbstring_available( \extension_loaded( 'mbstring' ) );
140
+        $with_mbstring = apply_filters('autoptimize_filter_main_use_mbstring', false);
141
+        if ($with_mbstring) {
142
+            autoptimizeUtils::mbstring_available(\extension_loaded('mbstring'));
143 143
         } else {
144
-            autoptimizeUtils::mbstring_available( false );
144
+            autoptimizeUtils::mbstring_available(false);
145 145
         }
146 146
 
147
-        do_action( 'autoptimize_setup_done' );
147
+        do_action('autoptimize_setup_done');
148 148
     }
149 149
 
150 150
     /**
@@ -154,61 +154,61 @@  discard block
 block discarded – undo
154 154
      */
155 155
     public function version_upgrades_check()
156 156
     {
157
-        autoptimizeVersionUpdatesHandler::check_installed_and_update( $this->version );
157
+        autoptimizeVersionUpdatesHandler::check_installed_and_update($this->version);
158 158
     }
159 159
 
160 160
     public function check_cache_and_run()
161 161
     {
162
-        if ( autoptimizeCache::cacheavail() ) {
162
+        if (autoptimizeCache::cacheavail()) {
163 163
             $conf = autoptimizeConfig::instance();
164
-            if ( $conf->get( 'autoptimize_html' ) || $conf->get( 'autoptimize_js' ) || $conf->get( 'autoptimize_css' ) || autoptimizeImages::imgopt_active() || autoptimizeImages::should_lazyload_wrapper() ) {
165
-                if ( ! defined( 'AUTOPTIMIZE_NOBUFFER_OPTIMIZE' ) ) {
164
+            if ($conf->get('autoptimize_html') || $conf->get('autoptimize_js') || $conf->get('autoptimize_css') || autoptimizeImages::imgopt_active() || autoptimizeImages::should_lazyload_wrapper()) {
165
+                if (!defined('AUTOPTIMIZE_NOBUFFER_OPTIMIZE')) {
166 166
                     // Hook into WordPress frontend.
167
-                    if ( defined( 'AUTOPTIMIZE_INIT_EARLIER' ) ) {
167
+                    if (defined('AUTOPTIMIZE_INIT_EARLIER')) {
168 168
                         add_action(
169 169
                             'init',
170
-                            array( $this, 'start_buffering' ),
170
+                            array($this, 'start_buffering'),
171 171
                             self::INIT_EARLIER_PRIORITY
172 172
                         );
173 173
                     } else {
174
-                        if ( ! defined( 'AUTOPTIMIZE_HOOK_INTO' ) ) {
175
-                            define( 'AUTOPTIMIZE_HOOK_INTO', 'template_redirect' );
174
+                        if (!defined('AUTOPTIMIZE_HOOK_INTO')) {
175
+                            define('AUTOPTIMIZE_HOOK_INTO', 'template_redirect');
176 176
                         }
177 177
                         add_action(
178
-                            constant( 'AUTOPTIMIZE_HOOK_INTO' ),
179
-                            array( $this, 'start_buffering' ),
178
+                            constant('AUTOPTIMIZE_HOOK_INTO'),
179
+                            array($this, 'start_buffering'),
180 180
                             self::DEFAULT_HOOK_PRIORITY
181 181
                         );
182 182
                     }
183 183
                 }
184 184
 
185 185
                 // And disable Jetpack's site accelerator if JS or CSS opt. are active.
186
-                if ( class_exists( 'Jetpack' ) && apply_filters( 'autoptimize_filter_main_disable_jetpack_cdn', true ) && ( $conf->get( 'autoptimize_js' ) || $conf->get( 'autoptimize_css' ) ) ) {
187
-                    add_filter( 'jetpack_force_disable_site_accelerator', '__return_true' );
186
+                if (class_exists('Jetpack') && apply_filters('autoptimize_filter_main_disable_jetpack_cdn', true) && ($conf->get('autoptimize_js') || $conf->get('autoptimize_css'))) {
187
+                    add_filter('jetpack_force_disable_site_accelerator', '__return_true');
188 188
                 }
189 189
             }
190 190
         } else {
191
-            add_action( 'admin_notices', 'autoptimizeMain::notice_cache_unavailable' );
191
+            add_action('admin_notices', 'autoptimizeMain::notice_cache_unavailable');
192 192
         }
193 193
     }
194 194
 
195 195
     public function maybe_run_ao_extra()
196 196
     {
197
-        if ( apply_filters( 'autoptimize_filter_extra_activate', true ) ) {
197
+        if (apply_filters('autoptimize_filter_extra_activate', true)) {
198 198
             $ao_imgopt = new autoptimizeImages();
199 199
             $ao_imgopt->run();
200 200
             $ao_extra = new autoptimizeExtra();
201 201
             $ao_extra->run();
202 202
 
203 203
             // And show the imgopt notice.
204
-            add_action( 'admin_notices', 'autoptimizeMain::notice_plug_imgopt' );
204
+            add_action('admin_notices', 'autoptimizeMain::notice_plug_imgopt');
205 205
         }
206 206
     }
207 207
 
208 208
     public function maybe_run_partners_tab()
209 209
     {
210 210
         // Loads partners tab code if in admin (and not in admin-ajax.php)!
211
-        if ( autoptimizeConfig::is_admin_and_not_ajax() ) {
211
+        if (autoptimizeConfig::is_admin_and_not_ajax()) {
212 212
             new autoptimizePartners();
213 213
         }
214 214
     }
@@ -216,22 +216,22 @@  discard block
 block discarded – undo
216 216
     public function maybe_run_criticalcss()
217 217
     {
218 218
         // Loads criticalcss if the power-up is not active and if the filter returns true.
219
-        if ( apply_filters( 'autoptimize_filter_criticalcss_active', true ) && ! autoptimizeUtils::is_plugin_active( 'autoptimize-criticalcss/ao_criticss_aas.php' ) ) {
219
+        if (apply_filters('autoptimize_filter_criticalcss_active', true) && !autoptimizeUtils::is_plugin_active('autoptimize-criticalcss/ao_criticss_aas.php')) {
220 220
             new autoptimizeCriticalCSSBase();
221 221
         }
222 222
     }
223 223
 
224 224
     public function maybe_run_notfound_fallback()
225 225
     {
226
-        if ( autoptimizeCache::do_fallback() ) {
227
-            add_action( 'template_redirect', array( 'autoptimizeCache', 'wordpress_notfound_fallback' ) );
226
+        if (autoptimizeCache::do_fallback()) {
227
+            add_action('template_redirect', array('autoptimizeCache', 'wordpress_notfound_fallback'));
228 228
         }
229 229
     }
230 230
 
231 231
     public function hook_page_cache_purge()
232 232
     {
233 233
         // hook into a collection of page cache purge actions if filter allows.
234
-        if ( apply_filters( 'autoptimize_filter_main_hookpagecachepurge', true ) ) {
234
+        if (apply_filters('autoptimize_filter_main_hookpagecachepurge', true)) {
235 235
             $page_cache_purge_actions = array(
236 236
                 'after_rocket_clean_domain', // exists.
237 237
                 'hyper_cache_purged', // Stefano confirmed this will be added.
@@ -246,9 +246,9 @@  discard block
 block discarded – undo
246 246
                 'wpo_cache_flush', // wp-optimize.
247 247
                 'rt_nginx_helper_after_fastcgi_purge_all', // nginx helper.
248 248
             );
249
-            $page_cache_purge_actions = apply_filters( 'autoptimize_filter_main_pagecachepurgeactions', $page_cache_purge_actions );
250
-            foreach ( $page_cache_purge_actions as $purge_action ) {
251
-                add_action( $purge_action, 'autoptimizeCache::clearall_actionless' );
249
+            $page_cache_purge_actions = apply_filters('autoptimize_filter_main_pagecachepurgeactions', $page_cache_purge_actions);
250
+            foreach ($page_cache_purge_actions as $purge_action) {
251
+                add_action($purge_action, 'autoptimizeCache::clearall_actionless');
252 252
             }
253 253
         }
254 254
     }
@@ -260,38 +260,38 @@  discard block
 block discarded – undo
260 260
      */
261 261
     public function start_buffering()
262 262
     {
263
-        if ( $this->should_buffer() ) {
263
+        if ($this->should_buffer()) {
264 264
 
265 265
             // Load speedupper conditionally (true by default).
266
-            if ( apply_filters( 'autoptimize_filter_speedupper', true ) ) {
266
+            if (apply_filters('autoptimize_filter_speedupper', true)) {
267 267
                 $ao_speedupper = new autoptimizeSpeedupper();
268 268
             }
269 269
 
270 270
             $conf = autoptimizeConfig::instance();
271 271
 
272
-            if ( $conf->get( 'autoptimize_js' ) ) {
273
-                if ( ! defined( 'CONCATENATE_SCRIPTS' ) ) {
274
-                    define( 'CONCATENATE_SCRIPTS', false );
272
+            if ($conf->get('autoptimize_js')) {
273
+                if (!defined('CONCATENATE_SCRIPTS')) {
274
+                    define('CONCATENATE_SCRIPTS', false);
275 275
                 }
276
-                if ( ! defined( 'COMPRESS_SCRIPTS' ) ) {
277
-                    define( 'COMPRESS_SCRIPTS', false );
276
+                if (!defined('COMPRESS_SCRIPTS')) {
277
+                    define('COMPRESS_SCRIPTS', false);
278 278
                 }
279 279
             }
280 280
 
281
-            if ( $conf->get( 'autoptimize_css' ) ) {
282
-                if ( ! defined( 'COMPRESS_CSS' ) ) {
283
-                    define( 'COMPRESS_CSS', false );
281
+            if ($conf->get('autoptimize_css')) {
282
+                if (!defined('COMPRESS_CSS')) {
283
+                    define('COMPRESS_CSS', false);
284 284
                 }
285 285
             }
286 286
 
287
-            if ( apply_filters( 'autoptimize_filter_obkiller', false ) ) {
288
-                while ( ob_get_level() > 0 ) {
287
+            if (apply_filters('autoptimize_filter_obkiller', false)) {
288
+                while (ob_get_level() > 0) {
289 289
                     ob_end_clean();
290 290
                 }
291 291
             }
292 292
 
293 293
             // Now, start the real thing!
294
-            ob_start( array( $this, 'end_buffering' ) );
294
+            ob_start(array($this, 'end_buffering'));
295 295
         }
296 296
     }
297 297
 
@@ -302,31 +302,31 @@  discard block
 block discarded – undo
302 302
      *                          deciding once per request (for use in tests).
303 303
      * @return bool
304 304
      */
305
-    public static function should_buffer( $doing_tests = false )
305
+    public static function should_buffer($doing_tests = false)
306 306
     {
307 307
         static $do_buffering = null;
308 308
 
309 309
         // Only check once in case we're called multiple times by others but
310 310
         // still allows multiple calls when doing tests.
311
-        if ( null === $do_buffering || $doing_tests ) {
311
+        if (null === $do_buffering || $doing_tests) {
312 312
 
313 313
             $ao_noptimize = false;
314 314
 
315 315
             // Checking for DONOTMINIFY constant as used by e.g. WooCommerce POS.
316
-            if ( defined( 'DONOTMINIFY' ) && ( constant( 'DONOTMINIFY' ) === true || constant( 'DONOTMINIFY' ) === 'true' ) ) {
316
+            if (defined('DONOTMINIFY') && (constant('DONOTMINIFY') === true || constant('DONOTMINIFY') === 'true')) {
317 317
                 $ao_noptimize = true;
318 318
             }
319 319
 
320 320
             // Skip checking query strings if they're disabled.
321
-            if ( apply_filters( 'autoptimize_filter_honor_qs_noptimize', true ) ) {
321
+            if (apply_filters('autoptimize_filter_honor_qs_noptimize', true)) {
322 322
                 // Check for `ao_noptimize` (and other) keys in the query string
323 323
                 // to get non-optimized page for debugging.
324 324
                 $keys = array(
325 325
                     'ao_noptimize',
326 326
                     'ao_noptirocket',
327 327
                 );
328
-                foreach ( $keys as $key ) {
329
-                    if ( array_key_exists( $key, $_GET ) && '1' === $_GET[ $key ] ) {
328
+                foreach ($keys as $key) {
329
+                    if (array_key_exists($key, $_GET) && '1' === $_GET[$key]) {
330 330
                         $ao_noptimize = true;
331 331
                         break;
332 332
                     }
@@ -334,15 +334,15 @@  discard block
 block discarded – undo
334 334
             }
335 335
 
336 336
             // If setting says not to optimize logged in user and user is logged in...
337
-            if ( false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_optimize_logged', 'on' ) && is_user_logged_in() && current_user_can( 'edit_posts' ) ) {
337
+            if (false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option('autoptimize_optimize_logged', 'on') && is_user_logged_in() && current_user_can('edit_posts')) {
338 338
                 $ao_noptimize = true;
339 339
             }
340 340
 
341 341
             // If setting says not to optimize cart/checkout.
342
-            if ( false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_optimize_checkout', 'off' ) ) {
342
+            if (false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option('autoptimize_optimize_checkout', 'off')) {
343 343
                 // Checking for woocommerce, easy digital downloads and wp ecommerce...
344
-                foreach ( array( 'is_checkout', 'is_cart', 'is_account_page', 'edd_is_checkout', 'wpsc_is_cart', 'wpsc_is_checkout' ) as $func ) {
345
-                    if ( function_exists( $func ) && $func() ) {
344
+                foreach (array('is_checkout', 'is_cart', 'is_account_page', 'edd_is_checkout', 'wpsc_is_cart', 'wpsc_is_checkout') as $func) {
345
+                    if (function_exists($func) && $func()) {
346 346
                         $ao_noptimize = true;
347 347
                         break;
348 348
                     }
@@ -350,10 +350,10 @@  discard block
 block discarded – undo
350 350
             }
351 351
 
352 352
             // And make sure pagebuilder previews don't get optimized HTML/ JS/ CSS/ ...
353
-            if ( false === $ao_noptimize ) {
354
-                $_qs_pagebuilders = array( 'tve', 'elementor-preview', 'fl_builder', 'vc_action', 'et_fb', 'bt-beaverbuildertheme', 'ct_builder', 'fb-edit', 'siteorigin_panels_live_editor' );
355
-                foreach ( $_qs_pagebuilders as $_pagebuilder ) {
356
-                    if ( array_key_exists( $_pagebuilder, $_GET ) ) {
353
+            if (false === $ao_noptimize) {
354
+                $_qs_pagebuilders = array('tve', 'elementor-preview', 'fl_builder', 'vc_action', 'et_fb', 'bt-beaverbuildertheme', 'ct_builder', 'fb-edit', 'siteorigin_panels_live_editor');
355
+                foreach ($_qs_pagebuilders as $_pagebuilder) {
356
+                    if (array_key_exists($_pagebuilder, $_GET)) {
357 357
                         $ao_noptimize = true;
358 358
                         break;
359 359
                     }
@@ -362,16 +362,16 @@  discard block
 block discarded – undo
362 362
 
363 363
             // Also honor PageSpeed=off parameter as used by mod_pagespeed, in use by some pagebuilders,
364 364
             // see https://www.modpagespeed.com/doc/experiment#ModPagespeed for info on that.
365
-            if ( false === $ao_noptimize && array_key_exists( 'PageSpeed', $_GET ) && 'off' === $_GET['PageSpeed'] ) {
365
+            if (false === $ao_noptimize && array_key_exists('PageSpeed', $_GET) && 'off' === $_GET['PageSpeed']) {
366 366
                 $ao_noptimize = true;
367 367
             }
368 368
 
369 369
             // And finally allows blocking of autoptimization on your own terms regardless of above decisions.
370
-            $ao_noptimize = (bool) apply_filters( 'autoptimize_filter_noptimize', $ao_noptimize );
370
+            $ao_noptimize = (bool) apply_filters('autoptimize_filter_noptimize', $ao_noptimize);
371 371
 
372 372
             // Check for site being previewed in the Customizer (available since WP 4.0).
373 373
             $is_customize_preview = false;
374
-            if ( function_exists( 'is_customize_preview' ) && is_customize_preview() ) {
374
+            if (function_exists('is_customize_preview') && is_customize_preview()) {
375 375
                 $is_customize_preview = is_customize_preview();
376 376
             }
377 377
 
@@ -382,7 +382,7 @@  discard block
 block discarded – undo
382 382
              * while the main query hasn't been ran yet. Thats why we use
383 383
              * AUTOPTIMIZE_INIT_EARLIER in tests.
384 384
              */
385
-            $do_buffering = ( ! is_admin() && ! is_feed() && ! is_embed() && ! $ao_noptimize && ! $is_customize_preview );
385
+            $do_buffering = (!is_admin() && !is_feed() && !is_embed() && !$ao_noptimize && !$is_customize_preview);
386 386
         }
387 387
 
388 388
         return $do_buffering;
@@ -395,25 +395,25 @@  discard block
 block discarded – undo
395 395
      *
396 396
      * @return bool
397 397
      */
398
-    public function is_valid_buffer( $content )
398
+    public function is_valid_buffer($content)
399 399
     {
400 400
         // Defaults to true.
401 401
         $valid = true;
402 402
 
403
-        $has_no_html_tag    = ( false === stripos( $content, '<html' ) );
404
-        $has_xsl_stylesheet = ( false !== stripos( $content, '<xsl:stylesheet' ) || false !== stripos( $content, '<?xml-stylesheet' ) );
405
-        $has_html5_doctype  = ( preg_match( '/^<!DOCTYPE.+html>/i', ltrim( $content ) ) > 0 );
406
-        $has_noptimize_page = ( false !== stripos( $content, '<!-- noptimize-page -->' ) );
403
+        $has_no_html_tag    = (false === stripos($content, '<html'));
404
+        $has_xsl_stylesheet = (false !== stripos($content, '<xsl:stylesheet') || false !== stripos($content, '<?xml-stylesheet'));
405
+        $has_html5_doctype  = (preg_match('/^<!DOCTYPE.+html>/i', ltrim($content)) > 0);
406
+        $has_noptimize_page = (false !== stripos($content, '<!-- noptimize-page -->'));
407 407
 
408
-        if ( $has_no_html_tag ) {
408
+        if ($has_no_html_tag) {
409 409
             // Can't be valid amp markup without an html tag preceding it.
410 410
             $is_amp_markup = false;
411 411
         } else {
412
-            $is_amp_markup = self::is_amp_markup( $content );
412
+            $is_amp_markup = self::is_amp_markup($content);
413 413
         }
414 414
 
415 415
         // If it's not html, or if it's amp or contains xsl stylesheets we don't touch it.
416
-        if ( $has_no_html_tag && ! $has_html5_doctype || $is_amp_markup || $has_xsl_stylesheet || $has_noptimize_page ) {
416
+        if ($has_no_html_tag && !$has_html5_doctype || $is_amp_markup || $has_xsl_stylesheet || $has_noptimize_page) {
417 417
             $valid = false;
418 418
         }
419 419
 
@@ -428,7 +428,7 @@  discard block
 block discarded – undo
428 428
      *
429 429
      * @return bool
430 430
      */
431
-    public static function is_amp_markup( $content )
431
+    public static function is_amp_markup($content)
432 432
     {
433 433
         // Short-circuit if the page is already AMP from the start.
434 434
         if (
@@ -446,9 +446,9 @@  discard block
 block discarded – undo
446 446
         }
447 447
 
448 448
         // Or else short-circuit if the AMP plugin will be processing the output to be an AMP page.
449
-        if ( function_exists( 'amp_is_request' ) ) {
449
+        if (function_exists('amp_is_request')) {
450 450
             return amp_is_request(); // For AMP plugin v2.0+.
451
-        } elseif ( function_exists( 'is_amp_endpoint' ) ) {
451
+        } elseif (function_exists('is_amp_endpoint')) {
452 452
             return is_amp_endpoint(); // For older/other AMP plugins (still supported in 2.0 as an alias).
453 453
         }
454 454
 
@@ -463,10 +463,10 @@  discard block
 block discarded – undo
463 463
      *
464 464
      * @return string
465 465
      */
466
-    public function end_buffering( $content )
466
+    public function end_buffering($content)
467 467
     {
468 468
         // Bail early without modifying anything if we can't handle the content.
469
-        if ( ! $this->is_valid_buffer( $content ) ) {
469
+        if (!$this->is_valid_buffer($content)) {
470 470
             return $content;
471 471
         }
472 472
 
@@ -474,74 +474,74 @@  discard block
 block discarded – undo
474 474
 
475 475
         // Determine what needs to be ran.
476 476
         $classes = array();
477
-        if ( $conf->get( 'autoptimize_js' ) ) {
477
+        if ($conf->get('autoptimize_js')) {
478 478
             $classes[] = 'autoptimizeScripts';
479 479
         }
480
-        if ( $conf->get( 'autoptimize_css' ) ) {
480
+        if ($conf->get('autoptimize_css')) {
481 481
             $classes[] = 'autoptimizeStyles';
482 482
         }
483
-        if ( $conf->get( 'autoptimize_html' ) ) {
483
+        if ($conf->get('autoptimize_html')) {
484 484
             $classes[] = 'autoptimizeHTML';
485 485
         }
486 486
 
487 487
         $classoptions = array(
488 488
             'autoptimizeScripts' => array(
489
-                'aggregate'           => $conf->get( 'autoptimize_js_aggregate' ),
490
-                'defer_not_aggregate' => $conf->get( 'autoptimize_js_defer_not_aggregate' ),
491
-                'justhead'            => $conf->get( 'autoptimize_js_justhead' ),
492
-                'forcehead'           => $conf->get( 'autoptimize_js_forcehead' ),
493
-                'trycatch'            => $conf->get( 'autoptimize_js_trycatch' ),
494
-                'js_exclude'          => $conf->get( 'autoptimize_js_exclude' ),
495
-                'cdn_url'             => $conf->get( 'autoptimize_cdn_url' ),
496
-                'include_inline'      => $conf->get( 'autoptimize_js_include_inline' ),
497
-                'minify_excluded'     => $conf->get( 'autoptimize_minify_excluded' ),
489
+                'aggregate'           => $conf->get('autoptimize_js_aggregate'),
490
+                'defer_not_aggregate' => $conf->get('autoptimize_js_defer_not_aggregate'),
491
+                'justhead'            => $conf->get('autoptimize_js_justhead'),
492
+                'forcehead'           => $conf->get('autoptimize_js_forcehead'),
493
+                'trycatch'            => $conf->get('autoptimize_js_trycatch'),
494
+                'js_exclude'          => $conf->get('autoptimize_js_exclude'),
495
+                'cdn_url'             => $conf->get('autoptimize_cdn_url'),
496
+                'include_inline'      => $conf->get('autoptimize_js_include_inline'),
497
+                'minify_excluded'     => $conf->get('autoptimize_minify_excluded'),
498 498
             ),
499 499
             'autoptimizeStyles'  => array(
500
-                'aggregate'       => $conf->get( 'autoptimize_css_aggregate' ),
501
-                'justhead'        => $conf->get( 'autoptimize_css_justhead' ),
502
-                'datauris'        => $conf->get( 'autoptimize_css_datauris' ),
503
-                'defer'           => $conf->get( 'autoptimize_css_defer' ),
504
-                'defer_inline'    => $conf->get( 'autoptimize_css_defer_inline' ),
505
-                'inline'          => $conf->get( 'autoptimize_css_inline' ),
506
-                'css_exclude'     => $conf->get( 'autoptimize_css_exclude' ),
507
-                'cdn_url'         => $conf->get( 'autoptimize_cdn_url' ),
508
-                'include_inline'  => $conf->get( 'autoptimize_css_include_inline' ),
509
-                'nogooglefont'    => $conf->get( 'autoptimize_css_nogooglefont' ),
510
-                'minify_excluded' => $conf->get( 'autoptimize_minify_excluded' ),
500
+                'aggregate'       => $conf->get('autoptimize_css_aggregate'),
501
+                'justhead'        => $conf->get('autoptimize_css_justhead'),
502
+                'datauris'        => $conf->get('autoptimize_css_datauris'),
503
+                'defer'           => $conf->get('autoptimize_css_defer'),
504
+                'defer_inline'    => $conf->get('autoptimize_css_defer_inline'),
505
+                'inline'          => $conf->get('autoptimize_css_inline'),
506
+                'css_exclude'     => $conf->get('autoptimize_css_exclude'),
507
+                'cdn_url'         => $conf->get('autoptimize_cdn_url'),
508
+                'include_inline'  => $conf->get('autoptimize_css_include_inline'),
509
+                'nogooglefont'    => $conf->get('autoptimize_css_nogooglefont'),
510
+                'minify_excluded' => $conf->get('autoptimize_minify_excluded'),
511 511
             ),
512 512
             'autoptimizeHTML'    => array(
513
-                'keepcomments' => $conf->get( 'autoptimize_html_keepcomments' ),
513
+                'keepcomments' => $conf->get('autoptimize_html_keepcomments'),
514 514
             ),
515 515
         );
516 516
 
517
-        $content = apply_filters( 'autoptimize_filter_html_before_minify', $content );
517
+        $content = apply_filters('autoptimize_filter_html_before_minify', $content);
518 518
 
519 519
         // Run the classes!
520
-        foreach ( $classes as $name ) {
521
-            $instance = new $name( $content );
522
-            if ( $instance->read( $classoptions[ $name ] ) ) {
520
+        foreach ($classes as $name) {
521
+            $instance = new $name($content);
522
+            if ($instance->read($classoptions[$name])) {
523 523
                 $instance->minify();
524 524
                 $instance->cache();
525 525
                 $content = $instance->getcontent();
526 526
             }
527
-            unset( $instance );
527
+            unset($instance);
528 528
         }
529 529
 
530
-        $content = apply_filters( 'autoptimize_html_after_minify', $content );
530
+        $content = apply_filters('autoptimize_html_after_minify', $content);
531 531
 
532 532
         return $content;
533 533
     }
534 534
 
535
-    public static function autoptimize_nobuffer_optimize( $html_in ) {
535
+    public static function autoptimize_nobuffer_optimize($html_in) {
536 536
         $html_out = $html_in;
537 537
 
538
-        if ( apply_filters( 'autoptimize_filter_speedupper', true ) ) {
538
+        if (apply_filters('autoptimize_filter_speedupper', true)) {
539 539
             $ao_speedupper = new autoptimizeSpeedupper();
540 540
         }
541 541
 
542
-        $self = new self( AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE );
543
-        if ( $self->should_buffer() ) {
544
-            $html_out = $self->end_buffering( $html_in );
542
+        $self = new self(AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE);
543
+        if ($self->should_buffer()) {
544
+            $html_out = $self->end_buffering($html_in);
545 545
         }
546 546
         return $html_out;
547 547
     }
@@ -605,45 +605,45 @@  discard block
 block discarded – undo
605 605
             'autoptimize_ccss_unloadccss',
606 606
         );
607 607
 
608
-        if ( ! is_multisite() ) {
609
-            foreach ( $delete_options as $del_opt ) {
610
-                delete_option( $del_opt );
608
+        if (!is_multisite()) {
609
+            foreach ($delete_options as $del_opt) {
610
+                delete_option($del_opt);
611 611
             }
612 612
             autoptimizeMain::remove_cronjobs();
613 613
         } else {
614 614
             global $wpdb;
615
-            $blog_ids         = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
615
+            $blog_ids         = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
616 616
             $original_blog_id = get_current_blog_id();
617
-            foreach ( $blog_ids as $blog_id ) {
618
-                switch_to_blog( $blog_id );
619
-                foreach ( $delete_options as $del_opt ) {
620
-                    delete_option( $del_opt );
617
+            foreach ($blog_ids as $blog_id) {
618
+                switch_to_blog($blog_id);
619
+                foreach ($delete_options as $del_opt) {
620
+                    delete_option($del_opt);
621 621
                 }
622 622
                 autoptimizeMain::remove_cronjobs();
623 623
             }
624
-            switch_to_blog( $original_blog_id );
624
+            switch_to_blog($original_blog_id);
625 625
         }
626 626
 
627 627
         // Remove AO CCSS cached files and directory.
628
-        $ao_ccss_dir = WP_CONTENT_DIR . '/uploads/ao_ccss/';
629
-        if ( file_exists( $ao_ccss_dir ) && is_dir( $ao_ccss_dir ) ) {
628
+        $ao_ccss_dir = WP_CONTENT_DIR.'/uploads/ao_ccss/';
629
+        if (file_exists($ao_ccss_dir) && is_dir($ao_ccss_dir)) {
630 630
             // fixme: should check for subdirs when in multisite and remove contents of those as well.
631
-            array_map( 'unlink', glob( $ao_ccss_dir . '*.{css,html,json,log,zip,lock}', GLOB_BRACE ) );
632
-            rmdir( $ao_ccss_dir );
631
+            array_map('unlink', glob($ao_ccss_dir.'*.{css,html,json,log,zip,lock}', GLOB_BRACE));
632
+            rmdir($ao_ccss_dir);
633 633
         }
634 634
     }
635 635
 
636 636
     public static function on_deactivation()
637 637
     {
638
-        if ( is_multisite() && is_network_admin() ) {
638
+        if (is_multisite() && is_network_admin()) {
639 639
             global $wpdb;
640
-            $blog_ids         = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
640
+            $blog_ids         = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
641 641
             $original_blog_id = get_current_blog_id();
642
-            foreach ( $blog_ids as $blog_id ) {
643
-                switch_to_blog( $blog_id );
642
+            foreach ($blog_ids as $blog_id) {
643
+                switch_to_blog($blog_id);
644 644
                 autoptimizeMain::remove_cronjobs();
645 645
             }
646
-            switch_to_blog( $original_blog_id );
646
+            switch_to_blog($original_blog_id);
647 647
         } else {
648 648
             autoptimizeMain::remove_cronjobs();
649 649
         }
@@ -652,9 +652,9 @@  discard block
 block discarded – undo
652 652
 
653 653
     public static function remove_cronjobs() {
654 654
         // Remove scheduled events.
655
-        foreach ( array( 'ao_cachechecker', 'ao_ccss_queue', 'ao_ccss_maintenance' ) as $_event ) {
656
-            if ( wp_get_schedule( $_event ) ) {
657
-                wp_clear_scheduled_hook( $_event );
655
+        foreach (array('ao_cachechecker', 'ao_ccss_queue', 'ao_ccss_maintenance') as $_event) {
656
+            if (wp_get_schedule($_event)) {
657
+                wp_clear_scheduled_hook($_event);
658 658
             }
659 659
         }
660 660
     }
@@ -663,36 +663,36 @@  discard block
 block discarded – undo
663 663
     {
664 664
         echo '<div class="error"><p>';
665 665
         // Translators: %s is the cache directory location.
666
-        printf( __( 'Autoptimize cannot write to the cache directory (%s), please fix to enable CSS/ JS optimization!', 'autoptimize' ), AUTOPTIMIZE_CACHE_DIR );
666
+        printf(__('Autoptimize cannot write to the cache directory (%s), please fix to enable CSS/ JS optimization!', 'autoptimize'), AUTOPTIMIZE_CACHE_DIR);
667 667
         echo '</p></div>';
668 668
     }
669 669
 
670 670
     public static function notice_installed()
671 671
     {
672 672
         echo '<div class="updated"><p>';
673
-        _e( 'Thank you for installing and activating Autoptimize. Please configure it under "Settings" -> "Autoptimize" to start improving your site\'s performance.', 'autoptimize' );
673
+        _e('Thank you for installing and activating Autoptimize. Please configure it under "Settings" -> "Autoptimize" to start improving your site\'s performance.', 'autoptimize');
674 674
         echo '</p></div>';
675 675
     }
676 676
 
677 677
     public static function notice_updated()
678 678
     {
679 679
         echo '<div class="updated"><p>';
680
-        _e( 'Autoptimize has just been updated. Please <strong>test your site now</strong> and adapt Autoptimize config if needed.', 'autoptimize' );
680
+        _e('Autoptimize has just been updated. Please <strong>test your site now</strong> and adapt Autoptimize config if needed.', 'autoptimize');
681 681
         echo '</p></div>';
682 682
     }
683 683
 
684 684
     public static function notice_plug_imgopt()
685 685
     {
686 686
         // Translators: the URL added points to the Autopmize Extra settings.
687
-        $_ao_imgopt_plug_notice      = sprintf( __( 'Did you know Autoptimize includes on-the-fly image optimization (with support for WebP and AVIF) and CDN via ShortPixel? Check out the %1$sAutoptimize Image settings%2$s to activate this option.', 'autoptimize' ), '<a href="options-general.php?page=autoptimize_imgopt">', '</a>' );
688
-        $_ao_imgopt_plug_notice      = apply_filters( 'autoptimize_filter_main_imgopt_plug_notice', $_ao_imgopt_plug_notice );
687
+        $_ao_imgopt_plug_notice      = sprintf(__('Did you know Autoptimize includes on-the-fly image optimization (with support for WebP and AVIF) and CDN via ShortPixel? Check out the %1$sAutoptimize Image settings%2$s to activate this option.', 'autoptimize'), '<a href="options-general.php?page=autoptimize_imgopt">', '</a>');
688
+        $_ao_imgopt_plug_notice      = apply_filters('autoptimize_filter_main_imgopt_plug_notice', $_ao_imgopt_plug_notice);
689 689
         $_ao_imgopt_launch_ok        = autoptimizeImages::launch_ok_wrapper();
690 690
         $_ao_imgopt_plug_dismissible = 'boe-ao-img-opt-plug-123';
691 691
         $_ao_imgopt_active           = autoptimizeImages::imgopt_active();
692
-        $_is_ao_settings_page        = true;//( str_replace( array( 'autoptimize', 'autoptimize_imgopt', 'ao_critcss', 'autoptimize_extra', 'ao_partners' ), '', $_SERVER['REQUEST_URI'] ) !== $_SERVER['REQUEST_URI'] ? true : false );
692
+        $_is_ao_settings_page        = true; //( str_replace( array( 'autoptimize', 'autoptimize_imgopt', 'ao_critcss', 'autoptimize_extra', 'ao_partners' ), '', $_SERVER['REQUEST_URI'] ) !== $_SERVER['REQUEST_URI'] ? true : false );
693 693
 
694
-        if ( current_user_can( 'manage_options' ) && $_is_ao_settings_page && '' !== $_ao_imgopt_plug_notice && ! $_ao_imgopt_active && $_ao_imgopt_launch_ok && PAnD::is_admin_notice_active( $_ao_imgopt_plug_dismissible ) ) {
695
-            echo '<div class="notice notice-info is-dismissible" data-dismissible="' . $_ao_imgopt_plug_dismissible . '"><p>';
694
+        if (current_user_can('manage_options') && $_is_ao_settings_page && '' !== $_ao_imgopt_plug_notice && !$_ao_imgopt_active && $_ao_imgopt_launch_ok && PAnD::is_admin_notice_active($_ao_imgopt_plug_dismissible)) {
695
+            echo '<div class="notice notice-info is-dismissible" data-dismissible="'.$_ao_imgopt_plug_dismissible.'"><p>';
696 696
             echo $_ao_imgopt_plug_notice;
697 697
             echo '</p></div>';
698 698
         }
Please login to merge, or discard this patch.
classes/autoptimizeImages.php 1 patch
Spacing   +361 added lines, -361 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/GWRGFLW109483/' . AUTOPTIMIZE_SITE_DOMAIN;
234
+        $suffix = '/af/GWRGFLW109483/'.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,49 +336,49 @@  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
-            if ( strpos( $result, '&quot;' ) !== false ) {
350
-                $result = str_replace( '&quot;', '', $result );
349
+            if (strpos($result, '&quot;') !== false) {
350
+                $result = str_replace('&quot;', '', $result);
351 351
             }
352 352
 
353
-            if ( autoptimizeUtils::is_protocol_relative( $result ) ) {
354
-                $result = $parsed_site_url['scheme'] . ':' . $result;
355
-            } elseif ( 0 === strpos( $result, '/' ) ) {
353
+            if (autoptimizeUtils::is_protocol_relative($result)) {
354
+                $result = $parsed_site_url['scheme'].':'.$result;
355
+            } elseif (0 === strpos($result, '/')) {
356 356
                 // Root-relative...
357
-                $result = $parsed_site_url['scheme'] . '://' . $parsed_site_url['host'] . $result;
358
-            } elseif ( ! empty( $cdn_domain ) && strpos( $result, $cdn_domain ) !== 0 ) {
359
-                $result = str_replace( $cdn_domain, $parsed_site_url['host'], $result );
357
+                $result = $parsed_site_url['scheme'].'://'.$parsed_site_url['host'].$result;
358
+            } elseif (!empty($cdn_domain) && strpos($result, $cdn_domain) !== 0) {
359
+                $result = str_replace($cdn_domain, $parsed_site_url['host'], $result);
360 360
             }
361 361
 
362 362
             // filter (default off) to remove QS from image URL's to avoid eating away optimization credits.
363
-            if ( apply_filters( 'autoptimize_filter_imgopt_no_querystring', false ) && strpos( $result, '?' ) !== false ) {
364
-                $result = strtok( $result, '?' );
363
+            if (apply_filters('autoptimize_filter_imgopt_no_querystring', false) && strpos($result, '?') !== false) {
364
+                $result = strtok($result, '?');
365 365
             }
366 366
 
367
-            $result = apply_filters( 'autoptimize_filter_imgopt_normalized_url', $result );
367
+            $result = apply_filters('autoptimize_filter_imgopt_normalized_url', $result);
368 368
 
369 369
             // Store in cache.
370
-            $cache[ $in ] = $result;
370
+            $cache[$in] = $result;
371 371
         }
372 372
 
373
-        return $cache[ $in ];
373
+        return $cache[$in];
374 374
     }
375 375
 
376
-    public function filter_optimize_css_images( $in )
376
+    public function filter_optimize_css_images($in)
377 377
     {
378
-        $in = $this->normalize_img_url( $in );
378
+        $in = $this->normalize_img_url($in);
379 379
 
380
-        if ( $this->can_optimize_image( $in ) ) {
381
-            return $this->build_imgopt_url( $in, '', '' );
380
+        if ($this->can_optimize_image($in)) {
381
+            return $this->build_imgopt_url($in, '', '');
382 382
         } else {
383 383
             return $in;
384 384
         }
@@ -388,53 +388,53 @@  discard block
 block discarded – undo
388 388
     {
389 389
         static $imgopt_base_url = null;
390 390
 
391
-        if ( null === $imgopt_base_url ) {
391
+        if (null === $imgopt_base_url) {
392 392
             $imgopt_host     = $this->get_imgopt_host();
393 393
             $quality         = $this->get_img_quality_string();
394
-            $ret_val         = apply_filters( 'autoptimize_filter_imgopt_wait', 'ret_img' ); // values: ret_wait, ret_img, ret_json, ret_blank.
395
-            $imgopt_base_url = $imgopt_host . 'client/' . $quality . ',' . $ret_val;
396
-            $imgopt_base_url = apply_filters( 'autoptimize_filter_imgopt_base_url', $imgopt_base_url );
394
+            $ret_val         = apply_filters('autoptimize_filter_imgopt_wait', 'ret_img'); // values: ret_wait, ret_img, ret_json, ret_blank.
395
+            $imgopt_base_url = $imgopt_host.'client/'.$quality.','.$ret_val;
396
+            $imgopt_base_url = apply_filters('autoptimize_filter_imgopt_base_url', $imgopt_base_url);
397 397
         }
398 398
 
399 399
         return $imgopt_base_url;
400 400
     }
401 401
 
402
-    private function can_optimize_image( $url, $tag = '', $testing = false )
402
+    private function can_optimize_image($url, $tag = '', $testing = false)
403 403
     {
404 404
         static $cdn_url      = null;
405 405
         static $nopti_images = null;
406 406
 
407
-        if ( null === $cdn_url ) {
407
+        if (null === $cdn_url) {
408 408
             $cdn_url = apply_filters(
409 409
                 'autoptimize_filter_base_cdnurl',
410
-                autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url', '' )
410
+                autoptimizeOptionWrapper::get_option('autoptimize_cdn_url', '')
411 411
             );
412 412
         }
413 413
 
414
-        if ( null === $nopti_images || $testing ) {
415
-            if ( is_array( $this->options ) && array_key_exists( 'autoptimize_imgopt_text_field_6', $this->options ) ) {
414
+        if (null === $nopti_images || $testing) {
415
+            if (is_array($this->options) && array_key_exists('autoptimize_imgopt_text_field_6', $this->options)) {
416 416
                 $nopti_images = $this->options['autoptimize_imgopt_text_field_6'];
417 417
             }
418
-            $nopti_images = apply_filters( 'autoptimize_filter_imgopt_noptimize', $nopti_images );
418
+            $nopti_images = apply_filters('autoptimize_filter_imgopt_noptimize', $nopti_images);
419 419
         }
420 420
 
421 421
         $site_host  = AUTOPTIMIZE_SITE_DOMAIN;
422
-        $url        = $this->normalize_img_url( $url );
423
-        $url_parsed = parse_url( $url );
422
+        $url        = $this->normalize_img_url($url);
423
+        $url_parsed = parse_url($url);
424 424
 
425
-        if ( array_key_exists( 'host', $url_parsed ) && $url_parsed['host'] !== $site_host && empty( $cdn_url ) ) {
425
+        if (array_key_exists('host', $url_parsed) && $url_parsed['host'] !== $site_host && empty($cdn_url)) {
426 426
             return false;
427
-        } elseif ( ! empty( $cdn_url ) && strpos( $url, $cdn_url ) === false && array_key_exists( 'host', $url_parsed ) && $url_parsed['host'] !== $site_host ) {
427
+        } elseif (!empty($cdn_url) && strpos($url, $cdn_url) === false && array_key_exists('host', $url_parsed) && $url_parsed['host'] !== $site_host) {
428 428
             return false;
429
-        } elseif ( strpos( $url, '.php' ) !== false ) {
429
+        } elseif (strpos($url, '.php') !== false) {
430 430
             return false;
431
-        } elseif ( str_ireplace( array( '.png', '.gif', '.jpg', '.jpeg', '.webp', '.avif' ), '', $url_parsed['path'] ) === $url_parsed['path'] ) {
431
+        } elseif (str_ireplace(array('.png', '.gif', '.jpg', '.jpeg', '.webp', '.avif'), '', $url_parsed['path']) === $url_parsed['path']) {
432 432
             // fixme: better check against end of string.
433 433
             return false;
434
-        } elseif ( ! empty( $nopti_images ) ) {
435
-            $nopti_images_array = array_filter( array_map( 'trim', explode( ',', $nopti_images ) ) );
436
-            foreach ( $nopti_images_array as $nopti_image ) {
437
-                if ( strpos( $url, $nopti_image ) !== false || ( ( '' !== $tag && strpos( $tag, $nopti_image ) !== false ) ) ) {
434
+        } elseif (!empty($nopti_images)) {
435
+            $nopti_images_array = array_filter(array_map('trim', explode(',', $nopti_images)));
436
+            foreach ($nopti_images_array as $nopti_image) {
437
+                if (strpos($url, $nopti_image) !== false || (('' !== $tag && strpos($tag, $nopti_image) !== false))) {
438 438
                     return false;
439 439
                 }
440 440
             }
@@ -442,13 +442,13 @@  discard block
 block discarded – undo
442 442
         return true;
443 443
     }
444 444
 
445
-    private function build_imgopt_url( $orig_url, $width = 0, $height = 0 )
445
+    private function build_imgopt_url($orig_url, $width = 0, $height = 0)
446 446
     {
447 447
         // sanitize width and height.
448
-        if ( strpos( $width, '%' ) !== false ) {
448
+        if (strpos($width, '%') !== false) {
449 449
             $width = 0;
450 450
         }
451
-        if ( strpos( $height, '%' ) !== false ) {
451
+        if (strpos($height, '%') !== false) {
452 452
             $height = 0;
453 453
         }
454 454
         $width  = (int) $width;
@@ -462,46 +462,46 @@  discard block
 block discarded – undo
462 462
         );
463 463
 
464 464
         // If filter modified the url, return that.
465
-        if ( $filtered_url !== $orig_url ) {
465
+        if ($filtered_url !== $orig_url) {
466 466
             return $filtered_url;
467 467
         }
468 468
 
469
-        $orig_url        = $this->normalize_img_url( $orig_url );
469
+        $orig_url        = $this->normalize_img_url($orig_url);
470 470
         $imgopt_base_url = $this->get_imgopt_base_url();
471 471
         $imgopt_size     = '';
472 472
 
473
-        if ( $width && 0 !== $width ) {
474
-            $imgopt_size = ',w_' . $width;
473
+        if ($width && 0 !== $width) {
474
+            $imgopt_size = ',w_'.$width;
475 475
         }
476 476
 
477
-        if ( $height && 0 !== $height ) {
478
-            $imgopt_size .= ',h_' . $height;
477
+        if ($height && 0 !== $height) {
478
+            $imgopt_size .= ',h_'.$height;
479 479
         }
480 480
 
481
-        $url = $imgopt_base_url . $imgopt_size . '/' . $orig_url;
481
+        $url = $imgopt_base_url.$imgopt_size.'/'.$orig_url;
482 482
 
483 483
         return $url;
484 484
     }
485 485
 
486
-    public function replace_data_thumbs( $matches )
486
+    public function replace_data_thumbs($matches)
487 487
     {
488
-        return $this->replace_img_callback( $matches, 150, 150 );
488
+        return $this->replace_img_callback($matches, 150, 150);
489 489
     }
490 490
 
491
-    public function replace_img_callback( $matches, $width = 0, $height = 0 )
491
+    public function replace_img_callback($matches, $width = 0, $height = 0)
492 492
     {
493
-        $_normalized_img_url = $this->normalize_img_url( $matches[1] );
494
-        if ( $this->can_optimize_image( $matches[1], $matches[0] ) ) {
495
-            return str_replace( $matches[1], $this->build_imgopt_url( $_normalized_img_url, $width, $height ), $matches[0] );
493
+        $_normalized_img_url = $this->normalize_img_url($matches[1]);
494
+        if ($this->can_optimize_image($matches[1], $matches[0])) {
495
+            return str_replace($matches[1], $this->build_imgopt_url($_normalized_img_url, $width, $height), $matches[0]);
496 496
         } else {
497 497
             return $matches[0];
498 498
         }
499 499
     }
500 500
 
501
-    public function replace_icon_callback( $matches )
501
+    public function replace_icon_callback($matches)
502 502
     {
503
-        if ( array_key_exists( '2', $matches ) ) {
504
-            $sizes  = explode( 'x', $matches[2] );
503
+        if (array_key_exists('2', $matches)) {
504
+            $sizes  = explode('x', $matches[2]);
505 505
             $width  = $sizes[0];
506 506
             $height = $sizes[1];
507 507
         } else {
@@ -510,14 +510,14 @@  discard block
 block discarded – undo
510 510
         }
511 511
 
512 512
         // make sure we're not trying to optimize a *.ico file
513
-        if ( strpos( $matches[1], '.ico' ) === false ) {
514
-            return $this->replace_img_callback( $matches, $width, $height );
513
+        if (strpos($matches[1], '.ico') === false) {
514
+            return $this->replace_img_callback($matches, $width, $height);
515 515
         } else {
516 516
             return $matches[0];
517 517
         }
518 518
     }
519 519
 
520
-    public function filter_optimize_images( $in, $testing = false )
520
+    public function filter_optimize_images($in, $testing = false)
521 521
     {
522 522
         /*
523 523
          * potential future functional improvements:
@@ -527,7 +527,7 @@  discard block
 block discarded – undo
527 527
         $to_replace = array();
528 528
 
529 529
         // hide noscript tags to avoid nesting noscript tags (as lazyloaded images add noscript).
530
-        if ( $this->should_lazyload() ) {
530
+        if ($this->should_lazyload()) {
531 531
             $in = autoptimizeBase::replace_contents_with_marker_if_exists(
532 532
                 'SCRIPT',
533 533
                 '<script',
@@ -537,163 +537,163 @@  discard block
 block discarded – undo
537 537
         }
538 538
 
539 539
         // extract img tags.
540
-        if ( preg_match_all( '#<img[^>]*src[^>]*>#Usmi', $in, $matches ) ) {
541
-            foreach ( $matches[0] as $tag ) {
540
+        if (preg_match_all('#<img[^>]*src[^>]*>#Usmi', $in, $matches)) {
541
+            foreach ($matches[0] as $tag) {
542 542
                 $orig_tag = $tag;
543 543
                 $imgopt_w = '';
544 544
                 $imgopt_h = '';
545 545
 
546 546
                 // first do (data-)srcsets.
547
-                if ( preg_match_all( '#srcset=("|\')(.*)("|\')#Usmi', $tag, $allsrcsets, PREG_SET_ORDER ) ) {
548
-                    foreach ( $allsrcsets as $srcset ) {
547
+                if (preg_match_all('#srcset=("|\')(.*)("|\')#Usmi', $tag, $allsrcsets, PREG_SET_ORDER)) {
548
+                    foreach ($allsrcsets as $srcset) {
549 549
                         $srcset      = $srcset[2];
550 550
                         $orig_srcset = $srcset;
551
-                        $srcsets     = explode( ',', $srcset );
552
-                        foreach ( $srcsets as $indiv_srcset ) {
553
-                            $indiv_srcset_parts = explode( ' ', trim( $indiv_srcset ) );
554
-                            if ( isset( $indiv_srcset_parts[1] ) && rtrim( $indiv_srcset_parts[1], 'w' ) !== $indiv_srcset_parts[1] ) {
555
-                                $imgopt_w = rtrim( $indiv_srcset_parts[1], 'w' );
551
+                        $srcsets     = explode(',', $srcset);
552
+                        foreach ($srcsets as $indiv_srcset) {
553
+                            $indiv_srcset_parts = explode(' ', trim($indiv_srcset));
554
+                            if (isset($indiv_srcset_parts[1]) && rtrim($indiv_srcset_parts[1], 'w') !== $indiv_srcset_parts[1]) {
555
+                                $imgopt_w = rtrim($indiv_srcset_parts[1], 'w');
556 556
                             }
557
-                            if ( $this->can_optimize_image( $indiv_srcset_parts[0], $tag, $testing ) ) {
558
-                                $imgopt_url = $this->build_imgopt_url( $indiv_srcset_parts[0], $imgopt_w, '' );
559
-                                $srcset     = str_replace( $indiv_srcset_parts[0], $imgopt_url, $srcset );
557
+                            if ($this->can_optimize_image($indiv_srcset_parts[0], $tag, $testing)) {
558
+                                $imgopt_url = $this->build_imgopt_url($indiv_srcset_parts[0], $imgopt_w, '');
559
+                                $srcset     = str_replace($indiv_srcset_parts[0], $imgopt_url, $srcset);
560 560
                             }
561 561
                         }
562
-                        $tag = str_replace( $orig_srcset, $srcset, $tag );
562
+                        $tag = str_replace($orig_srcset, $srcset, $tag);
563 563
                     }
564 564
                 }
565 565
 
566 566
                 // proceed with img src.
567 567
                 // get width and height and add to $imgopt_size.
568
-                $_get_size = $this->get_size_from_tag( $tag );
568
+                $_get_size = $this->get_size_from_tag($tag);
569 569
                 $imgopt_w  = $_get_size['width'];
570 570
                 $imgopt_h  = $_get_size['height'];
571 571
 
572 572
                 // then start replacing images src.
573
-                if ( preg_match_all( '#src=(?:"|\')(?!data)(.*)(?:"|\')#Usmi', $tag, $urls, PREG_SET_ORDER ) ) {
574
-                    foreach ( $urls as $url ) {
573
+                if (preg_match_all('#src=(?:"|\')(?!data)(.*)(?:"|\')#Usmi', $tag, $urls, PREG_SET_ORDER)) {
574
+                    foreach ($urls as $url) {
575 575
                         $full_src_orig = $url[0];
576 576
                         $url           = $url[1];
577
-                        if ( $this->can_optimize_image( $url, $full_src_orig, $testing ) ) {
578
-                            $imgopt_url      = $this->build_imgopt_url( $url, $imgopt_w, $imgopt_h );
579
-                            $full_imgopt_src = str_replace( $url, $imgopt_url, $full_src_orig );
580
-                            $tag             = str_replace( $full_src_orig, $full_imgopt_src, $tag );
577
+                        if ($this->can_optimize_image($url, $full_src_orig, $testing)) {
578
+                            $imgopt_url      = $this->build_imgopt_url($url, $imgopt_w, $imgopt_h);
579
+                            $full_imgopt_src = str_replace($url, $imgopt_url, $full_src_orig);
580
+                            $tag             = str_replace($full_src_orig, $full_imgopt_src, $tag);
581 581
                         }
582 582
                     }
583 583
                 }
584 584
 
585 585
                 // do lazyload stuff.
586
-                if ( $this->should_lazyload( $in ) && ! empty( $url ) ) {
586
+                if ($this->should_lazyload($in) && !empty($url)) {
587 587
                     // first do lpiq placeholder logic.
588
-                    if ( strpos( $url, $this->get_imgopt_host() ) === 0 ) {
588
+                    if (strpos($url, $this->get_imgopt_host()) === 0) {
589 589
                         // if all img src have been replaced during srcset, we have to extract the
590 590
                         // origin url from the imgopt one to be able to set a lqip placeholder.
591
-                        $_url = substr( $url, strpos( $url, '/http' ) + 1 );
591
+                        $_url = substr($url, strpos($url, '/http') + 1);
592 592
                     } else {
593 593
                         $_url = $url;
594 594
                     }
595 595
 
596
-                    $_url = $this->normalize_img_url( $_url );
596
+                    $_url = $this->normalize_img_url($_url);
597 597
 
598 598
                     $placeholder = '';
599
-                    if ( $this->can_optimize_image( $_url, $tag ) && apply_filters( 'autoptimize_filter_imgopt_lazyload_dolqip', true, $_url ) ) {
599
+                    if ($this->can_optimize_image($_url, $tag) && apply_filters('autoptimize_filter_imgopt_lazyload_dolqip', true, $_url)) {
600 600
                         $lqip_w = '';
601 601
                         $lqip_h = '';
602
-                        if ( isset( $imgopt_w ) && ! empty( $imgopt_w ) ) {
603
-                            $lqip_w = ',w_' . $imgopt_w;
602
+                        if (isset($imgopt_w) && !empty($imgopt_w)) {
603
+                            $lqip_w = ',w_'.$imgopt_w;
604 604
                         }
605
-                        if ( isset( $imgopt_h ) && ! empty( $imgopt_h ) ) {
606
-                            $lqip_h = ',h_' . $imgopt_h;
605
+                        if (isset($imgopt_h) && !empty($imgopt_h)) {
606
+                            $lqip_h = ',h_'.$imgopt_h;
607 607
                         }
608
-                        $placeholder = $this->get_imgopt_host() . 'client/q_lqip,ret_wait' . $lqip_w . $lqip_h . '/' . $_url;
608
+                        $placeholder = $this->get_imgopt_host().'client/q_lqip,ret_wait'.$lqip_w.$lqip_h.'/'.$_url;
609 609
                     }
610 610
                     // then call add_lazyload-function with lpiq placeholder if set.
611
-                    $tag = $this->add_lazyload( $tag, $placeholder );
611
+                    $tag = $this->add_lazyload($tag, $placeholder);
612 612
                 }
613 613
 
614
-                if ( $tag !== $orig_tag ) {
614
+                if ($tag !== $orig_tag) {
615 615
                     // add filter to tag.
616
-                    $tag = apply_filters( 'autoptimize_filter_imgopt_tag_postopt', $tag );
616
+                    $tag = apply_filters('autoptimize_filter_imgopt_tag_postopt', $tag);
617 617
                     // and add tag to array for later replacement.
618
-                    $to_replace[ $orig_tag ] = $tag;
618
+                    $to_replace[$orig_tag] = $tag;
619 619
                 }
620 620
             }
621 621
         }
622 622
 
623 623
         // and replace all.
624
-        $out = str_replace( array_keys( $to_replace ), array_values( $to_replace ), $in );
624
+        $out = str_replace(array_keys($to_replace), array_values($to_replace), $in);
625 625
 
626 626
         // img thumbnails in e.g. woocommerce.
627
-        if ( strpos( $out, 'data-thumb' ) !== false && apply_filters( 'autoptimize_filter_imgopt_datathumbs', true ) ) {
627
+        if (strpos($out, 'data-thumb') !== false && apply_filters('autoptimize_filter_imgopt_datathumbs', true)) {
628 628
             $out = preg_replace_callback(
629 629
                 '/\<div(?:[^>]?)\sdata-thumb\=(?:\"|\')(.+?)(?:\"|\')(?:[^>]*)?\>/s',
630
-                array( $this, 'replace_data_thumbs' ),
630
+                array($this, 'replace_data_thumbs'),
631 631
                 $out
632 632
             );
633 633
         }
634 634
 
635 635
         // background-image in inline style.
636
-        if ( strpos( $out, 'background-image:' ) !== false && apply_filters( 'autoptimize_filter_imgopt_backgroundimages', true ) ) {
636
+        if (strpos($out, 'background-image:') !== false && apply_filters('autoptimize_filter_imgopt_backgroundimages', true)) {
637 637
             $out = preg_replace_callback(
638 638
                 '/style=(?:"|\')[^<>]*?background-image:\s?url\((?:"|\')?([^"\')]*)(?:"|\')?\)/',
639
-                array( $this, 'replace_img_callback' ),
639
+                array($this, 'replace_img_callback'),
640 640
                 $out
641 641
             );
642 642
         }
643 643
 
644 644
         // act on icon links.
645
-        if ( ( strpos( $out, '<link rel="icon"' ) !== false || ( strpos( $out, "<link rel='icon'" ) !== false ) ) && apply_filters( 'autoptimize_filter_imgopt_linkicon', true ) ) {
645
+        if ((strpos($out, '<link rel="icon"') !== false || (strpos($out, "<link rel='icon'") !== false)) && apply_filters('autoptimize_filter_imgopt_linkicon', true)) {
646 646
             $out = preg_replace_callback(
647 647
                 '/<link\srel=(?:"|\')(?:apple-touch-)?icon(?:"|\').*\shref=(?:"|\')(.*)(?:"|\')(?:\ssizes=(?:"|\')(\d*x\d*)(?:"|\'))?\s\/>/Um',
648
-                array( $this, 'replace_icon_callback' ),
648
+                array($this, 'replace_icon_callback'),
649 649
                 $out
650 650
             );
651 651
         }
652 652
 
653 653
         // lazyload: restore noscript tags + lazyload picture source tags and bgimage.
654
-        if ( $this->should_lazyload() ) {
654
+        if ($this->should_lazyload()) {
655 655
             $out = autoptimizeBase::restore_marked_content(
656 656
                 'SCRIPT',
657 657
                 $out
658 658
             );
659 659
 
660
-            $out = $this->process_picture_tag( $out, true, true );
661
-            $out = $this->process_bgimage( $out );
660
+            $out = $this->process_picture_tag($out, true, true);
661
+            $out = $this->process_bgimage($out);
662 662
         } else {
663
-            $out = $this->process_picture_tag( $out, true, false );
663
+            $out = $this->process_picture_tag($out, true, false);
664 664
         }
665 665
 
666 666
         return $out;
667 667
     }
668 668
 
669
-    public function get_size_from_tag( $tag ) {
669
+    public function get_size_from_tag($tag) {
670 670
         // reusable function to extract widht and height from an image tag
671 671
         // enforcing a filterable maximum width and height (default 4999X4999).
672 672
         $width  = '';
673 673
         $height = '';
674 674
 
675
-        if ( preg_match( '#width=("|\')(.*)("|\')#Usmi', $tag, $_width ) ) {
676
-            if ( strpos( $_width[2], '%' ) === false ) {
675
+        if (preg_match('#width=("|\')(.*)("|\')#Usmi', $tag, $_width)) {
676
+            if (strpos($_width[2], '%') === false) {
677 677
                 $width = (int) $_width[2];
678 678
             }
679 679
         }
680
-        if ( preg_match( '#height=("|\')(.*)("|\')#Usmi', $tag, $_height ) ) {
681
-            if ( strpos( $_height[2], '%' ) === false ) {
680
+        if (preg_match('#height=("|\')(.*)("|\')#Usmi', $tag, $_height)) {
681
+            if (strpos($_height[2], '%') === false) {
682 682
                 $height = (int) $_height[2];
683 683
             }
684 684
         }
685 685
 
686 686
         // check for and enforce (filterable) max sizes.
687
-        $_max_width = apply_filters( 'autoptimize_filter_imgopt_max_width', 4999 );
688
-        if ( $width > $_max_width ) {
687
+        $_max_width = apply_filters('autoptimize_filter_imgopt_max_width', 4999);
688
+        if ($width > $_max_width) {
689 689
             $_width = $_max_width;
690
-            $height = $_width / $width * $height;
690
+            $height = $_width/$width*$height;
691 691
             $width  = $_width;
692 692
         }
693
-        $_max_height = apply_filters( 'autoptimize_filter_imgopt_max_height', 4999 );
694
-        if ( $height > $_max_height ) {
693
+        $_max_height = apply_filters('autoptimize_filter_imgopt_max_height', 4999);
694
+        if ($height > $_max_height) {
695 695
             $_height = $_max_height;
696
-            $width   = $_height / $height * $width;
696
+            $width   = $_height/$height*$width;
697 697
             $height  = $_height;
698 698
         }
699 699
 
@@ -712,26 +712,26 @@  discard block
 block discarded – undo
712 712
         return $self->should_lazyload();
713 713
     }
714 714
 
715
-    public function should_lazyload( $context = '' ) {
716
-        if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_3'] ) && false === $this->check_nolazy() ) {
715
+    public function should_lazyload($context = '') {
716
+        if (!empty($this->options['autoptimize_imgopt_checkbox_field_3']) && false === $this->check_nolazy()) {
717 717
             $lazyload_return = true;
718 718
         } else {
719 719
             $lazyload_return = false;
720 720
         }
721
-        $lazyload_return = apply_filters( 'autoptimize_filter_imgopt_should_lazyload', $lazyload_return, $context );
721
+        $lazyload_return = apply_filters('autoptimize_filter_imgopt_should_lazyload', $lazyload_return, $context);
722 722
 
723 723
         return $lazyload_return;
724 724
     }
725 725
 
726 726
     public function check_nolazy() {
727
-        if ( array_key_exists( 'ao_nolazy', $_GET ) && '1' === $_GET['ao_nolazy'] ) {
727
+        if (array_key_exists('ao_nolazy', $_GET) && '1' === $_GET['ao_nolazy']) {
728 728
             return true;
729 729
         } else {
730 730
             return false;
731 731
         }
732 732
     }
733 733
 
734
-    public function filter_lazyload_images( $in )
734
+    public function filter_lazyload_images($in)
735 735
     {
736 736
         // only used is image optimization is NOT active but lazyload is.
737 737
         $to_replace = array();
@@ -745,20 +745,20 @@  discard block
 block discarded – undo
745 745
         );
746 746
 
747 747
         // extract img tags and add lazyload attribs.
748
-        if ( preg_match_all( '#<img[^>]*src[^>]*>#Usmi', $out, $matches ) ) {
749
-            foreach ( $matches[0] as $tag ) {
750
-                if ( $this->should_lazyload( $out ) ) {
751
-                    $to_replace[ $tag ] = $this->add_lazyload( $tag );
748
+        if (preg_match_all('#<img[^>]*src[^>]*>#Usmi', $out, $matches)) {
749
+            foreach ($matches[0] as $tag) {
750
+                if ($this->should_lazyload($out)) {
751
+                    $to_replace[$tag] = $this->add_lazyload($tag);
752 752
                 }
753 753
             }
754
-            $out = str_replace( array_keys( $to_replace ), array_values( $to_replace ), $out );
754
+            $out = str_replace(array_keys($to_replace), array_values($to_replace), $out);
755 755
         }
756 756
 
757 757
         // and also lazyload picture tag.
758
-        $out = $this->process_picture_tag( $out, false, true );
758
+        $out = $this->process_picture_tag($out, false, true);
759 759
 
760 760
         // and inline style blocks with background-image.
761
-        $out = $this->process_bgimage( $out );
761
+        $out = $this->process_bgimage($out);
762 762
 
763 763
         // restore noscript tags.
764 764
         $out = autoptimizeBase::restore_marked_content(
@@ -769,92 +769,92 @@  discard block
 block discarded – undo
769 769
         return $out;
770 770
     }
771 771
 
772
-    public function add_lazyload( $tag, $placeholder = '' ) {
772
+    public function add_lazyload($tag, $placeholder = '') {
773 773
         // adds actual lazyload-attributes to an image node.
774 774
         $this->lazyload_counter++;
775 775
 
776 776
         $_lazyload_from_nth = '';
777
-        if ( array_key_exists( 'autoptimize_imgopt_number_field_7', $this->options ) ) {
777
+        if (array_key_exists('autoptimize_imgopt_number_field_7', $this->options)) {
778 778
             $_lazyload_from_nth = $this->options['autoptimize_imgopt_number_field_7'];
779 779
         }
780
-        $_lazyload_from_nth = apply_filters( 'autoptimize_filter_imgopt_lazyload_from_nth', $_lazyload_from_nth );
780
+        $_lazyload_from_nth = apply_filters('autoptimize_filter_imgopt_lazyload_from_nth', $_lazyload_from_nth);
781 781
 
782
-        if ( str_ireplace( $this->get_lazyload_exclusions(), '', $tag ) === $tag && $this->lazyload_counter >= $_lazyload_from_nth ) {
783
-            $tag = $this->maybe_fix_missing_quotes( $tag );
782
+        if (str_ireplace($this->get_lazyload_exclusions(), '', $tag) === $tag && $this->lazyload_counter >= $_lazyload_from_nth) {
783
+            $tag = $this->maybe_fix_missing_quotes($tag);
784 784
 
785 785
             // store original tag for use in noscript version.
786
-            $noscript_tag = '<noscript>' . autoptimizeUtils::remove_id_from_node( $tag ) . '</noscript>';
786
+            $noscript_tag = '<noscript>'.autoptimizeUtils::remove_id_from_node($tag).'</noscript>';
787 787
 
788
-            $lazyload_class = apply_filters( 'autoptimize_filter_imgopt_lazyload_class', 'lazyload' );
788
+            $lazyload_class = apply_filters('autoptimize_filter_imgopt_lazyload_class', 'lazyload');
789 789
 
790 790
             // insert lazyload class.
791
-            $tag = $this->inject_classes_in_tag( $tag, "$lazyload_class " );
791
+            $tag = $this->inject_classes_in_tag($tag, "$lazyload_class ");
792 792
 
793
-            if ( ! $placeholder || empty( $placeholder ) ) {
793
+            if (!$placeholder || empty($placeholder)) {
794 794
                 // get image width & heigth for placeholder fun (and to prevent content reflow).
795
-                $_get_size = $this->get_size_from_tag( $tag );
795
+                $_get_size = $this->get_size_from_tag($tag);
796 796
                 $width     = $_get_size['width'];
797 797
                 $height    = $_get_size['height'];
798
-                if ( false === $width || empty( $width ) ) {
798
+                if (false === $width || empty($width)) {
799 799
                     $width = 210; // default width for SVG placeholder.
800 800
                 }
801
-                if ( false === $height || empty( $height ) ) {
802
-                    $height = $width / 3 * 2; // if no height, base it on width using the 3/2 aspect ratio.
801
+                if (false === $height || empty($height)) {
802
+                    $height = $width/3*2; // if no height, base it on width using the 3/2 aspect ratio.
803 803
                 }
804 804
 
805 805
                 // insert the actual lazyload stuff.
806 806
                 // see https://css-tricks.com/preventing-content-reflow-from-lazy-loaded-images/ for great read on why we're using empty svg's.
807
-                $placeholder = apply_filters( 'autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder( $width, $height ) );
807
+                $placeholder = apply_filters('autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder($width, $height));
808 808
             }
809 809
 
810
-            $tag = preg_replace( '/(\s)src=/', ' src=\'' . $placeholder . '\' data-src=', $tag );
811
-            $tag = preg_replace( '/(\s)srcset=/', ' data-srcset=', $tag );
810
+            $tag = preg_replace('/(\s)src=/', ' src=\''.$placeholder.'\' data-src=', $tag);
811
+            $tag = preg_replace('/(\s)srcset=/', ' data-srcset=', $tag);
812 812
 
813 813
             // move sizes to data-sizes unless filter says no.
814
-            if ( apply_filters( 'autoptimize_filter_imgopt_lazyload_move_sizes', true ) ) {
815
-                $tag = str_replace( ' sizes=', ' data-sizes=', $tag );
814
+            if (apply_filters('autoptimize_filter_imgopt_lazyload_move_sizes', true)) {
815
+                $tag = str_replace(' sizes=', ' data-sizes=', $tag);
816 816
             }
817 817
 
818 818
             // add the noscript-tag from earlier.
819
-            $tag = $noscript_tag . $tag;
820
-            $tag = apply_filters( 'autoptimize_filter_imgopt_lazyloaded_img', $tag );
819
+            $tag = $noscript_tag.$tag;
820
+            $tag = apply_filters('autoptimize_filter_imgopt_lazyloaded_img', $tag);
821 821
         }
822 822
 
823 823
         return $tag;
824 824
     }
825 825
 
826 826
     public function add_lazyload_js_footer() {
827
-        if ( false === autoptimizeMain::should_buffer() ) {
827
+        if (false === autoptimizeMain::should_buffer()) {
828 828
             return;
829 829
         }
830 830
 
831 831
         // The JS will by default be excluded form autoptimization but this can be changed with a filter.
832 832
         $noptimize_flag = '';
833
-        if ( apply_filters( 'autoptimize_filter_imgopt_lazyload_js_noptimize', true ) ) {
833
+        if (apply_filters('autoptimize_filter_imgopt_lazyload_js_noptimize', true)) {
834 834
             $noptimize_flag = ' data-noptimize="1"';
835 835
         }
836 836
 
837
-        $lazysizes_js = plugins_url( 'external/js/lazysizes.min.js?ao_version=' . AUTOPTIMIZE_PLUGIN_VERSION, __FILE__ );
837
+        $lazysizes_js = plugins_url('external/js/lazysizes.min.js?ao_version='.AUTOPTIMIZE_PLUGIN_VERSION, __FILE__);
838 838
         $cdn_url      = $this->get_cdn_url();
839
-        if ( ! empty( $cdn_url ) ) {
840
-            $cdn_url      = rtrim( $cdn_url, '/' );
841
-            $lazysizes_js = str_replace( AUTOPTIMIZE_WP_SITE_URL, $cdn_url, $lazysizes_js );
839
+        if (!empty($cdn_url)) {
840
+            $cdn_url      = rtrim($cdn_url, '/');
841
+            $lazysizes_js = str_replace(AUTOPTIMIZE_WP_SITE_URL, $cdn_url, $lazysizes_js);
842 842
         }
843 843
 
844 844
         $type_js = '';
845
-        if ( apply_filters( 'autoptimize_filter_cssjs_addtype', false ) ) {
845
+        if (apply_filters('autoptimize_filter_cssjs_addtype', false)) {
846 846
             $type_js = ' type="text/javascript"';
847 847
         }
848 848
 
849 849
         // Adds lazyload CSS & JS to footer, using echo because wp_enqueue_script seems not to support pushing attributes (async).
850
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_cssoutput', '<noscript><style>.lazyload{display:none;}</style></noscript>' );
851
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_jsconfig', '<script' . $type_js . $noptimize_flag . '>window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script>' );
852
-        echo apply_filters( 'autoptimize_filter_imgopt_lazyload_js', '<script async' . $type_js . $noptimize_flag . ' src=\'' . $lazysizes_js . '\'></script>' );
850
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_cssoutput', '<noscript><style>.lazyload{display:none;}</style></noscript>');
851
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_jsconfig', '<script'.$type_js.$noptimize_flag.'>window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script>');
852
+        echo apply_filters('autoptimize_filter_imgopt_lazyload_js', '<script async'.$type_js.$noptimize_flag.' src=\''.$lazysizes_js.'\'></script>');
853 853
 
854 854
         // And add webp detection and loading JS.
855
-        if ( $this->should_ngimg() ) {
855
+        if ($this->should_ngimg()) {
856 856
             // Add AVIF code, can be disabled for now to only do webp.
857
-            if ( apply_filters( 'autoptimize_filter_imgopt_do_avif', true ) ) {
857
+            if (apply_filters('autoptimize_filter_imgopt_do_avif', true)) {
858 858
                 $_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");';
859 859
                 $_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+","))})});';
860 860
             } else {
@@ -862,8 +862,8 @@  discard block
 block discarded – undo
862 862
                 $_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,'))})});";
863 863
             }
864 864
             // Keeping autoptimize_filter_imgopt_webp_js filter for now, but it is deprecated as not only for webp any more.
865
-            $_ngimg_output = apply_filters( 'autoptimize_filter_imgopt_webp_js', '<script' . $type_js . $noptimize_flag . '>' . $_ngimg_detect . $_ngimg_load . '</script>' );
866
-            echo apply_filters( 'autoptimize_filter_imgopt_ngimg_js', $_ngimg_output );
865
+            $_ngimg_output = apply_filters('autoptimize_filter_imgopt_webp_js', '<script'.$type_js.$noptimize_flag.'>'.$_ngimg_detect.$_ngimg_load.'</script>');
866
+            echo apply_filters('autoptimize_filter_imgopt_ngimg_js', $_ngimg_output);
867 867
         }
868 868
     }
869 869
 
@@ -871,10 +871,10 @@  discard block
 block discarded – undo
871 871
         // getting CDN url here to avoid having to make bigger changes to autoptimizeBase.
872 872
         static $cdn_url = null;
873 873
 
874
-        if ( null === $cdn_url ) {
875
-            $cdn_url = autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url', '' );
876
-            $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed( $cdn_url );
877
-            $cdn_url = apply_filters( 'autoptimize_filter_base_cdnurl', $cdn_url );
874
+        if (null === $cdn_url) {
875
+            $cdn_url = autoptimizeOptionWrapper::get_option('autoptimize_cdn_url', '');
876
+            $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed($cdn_url);
877
+            $cdn_url = apply_filters('autoptimize_filter_base_cdnurl', $cdn_url);
878 878
         }
879 879
 
880 880
         return $cdn_url;
@@ -884,47 +884,47 @@  discard block
 block discarded – undo
884 884
         // returns array of strings that if found in an <img tag will stop the img from being lazy-loaded.
885 885
         static $exclude_lazyload_array = null;
886 886
 
887
-        if ( null === $exclude_lazyload_array ) {
887
+        if (null === $exclude_lazyload_array) {
888 888
             $options = $this->options;
889 889
 
890 890
             // set default exclusions.
891
-            $exclude_lazyload_array = array( 'skip-lazy', 'data-no-lazy', 'notlazy', 'data-src', 'data-srcset', 'data:image/', 'data-lazyload', 'rev-slidebg', 'loading="eager"' );
891
+            $exclude_lazyload_array = array('skip-lazy', 'data-no-lazy', 'notlazy', 'data-src', 'data-srcset', 'data:image/', 'data-lazyload', 'rev-slidebg', 'loading="eager"');
892 892
 
893 893
             // add from setting.
894
-            if ( array_key_exists( 'autoptimize_imgopt_text_field_5', $options ) ) {
894
+            if (array_key_exists('autoptimize_imgopt_text_field_5', $options)) {
895 895
                 $exclude_lazyload_option = $options['autoptimize_imgopt_text_field_5'];
896
-                if ( ! empty( $exclude_lazyload_option ) ) {
897
-                    $exclude_lazyload_array = array_merge( $exclude_lazyload_array, array_filter( array_map( 'trim', explode( ',', $options['autoptimize_imgopt_text_field_5'] ) ) ) );
896
+                if (!empty($exclude_lazyload_option)) {
897
+                    $exclude_lazyload_array = array_merge($exclude_lazyload_array, array_filter(array_map('trim', explode(',', $options['autoptimize_imgopt_text_field_5']))));
898 898
                 }
899 899
             }
900 900
 
901 901
             // and filter for developer-initiated changes.
902
-            $exclude_lazyload_array = apply_filters( 'autoptimize_filter_imgopt_lazyload_exclude_array', $exclude_lazyload_array );
902
+            $exclude_lazyload_array = apply_filters('autoptimize_filter_imgopt_lazyload_exclude_array', $exclude_lazyload_array);
903 903
         }
904 904
 
905 905
         return $exclude_lazyload_array;
906 906
     }
907 907
 
908
-    public function inject_classes_in_tag( $tag, $target_class ) {
909
-        if ( strpos( $tag, 'class=' ) !== false ) {
910
-            $tag = preg_replace( '/(\sclass\s?=\s?("|\'))/', '$1' . $target_class, $tag );
908
+    public function inject_classes_in_tag($tag, $target_class) {
909
+        if (strpos($tag, 'class=') !== false) {
910
+            $tag = preg_replace('/(\sclass\s?=\s?("|\'))/', '$1'.$target_class, $tag);
911 911
         } else {
912
-            $tag = preg_replace( '/(<[a-zA-Z]*)\s/', '$1 class="' . trim( $target_class ) . '" ', $tag );
912
+            $tag = preg_replace('/(<[a-zA-Z]*)\s/', '$1 class="'.trim($target_class).'" ', $tag);
913 913
         }
914 914
 
915 915
         return $tag;
916 916
     }
917 917
 
918
-    public function get_default_lazyload_placeholder( $imgopt_w, $imgopt_h ) {
919
-        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';
918
+    public function get_default_lazyload_placeholder($imgopt_w, $imgopt_h) {
919
+        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';
920 920
     }
921 921
 
922 922
     public function should_ngimg() {
923 923
         static $ngimg_return = null;
924 924
 
925
-        if ( is_null( $ngimg_return ) ) {
925
+        if (is_null($ngimg_return)) {
926 926
             // webp only works if imgopt and lazyload are also active.
927
-            if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_4'] ) && ! empty( $this->options['autoptimize_imgopt_checkbox_field_3'] ) && $this->imgopt_active() ) {
927
+            if (!empty($this->options['autoptimize_imgopt_checkbox_field_4']) && !empty($this->options['autoptimize_imgopt_checkbox_field_3']) && $this->imgopt_active()) {
928 928
                 $ngimg_return = true;
929 929
             } else {
930 930
                 $ngimg_return = false;
@@ -934,9 +934,9 @@  discard block
 block discarded – undo
934 934
         return $ngimg_return;
935 935
     }
936 936
 
937
-    public function process_picture_tag( $in, $imgopt = false, $lazy = false ) {
937
+    public function process_picture_tag($in, $imgopt = false, $lazy = false) {
938 938
         // check if "<picture" is present and if filter allows us to process <picture>.
939
-        if ( strpos( $in, '<picture' ) === false || apply_filters( 'autoptimize_filter_imgopt_dopicture', true ) === false ) {
939
+        if (strpos($in, '<picture') === false || apply_filters('autoptimize_filter_imgopt_dopicture', true) === false) {
940 940
             return $in;
941 941
         }
942 942
 
@@ -944,37 +944,37 @@  discard block
 block discarded – undo
944 944
         $to_replace_pict = array();
945 945
 
946 946
         // extract and process each picture-node.
947
-        preg_match_all( '#<picture.*</picture>#Usmi', $in, $_pictures, PREG_SET_ORDER );
948
-        foreach ( $_pictures as $_picture ) {
949
-            $_picture = $this->maybe_fix_missing_quotes( $_picture );
950
-            if ( strpos( $_picture[0], '<source ' ) !== false && preg_match_all( '#<source .*srcset=(?:"|\')(?!data)(.*)(?:"|\').*>#Usmi', $_picture[0], $_sources, PREG_SET_ORDER ) !== false ) {
951
-                foreach ( $_sources as $_source ) {
947
+        preg_match_all('#<picture.*</picture>#Usmi', $in, $_pictures, PREG_SET_ORDER);
948
+        foreach ($_pictures as $_picture) {
949
+            $_picture = $this->maybe_fix_missing_quotes($_picture);
950
+            if (strpos($_picture[0], '<source ') !== false && preg_match_all('#<source .*srcset=(?:"|\')(?!data)(.*)(?:"|\').*>#Usmi', $_picture[0], $_sources, PREG_SET_ORDER) !== false) {
951
+                foreach ($_sources as $_source) {
952 952
                     $_picture_replacement = $_source[0];
953 953
 
954 954
                     // should we optimize the image?
955
-                    if ( $imgopt && $this->can_optimize_image( $_source[1], $_picture[0] ) ) {
956
-                        $_picture_replacement = str_replace( $_source[1], $this->build_imgopt_url( $_source[1] ), $_picture_replacement );
955
+                    if ($imgopt && $this->can_optimize_image($_source[1], $_picture[0])) {
956
+                        $_picture_replacement = str_replace($_source[1], $this->build_imgopt_url($_source[1]), $_picture_replacement);
957 957
                     }
958 958
                     // should we lazy-load?
959
-                    if ( $lazy && $this->should_lazyload() && str_ireplace( $_exclusions, '', $_picture_replacement ) === $_picture_replacement ) {
960
-                        $_picture_replacement = str_replace( ' srcset=', ' data-srcset=', $_picture_replacement );
959
+                    if ($lazy && $this->should_lazyload() && str_ireplace($_exclusions, '', $_picture_replacement) === $_picture_replacement) {
960
+                        $_picture_replacement = str_replace(' srcset=', ' data-srcset=', $_picture_replacement);
961 961
                     }
962
-                    $to_replace_pict[ $_source[0] ] = $_picture_replacement;
962
+                    $to_replace_pict[$_source[0]] = $_picture_replacement;
963 963
                 }
964 964
             }
965 965
         }
966 966
 
967 967
         // and return the fully procesed $in.
968
-        $out = str_replace( array_keys( $to_replace_pict ), array_values( $to_replace_pict ), $in );
968
+        $out = str_replace(array_keys($to_replace_pict), array_values($to_replace_pict), $in);
969 969
 
970 970
         return $out;
971 971
     }
972 972
 
973
-    public function process_bgimage( $in ) {
974
-        if ( strpos( $in, 'background-image:' ) !== false && apply_filters( 'autoptimize_filter_imgopt_lazyload_backgroundimages', true ) ) {
973
+    public function process_bgimage($in) {
974
+        if (strpos($in, 'background-image:') !== false && apply_filters('autoptimize_filter_imgopt_lazyload_backgroundimages', true)) {
975 975
             $out = preg_replace_callback(
976 976
                 '/(<(?:article|aside|body|div|footer|header|p|section|table)[^>]*)\sstyle=(?:"|\')[^<>]*?background-image:\s?url\((?:"|\')?([^"\')]*)(?:"|\')?\)[^>]*/',
977
-                array( $this, 'lazyload_bgimg_callback' ),
977
+                array($this, 'lazyload_bgimg_callback'),
978 978
                 $in
979 979
             );
980 980
             return $out;
@@ -982,27 +982,27 @@  discard block
 block discarded – undo
982 982
         return $in;
983 983
     }
984 984
 
985
-    public function lazyload_bgimg_callback( $matches ) {
986
-        if ( str_ireplace( $this->get_lazyload_exclusions(), '', $matches[0] ) === $matches[0] ) {
985
+    public function lazyload_bgimg_callback($matches) {
986
+        if (str_ireplace($this->get_lazyload_exclusions(), '', $matches[0]) === $matches[0]) {
987 987
             // get placeholder & lazyload class strings.
988
-            $placeholder    = apply_filters( 'autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder( 500, 300 ) );
989
-            $lazyload_class = apply_filters( 'autoptimize_filter_imgopt_lazyload_class', 'lazyload' );
988
+            $placeholder    = apply_filters('autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder(500, 300));
989
+            $lazyload_class = apply_filters('autoptimize_filter_imgopt_lazyload_class', 'lazyload');
990 990
             // replace background-image URL with SVG placeholder.
991
-            $out = str_replace( $matches[2], $placeholder, $matches[0] );
991
+            $out = str_replace($matches[2], $placeholder, $matches[0]);
992 992
             // add data-bg attribute with real background-image URL for lazyload to pick up.
993
-            $out = str_replace( $matches[1], $matches[1] . ' data-bg="' . trim( str_replace( array( "\r\n", '&quot;' ), '', $matches[2] ) ) . '"', $out );
993
+            $out = str_replace($matches[1], $matches[1].' data-bg="'.trim(str_replace(array("\r\n", '&quot;'), '', $matches[2])).'"', $out);
994 994
             // add lazyload class to tag.
995
-            $out = $this->inject_classes_in_tag( $out, "$lazyload_class " );
995
+            $out = $this->inject_classes_in_tag($out, "$lazyload_class ");
996 996
             return $out;
997 997
         }
998 998
         return $matches[0];
999 999
     }
1000 1000
 
1001
-    public function maybe_fix_missing_quotes( $tag_in ) {
1001
+    public function maybe_fix_missing_quotes($tag_in) {
1002 1002
         // 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.
1003
-        if ( file_exists( WP_PLUGIN_DIR . '/w3-total-cache/w3-total-cache.php' ) && class_exists( 'Minify_HTML' ) && apply_filters( 'autoptimize_filter_imgopt_fixquotes', true ) ) {
1004
-            $tag_out = preg_replace( '/class\s?=([^("|\')]*)(\s|>)/U', 'class=\'$1\'$2', $tag_in );
1005
-            $tag_out = preg_replace( '/\s(width|height)=(?:"|\')?([^\s"\'>]*)(?:"|\')?/', ' $1=\'$2\'', $tag_out );
1003
+        if (file_exists(WP_PLUGIN_DIR.'/w3-total-cache/w3-total-cache.php') && class_exists('Minify_HTML') && apply_filters('autoptimize_filter_imgopt_fixquotes', true)) {
1004
+            $tag_out = preg_replace('/class\s?=([^("|\')]*)(\s|>)/U', 'class=\'$1\'$2', $tag_in);
1005
+            $tag_out = preg_replace('/\s(width|height)=(?:"|\')?([^\s"\'>]*)(?:"|\')?/', ' $1=\'$2\'', $tag_out);
1006 1006
             return $tag_out;
1007 1007
         } else {
1008 1008
             return $tag_in;
@@ -1015,23 +1015,23 @@  discard block
 block discarded – undo
1015 1015
     public function imgopt_admin_menu()
1016 1016
     {
1017 1017
         // no acces if multisite and not network admin and no site config allowed.
1018
-        if ( autoptimizeConfig::should_show_menu_tabs() ) {
1018
+        if (autoptimizeConfig::should_show_menu_tabs()) {
1019 1019
             add_submenu_page(
1020 1020
                 null,
1021 1021
                 'autoptimize_imgopt',
1022 1022
                 'autoptimize_imgopt',
1023 1023
                 'manage_options',
1024 1024
                 'autoptimize_imgopt',
1025
-                array( $this, 'imgopt_options_page' )
1025
+                array($this, 'imgopt_options_page')
1026 1026
             );
1027 1027
         }
1028
-        register_setting( 'autoptimize_imgopt_settings', 'autoptimize_imgopt_settings' );
1028
+        register_setting('autoptimize_imgopt_settings', 'autoptimize_imgopt_settings');
1029 1029
     }
1030 1030
 
1031
-    public function add_imgopt_tab( $in )
1031
+    public function add_imgopt_tab($in)
1032 1032
     {
1033
-        if ( autoptimizeConfig::should_show_menu_tabs() ) {
1034
-            $in = array_merge( $in, array( 'autoptimize_imgopt' => __( 'Images', 'autoptimize' ) ) );
1033
+        if (autoptimizeConfig::should_show_menu_tabs()) {
1034
+            $in = array_merge($in, array('autoptimize_imgopt' => __('Images', 'autoptimize')));
1035 1035
         }
1036 1036
 
1037 1037
         return $in;
@@ -1040,7 +1040,7 @@  discard block
 block discarded – undo
1040 1040
     public function imgopt_options_page()
1041 1041
     {
1042 1042
         // Check querystring for "refreshCacheChecker" and call cachechecker if so.
1043
-        if ( array_key_exists( 'refreshImgProvStats', $_GET ) && 1 == $_GET['refreshImgProvStats'] ) {
1043
+        if (array_key_exists('refreshImgProvStats', $_GET) && 1 == $_GET['refreshImgProvStats']) {
1044 1044
             $this->query_img_provider_stats();
1045 1045
         }
1046 1046
 
@@ -1052,47 +1052,47 @@  discard block
 block discarded – undo
1052 1052
         #ao_settings_form .form-table th {font-weight: normal;}
1053 1053
         #autoptimize_imgopt_descr{font-size: 120%;}
1054 1054
     </style>
1055
-    <script>document.title = "Autoptimize: <?php _e( 'Images', 'autoptimize' ); ?> " + document.title;</script>
1055
+    <script>document.title = "Autoptimize: <?php _e('Images', 'autoptimize'); ?> " + document.title;</script>
1056 1056
     <div class="wrap">
1057
-    <h1><?php _e( 'Autoptimize Settings', 'autoptimize' ); ?></h1>
1057
+    <h1><?php _e('Autoptimize Settings', 'autoptimize'); ?></h1>
1058 1058
         <?php echo autoptimizeConfig::ao_admin_tabs(); ?>
1059
-        <?php if ( 'down' === $options['availabilities']['extra_imgopt']['status'] ) { ?>
1059
+        <?php if ('down' === $options['availabilities']['extra_imgopt']['status']) { ?>
1060 1060
             <div class="notice-warning notice"><p>
1061 1061
             <?php
1062 1062
             // translators: "Autoptimize support forum" will appear in a "a href".
1063
-            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>' );
1063
+            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>');
1064 1064
             ?>
1065 1065
             </p></div>
1066 1066
         <?php } ?>
1067 1067
 
1068
-        <?php if ( 'launch' === $options['availabilities']['extra_imgopt']['status'] && ! autoptimizeImages::instance()->launch_ok() ) { ?>
1068
+        <?php if ('launch' === $options['availabilities']['extra_imgopt']['status'] && !autoptimizeImages::instance()->launch_ok()) { ?>
1069 1069
             <div class="notice-warning notice"><p>
1070
-            <?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' ); ?>
1070
+            <?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'); ?>
1071 1071
             </p></div>
1072 1072
         <?php } ?>
1073 1073
 
1074
-        <?php if ( class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'get_active_modules' ) && in_array( 'photon', Jetpack::get_active_modules() ) ) { ?>
1074
+        <?php if (class_exists('Jetpack') && method_exists('Jetpack', 'get_active_modules') && in_array('photon', Jetpack::get_active_modules())) { ?>
1075 1075
             <div class="notice-warning notice"><p>
1076 1076
             <?php
1077 1077
             // translators: "disable  Jetpack's site accelerator for images" will appear in a "a href" linking to the jetpack settings page.
1078
-            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>' );
1078
+            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>');
1079 1079
             ?>
1080 1080
             </p></div>
1081 1081
         <?php } ?>
1082
-    <form id='ao_settings_form' action='<?php echo admin_url( 'options.php' ); ?>' method='post'>
1083
-        <?php settings_fields( 'autoptimize_imgopt_settings' ); ?>
1084
-        <h2><?php _e( 'Image optimization', 'autoptimize' ); ?></h2>
1085
-        <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>
1082
+    <form id='ao_settings_form' action='<?php echo admin_url('options.php'); ?>' method='post'>
1083
+        <?php settings_fields('autoptimize_imgopt_settings'); ?>
1084
+        <h2><?php _e('Image optimization', 'autoptimize'); ?></h2>
1085
+        <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>
1086 1086
         <table class="form-table">
1087 1087
             <tr>
1088
-                <th scope="row"><?php _e( 'Optimize Images', 'autoptimize' ); ?></th>
1088
+                <th scope="row"><?php _e('Optimize Images', 'autoptimize'); ?></th>
1089 1089
                 <td>
1090
-                    <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>
1090
+                    <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>
1091 1091
                     <?php
1092 1092
                     // show shortpixel status.
1093 1093
                     $_notice = autoptimizeImages::instance()->get_imgopt_status_notice();
1094
-                    if ( $_notice ) {
1095
-                        switch ( $_notice['status'] ) {
1094
+                    if ($_notice) {
1095
+                        switch ($_notice['status']) {
1096 1096
                             case 2:
1097 1097
                                 $_notice_color = 'green';
1098 1098
                                 break;
@@ -1107,35 +1107,35 @@  discard block
 block discarded – undo
1107 1107
                             default:
1108 1108
                                 $_notice_color = 'green';
1109 1109
                         }
1110
-                        echo apply_filters( 'autoptimize_filter_imgopt_settings_status', '<p><strong><span style="color:' . $_notice_color . ';">' . __( 'Shortpixel status: ', 'autoptimize' ) . '</span></strong>' . $_notice['notice'] . '</p>' );
1110
+                        echo apply_filters('autoptimize_filter_imgopt_settings_status', '<p><strong><span style="color:'.$_notice_color.';">'.__('Shortpixel status: ', 'autoptimize').'</span></strong>'.$_notice['notice'].'</p>');
1111 1111
                     } else {
1112 1112
                         // translators: link points to shortpixel.
1113
-                        $upsell_msg_1 = '<p>' . sprintf( __( 'Get more Google love and improve your website\'s loading speed by having your publicly available images optimized on the fly (also in the "next-gen" WebP and AVIF image format) by %1$sShortPixel%2$s and then cached and served fast from Shortpixel\'s global CDN.', 'autoptimize' ), '<a href="https://shortpixel.com/aospai' . $sp_url_suffix . '" target="_blank">', '</a>' );
1114
-                        if ( 'launch' === $options['availabilities']['extra_imgopt']['status'] ) {
1115
-                            $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' );
1113
+                        $upsell_msg_1 = '<p>'.sprintf(__('Get more Google love and improve your website\'s loading speed by having your publicly available images optimized on the fly (also in the "next-gen" WebP and AVIF image format) by %1$sShortPixel%2$s and then cached and served fast from Shortpixel\'s global CDN.', 'autoptimize'), '<a href="https://shortpixel.com/aospai'.$sp_url_suffix.'" target="_blank">', '</a>');
1114
+                        if ('launch' === $options['availabilities']['extra_imgopt']['status']) {
1115
+                            $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');
1116 1116
                         } else {
1117 1117
                             // translators: link points to shortpixel.
1118
-                            $upsell_msg_2 = sprintf( __( '%1$sSign-up now%2$s to receive extra traffic or image optimization credits for free. You\'ll also receive +50&percnt; more CDN traffic or image optimization credits regardless for any future plan that you\'ll choose to purchase.', 'autoptimize' ), '<a href="https://shortpixel.com/aospai' . $sp_url_suffix . '" target="_blank">', '</a>' );
1118
+                            $upsell_msg_2 = sprintf(__('%1$sSign-up now%2$s to receive extra traffic or image optimization credits for free. You\'ll also receive +50&percnt; more CDN traffic or image optimization credits regardless for any future plan that you\'ll choose to purchase.', 'autoptimize'), '<a href="https://shortpixel.com/aospai'.$sp_url_suffix.'" target="_blank">', '</a>');
1119 1119
                         }
1120
-                        echo apply_filters( 'autoptimize_imgopt_imgopt_settings_copy', $upsell_msg_1 . ' ' . $upsell_msg_2 . '</p>' );
1120
+                        echo apply_filters('autoptimize_imgopt_imgopt_settings_copy', $upsell_msg_1.' '.$upsell_msg_2.'</p>');
1121 1121
                     }
1122 1122
                     // translators: link points to shortpixel FAQ.
1123
-                    $faqcopy = sprintf( __( '<strong>Questions</strong>? Have a look at the %1$sShortPixel FAQ%2$s!', 'autoptimize' ), '<strong><a href="https://help.shortpixel.com/category/405-autoptimize" target="_blank">', '</strong></a>' );
1124
-                    $faqcopy = $faqcopy . ' ' . __( 'Only works for sites/ images that are publicly available.', 'autoptimize' );
1123
+                    $faqcopy = sprintf(__('<strong>Questions</strong>? Have a look at the %1$sShortPixel FAQ%2$s!', 'autoptimize'), '<strong><a href="https://help.shortpixel.com/category/405-autoptimize" target="_blank">', '</strong></a>');
1124
+                    $faqcopy = $faqcopy.' '.__('Only works for sites/ images that are publicly available.', 'autoptimize');
1125 1125
                     // translators: links points to shortpixel TOS & Privacy Policy.
1126
-                    $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>' );
1127
-                    echo apply_filters( 'autoptimize_imgopt_imgopt_settings_tos', '<p>' . $faqcopy . ' ' . $toscopy . '</p>' );
1126
+                    $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>');
1127
+                    echo apply_filters('autoptimize_imgopt_imgopt_settings_tos', '<p>'.$faqcopy.' '.$toscopy.'</p>');
1128 1128
                     ?>
1129 1129
                 </td>
1130 1130
             </tr>
1131
-            <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"'; } ?>>
1132
-                <th scope="row"><?php _e( 'Optimization exclusions', 'autoptimize' ); ?></th>
1131
+            <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"'; } ?>>
1132
+                <th scope="row"><?php _e('Optimization exclusions', 'autoptimize'); ?></th>
1133 1133
                 <td>
1134
-                    <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>
1134
+                    <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>
1135 1135
                 </td>
1136 1136
             </tr>
1137
-            <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"'; } ?>>
1138
-                <th scope="row"><?php _e( 'Image Optimization quality', 'autoptimize' ); ?></th>
1137
+            <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"'; } ?>>
1138
+                <th scope="row"><?php _e('Image Optimization quality', 'autoptimize'); ?></th>
1139 1139
                 <td>
1140 1140
                     <label>
1141 1141
                     <select name='autoptimize_imgopt_settings[autoptimize_imgopt_select_field_2]'>
@@ -1143,12 +1143,12 @@  discard block
 block discarded – undo
1143 1143
                         $_imgopt_array = autoptimizeImages::instance()->get_img_quality_array();
1144 1144
                         $_imgopt_val   = autoptimizeImages::instance()->get_img_quality_setting();
1145 1145
 
1146
-                        foreach ( $_imgopt_array as $key => $value ) {
1147
-                            echo '<option value="' . $key . '"';
1148
-                            if ( $_imgopt_val == $key ) {
1146
+                        foreach ($_imgopt_array as $key => $value) {
1147
+                            echo '<option value="'.$key.'"';
1148
+                            if ($_imgopt_val == $key) {
1149 1149
                                 echo ' selected';
1150 1150
                             }
1151
-                            echo '>' . ucfirst( $value ) . '</option>';
1151
+                            echo '>'.ucfirst($value).'</option>';
1152 1152
                         }
1153 1153
                         echo "\n";
1154 1154
                         ?>
@@ -1157,37 +1157,37 @@  discard block
 block discarded – undo
1157 1157
                     <p>
1158 1158
                         <?php
1159 1159
                             // translators: link points to shortpixel image test page.
1160
-                            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>' ) );
1160
+                            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>'));
1161 1161
                         ?>
1162 1162
                     </p>
1163 1163
                 </td>
1164 1164
             </tr>
1165
-            <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"'; } ?>>
1166
-                <th scope="row"><?php _e( 'Load WebP or AVIF in supported browsers?', 'autoptimize' ); ?></th>
1165
+            <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"'; } ?>>
1166
+                <th scope="row"><?php _e('Load WebP or AVIF in supported browsers?', 'autoptimize'); ?></th>
1167 1167
                 <td>
1168
-                    <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>
1168
+                    <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>
1169 1169
                 </td>
1170 1170
             </tr>
1171 1171
             <tr>
1172
-                <th scope="row"><?php _e( 'Lazy-load images?', 'autoptimize' ); ?></th>
1172
+                <th scope="row"><?php _e('Lazy-load images?', 'autoptimize'); ?></th>
1173 1173
                 <td>
1174
-                    <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>
1174
+                    <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>
1175 1175
                 </td>
1176 1176
             </tr>
1177
-            <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"'; } ?>>
1178
-                <th scope="row"><?php _e( 'Lazy-load exclusions', 'autoptimize' ); ?></th>
1177
+            <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"'; } ?>>
1178
+                <th scope="row"><?php _e('Lazy-load exclusions', 'autoptimize'); ?></th>
1179 1179
                 <td>
1180
-                    <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>
1180
+                    <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>
1181 1181
                 </td>
1182 1182
             </tr>
1183
-            <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"'; } ?>>
1184
-                <th scope="row"><?php _e( 'Lazy-load from nth image', 'autoptimize' ); ?></th>
1183
+            <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"'; } ?>>
1184
+                <th scope="row"><?php _e('Lazy-load from nth image', 'autoptimize'); ?></th>
1185 1185
                 <td>
1186
-                    <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>
1186
+                    <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>
1187 1187
                 </td>
1188 1188
             </tr>
1189 1189
         </table>
1190
-        <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e( 'Save Changes', 'autoptimize' ); ?>" /></p>
1190
+        <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Changes', 'autoptimize'); ?>" /></p>
1191 1191
     </form>
1192 1192
     <script>
1193 1193
         jQuery(document).ready(function() {
@@ -1225,50 +1225,50 @@  discard block
 block discarded – undo
1225 1225
      * Ïmg opt status as used on dashboard.
1226 1226
      */
1227 1227
     public function get_imgopt_status_notice() {
1228
-        if ( $this->imgopt_active() ) {
1228
+        if ($this->imgopt_active()) {
1229 1229
             $_imgopt_notice  = '';
1230
-            $_stat           = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' );
1230
+            $_stat           = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_provider_stat', '');
1231 1231
             $_site_host      = AUTOPTIMIZE_SITE_DOMAIN;
1232
-            $_imgopt_upsell  = 'https://shortpixel.com/aospai/af/GWRGFLW109483/' . $_site_host;
1232
+            $_imgopt_upsell  = 'https://shortpixel.com/aospai/af/GWRGFLW109483/'.$_site_host;
1233 1233
             $_imgopt_assoc   = 'https://shortpixel.helpscoutdocs.com/article/94-how-to-associate-a-domain-to-my-account';
1234 1234
             $_imgopt_unreach = 'https://shortpixel.helpscoutdocs.com/article/148-why-are-my-images-redirected-from-cdn-shortpixel-ai';
1235 1235
 
1236
-            if ( is_array( $_stat ) ) {
1237
-                if ( 1 == $_stat['Status'] ) {
1236
+            if (is_array($_stat)) {
1237
+                if (1 == $_stat['Status']) {
1238 1238
                     // translators: "add more credits" will appear in a "a href".
1239
-                    $_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>' );
1239
+                    $_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>');
1240 1240
                 } elseif ( -1 == $_stat['Status'] || -2 == $_stat['Status'] ) {
1241 1241
                     // translators: "add more credits" will appear in a "a href".
1242
-                    $_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>' );
1242
+                    $_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>');
1243 1243
                     // translators: "associate your domain" will appear in a "a href".
1244
-                    $_imgopt_notice = $_imgopt_notice . ' ' . sprintf( __( 'If you have enough credits/ 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>' );
1244
+                    $_imgopt_notice = $_imgopt_notice.' '.sprintf(__('If you have enough credits/ 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>');
1245 1245
                 } elseif ( -3 == $_stat['Status'] ) {
1246 1246
                     // translators: "check the documentation here" will appear in a "a href".
1247
-                    $_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>' );
1247
+                    $_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>');
1248 1248
                 } else {
1249 1249
                     $_imgopt_upsell = 'https://shortpixel.com/g/af/GWRGFLW109483';
1250 1250
                     // translators: "log in to check your account" will appear in a "a href".
1251
-                    $_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>' );
1251
+                    $_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>');
1252 1252
                 }
1253 1253
 
1254 1254
                 // add info on freshness + refresh link if status is not 2 (good shape).
1255
-                if ( 2 != $_stat['Status'] ) {
1256
-                    $_imgopt_stats_refresh_url = add_query_arg( array(
1255
+                if (2 != $_stat['Status']) {
1256
+                    $_imgopt_stats_refresh_url = add_query_arg(array(
1257 1257
                         'page'                => 'autoptimize_imgopt',
1258 1258
                         'refreshImgProvStats' => '1',
1259
-                    ), admin_url( 'options-general.php' ) );
1260
-                    if ( $_stat && array_key_exists( 'timestamp', $_stat ) && ! empty( $_stat['timestamp'] ) ) {
1261
-                        $_imgopt_stats_last_run = __( 'based on status at ', 'autoptimize' ) . date_i18n( autoptimizeOptionWrapper::get_option( 'time_format' ), $_stat['timestamp'] );
1259
+                    ), admin_url('options-general.php'));
1260
+                    if ($_stat && array_key_exists('timestamp', $_stat) && !empty($_stat['timestamp'])) {
1261
+                        $_imgopt_stats_last_run = __('based on status at ', 'autoptimize').date_i18n(autoptimizeOptionWrapper::get_option('time_format'), $_stat['timestamp']);
1262 1262
                     } else {
1263
-                        $_imgopt_stats_last_run = __( 'based on previously fetched data', 'autoptimize' );
1263
+                        $_imgopt_stats_last_run = __('based on previously fetched data', 'autoptimize');
1264 1264
                     }
1265
-                    $_imgopt_notice .= ' (' . $_imgopt_stats_last_run . ', ';
1265
+                    $_imgopt_notice .= ' ('.$_imgopt_stats_last_run.', ';
1266 1266
                     // translators: "here to refresh" links to the Autoptimize Extra page and forces a refresh of the img opt stats.
1267
-                    $_imgopt_notice .= sprintf( __( 'click %1$shere to refresh%2$s', 'autoptimize' ), '<a href="' . $_imgopt_stats_refresh_url . '">', '</a>).' );
1267
+                    $_imgopt_notice .= sprintf(__('click %1$shere to refresh%2$s', 'autoptimize'), '<a href="'.$_imgopt_stats_refresh_url.'">', '</a>).');
1268 1268
                 }
1269 1269
 
1270 1270
                 // and make the full notice filterable.
1271
-                $_imgopt_notice = apply_filters( 'autoptimize_filter_imgopt_notice', $_imgopt_notice );
1271
+                $_imgopt_notice = apply_filters('autoptimize_filter_imgopt_notice', $_imgopt_notice);
1272 1272
 
1273 1273
                 return array(
1274 1274
                     'status' => $_stat['Status'],
@@ -1289,14 +1289,14 @@  discard block
 block discarded – undo
1289 1289
      * Get img provider stats (used to display notice).
1290 1290
      */
1291 1291
     public function query_img_provider_stats() {
1292
-        if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_1'] ) ) {
1292
+        if (!empty($this->options['autoptimize_imgopt_checkbox_field_1'])) {
1293 1293
             $url      = '';
1294
-            $endpoint = $this->get_imgopt_host() . 'read-domain/';
1294
+            $endpoint = $this->get_imgopt_host().'read-domain/';
1295 1295
             $domain   = AUTOPTIMIZE_SITE_DOMAIN;
1296 1296
 
1297 1297
             // make sure parse_url result makes sense, keeping $url empty if not.
1298
-            if ( $domain && ! empty( $domain ) ) {
1299
-                $url = $endpoint . $domain;
1298
+            if ($domain && !empty($domain)) {
1299
+                $url = $endpoint.$domain;
1300 1300
             }
1301 1301
 
1302 1302
             $url = apply_filters(
@@ -1306,12 +1306,12 @@  discard block
 block discarded – undo
1306 1306
 
1307 1307
             // only do the remote call if $url is not empty to make sure no parse_url
1308 1308
             // weirdness results in useless calls.
1309
-            if ( ! empty( $url ) ) {
1310
-                $response = wp_remote_get( $url );
1311
-                if ( ! is_wp_error( $response ) ) {
1312
-                    if ( '200' == wp_remote_retrieve_response_code( $response ) ) {
1313
-                        $stats = json_decode( wp_remote_retrieve_body( $response ), true );
1314
-                        autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_provider_stat', $stats );
1309
+            if (!empty($url)) {
1310
+                $response = wp_remote_get($url);
1311
+                if (!is_wp_error($response)) {
1312
+                    if ('200' == wp_remote_retrieve_response_code($response)) {
1313
+                        $stats = json_decode(wp_remote_retrieve_body($response), true);
1314
+                        autoptimizeOptionWrapper::update_option('autoptimize_imgopt_provider_stat', $stats);
1315 1315
                     }
1316 1316
                 }
1317 1317
             }
@@ -1334,15 +1334,15 @@  discard block
 block discarded – undo
1334 1334
     {
1335 1335
         static $launch_status = null;
1336 1336
 
1337
-        if ( null === $launch_status ) {
1337
+        if (null === $launch_status) {
1338 1338
             $avail_imgopt  = $this->options['availabilities']['extra_imgopt'];
1339
-            $magic_number  = intval( substr( md5( parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ) ), 0, 3 ), 16 );
1340
-            $has_launched  = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_launched', '' );
1339
+            $magic_number  = intval(substr(md5(parse_url(AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST)), 0, 3), 16);
1340
+            $has_launched  = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_launched', '');
1341 1341
             $launch_status = false;
1342
-            if ( $has_launched || ( is_array( $avail_imgopt ) && array_key_exists( 'launch-threshold', $avail_imgopt ) && $magic_number < $avail_imgopt['launch-threshold'] ) ) {
1342
+            if ($has_launched || (is_array($avail_imgopt) && array_key_exists('launch-threshold', $avail_imgopt) && $magic_number < $avail_imgopt['launch-threshold'])) {
1343 1343
                 $launch_status = true;
1344
-                if ( ! $has_launched ) {
1345
-                    autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_launched', 'on' );
1344
+                if (!$has_launched) {
1345
+                    autoptimizeOptionWrapper::update_option('autoptimize_imgopt_launched', 'on');
1346 1346
                 }
1347 1347
             }
1348 1348
         }
@@ -1359,16 +1359,16 @@  discard block
 block discarded – undo
1359 1359
     public function get_imgopt_provider_userstatus() {
1360 1360
         static $_provider_userstatus = null;
1361 1361
 
1362
-        if ( is_null( $_provider_userstatus ) ) {
1363
-            $_stat = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' );
1364
-            if ( is_array( $_stat ) ) {
1365
-                if ( array_key_exists( 'Status', $_stat ) ) {
1362
+        if (is_null($_provider_userstatus)) {
1363
+            $_stat = autoptimizeOptionWrapper::get_option('autoptimize_imgopt_provider_stat', '');
1364
+            if (is_array($_stat)) {
1365
+                if (array_key_exists('Status', $_stat)) {
1366 1366
                     $_provider_userstatus['Status'] = $_stat['Status'];
1367 1367
                 } else {
1368 1368
                     // if no stats then we assume all is well.
1369 1369
                     $_provider_userstatus['Status'] = 2;
1370 1370
                 }
1371
-                if ( array_key_exists( 'timestamp', $_stat ) ) {
1371
+                if (array_key_exists('timestamp', $_stat)) {
1372 1372
                     $_provider_userstatus['timestamp'] = $_stat['timestamp'];
1373 1373
                 } else {
1374 1374
                     // if no timestamp then we return "".
Please login to merge, or discard this patch.