@@ -64,7 +64,7 @@ discard block |
||
| 64 | 64 | * |
| 65 | 65 | * @param string $url URL to transform. |
| 66 | 66 | * |
| 67 | - * @return bool|string |
|
| 67 | + * @return false|string |
|
| 68 | 68 | */ |
| 69 | 69 | public function getpath( $url ) |
| 70 | 70 | { |
@@ -610,7 +610,7 @@ discard block |
||
| 610 | 610 | /** |
| 611 | 611 | * Logs given `$data` for debugging purposes (when debug logging is on). |
| 612 | 612 | * |
| 613 | - * @param mixed $data Data to log. |
|
| 613 | + * @param string $data Data to log. |
|
| 614 | 614 | * |
| 615 | 615 | * @return void |
| 616 | 616 | */ |
@@ -632,7 +632,7 @@ discard block |
||
| 632 | 632 | * |
| 633 | 633 | * @param string $filepath Filepath. |
| 634 | 634 | * |
| 635 | - * @return bool|string to be minified code or false. |
|
| 635 | + * @return false|string to be minified code or false. |
|
| 636 | 636 | */ |
| 637 | 637 | protected function prepare_minify_single( $filepath ) |
| 638 | 638 | { |
@@ -412,7 +412,7 @@ |
||
| 412 | 412 | * First element is the filepath, second is the md5 hash of contents |
| 413 | 413 | * the filepath had when it was being processed. |
| 414 | 414 | * If we don't have those, we'll bail out early. |
| 415 | - */ |
|
| 415 | + */ |
|
| 416 | 416 | $filepath = null; |
| 417 | 417 | $filehash = null; |
| 418 | 418 | |
@@ -434,7 +434,7 @@ |
||
| 434 | 434 | * size = total filesize (in bytes) of found files |
| 435 | 435 | * timestamp = unix timestamp when the scan was last performed/finished. |
| 436 | 436 | * |
| 437 | - * @return array |
|
| 437 | + * @return integer[] |
|
| 438 | 438 | */ |
| 439 | 439 | protected static function stats_scan() |
| 440 | 440 | { |
@@ -752,6 +752,9 @@ discard block |
||
| 752 | 752 | return $preload_onload; |
| 753 | 753 | } |
| 754 | 754 | |
| 755 | + /** |
|
| 756 | + * @param string $key |
|
| 757 | + */ |
|
| 755 | 758 | public function get($key) |
| 756 | 759 | { |
| 757 | 760 | if ( ! is_array( $this->config ) ) { |
@@ -778,6 +781,9 @@ discard block |
||
| 778 | 781 | return false; |
| 779 | 782 | } |
| 780 | 783 | |
| 784 | + /** |
|
| 785 | + * @param string $url |
|
| 786 | + */ |
|
| 781 | 787 | private function getFutttaFeeds($url) { |
| 782 | 788 | if ( $this->settings_screen_do_remote_http ) { |
| 783 | 789 | $rss = fetch_feed( $url ); |
@@ -437,6 +437,9 @@ |
||
| 437 | 437 | } |
| 438 | 438 | } |
| 439 | 439 | |
| 440 | + /** |
|
| 441 | + * @return string |
|
| 442 | + */ |
|
| 440 | 443 | private function get_imgopt_base_url() |
| 441 | 444 | { |
| 442 | 445 | static $imgopt_base_url = null; |
@@ -104,7 +104,7 @@ |
||
| 104 | 104 | /** |
| 105 | 105 | * Doesn't do much in case of HTML (no cache in css/js sense there) |
| 106 | 106 | * |
| 107 | - * @return true |
|
| 107 | + * @return boolean |
|
| 108 | 108 | */ |
| 109 | 109 | public function cache() |
| 110 | 110 | { |
@@ -253,7 +253,7 @@ |
||
| 253 | 253 | * |
| 254 | 254 | * @param bool $doing_tests Allows overriding the optimization of only |
| 255 | 255 | * deciding once per request (for use in tests). |
| 256 | - * @return bool |
|
| 256 | + * @return boolean|null |
|
| 257 | 257 | */ |
| 258 | 258 | public function should_buffer( $doing_tests = false ) |
| 259 | 259 | { |
@@ -418,6 +418,10 @@ discard block |
||
| 418 | 418 | } |
| 419 | 419 | |
| 420 | 420 | // Checks against the white- and blacklists |
| 421 | + |
|
| 422 | + /** |
|
| 423 | + * @param string $tag |
|
| 424 | + */ |
|
| 421 | 425 | private function ismergeable($tag) |
| 422 | 426 | { |
| 423 | 427 | if ( ! $this->aggregate ) { |
@@ -457,6 +461,10 @@ discard block |
||
| 457 | 461 | } |
| 458 | 462 | |
| 459 | 463 | // Checks agains the blacklist |
| 464 | + |
|
| 465 | + /** |
|
| 466 | + * @param string $tag |
|
| 467 | + */ |
|
| 460 | 468 | private function ismovable($tag) |
| 461 | 469 | { |
| 462 | 470 | if ( true !== $this->include_inline || apply_filters( 'autoptimize_filter_js_unmovable', true ) ) { |
@@ -538,7 +546,7 @@ discard block |
||
| 538 | 546 | * @param string $filepath Filepath. |
| 539 | 547 | * @param bool $cache_miss Optional. Force a cache miss. Default false. |
| 540 | 548 | * |
| 541 | - * @return bool|string Url pointing to the minified js file or false. |
|
| 549 | + * @return false|string Url pointing to the minified js file or false. |
|
| 542 | 550 | */ |
| 543 | 551 | public function minify_single( $filepath, $cache_miss = false ) |
| 544 | 552 | { |
@@ -2,9 +2,9 @@ discard block |
||
| 2 | 2 | |
| 3 | 3 | //Check everything exists before using it |
| 4 | 4 | if(!isset($_SERVER['HTTP_ACCEPT_ENCODING'])) |
| 5 | - $_SERVER['HTTP_ACCEPT_ENCODING'] = ''; |
|
| 5 | + $_SERVER['HTTP_ACCEPT_ENCODING'] = ''; |
|
| 6 | 6 | if(!isset($_SERVER['HTTP_USER_AGENT'])) |
| 7 | - $_SERVER['HTTP_USER_AGENT'] = ''; |
|
| 7 | + $_SERVER['HTTP_USER_AGENT'] = ''; |
|
| 8 | 8 | |
| 9 | 9 | // Determine supported compression method |
| 10 | 10 | $gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'); |
@@ -15,30 +15,30 @@ discard block |
||
| 15 | 15 | |
| 16 | 16 | // Check for buggy versions of Internet Explorer |
| 17 | 17 | if (!strstr($_SERVER['HTTP_USER_AGENT'], 'Opera') && |
| 18 | - preg_match('/^Mozilla\/4\.0 \(compatible; MSIE ([0-9]\.[0-9])/i', $_SERVER['HTTP_USER_AGENT'], $matches)) |
|
| 18 | + preg_match('/^Mozilla\/4\.0 \(compatible; MSIE ([0-9]\.[0-9])/i', $_SERVER['HTTP_USER_AGENT'], $matches)) |
|
| 19 | 19 | { |
| 20 | - $version = floatval($matches[1]); |
|
| 20 | + $version = floatval($matches[1]); |
|
| 21 | 21 | |
| 22 | - if ($version < 6) |
|
| 23 | - $encoding = 'none'; |
|
| 22 | + if ($version < 6) |
|
| 23 | + $encoding = 'none'; |
|
| 24 | 24 | |
| 25 | - if ($version == 6 && !strstr($_SERVER['HTTP_USER_AGENT'], 'EV1')) |
|
| 26 | - $encoding = 'none'; |
|
| 25 | + if ($version == 6 && !strstr($_SERVER['HTTP_USER_AGENT'], 'EV1')) |
|
| 26 | + $encoding = 'none'; |
|
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | //Some servers compress the output of PHP - Don't break in those cases |
| 30 | 30 | if(ini_get('output_handler') == 'ob_gzhandler' || ini_get('zlib.output_compression') == 1) |
| 31 | - $encoding = 'none'; |
|
| 31 | + $encoding = 'none'; |
|
| 32 | 32 | |
| 33 | 33 | $iscompressed = file_exists(__FILE__.'.'.$encoding); |
| 34 | 34 | if($encoding != 'none' && $iscompressed == false) |
| 35 | 35 | { |
| 36 | - $flag = ($encoding == 'gzip' ? FORCE_GZIP : FORCE_DEFLATE); |
|
| 37 | - $code = file_get_contents(__FILE__.'.none'); |
|
| 38 | - $contents = gzencode($code,9,$flag); |
|
| 36 | + $flag = ($encoding == 'gzip' ? FORCE_GZIP : FORCE_DEFLATE); |
|
| 37 | + $code = file_get_contents(__FILE__.'.none'); |
|
| 38 | + $contents = gzencode($code,9,$flag); |
|
| 39 | 39 | }else{ |
| 40 | - //Get data |
|
| 41 | - $contents = file_get_contents(__FILE__.'.'.$encoding); |
|
| 40 | + //Get data |
|
| 41 | + $contents = file_get_contents(__FILE__.'.'.$encoding); |
|
| 42 | 42 | } |
| 43 | 43 | |
| 44 | 44 | // first check if we have to send 304 |
@@ -52,36 +52,36 @@ discard block |
||
| 52 | 52 | $modTimeMatch = (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) === $modTime); |
| 53 | 53 | |
| 54 | 54 | if (($modTimeMatch)||($eTagMatch)) { |
| 55 | - header('HTTP/1.1 304 Not Modified'); |
|
| 56 | - header('Connection: close'); |
|
| 55 | + header('HTTP/1.1 304 Not Modified'); |
|
| 56 | + header('Connection: close'); |
|
| 57 | 57 | } else { |
| 58 | - // send all sorts of headers |
|
| 59 | - $expireTime=60*60*24*355; // 1y max according to RFC |
|
| 60 | - if ($encoding != 'none') { |
|
| 61 | - header('Content-Encoding: '.$encoding); |
|
| 62 | - } |
|
| 63 | - header('Vary: Accept-Encoding'); |
|
| 64 | - header('Content-Length: '.strlen($contents)); |
|
| 65 | - header('Content-type: %%CONTENT%%; charset=utf-8'); |
|
| 66 | - header('Cache-Control: max-age='.$expireTime.', public, must-revalidate'); |
|
| 67 | - header('Cache-Control: max-age='.$expireTime.', public, immutable'); |
|
| 68 | - header('Expires: '.gmdate('D, d M Y H:i:s', time() + $expireTime).' GMT'); |
|
| 69 | - header('ETag: ' . $eTag); |
|
| 70 | - header('Last-Modified: '.gmdate('D, d M Y H:i:s', $modTime).' GMT'); |
|
| 58 | + // send all sorts of headers |
|
| 59 | + $expireTime=60*60*24*355; // 1y max according to RFC |
|
| 60 | + if ($encoding != 'none') { |
|
| 61 | + header('Content-Encoding: '.$encoding); |
|
| 62 | + } |
|
| 63 | + header('Vary: Accept-Encoding'); |
|
| 64 | + header('Content-Length: '.strlen($contents)); |
|
| 65 | + header('Content-type: %%CONTENT%%; charset=utf-8'); |
|
| 66 | + header('Cache-Control: max-age='.$expireTime.', public, must-revalidate'); |
|
| 67 | + header('Cache-Control: max-age='.$expireTime.', public, immutable'); |
|
| 68 | + header('Expires: '.gmdate('D, d M Y H:i:s', time() + $expireTime).' GMT'); |
|
| 69 | + header('ETag: ' . $eTag); |
|
| 70 | + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $modTime).' GMT'); |
|
| 71 | 71 | |
| 72 | - // send output |
|
| 73 | - echo $contents; |
|
| 72 | + // send output |
|
| 73 | + echo $contents; |
|
| 74 | 74 | |
| 75 | - //And write to filesystem cache if not done yet |
|
| 76 | - if($encoding != 'none' && $iscompressed == false) |
|
| 77 | - { |
|
| 78 | - //Write the content we sent |
|
| 79 | - file_put_contents(__FILE__.'.'.$encoding,$contents); |
|
| 75 | + //And write to filesystem cache if not done yet |
|
| 76 | + if($encoding != 'none' && $iscompressed == false) |
|
| 77 | + { |
|
| 78 | + //Write the content we sent |
|
| 79 | + file_put_contents(__FILE__.'.'.$encoding,$contents); |
|
| 80 | 80 | |
| 81 | - //And write the new content |
|
| 82 | - $flag = ($encoding == 'gzip' ? FORCE_DEFLATE : FORCE_GZIP); |
|
| 83 | - $ext = ($encoding == 'gzip' ? 'deflate' : 'gzip'); |
|
| 84 | - $contents = gzencode($code,9,$flag); |
|
| 85 | - file_put_contents(__FILE__.'.'.$ext,$contents); |
|
| 86 | - } |
|
| 81 | + //And write the new content |
|
| 82 | + $flag = ($encoding == 'gzip' ? FORCE_DEFLATE : FORCE_GZIP); |
|
| 83 | + $ext = ($encoding == 'gzip' ? 'deflate' : 'gzip'); |
|
| 84 | + $contents = gzencode($code,9,$flag); |
|
| 85 | + file_put_contents(__FILE__.'.'.$ext,$contents); |
|
| 86 | + } |
|
| 87 | 87 | } |
@@ -29,91 +29,91 @@ |
||
| 29 | 29 | * Exit if called directly. |
| 30 | 30 | */ |
| 31 | 31 | if ( ! defined( 'ABSPATH' ) ) { |
| 32 | - die; |
|
| 32 | + die; |
|
| 33 | 33 | } |
| 34 | 34 | |
| 35 | 35 | if ( ! class_exists( 'PAnD' ) ) { |
| 36 | 36 | |
| 37 | - /** |
|
| 38 | - * Class PAnD |
|
| 39 | - */ |
|
| 40 | - class PAnD { |
|
| 41 | - |
|
| 42 | - /** |
|
| 43 | - * Init hooks. |
|
| 44 | - */ |
|
| 45 | - public static function init() { |
|
| 46 | - add_action( 'admin_enqueue_scripts', array( __CLASS__, 'load_script' ) ); |
|
| 47 | - add_action( 'wp_ajax_dismiss_admin_notice', array( __CLASS__, 'dismiss_admin_notice' ) ); |
|
| 48 | - } |
|
| 49 | - |
|
| 50 | - /** |
|
| 51 | - * Enqueue javascript and variables. |
|
| 52 | - */ |
|
| 53 | - public static function load_script() { |
|
| 54 | - |
|
| 55 | - if(is_customize_preview()) return; |
|
| 56 | - |
|
| 57 | - wp_enqueue_script( |
|
| 58 | - 'dismissible-notices', |
|
| 59 | - plugins_url( 'dismiss-notice.js', __FILE__ ), |
|
| 60 | - array( 'jquery', 'common' ), |
|
| 61 | - false, |
|
| 62 | - true |
|
| 63 | - ); |
|
| 64 | - |
|
| 65 | - wp_localize_script( |
|
| 66 | - 'dismissible-notices', |
|
| 67 | - 'dismissible_notice', |
|
| 68 | - array( |
|
| 69 | - 'nonce' => wp_create_nonce( 'dismissible-notice' ), |
|
| 70 | - ) |
|
| 71 | - ); |
|
| 72 | - } |
|
| 73 | - |
|
| 74 | - /** |
|
| 75 | - * Handles Ajax request to persist notices dismissal. |
|
| 76 | - * Uses check_ajax_referer to verify nonce. |
|
| 77 | - */ |
|
| 78 | - public static function dismiss_admin_notice() { |
|
| 79 | - $option_name = sanitize_text_field( $_POST['option_name'] ); |
|
| 80 | - $dismissible_length = sanitize_text_field( $_POST['dismissible_length'] ); |
|
| 81 | - $transient = 0; |
|
| 82 | - |
|
| 83 | - if ( 'forever' != $dismissible_length ) { |
|
| 84 | - // If $dismissible_length is not an integer default to 1 |
|
| 85 | - $dismissible_length = ( 0 == absint( $dismissible_length ) ) ? 1 : $dismissible_length; |
|
| 86 | - $transient = absint( $dismissible_length ) * DAY_IN_SECONDS; |
|
| 87 | - $dismissible_length = strtotime( absint( $dismissible_length ) . ' days' ); |
|
| 88 | - } |
|
| 89 | - |
|
| 90 | - check_ajax_referer( 'dismissible-notice', 'nonce' ); |
|
| 91 | - set_site_transient( $option_name, $dismissible_length, $transient ); |
|
| 92 | - wp_die(); |
|
| 93 | - } |
|
| 94 | - |
|
| 95 | - /** |
|
| 96 | - * Is admin notice active? |
|
| 97 | - * |
|
| 98 | - * @param string $arg data-dismissible content of notice. |
|
| 99 | - * |
|
| 100 | - * @return bool |
|
| 101 | - */ |
|
| 102 | - public static function is_admin_notice_active( $arg ) { |
|
| 103 | - $array = explode( '-', $arg ); |
|
| 104 | - $length = array_pop( $array ); |
|
| 105 | - $option_name = implode( '-', $array ); |
|
| 106 | - $db_record = get_site_transient( $option_name ); |
|
| 107 | - |
|
| 108 | - if ( 'forever' == $db_record ) { |
|
| 109 | - return false; |
|
| 110 | - } elseif ( absint( $db_record ) >= time() ) { |
|
| 111 | - return false; |
|
| 112 | - } else { |
|
| 113 | - return true; |
|
| 114 | - } |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - } |
|
| 37 | + /** |
|
| 38 | + * Class PAnD |
|
| 39 | + */ |
|
| 40 | + class PAnD { |
|
| 41 | + |
|
| 42 | + /** |
|
| 43 | + * Init hooks. |
|
| 44 | + */ |
|
| 45 | + public static function init() { |
|
| 46 | + add_action( 'admin_enqueue_scripts', array( __CLASS__, 'load_script' ) ); |
|
| 47 | + add_action( 'wp_ajax_dismiss_admin_notice', array( __CLASS__, 'dismiss_admin_notice' ) ); |
|
| 48 | + } |
|
| 49 | + |
|
| 50 | + /** |
|
| 51 | + * Enqueue javascript and variables. |
|
| 52 | + */ |
|
| 53 | + public static function load_script() { |
|
| 54 | + |
|
| 55 | + if(is_customize_preview()) return; |
|
| 56 | + |
|
| 57 | + wp_enqueue_script( |
|
| 58 | + 'dismissible-notices', |
|
| 59 | + plugins_url( 'dismiss-notice.js', __FILE__ ), |
|
| 60 | + array( 'jquery', 'common' ), |
|
| 61 | + false, |
|
| 62 | + true |
|
| 63 | + ); |
|
| 64 | + |
|
| 65 | + wp_localize_script( |
|
| 66 | + 'dismissible-notices', |
|
| 67 | + 'dismissible_notice', |
|
| 68 | + array( |
|
| 69 | + 'nonce' => wp_create_nonce( 'dismissible-notice' ), |
|
| 70 | + ) |
|
| 71 | + ); |
|
| 72 | + } |
|
| 73 | + |
|
| 74 | + /** |
|
| 75 | + * Handles Ajax request to persist notices dismissal. |
|
| 76 | + * Uses check_ajax_referer to verify nonce. |
|
| 77 | + */ |
|
| 78 | + public static function dismiss_admin_notice() { |
|
| 79 | + $option_name = sanitize_text_field( $_POST['option_name'] ); |
|
| 80 | + $dismissible_length = sanitize_text_field( $_POST['dismissible_length'] ); |
|
| 81 | + $transient = 0; |
|
| 82 | + |
|
| 83 | + if ( 'forever' != $dismissible_length ) { |
|
| 84 | + // If $dismissible_length is not an integer default to 1 |
|
| 85 | + $dismissible_length = ( 0 == absint( $dismissible_length ) ) ? 1 : $dismissible_length; |
|
| 86 | + $transient = absint( $dismissible_length ) * DAY_IN_SECONDS; |
|
| 87 | + $dismissible_length = strtotime( absint( $dismissible_length ) . ' days' ); |
|
| 88 | + } |
|
| 89 | + |
|
| 90 | + check_ajax_referer( 'dismissible-notice', 'nonce' ); |
|
| 91 | + set_site_transient( $option_name, $dismissible_length, $transient ); |
|
| 92 | + wp_die(); |
|
| 93 | + } |
|
| 94 | + |
|
| 95 | + /** |
|
| 96 | + * Is admin notice active? |
|
| 97 | + * |
|
| 98 | + * @param string $arg data-dismissible content of notice. |
|
| 99 | + * |
|
| 100 | + * @return bool |
|
| 101 | + */ |
|
| 102 | + public static function is_admin_notice_active( $arg ) { |
|
| 103 | + $array = explode( '-', $arg ); |
|
| 104 | + $length = array_pop( $array ); |
|
| 105 | + $option_name = implode( '-', $array ); |
|
| 106 | + $db_record = get_site_transient( $option_name ); |
|
| 107 | + |
|
| 108 | + if ( 'forever' == $db_record ) { |
|
| 109 | + return false; |
|
| 110 | + } elseif ( absint( $db_record ) >= time() ) { |
|
| 111 | + return false; |
|
| 112 | + } else { |
|
| 113 | + return true; |
|
| 114 | + } |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + } |
|
| 118 | 118 | |
| 119 | 119 | } |