all repos — wp-resized2cache @ e3ef6d982963603ab768b805dbf1f88298364960

0.3; refactor
Peter Molnar hello@petermolnar.eu
Tue, 28 Jun 2016 17:44:33 +0000
commit

e3ef6d982963603ab768b805dbf1f88298364960

parent

2613db9ee7f1139d1cb79b36fda852ce05966e8e

2 files changed, 161 insertions(+), 168 deletions(-)

jump to
M readme.txtreadme.txt

@@ -4,10 +4,9 @@ Donate link: https://paypal.me/petermolnar/3

Tags: image, cache, image quality, Requires at least: 3.0 Tested up to: 4.4.2 -Stable tag: 0.2.1 +Stable tag: 0.3 License: GPLv3 License URI: http://www.gnu.org/licenses/gpl-3.0.html -Required minimum PHP version: 5.3 Sharpen, enchance and move resized images to cache folder

@@ -39,6 +38,12 @@

* every A. indicates BIG changes. * every .B version indicates new features. * every ..C indicates bugfixes for A.B version. + += 0.3 = +*2016-06-28* + +* code refactor + = 0.2.1 = *2016-03-08*
M wp-resized2cache.phpwp-resized2cache.php

@@ -3,11 +3,10 @@ /*

Plugin Name: wp-resized2cache Plugin URI: https://github.com/petermolnar/wp-resized2cache Description: Sharpen, enchance and move resized images to cache folder -Version: 0.2.1 +Version: 0.3 Author: Peter Molnar <hello@petermolnar.eu> Author URI: http://petermolnar.eu/ License: GPLv3 -Required minimum PHP version: 5.3 */ /* Copyright 2015 Peter Molnar ( hello@petermolnar.eu )

@@ -26,216 +25,205 @@ along with this program; if not, write to the Free Software

Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -if (!class_exists('WP_RESIZED2CACHE')): +namespace WP_RESIZED2CACHE; -class WP_RESIZED2CACHE { +define ( 'cachedir', \WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'cache' ); +\register_activation_hook( __FILE__ , 'WP_RESIZED2CACHE\plugin_activate' ); +\add_action( 'init', 'WP_RESIZED2CACHE\init' ); +\add_action( 'delete_attachment', 'WP_RESIZED2CACHE\delete_from_cache' ); - const cachedir = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'cache'; - - public function __construct () { - register_activation_hook( __FILE__ , array( &$this, 'plugin_activate' ) ); - - if (!is_dir(static::cachedir)) { - if (!mkdir(static::cachedir)) { - static::debug('failed to create ' . static::cachedir, 4); - } +function init () { + if ( ! is_dir( cachedir ) ) { + if ( ! mkdir( cachedir ) ) { + debug('failed to create ' . cachedir, 4); } - - add_action( 'init', array( &$this, 'init')); - add_action( 'delete_attachment', array (&$this, 'delete_from_cache')); } - public function init () { - // set higher jpg quality - add_filter( 'jpeg_quality', array( &$this, 'jpeg_quality' ) ); - add_filter( 'wp_editor_set_quality', array( &$this, 'jpeg_quality' ) ); + // set higher jpg quality + \add_filter( 'jpeg_quality', 'WP_RESIZED2CACHE\jpeg_quality' ); + \add_filter( 'wp_editor_set_quality', 'WP_RESIZED2CACHE\jpeg_quality' ); - // sharpen resized images on upload - add_filter( 'image_make_intermediate_size',array ( &$this, 'sharpen' ),10); + // sharpen resized images on upload + \add_filter( 'image_make_intermediate_size', 'WP_RESIZED2CACHE\sharpen', 10 ); - } +} - /** - * activate hook - */ - public static function plugin_activate() { - if ( version_compare( phpversion(), 5.3, '<' ) ) { - die( 'The minimum PHP version required for this plugin is 5.3' ); - } +/** + * activate hook + */ +function plugin_activate() { + if ( version_compare( phpversion(), 5.3, '<' ) ) { + die( 'The minimum PHP version required for this plugin is 5.3' ); } +} - /** - * called on attachment deletion and takes care of removing the moved files - * - */ - public static function delete_from_cache ( $aid = null ) { - static::debug( "DELETE is called and aid is: " . $aid, 5 ); - if ($aid === null) - return false; +/** + * called on attachment deletion and takes care of removing the moved files + * + */ +function delete_from_cache ( $aid = null ) { + debug( "DELETE is called and aid is: {$aid}", 5 ); + if ($aid === null) + return false; - $attachment = get_post( $aid ); + $attachment = \get_post( $aid ); - if ( static::is_post($attachment)) { - $meta = wp_get_attachment_metadata($aid); + if ( is_post($attachment)) { + $meta = \wp_get_attachment_metadata($aid); - if (isset($meta['sizes']) && !empty($meta['sizes'])) { - foreach ( $meta['sizes'] as $size => $data ) { - $file = static::cachedir . DIRECTORY_SEPARATOR . $data['file']; - if ( isset($data['file']) && is_file($file)) { - static::debug( " removing " . $file, 5 ); - unlink ($file); - } + if ( isset( $meta['sizes'] ) && ! empty( $meta['sizes'] ) ) { + foreach ( $meta['sizes'] as $size => $data ) { + $file = cachedir . DIRECTORY_SEPARATOR . $data['file']; + if ( isset( $data['file'] ) && is_file( $file ) ) { + debug( " removing {$file}", 5 ); + unlink ( $file ); } } } - - return $aid; } - /** - * better jpgs - */ - public static function jpeg_quality () { - $jpeg_quality = (int)92; - return $jpeg_quality; + return $aid; +} + +/** + * better jpgs + */ +function jpeg_quality () { + $jpeg_quality = (int)92; + return $jpeg_quality; +} + +/** + * adaptive sharpen images w imagemagick + */ +function sharpen( $resized ) { + + if ( ! class_exists( '\Imagick' ) ) { + debug('Please install Imagick extension; otherwise this plugin will not work as well as it should.', 4); } - /** - * adaptive sharpen images w imagemagick + /* + preg_match ( '/(.*)-([0-9]+)x([0-9]+)\.([0-9A-Za-z]{2,4})/', $resized, $details ); + + * 0 => original var + * 1 => full original file path without extension + * 2 => resized size w + * 3 => resized size h + * 4 => extension */ - static public function sharpen( $resized ) { - if (!class_exists('Imagick')) { - static::debug('Please install Imagick extension; otherwise this plugin will not work as well as it should.', 4); - } + $size = @getimagesize($resized); - /* - preg_match ( '/(.*)-([0-9]+)x([0-9]+)\.([0-9A-Za-z]{2,4})/', $resized, $details ); + if ( !$size ) { + debug( "Unable to get size for: {$resized}", 4); + return $resized; + } - * 0 => original var - * 1 => full original file path without extension - * 2 => resized size w - * 3 => resized size h - * 4 => extension - */ + //$cachedir = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'cache'; - $size = @getimagesize($resized); + $fname = basename( $resized ); + $cached = cachedir . DIRECTORY_SEPARATOR . $fname; - if ( !$size ) { - static::debug("Unable to get size for: {$resized}", 4); + if ( $size[2] == IMAGETYPE_JPEG && class_exists('\Imagick')) { + debug( "adaptive sharpen {$resized}", 6 ); + try { + $imagick = new \Imagick( $resized ); + $imagick->unsharpMaskImage( 0, 0.5, 1, 0 ); + $imagick->setImageFormat( "jpg" ); + $imagick->setImageCompression( \Imagick::COMPRESSION_JPEG ); + $imagick->setImageCompressionQuality( jpeg_quality() ); + $imagick->setInterlaceScheme( \Imagick::INTERLACE_PLANE ); + $imagick = \apply_filters( "wp_resized2cache_imagick", $imagick, $resized ); + $imagick->writeImage($cached); + $imagick->destroy(); + } + catch (Exception $e) { + debug( 'something went wrong with imagemagick: ', $e->getMessage(), 4 ); return $resized; } - //$cachedir = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'cache'; - - $fname = basename( $resized ); - $cached = static::cachedir . DIRECTORY_SEPARATOR . $fname; - - if ( $size[2] == IMAGETYPE_JPEG && class_exists('Imagick')) { - static::debug( "adaptive sharpen " . $resized, 6 ); - try { - $imagick = new Imagick($resized); - $imagick->unsharpMaskImage(0,0.5,1,0); - $imagick->setImageFormat("jpg"); - $imagick->setImageCompression(Imagick::COMPRESSION_JPEG); - $imagick->setImageCompressionQuality(static::jpeg_quality()); - $imagick->setInterlaceScheme(Imagick::INTERLACE_PLANE); - $imagick = apply_filters( "wp_resized2cache_imagick", $imagick, $resized ); - $imagick->writeImage($cached); - $imagick->destroy(); - } - catch (Exception $e) { - static::debug( 'something went wrong with imagemagick: ', $e->getMessage(), 4 ); - return $resized; - } - - static::debug( "removing " . $resized, 5 ); - unlink ($resized); + debug( "removing " . $resized, 5 ); + unlink ($resized); + } + else { + debug( "moving {$cached}", 5 ); + if ( copy( $resized, $cached ) ) { + debug( "removing {$resized}", 5 ); + unlink( $resized ); } else { - static::debug( "moving " . $cached, 5 ); - if (copy( $resized, $cached)) { - static::debug( "removing " . $resized, 5 ); - unlink( $resized ); - } - else { - static::debug( "\tmove failed, passing on this", 4 ); - } + debug( "\tmove failed, passing on this", 4 ); } - - return $resized; } - /** - * - * debug messages; will only work if WP_DEBUG is on - * or if the level is LOG_ERR, but that will kill the process - * - * @param string $message - * @param int $level - * - * @output log to syslog | wp_die on high level - * @return false on not taking action, true on log sent - */ - public static function debug( $message, $level = LOG_NOTICE ) { - if ( empty( $message ) ) - return false; + return $resized; +} - if ( @is_array( $message ) || @is_object ( $message ) ) - $message = json_encode($message); +/** + * + * debug messages; will only work if WP_DEBUG is on + * or if the level is LOG_ERR, but that will kill the process + * + * @param string $message + * @param int $level + * + * @output log to syslog | wp_die on high level + * @return false on not taking action, true on log sent + */ +function debug( $message, $level = LOG_NOTICE ) { + if ( empty( $message ) ) + return false; - $levels = array ( - LOG_EMERG => 0, // system is unusable - LOG_ALERT => 1, // Alert action must be taken immediately - LOG_CRIT => 2, // Critical critical conditions - LOG_ERR => 3, // Error error conditions - LOG_WARNING => 4, // Warning warning conditions - LOG_NOTICE => 5, // Notice normal but significant condition - LOG_INFO => 6, // Informational informational messages - LOG_DEBUG => 7, // Debug debug-level messages - ); + if ( @is_array( $message ) || @is_object ( $message ) ) + $message = json_encode($message); - // number for number based comparison - // should work with the defines only, this is just a make-it-sure step - $level_ = $levels [ $level ]; + $levels = array ( + LOG_EMERG => 0, // system is unusable + LOG_ALERT => 1, // Alert action must be taken immediately + LOG_CRIT => 2, // Critical critical conditions + LOG_ERR => 3, // Error error conditions + LOG_WARNING => 4, // Warning warning conditions + LOG_NOTICE => 5, // Notice normal but significant condition + LOG_INFO => 6, // Informational informational messages + LOG_DEBUG => 7, // Debug debug-level messages + ); - // in case WordPress debug log has a minimum level - if ( defined ( 'WP_DEBUG_LEVEL' ) ) { - $wp_level = $levels [ WP_DEBUG_LEVEL ]; - if ( $level_ > $wp_level ) { - return false; - } - } + // number for number based comparison + // should work with the defines only, this is just a make-it-sure step + $level_ = $levels [ $level ]; - // ERR, CRIT, ALERT and EMERG - if ( 3 >= $level_ ) { - wp_die( '<h1>Error:</h1>' . '<p>' . $message . '</p>' ); - exit; + // in case WordPress debug log has a minimum level + if ( defined ( '\WP_DEBUG_LEVEL' ) ) { + $wp_level = $levels [ \WP_DEBUG_LEVEL ]; + if ( $level_ > $wp_level ) { + return false; } - - $trace = debug_backtrace(); - $caller = $trace[1]; - $parent = $caller['function']; - - if (isset($caller['class'])) - $parent = $caller['class'] . '::' . $parent; + } - return error_log( "{$parent}: {$message}" ); + // ERR, CRIT, ALERT and EMERG + if ( 3 >= $level_ ) { + \wp_die( '<h1>Error:</h1>' . '<p>' . $message . '</p>' ); + exit; } - /** - * - */ - public static function is_post ( &$post ) { - if ( !empty($post) && is_object($post) && isset($post->ID) && !empty($post->ID) ) - return true; + $trace = debug_backtrace(); + $caller = $trace[1]; + $parent = $caller['function']; - return false; - } + if (isset($caller['class'])) + $parent = $caller['class'] . '::' . $parent; + + return error_log( "{$parent}: {$message}" ); } -$WP_RESIZED2CACHE = new WP_RESIZED2CACHE(); +/** + * + */ +function is_post ( &$post ) { + if ( !empty($post) && is_object($post) && isset($post->ID) && !empty($post->ID) ) + return true; -endif; + return false; +}