all repos — wp-featured2rss @ 0fc17ec33810314adc091c17ec9c2247aeca3265

0.2
Peter Molnar hello@petermolnar.eu
Fri, 22 Jul 2016 10:47:02 +0000
commit

0fc17ec33810314adc091c17ec9c2247aeca3265

parent

71fa8a766b86e3295d3785c5c279c4be5c0c34b0

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

jump to
M readme.txtreadme.txt

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

Tags: RSS, feed, featured image, attachment Requires at least: 3.0 Tested up to: 4.4.2 -Stable tag: 0.1.1 +Stable tag: 0.2 License: GPLv3 License URI: http://www.gnu.org/licenses/gpl-3.0.html Required minimum PHP version: 5.3

@@ -31,6 +31,13 @@

* every A. indicates BIG changes. * every .B version indicates new features. * every ..C indicates bugfixes for A.B version. + += 0.2 = +*2016-07-22* + +* switched to namespace +* max 80 char long lines + = 0.1.1 = *2016-03-08*
M wp-featured2rss.phpwp-featured2rss.php

@@ -2,8 +2,8 @@ <?php

/* Plugin Name: wp-featured2rss Plugin URI: https://github.com/petermolnar/wp-featured2rss -Description: WordPress plugin to add featured image to RSS feed as attachment (which WordPress doesn't do by default) -Version: 0.1.1 +Description: WordPress plugin to add featured image to RSS feed as attachment +Version: 0.3 Author: Peter Molnar <hello@petermolnar.eu> Author URI: http://petermolnar.eu/ License: GPLv3

@@ -26,191 +26,195 @@ 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_FEATURED2RSS')): +namespace WP_FEATURED2RSS; -class WP_FEATURED2RSS { - const expire = 30; +define ( 'WP_FEATURED2RSS\expire', 30000 ); +\register_activation_hook( __FILE__ , 'WP_FEATURED2RSS\plugin_activate' ); +\add_action( 'rss2_item', 'WP_FEATURED2RSS\insert_enclosure_image'); - public function __construct () { - register_activation_hook( __FILE__ , array( &$this, 'plugin_activate' ) ); - add_action( 'rss2_item', array(&$this,'insert_enclosure_image') ); - } - /** - * 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' ); } +} - /** - * - */ - public static function insert_enclosure_image ( ) { - - $post = static::fix_post(); +/** + * + */ +function insert_enclosure_image ( ) { - static::debug('insterting featured image to rss',7); + $post = fix_post(); - if ($post === false ) - return false; + if ($post === false ) + return false; - $thid = get_post_thumbnail_id( $post->ID ); - if ( ! $thid ) - return false; + $thid = get_post_thumbnail_id( $post->ID ); + if ( ! $thid ) + return false; - if ( $cached = wp_cache_get ( $thid, __CLASS__ . __FUNCTION__ ) ) - return $cached; + debug('insterting featured image to rss',7); + if ( $cached = wp_cache_get ( $thid, __NAMESPACE__ . __FUNCTION__ ) ) + return $cached; - $asize = false; - $meta = wp_get_attachment_metadata($thid); + $asize = false; + $meta = wp_get_attachment_metadata($thid); - // creating sorted candidates array from available sizes, - // sorted by width*height pixels - $candidates = array(); - foreach( $meta['sizes'] as $potential => $details ) { - if ( isset($details['width']) && isset($details['height']) ) { - $max = ((int)$details['width']) * ((int)$details['height']); - $candidates[ $potential ] = $max; - } + // creating sorted candidates array from available sizes, + // sorted by width*height pixels + $candidates = array(); + foreach( $meta['sizes'] as $potential => $details ) { + if ( isset($details['width']) && isset($details['height']) ) { + $max = ((int)$details['width']) * ((int)$details['height']); + $candidates[ $potential ] = $max; } - arsort($candidates); + } + arsort($candidates); - foreach ($candidates as $potential => $maxsize ) { - static::debug('checking size ' . $potential . ': ' . $meta['sizes'][$potential]['file'] . ' vs ' .$meta['file'], 7 ); + foreach ($candidates as $potential => $maxsize ) { + debug( "checking size {$potential}: " + ."{$meta['sizes'][$potential]['file']} vs {$meta['file']}", 7 ); - if (isset($meta['sizes'][$potential]) && isset($meta['sizes'][$potential]['file']) && $meta['sizes'][$potential]['file'] != $meta['file']) { - static::debug( $meta['sizes'][$potential]['file'] . ' look like a resized file, using it', 7); - $asize = $potential; - $img = wp_get_attachment_image_src( $thid, $potential ); - break; - } + if ( isset( $meta['sizes'][$potential] ) && + isset( $meta['sizes'][$potential]['file'] ) && + $meta['sizes'][$potential]['file'] != $meta['file'] + ) { + debug( "{$meta['sizes'][$potential]['file']} look like a resized file;". + " using it", 7 ); + $asize = $potential; + $img = wp_get_attachment_image_src( $thid, $potential ); + break; } + } - if ( $asize == false ) - return false; + if ( $asize == false ) + return false; - $upload_dir = wp_upload_dir(); - // check for cached version of the image, in case the plugin is used - // in tandem with [wp-resized2cache](https://github.com/petermolnar/wp-resized2rss) - $cached = WP_CONTENT_DIR . '/cache/' . $meta['sizes'][$asize]['file']; - $file = $upload_dir['basedir'] . '/' . $meta['sizes'][$asize]['file']; + $upload_dir = wp_upload_dir(); + // check for cached version of the image, in case the plugin is used + // in tandem with https://github.com/petermolnar/wp-resized2rss + $cached = WP_CONTENT_DIR . '/cache/' . $meta['sizes'][$asize]['file']; + $file = $upload_dir['basedir'] . '/' . $meta['sizes'][$asize]['file']; - if ( file_exists($cached)) - $fsize = filesize($cached); - elseif ( file_exists($file) ) - $fsize = filesize($file); - else - return false; + if ( file_exists($cached)) + $fsize = filesize($cached); + elseif ( file_exists($file) ) + $fsize = filesize($file); + else + return false; - $mime = $meta['sizes'][$asize]['mime-type']; - $str = sprintf('<enclosure url="%s" type="%s" length="%s" />',static::fix_url($img[0]),$mime,$fsize); + $mime = $meta['sizes'][$asize]['mime-type']; + $str = sprintf( + '<enclosure url="%s" type="%s" length="%s" />', + \site_url( $img[0] ), + $mime, + $fsize + ); - wp_cache_set ( $thid, $str, __CLASS__ . __FUNCTION__, static::expire ); + wp_cache_set ( $thid, $str, __NAMESPACE__ . __FUNCTION__, expire ); - echo $str; - } - - /** - * do everything to get the Post object - */ - public static function fix_post ( &$post = null ) { - if ($post === null || !static::is_post($post)) - global $post; + echo $str; +} - if (static::is_post($post)) - return $post; +/** + * do everything to get the Post object + */ +function fix_post ( &$post = null ) { + if ($post === null || !is_post($post)) + global $post; - return false; - } + if (is_post($post)) + return $post; - /** - * test if an object is actually a post - */ - public static function is_post ( &$post ) { - if ( !empty($post) && is_object($post) && isset($post->ID) && !empty($post->ID) ) - return true; + return false; +} - return false; - } +/** + * test if an object is actually a post + */ +function is_post ( &$post ) { + if ( ! empty( $post ) && + is_object( $post ) && + isset( $post->ID ) && + ! empty( $post->ID ) ) + return true; - /** - * - * 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 false; +} - 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']; + // ERR, CRIT, ALERT and EMERG + if ( 3 >= $level_ ) { + wp_die( '<h1>Error:</h1>' . '<p>' . $message . '</p>' ); + exit; + } - if (isset($caller['class'])) - $parent = $caller['class'] . '::' . $parent; + $trace = debug_backtrace(); + $caller = $trace[1]; + $parent = $caller['function']; - return error_log( "{$parent}: {$message}" ); - } + if (isset($caller['class'])) + $parent = $caller['class'] . '::' . $parent; - /** - * - */ - public static function fix_url ( $url, $absolute = true ) { - // move to generic scheme - $url = str_replace ( array('http://', 'https://'), 'https://', $url ); + return error_log( "{$parent}: {$message}" ); +} - $domain = parse_url(get_bloginfo('url'), PHP_URL_HOST); - // relative to absolute - if ($absolute && !stristr($url, $domain)) { - $url = 'https://' . $domain . '/' . ltrim($url, '/'); - } +/** + * + * +function fix_url ( $url, $absolute = true ) { + // move to generic scheme + $url = str_replace ( array('http://', 'https://'), 'https://', $url ); - return $url; + $domain = parse_url(get_bloginfo('url'), PHP_URL_HOST); + // relative to absolute + if ($absolute && !stristr($url, $domain)) { + $url = 'https://' . $domain . '/' . ltrim($url, '/'); } + return $url; } - -$WP_FEATURED2RSS = new WP_FEATURED2RSS(); - -endif; +*/