| @@ -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 | } | 
| @@ -1,10 +1,12 @@ discard block | ||
| 1 | 1 | <?php exit; | 
| 2 | 2 | |
| 3 | 3 | //Check everything exists before using it | 
| 4 | -if(!isset($_SERVER['HTTP_ACCEPT_ENCODING'])) | |
| 4 | +if(!isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { | |
| 5 | 5 | $_SERVER['HTTP_ACCEPT_ENCODING'] = ''; | 
| 6 | -if(!isset($_SERVER['HTTP_USER_AGENT'])) | |
| 6 | +} | |
| 7 | +if(!isset($_SERVER['HTTP_USER_AGENT'])) { | |
| 7 | 8 | $_SERVER['HTTP_USER_AGENT'] = ''; | 
| 9 | +} | |
| 8 | 10 | |
| 9 | 11 | // Determine supported compression method | 
| 10 | 12 | $gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'); | 
| @@ -19,16 +21,19 @@ discard block | ||
| 19 | 21 |  { | 
| 20 | 22 | $version = floatval($matches[1]); | 
| 21 | 23 | |
| 22 | - if ($version < 6) | |
| 23 | - $encoding = 'none'; | |
| 24 | +	if ($version < 6) { | |
| 25 | + $encoding = 'none'; | |
| 26 | + } | |
| 24 | 27 | |
| 25 | - if ($version == 6 && !strstr($_SERVER['HTTP_USER_AGENT'], 'EV1')) | |
| 26 | - $encoding = 'none'; | |
| 27 | -} | |
| 28 | +	if ($version == 6 && !strstr($_SERVER['HTTP_USER_AGENT'], 'EV1')) { | |
| 29 | + $encoding = 'none'; | |
| 30 | + } | |
| 31 | + } | |
| 28 | 32 | |
| 29 | 33 | //Some servers compress the output of PHP - Don't break in those cases | 
| 30 | -if(ini_get('output_handler') == 'ob_gzhandler' || ini_get('zlib.output_compression') == 1) | |
| 34 | +if(ini_get('output_handler') == 'ob_gzhandler' || ini_get('zlib.output_compression') == 1) { | |
| 31 | 35 | $encoding = 'none'; | 
| 36 | +} | |
| 32 | 37 | |
| 33 | 38 | $iscompressed = file_exists(__FILE__.'.'.$encoding); | 
| 34 | 39 | if($encoding != 'none' && $iscompressed == false) | 
| @@ -36,7 +41,7 @@ discard block | ||
| 36 | 41 | $flag = ($encoding == 'gzip' ? FORCE_GZIP : FORCE_DEFLATE); | 
| 37 | 42 | $code = file_get_contents(__FILE__.'.none'); | 
| 38 | 43 | $contents = gzencode($code,9,$flag); | 
| 39 | -}else{ | |
| 44 | +} else{ | |
| 40 | 45 | //Get data | 
| 41 | 46 | $contents = file_get_contents(__FILE__.'.'.$encoding); | 
| 42 | 47 | } | 
| @@ -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 | |
| @@ -1,5 +1,8 @@ discard block | ||
| 1 | 1 | <?php | 
| 2 | -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly. | |
| 2 | +if ( ! defined( 'ABSPATH' ) ) { | |
| 3 | + exit; | |
| 4 | +} | |
| 5 | +// Exit if accessed directly. | |
| 3 | 6 | |
| 4 | 7 | class autoptimizeConfig | 
| 5 | 8 |  { | 
| @@ -791,10 +794,13 @@ discard block | ||
| 791 | 794 | <ul> | 
| 792 | 795 | <?php if ( $maxitems == 0 ) : ?> | 
| 793 | 796 | <li><?php _e( 'No items', 'autoptimize' ); ?></li> | 
| 794 | - <?php else : ?> | |
| 797 | +                <?php else { | |
| 798 | + : ?> | |
| 795 | 799 | <?php foreach ( $rss_items as $item ) : ?> | 
| 796 | 800 | <li> | 
| 797 | - <a href="<?php echo esc_url( $item->get_permalink() ); ?>" | |
| 801 | + <a href="<?php echo esc_url( $item->get_permalink() ); | |
| 802 | +} | |
| 803 | +?>" | |
| 798 | 804 |                                  title="<?php printf( __( 'Posted %s', 'autoptimize' ), $item->get_date('j F Y | g:i a') ); ?>"> | 
| 799 | 805 | <?php echo esc_html( $item->get_title() ); ?> | 
| 800 | 806 | </a> | 
| @@ -29,131 +29,131 @@ | ||
| 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() ) { | |
| 56 | - return; | |
| 57 | - } | |
| 58 | - | |
| 59 | - wp_enqueue_script( | |
| 60 | - 'dismissible-notices', | |
| 61 | - plugins_url( 'dismiss-notice.js', __FILE__ ), | |
| 62 | - array( 'jquery', 'common' ), | |
| 63 | - false, | |
| 64 | - true | |
| 65 | - ); | |
| 66 | - | |
| 67 | - wp_localize_script( | |
| 68 | - 'dismissible-notices', | |
| 69 | - 'dismissible_notice', | |
| 70 | - array( | |
| 71 | - 'nonce' => wp_create_nonce( 'dismissible-notice' ), | |
| 72 | - ) | |
| 73 | - ); | |
| 74 | - } | |
| 75 | - | |
| 76 | - /** | |
| 77 | - * Handles Ajax request to persist notices dismissal. | |
| 78 | - * Uses check_ajax_referer to verify nonce. | |
| 79 | - */ | |
| 80 | -		public static function dismiss_admin_notice() { | |
| 81 | - $option_name = sanitize_text_field( $_POST['option_name'] ); | |
| 82 | - $dismissible_length = sanitize_text_field( $_POST['dismissible_length'] ); | |
| 83 | - | |
| 84 | -			if ( 'forever' != $dismissible_length ) { | |
| 85 | - // If $dismissible_length is not an integer default to 1 | |
| 86 | - $dismissible_length = ( 0 == absint( $dismissible_length ) ) ? 1 : $dismissible_length; | |
| 87 | - $dismissible_length = strtotime( absint( $dismissible_length ) . ' days' ); | |
| 88 | - } | |
| 89 | - | |
| 90 | - check_ajax_referer( 'dismissible-notice', 'nonce' ); | |
| 91 | - self::set_admin_notice_cache( $option_name, $dismissible_length ); | |
| 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 = self::get_admin_notice_cache( $option_name ); | |
| 107 | -			if ( 'forever' == $db_record ) { | |
| 108 | - return false; | |
| 109 | -			} elseif ( absint( $db_record ) >= time() ) { | |
| 110 | - return false; | |
| 111 | -			} else { | |
| 112 | - return true; | |
| 113 | - } | |
| 114 | - } | |
| 115 | - | |
| 116 | - /** | |
| 117 | - * Returns admin notice cached timeout. | |
| 118 | - * | |
| 119 | - * @access public | |
| 120 | - * | |
| 121 | - * @param string|bool $id admin notice name or false. | |
| 122 | - * | |
| 123 | - * @return array|bool The timeout. False if expired. | |
| 124 | - */ | |
| 125 | -		public static function get_admin_notice_cache( $id = false ) { | |
| 126 | -			if ( ! $id ) { | |
| 127 | - return false; | |
| 128 | - } | |
| 129 | - $cache_key = 'pand-' . md5( $id ); | |
| 130 | - $timeout = get_site_option( $cache_key ); | |
| 131 | - $timeout = 'forever' === $timeout ? time() + 60 : $timeout; | |
| 132 | - | |
| 133 | -			if ( empty( $timeout ) || time() > $timeout ) { | |
| 134 | - return false; | |
| 135 | - } | |
| 136 | - | |
| 137 | - return $timeout; | |
| 138 | - } | |
| 139 | - | |
| 140 | - /** | |
| 141 | - * Sets admin notice timeout in site option. | |
| 142 | - * | |
| 143 | - * @access public | |
| 144 | - * | |
| 145 | - * @param string $id Data Identifier. | |
| 146 | - * @param string|bool $timeout Timeout for admin notice. | |
| 147 | - * | |
| 148 | - * @return bool | |
| 149 | - */ | |
| 150 | -		public static function set_admin_notice_cache( $id, $timeout ) { | |
| 151 | - $cache_key = 'pand-' . md5( $id ); | |
| 152 | - update_site_option( $cache_key, $timeout ); | |
| 153 | - | |
| 154 | - return true; | |
| 155 | - } | |
| 156 | - | |
| 157 | - } | |
| 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() ) { | |
| 56 | + return; | |
| 57 | + } | |
| 58 | + | |
| 59 | + wp_enqueue_script( | |
| 60 | + 'dismissible-notices', | |
| 61 | + plugins_url( 'dismiss-notice.js', __FILE__ ), | |
| 62 | + array( 'jquery', 'common' ), | |
| 63 | + false, | |
| 64 | + true | |
| 65 | + ); | |
| 66 | + | |
| 67 | + wp_localize_script( | |
| 68 | + 'dismissible-notices', | |
| 69 | + 'dismissible_notice', | |
| 70 | + array( | |
| 71 | + 'nonce' => wp_create_nonce( 'dismissible-notice' ), | |
| 72 | + ) | |
| 73 | + ); | |
| 74 | + } | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * Handles Ajax request to persist notices dismissal. | |
| 78 | + * Uses check_ajax_referer to verify nonce. | |
| 79 | + */ | |
| 80 | +        public static function dismiss_admin_notice() { | |
| 81 | + $option_name = sanitize_text_field( $_POST['option_name'] ); | |
| 82 | + $dismissible_length = sanitize_text_field( $_POST['dismissible_length'] ); | |
| 83 | + | |
| 84 | +            if ( 'forever' != $dismissible_length ) { | |
| 85 | + // If $dismissible_length is not an integer default to 1 | |
| 86 | + $dismissible_length = ( 0 == absint( $dismissible_length ) ) ? 1 : $dismissible_length; | |
| 87 | + $dismissible_length = strtotime( absint( $dismissible_length ) . ' days' ); | |
| 88 | + } | |
| 89 | + | |
| 90 | + check_ajax_referer( 'dismissible-notice', 'nonce' ); | |
| 91 | + self::set_admin_notice_cache( $option_name, $dismissible_length ); | |
| 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 = self::get_admin_notice_cache( $option_name ); | |
| 107 | +            if ( 'forever' == $db_record ) { | |
| 108 | + return false; | |
| 109 | +            } elseif ( absint( $db_record ) >= time() ) { | |
| 110 | + return false; | |
| 111 | +            } else { | |
| 112 | + return true; | |
| 113 | + } | |
| 114 | + } | |
| 115 | + | |
| 116 | + /** | |
| 117 | + * Returns admin notice cached timeout. | |
| 118 | + * | |
| 119 | + * @access public | |
| 120 | + * | |
| 121 | + * @param string|bool $id admin notice name or false. | |
| 122 | + * | |
| 123 | + * @return array|bool The timeout. False if expired. | |
| 124 | + */ | |
| 125 | +        public static function get_admin_notice_cache( $id = false ) { | |
| 126 | +            if ( ! $id ) { | |
| 127 | + return false; | |
| 128 | + } | |
| 129 | + $cache_key = 'pand-' . md5( $id ); | |
| 130 | + $timeout = get_site_option( $cache_key ); | |
| 131 | + $timeout = 'forever' === $timeout ? time() + 60 : $timeout; | |
| 132 | + | |
| 133 | +            if ( empty( $timeout ) || time() > $timeout ) { | |
| 134 | + return false; | |
| 135 | + } | |
| 136 | + | |
| 137 | + return $timeout; | |
| 138 | + } | |
| 139 | + | |
| 140 | + /** | |
| 141 | + * Sets admin notice timeout in site option. | |
| 142 | + * | |
| 143 | + * @access public | |
| 144 | + * | |
| 145 | + * @param string $id Data Identifier. | |
| 146 | + * @param string|bool $timeout Timeout for admin notice. | |
| 147 | + * | |
| 148 | + * @return bool | |
| 149 | + */ | |
| 150 | +        public static function set_admin_notice_cache( $id, $timeout ) { | |
| 151 | + $cache_key = 'pand-' . md5( $id ); | |
| 152 | + update_site_option( $cache_key, $timeout ); | |
| 153 | + | |
| 154 | + return true; | |
| 155 | + } | |
| 156 | + | |
| 157 | + } | |
| 158 | 158 | |
| 159 | 159 | } |