[Plugin: WordPress Popular Posts] Support WPML
-
Hello,
i updated the plugin to support WPML. Hope the original developer wount mind. Could not find another way to contact him so here is the code:<?php /* Plugin Name: WordPress Popular Posts Plugin URI: http://wordpress.org/extend/plugins/wordpress-popular-posts Description: Showcases your most popular posts to your visitors on your blog's sidebar. Use WordPress Popular Posts as a widget or place it anywhere on your theme using <strong><?php wpp_get_mostpopular(); ?></strong> Version: 2.1.4 Author: Héctor Cabrera Author URI: http://wordpress.org/extend/plugins/wordpress-popular-posts License: GPL2 */ if (basename($_SERVER['SCRIPT_NAME']) == basename(__FILE__)) exit('Please do not load this page directly'); /** * Load WordPress Popular Posts to widgets_init. * @since 2.0 */ add_action('widgets_init', 'load_wpp'); function load_wpp() { register_widget('WordpressPopularPosts'); } /** * WordPress Popular Posts class. */ if ( !class_exists('WordpressPopularPosts') ) { class WordPressPopularPosts extends WP_Widget { // plugin global variables var $version = "2.1.4"; var $qTrans = false; var $wpml = false; var $postRating = false; var $thumb = false; var $pluginDir = ""; var $charset = "UTF-8"; var $magicquotes = false; // constructor function WordPressPopularPosts() { global $wp_version; // widget settings $widget_ops = array( 'classname' => 'popular-posts', 'description' => 'The most Popular Posts on your blog.' ); // widget control settings $control_ops = array( 'width' => 250, 'height' => 350, 'id_base' => 'wpp' ); // create the widget $this->WP_Widget( 'wpp', 'Wordpress Popular Posts', $widget_ops, $control_ops ); // set plugin path if (empty($this->pluginDir)) $this->pluginDir = WP_PLUGIN_URL . '/wordpress-popular-posts'; // set charset $this->charset = get_bloginfo('charset'); // detect PHP magic quotes $this->magicquotes = get_magic_quotes_gpc(); // add ajax update to wp_ajax_ hook add_action('wp_ajax_nopriv_wpp_update', array(&$this, 'wpp_ajax_update')); add_action('wp_head', array(&$this, 'wpp_print_ajax')); // add ajax table truncation to wp_ajax_ hook add_action('wp_ajax_wpp_clear_cache', array(&$this, 'wpp_clear_data')); add_action('wp_ajax_wpp_clear_all', array(&$this, 'wpp_clear_data')); // print stylesheet add_action('wp_head', array(&$this, 'wpp_print_stylesheet')); // activate textdomain for translations add_action('init', array(&$this, 'wpp_textdomain')); // activate maintenance page add_action('admin_menu', array(&$this, 'add_wpp_maintenance_page')); // database creation register_activation_hook(__FILE__, $this->wpp_install()); // cache maintenance schedule register_deactivation_hook(__FILE__, array(&$this, 'wpp_deactivation')); add_action('wpp_cache_event', array(&$this, 'wpp_cache_maintenance')); if (!wp_next_scheduled('wpp_cache_event')) { $tomorrow = time() + 86400; $midnight = mktime(0, 0, 0, date("m", $tomorrow), date("d", $tomorrow), date("Y", $tomorrow)); wp_schedule_event( $midnight, 'daily', 'wpp_cache_event' ); } // WordPress version check if (version_compare($wp_version, '2.8.0', '<')) add_action('admin_notices', array(&$this, 'wpp_update_warning')); // qTrans plugin support if (function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')) $this->qTrans = true; // WPML plugin support if (defined('ICL_LANGUAGE_CODE')) $this->wpml = true; // WP-Post Ratings plugin support if (function_exists('the_ratings_results')) $this->postRating = true; // Can we create thumbnails? if (extension_loaded('gd') && function_exists('gd_info') && version_compare(phpversion(), '4.3.0', '>=')) $this->thumb = true; // shortcode if( function_exists('add_shortcode') ){ add_shortcode('wpp', array(&$this, 'wpp_shortcode')); add_shortcode('WPP', array(&$this, 'wpp_shortcode')); } // set version $wpp_ver = get_option('wpp_ver'); if (!$wp_ver) { add_option('wpp_ver', $this->version); } else if (version_compare($wpp_ver, $this->version, '<')) { update_option('wpp_ver', $this->version); } // add stats page add_action('admin_menu', array(&$this, 'wpp_stats')); } // builds WordPress Popular Posts' widgets function widget($args, $instance) { extract($args); echo "<!-- WordPress Popular Posts Plugin v". $this->version ." [W] [".$instance['range']."]". (($instance['markup']['custom_html']) ? ' [custom]' : ' [regular]') ." -->"."\n"; echo $before_widget . "\n"; // has user set a title? if ($instance['title'] != '') { if ($instance['markup']['custom_html'] && $instance['markup']['title-start'] != "" && $instance['markup']['title-end'] != "" ) { echo htmlspecialchars_decode($instance['markup']['title-start'], ENT_QUOTES) . $instance['title'], ENT_QUOTES . htmlspecialchars_decode($instance['markup']['title-end'], ENT_QUOTES); } else { echo $before_title . $instance['title'] . $after_title; } } echo $this->get_popular_posts($instance, false); echo $after_widget . "\n"; echo "<!-- End WordPress Popular Posts Plugin v". $this->version ." -->"."\n"; } // updates each widget instance when user clicks the "save" button function update($new_instance, $old_instance) { $instance = $old_instance; //$instance['title'] = htmlspecialchars( stripslashes(strip_tags( $new_instance['title'] )), ENT_QUOTES, 'UTF-8', FALSE ); $instance['title'] = ($this->magicquotes) ? htmlspecialchars( stripslashes(strip_tags( $new_instance['title'] )), ENT_QUOTES ) : htmlspecialchars( strip_tags( $new_instance['title'] ), ENT_QUOTES ); $instance['limit'] = is_numeric($new_instance['limit']) ? $new_instance['limit'] : 10; $instance['range'] = $new_instance['range']; $instance['order_by'] = $new_instance['order_by']; $instance['pages'] = $new_instance['pages']; $instance['shorten_title']['active'] = $new_instance['shorten_title-active']; $instance['shorten_title']['length'] = is_numeric($new_instance['shorten_title-length']) ? $new_instance['shorten_title-length'] : 25; $instance['post-excerpt']['active'] = $new_instance['post-excerpt-active']; $instance['post-excerpt']['length'] = is_numeric($new_instance['post-excerpt-length']) ? $new_instance['post-excerpt-length'] : 55; $instance['post-excerpt']['keep_format'] = $new_instance['post-excerpt-format']; $instance['exclude-cats']['active'] = $new_instance['exclude-cats']; $instance['exclude-cats']['cats'] = empty($new_instance['excluded']) ? '' : (ctype_digit(str_replace(",", "", $new_instance['excluded']))) ? $new_instance['excluded'] : ''; if ($this->thumb) { // can create thumbnails $instance['thumbnail']['active'] = $new_instance['thumbnail-active']; $instance['thumbnail']['thumb_selection'] = empty($new_instance['thumb_selection']) ? "wppgenerated" : $new_instance['thumb_selection']; $instance['thumbnail']['width'] = is_numeric($new_instance['thumbnail-width']) ? $new_instance['thumbnail-width'] : 15; $instance['thumbnail']['height'] = is_numeric($new_instance['thumbnail-height']) ? $new_instance['thumbnail-height'] : 15; } else { // cannot create thumbnails $instance['thumbnail']['active'] = false; $instance['thumbnail']['thumb_selection'] = "wppgenerated"; $instance['thumbnail']['width'] = 15; $instance['thumbnail']['height'] = 15; } $instance['rating'] = $new_instance['rating']; $instance['stats_tag']['comment_count'] = $new_instance['comment_count']; $instance['stats_tag']['views'] = $new_instance['views']; $instance['stats_tag']['author'] = $new_instance['author']; $instance['stats_tag']['date']['active'] = $new_instance['date']; $instance['stats_tag']['date']['format'] = empty($new_instance['date_format']) ? 'F j, Y' : $new_instance['date_format']; $instance['markup']['custom_html'] = $new_instance['custom_html']; $instance['markup']['wpp-start'] = empty($new_instance['wpp-start']) ? '<ul>' : htmlspecialchars( $new_instance['wpp-start'], ENT_QUOTES ); $instance['markup']['wpp-end'] = empty($new_instance['wpp-end']) ? '</ul>' : htmlspecialchars( $new_instance['wpp-end'], ENT_QUOTES ); $instance['markup']['post-start'] = empty ($new_instance['post-start']) ? '<li>' : htmlspecialchars( $new_instance['post-start'], ENT_QUOTES ); $instance['markup']['post-end'] = empty ($new_instance['post-end']) ? '</li>' : htmlspecialchars( $new_instance['post-end'], ENT_QUOTES ); $instance['markup']['title-start'] = empty($new_instance['title-start']) ? '' : htmlspecialchars( $new_instance['title-start'], ENT_QUOTES ); $instance['markup']['title-end'] = empty($new_instance['title-end']) ? '' : htmlspecialchars( $new_instance['title-end'], ENT_QUOTES ); $instance['markup']['pattern']['active'] = $new_instance['pattern_active']; $instance['markup']['pattern']['form'] = empty($new_instance['pattern_form']) ? '{image} {title}: {summary} {stats}' : strip_tags( $new_instance['pattern_form'] ); return $instance; } // widget's form function form($instance) { // set default values $defaults = array( 'title' => __('Popular Posts', 'wordpress-popular-posts'), 'limit' => 10, 'range' => 'daily', 'order_by' => 'comments', 'pages' => true, 'shorten_title' => array( 'active' => false, 'length' => 25, 'keep_format' => false ), 'post-excerpt' => array( 'active' => false, 'length' => 55 ), 'exclude-cats' => array( 'active' => false, 'cats' => '' ), 'thumbnail' => array( 'active' => false, 'width' => 15, 'height' => 15 ), 'rating' => false, 'stats_tag' => array( 'comment_count' => true, 'views' => false, 'author' => false, 'date' => array( 'active' => false, 'format' => 'F j, Y' ) ), 'markup' => array( 'custom_html' => false, 'wpp-start' => '<ul>', 'wpp-end' => '</ul>', 'post-start' => '<li>', 'post-end' => '</li>', 'title-start' => '<h2>', 'title-end' => '</h2>', 'pattern' => array( 'active' => false, 'form' => '{image} {title}: {summary} {stats}' ) ) ); // update instance's default options $instance = wp_parse_args( (array) $instance, $defaults ); // form ?> <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:', 'wordpress-popular-posts'); ?></label> <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" class="widefat" /></p> <p><label for="<?php echo $this->get_field_id( 'limit' ); ?>"><?php _e('Show up to:', 'wordpress-popular-posts'); ?></label><br /> <input id="<?php echo $this->get_field_id( 'limit' ); ?>" name="<?php echo $this->get_field_name( 'limit' ); ?>" value="<?php echo $instance['limit']; ?>" class="widefat" style="width:50px!important" /> <?php _e('posts', 'wordpress-popular-posts'); ?></p> <p><label for="<?php echo $this->get_field_id( 'range' ); ?>"><?php _e('Time Range:', 'wordpress-popular-posts'); ?></label> <select id="<?php echo $this->get_field_id( 'range' ); ?>" name="<?php echo $this->get_field_name( 'range' ); ?>" class="widefat"> <option value="daily" <?php if ( 'daily' == $instance['range'] ) echo 'selected="selected"'; ?>><?php _e('Today', 'wordpress-popular-posts'); ?></option> <option value="weekly" <?php if ( 'weekly' == $instance['range'] ) echo 'selected="selected"'; ?>><?php _e('Last 7 days', 'wordpress-popular-posts'); ?></option> <option value="monthly" <?php if ( 'monthly' == $instance['range'] ) echo 'selected="selected"'; ?>><?php _e('Last 30 days', 'wordpress-popular-posts'); ?></option> <option value="all" <?php if ( 'all' == $instance['range'] ) echo 'selected="selected"'; ?>><?php _e('All-time', 'wordpress-popular-posts'); ?></option> </select> </p> <p><label for="<?php echo $this->get_field_id( 'order_by' ); ?>"><?php _e('Sort posts by:', 'wordpress-popular-posts'); ?></label> <select id="<?php echo $this->get_field_id( 'order_by' ); ?>" name="<?php echo $this->get_field_name( 'order_by' ); ?>" class="widefat"> <option value="comments" <?php if ( 'comments' == $instance['order_by'] ) echo 'selected="selected"'; ?>><?php _e('Comments', 'wordpress-popular-posts'); ?></option> <option value="views" <?php if ( 'views' == $instance['order_by'] ) echo 'selected="selected"'; ?>><?php _e('Total views', 'wordpress-popular-posts'); ?></option> <option value="avg" <?php if ( 'avg' == $instance['order_by'] ) echo 'selected="selected"'; ?>><?php _e('Avg. daily views', 'wordpress-popular-posts'); ?></option> </select> </p> <input type="checkbox" class="checkbox" <?php echo ($instance['pages']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'pages' ); ?>" name="<?php echo $this->get_field_name( 'pages' ); ?>" /> <label for="<?php echo $this->get_field_id( 'pages' ); ?>"><?php _e('Include pages', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <?php if ($this->postRating) : ?> <input type="checkbox" class="checkbox" <?php echo ($instance['rating']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'rating' ); ?>" name="<?php echo $this->get_field_name( 'rating' ); ?>" /> <label for="<?php echo $this->get_field_id( 'rating' ); ?>"><?php _e('Display post rating', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <?php endif; ?> <input type="checkbox" class="checkbox" <?php echo ($instance['shorten_title']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'shorten_title-active' ); ?>" name="<?php echo $this->get_field_name( 'shorten_title-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'shorten_title-active' ); ?>"><?php _e('Shorten title output', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <?php if ($instance['shorten_title']['active']) : ?> <label for="<?php echo $this->get_field_id( 'shorten_title-length' ); ?>"><?php _e('Shorten title to', 'wordpress-popular-posts'); ?> <input id="<?php echo $this->get_field_id( 'shorten_title-length' ); ?>" name="<?php echo $this->get_field_name( 'shorten_title-length' ); ?>" value="<?php echo $instance['shorten_title']['length']; ?>" class="widefat" style="width:50px!important" /> <?php _e('characters', 'wordpress-popular-posts'); ?></label><br /><br /> <?php endif; ?> <input type="checkbox" class="checkbox" <?php echo ($instance['post-excerpt']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'post-excerpt-active' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'post-excerpt-active' ); ?>"><?php _e('Display post excerpt', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <?php if ($instance['post-excerpt']['active']) : ?> <fieldset class="widefat"> <legend><?php _e('Excerpt Properties', 'wordpress-popular-posts'); ?></legend> <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id( 'post-excerpt-format' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-format' ); ?>" <?php echo ($instance['post-excerpt']['keep_format']) ? 'checked="checked"' : ''; ?> /> <label for="<?php echo $this->get_field_id( 'post-excerpt-format' ); ?>"><?php _e('Keep text format and links', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <label for="<?php echo $this->get_field_id( 'post-excerpt-length' ); ?>"><?php _e('Excerpt length:', 'wordpress-popular-posts'); ?> <input id="<?php echo $this->get_field_id( 'post-excerpt-length' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-length' ); ?>" value="<?php echo $instance['post-excerpt']['length']; ?>" class="widefat" style="width:30px!important" /> <?php _e('characters', 'wordpress-popular-posts'); ?></label> </fieldset> <br /> <?php endif; ?> <input type="checkbox" class="checkbox" <?php echo ($instance['exclude-cats']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'exclude-cats' ); ?>" name="<?php echo $this->get_field_name( 'exclude-cats' ); ?>" /> <label for="<?php echo $this->get_field_id( 'exclude-cats' ); ?>"><?php _e('Exclude categories', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <?php if ($instance['exclude-cats']['active']) : ?> <fieldset class="widefat"> <legend><?php _e('Categories to exclude', 'wordpress-popular-posts'); ?></legend> <label for="<?php echo $this->get_field_id( 'excluded' ); ?>"><?php _e('ID(s) (comma separated, no spaces):', 'wordpress-popular-posts'); ?></label><br /> <input id="<?php echo $this->get_field_id( 'excluded' ); ?>" name="<?php echo $this->get_field_name( 'excluded' ); ?>" value="<?php echo $instance['exclude-cats']['cats']; ?>" class="widefat" style="width:150px" /><br /><br /> </fieldset> <?php endif; ?> <br /> <fieldset style="width:214px; padding:5px;" class="widefat"> <legend><?php _e('Thumbnail settings', 'wordpress-popular-posts'); ?></legend> <input type="checkbox" class="checkbox" <?php echo ($instance['thumbnail']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'thumbnail-active' ); ?>" name="<?php echo $this->get_field_name( 'thumbnail-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'thumbnail-active' ); ?>"><?php _e('Display post thumbnail', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <?php if($instance['thumbnail']['active']) : ?> <input type="radio" name="<?php echo $this->get_field_name( 'thumb_selection' ); ?>" value="wppgenerated" <?php if ( 'wppgenerated' == $instance['thumbnail']['thumb_selection'] ) echo 'checked="checked"'; ?>> <label for="<?php echo $this->get_field_id( 'thumb_selection' ); ?>"><?php _e('Generate all thumbnails for me', 'wordpress-popular-posts'); ?></label><br /> <input type="radio" name="<?php echo $this->get_field_name( 'thumb_selection' ); ?>" value="usergenerated" <?php if ( 'usergenerated' == $instance['thumbnail']['thumb_selection']) { echo 'checked="checked"'; } if (!function_exists('get_the_post_thumbnail')) { echo 'disabled="disabled"'; } ?>> <label for="<?php echo $this->get_field_id( 'thumb_selection' ); ?>"><?php _e('Use thumbnails selected by me', 'wordpress-popular-posts'); ?></label> <label for="<?php echo $this->get_field_id( 'thumbnail-width' ); ?>"><?php _e('Width:', 'wordpress-popular-posts'); ?></label> <input id="<?php echo $this->get_field_id( 'thumbnail-width' ); ?>" name="<?php echo $this->get_field_name( 'thumbnail-width' ); ?>" value="<?php echo $instance['thumbnail']['width']; ?>" class="widefat" style="width:30px!important" <?php echo ($this->thumb) ? '' : 'disabled="disabled"' ?> /> <?php _e('px', 'wordpress-popular-posts'); ?> <br /> <label for="<?php echo $this->get_field_id( 'thumbnail-height' ); ?>"><?php _e('Height:', 'wordpress-popular-posts'); ?></label> <input id="<?php echo $this->get_field_id( 'thumbnail-height' ); ?>" name="<?php echo $this->get_field_name( 'thumbnail-height' ); ?>" value="<?php echo $instance['thumbnail']['height']; ?>" class="widefat" style="width:30px!important" <?php echo ($this->thumb) ? '' : 'disabled="disabled"' ?> /> <?php _e('px', 'wordpress-popular-posts'); ?><br /> <?php endif; ?> </fieldset> <br /> <fieldset style="width:214px; padding:5px;" class="widefat"> <legend><?php _e('Stats Tag settings', 'wordpress-popular-posts'); ?></legend> <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['comment_count']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'comment_count' ); ?>" name="<?php echo $this->get_field_name( 'comment_count' ); ?>" /> <label for="<?php echo $this->get_field_id( 'comment_count' ); ?>"><?php _e('Display comment count', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['views']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'views' ); ?>" name="<?php echo $this->get_field_name( 'views' ); ?>" /> <label for="<?php echo $this->get_field_id( 'views' ); ?>"><?php _e('Display views', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['author']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'author' ); ?>" name="<?php echo $this->get_field_name( 'author' ); ?>" /> <label for="<?php echo $this->get_field_id( 'author' ); ?>"><?php _e('Display author', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['date']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'date' ); ?>" name="<?php echo $this->get_field_name( 'date' ); ?>" /> <label for="<?php echo $this->get_field_id( 'date' ); ?>"><?php _e('Display date', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small> <?php if ($instance['stats_tag']['date']['active']) : ?> <fieldset class="widefat"> <legend><?php _e('Date Format', 'wordpress-popular-posts'); ?></legend> <label title='F j, Y'><input type='radio' name='<?php echo $this->get_field_name( 'date_format' ); ?>' value='F j, Y' <?php echo ($instance['stats_tag']['date']['format'] == 'F j, Y') ? 'checked="checked"' : ''; ?> /><?php echo date('F j, Y', time()); ?></label><br /> <label title='Y/m/d'><input type='radio' name='<?php echo $this->get_field_name( 'date_format' ); ?>' value='Y/m/d' <?php echo ($instance['stats_tag']['date']['format'] == 'Y/m/d') ? 'checked="checked"' : ''; ?> /><?php echo date('Y/m/d', time()); ?></label><br /> <label title='m/d/Y'><input type='radio' name='<?php echo $this->get_field_name( 'date_format' ); ?>' value='m/d/Y' <?php echo ($instance['stats_tag']['date']['format'] == 'm/d/Y') ? 'checked="checked"' : ''; ?> /><?php echo date('m/d/Y', time()); ?></label><br /> <label title='d/m/Y'><input type='radio' name='<?php echo $this->get_field_name( 'date_format' ); ?>' value='d/m/Y' <?php echo ($instance['stats_tag']['date']['format'] == 'd/m/Y') ? 'checked="checked"' : ''; ?> /><?php echo date('d/m/Y', time()); ?></label><br /> </fieldset> <?php endif; ?> </fieldset> <br /> <fieldset style="width:214px; padding:5px;" class="widefat"> <legend><?php _e('HTML Markup settings', 'wordpress-popular-posts'); ?></legend> <input type="checkbox" class="checkbox" <?php echo ($instance['markup']['custom_html']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'custom_html' ); ?>" name="<?php echo $this->get_field_name( 'custom_html' ); ?>" /> <label for="<?php echo $this->get_field_id( 'custom_html' ); ?>"><?php _e('Use custom HTML Markup', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <?php if ($instance['markup']['custom_html']) : ?> <br /> <p style="font-size:11px"><label for="<?php echo $this->get_field_id( 'title-start' ); ?>"><?php _e('Before / after title:', 'wordpress-popular-posts'); ?></label> <br /> <input type="text" id="<?php echo $this->get_field_id( 'title-start' ); ?>" name="<?php echo $this->get_field_name( 'title-start' ); ?>" value="<?php echo $instance['markup']['title-start']; ?>" class="widefat" style="width:80px!important" <?php echo ($instance['markup']['custom_html']) ? '' : 'disabled="disabled"' ?> /> <input type="text" id="<?php echo $this->get_field_id( 'title-end' ); ?>" name="<?php echo $this->get_field_name( 'title-end' ); ?>" value="<?php echo $instance['markup']['title-end']; ?>" class="widefat" style="width:80px!important" <?php echo ($instance['markup']['custom_html']) ? '' : 'disabled="disabled"' ?> /></p> <p style="font-size:11px"><label for="<?php echo $this->get_field_id( 'wpp_start' ); ?>"><?php _e('Before / after Popular Posts:', 'wordpress-popular-posts'); ?></label> <br /> <input type="text" id="<?php echo $this->get_field_id( 'wpp-start' ); ?>" name="<?php echo $this->get_field_name( 'wpp-start' ); ?>" value="<?php echo $instance['markup']['wpp-start']; ?>" class="widefat" style="width:80px!important" <?php echo ($instance['markup']['custom_html']) ? '' : 'disabled="disabled"' ?> /> <input type="text" id="<?php echo $this->get_field_id( 'wpp-end' ); ?>" name="<?php echo $this->get_field_name( 'wpp-end' ); ?>" value="<?php echo $instance['markup']['wpp-end']; ?>" class="widefat" style="width:80px!important" <?php echo ($instance['markup']['custom_html']) ? '' : 'disabled="disabled"' ?> /></p> <p style="font-size:11px"><label for="<?php echo $this->get_field_id( 'post-start' ); ?>"><?php _e('Before / after each post:', 'wordpress-popular-posts'); ?></label> <br /> <input type="text" id="<?php echo $this->get_field_id( 'post-start' ); ?>" name="<?php echo $this->get_field_name( 'post-start' ); ?>" value="<?php echo $instance['markup']['post-start']; ?>" class="widefat" style="width:80px!important" <?php echo ($instance['markup']['custom_html']) ? '' : 'disabled="disabled"' ?> /> <input type="text" id="<?php echo $this->get_field_id( 'post-end' ); ?>" name="<?php echo $this->get_field_name( 'post-end' ); ?>" value="<?php echo $instance['markup']['post-end']; ?>" class="widefat" style="width:80px!important" <?php echo ($instance['markup']['custom_html']) ? '' : 'disabled="disabled"' ?> /></p> <hr /> <?php endif; ?> <input type="checkbox" class="checkbox" <?php echo ($instance['markup']['pattern']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'pattern_active' ); ?>" name="<?php echo $this->get_field_name( 'pattern_active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'pattern_active' ); ?>"><?php _e('Use content formatting tags', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br /> <?php if ($instance['markup']['pattern']['active']) : ?> <br /> <p style="font-size:11px"><label for="<?php echo $this->get_field_id( 'pattern_form' ); ?>"><?php _e('Content format:', 'wordpress-popular-posts'); ?></label> <input type="text" id="<?php echo $this->get_field_id( 'pattern_form' ); ?>" name="<?php echo $this->get_field_name( 'pattern_form' ); ?>" value="<?php echo $instance['markup']['pattern']['form']; ?>" style="width:204px" <?php echo ($instance['markup']['pattern']['active']) ? '' : 'disabled="disabled"' ?> /></p> <?php endif; ?> </fieldset> <?php // end form } // updates popular posts data table function wpp_ajax_update() { $nonce = $_POST['token']; // is this a valid request? if (! wp_verify_nonce($nonce, 'wpp-token') ) die("Oops!"); if (is_numeric($_POST['id']) && (intval($_POST['id']) == floatval($_POST['id'])) && ($_POST['id'] != '')) { $id = $_POST['id']; } else { die("Invalid ID"); } // if we got an ID, let's update the data table global $wpdb; $wpdb->show_errors(); $table = $wpdb->prefix . 'popularpostsdata'; // update popularpostsdata table $exists = $wpdb->get_results("SELECT postid FROM $table WHERE postid = '$id'"); if ($exists) { $result = $wpdb->query("UPDATE $table SET last_viewed = NOW(), pageviews = pageviews + 1 WHERE postid = '$id'"); } else { $result = $wpdb->query("INSERT INTO $table (postid, day, last_viewed) VALUES ('".$id."', NOW(), NOW())"); } // update popularpostsdatacache table $isincache = $wpdb->get_results("SELECT id FROM ".$table."cache WHERE id = '".$id."' AND day = CURDATE()"); if ($isincache) { $result2 = $wpdb->query("UPDATE ".$table."cache SET pageviews = pageviews + 1 WHERE id = '".$id."' AND day = CURDATE()"); } else { $result2 = $wpdb->query("INSERT INTO ".$table."cache (id, day) VALUES ('".$id."', CURDATE())"); } if (($result == 1) && ($result2 == 1)) { die("OK"); } else { die($wpdb->print_error); } } // clears WordPress Popular Posts' data function wpp_clear_data() { $token = $_POST['token']; $clear = isset($_POST['clear']) ? $_POST['clear'] : ''; $key = get_option("wpp_rand"); if (current_user_can('manage_options') && ($token === $key) && !empty($clear)) { global $wpdb; // set table name $table = $wpdb->prefix . "popularpostsdata"; $cache = $wpdb->prefix . "popularpostsdatacache"; if ($clear == 'cache') { if ( $wpdb->get_var("SHOW TABLES LIKE '$cache'") == $cache ) { $wpdb->query("TRUNCATE TABLE $cache;"); _e('Success! The cache table has been cleared!', 'wordpress-popular-posts'); } else { _e('Error: cache table does not exist.', 'wordpress-popular-posts'); } } else if ($clear == 'all') { if ( $wpdb->get_var("SHOW TABLES LIKE '$table'") == $table && $wpdb->get_var("SHOW TABLES LIKE '$cache'") == $cache ) { $wpdb->query("TRUNCATE TABLE $table;"); $wpdb->query("TRUNCATE TABLE $cache;"); _e('Success! All data have been cleared!', 'wordpress-popular-posts'); } else { _e('Error: one or both data tables are missing.', 'wordpress-popular-posts'); } } else { _e('Invalid action.', 'wordpress-popular-posts'); } } else { _e('Sorry, you do not have enough permissions to do this. Please contact the site administrator for support.', 'wordpress-popular-posts'); } die(); } // database install function wpp_install() { global $wpdb; // set table name $table = $wpdb->prefix . "popularpostsdata"; // does popularpostsdata table exists? if ( $wpdb->get_var("SHOW TABLES LIKE '$table'") != $table ) { // fresh setup // create tables popularpostsdata and popularpostsdatacache $sql = "CREATE TABLE " . $table . " ( UNIQUE KEY id (postid), postid int(10) NOT NULL, day datetime NOT NULL default '0000-00-00 00:00:00', last_viewed datetime NOT NULL default '0000-00-00 00:00:00', pageviews int(10) default 1 ); CREATE TABLE " . $table ."cache ( UNIQUE KEY id (id, day), id int(10) NOT NULL, day date NOT NULL, pageviews int(10) default 1 );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } else { $cache = $table . "cache"; if ( $wpdb->get_var("SHOW TABLES LIKE '$cache'") != $cache ) { // someone is upgrading from version 1.5.x $sql = "CREATE TABLE " . $table ."cache ( UNIQUE KEY id (id, day), id int(10) NOT NULL, day date NOT NULL, pageviews int(10) default 1 );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } } } // prints ajax script to theme's header function wpp_print_ajax() { // let's add jQuery wp_print_scripts('jquery'); // create security token $nonce = wp_create_nonce('wpp-token'); // get current post's ID global $wp_query; wp_reset_query(); // if we're on a page or post, load the script if ( (is_single() || is_page()) && !is_user_logged_in() ) { $id = $wp_query->post->ID; ?> <!-- WordPress Popular Posts v<?php echo $this->version; ?> --> <script type="text/javascript" charset="utf-8"> /* <![CDATA[ */ jQuery.post('<?php echo admin_url('admin-ajax.php'); ?>', {action: 'wpp_update', token: '<?php echo $nonce; ?>', id: <?php echo $id; ?>}); /* ]]> */ </script> <!-- End WordPress Popular Posts v<?php echo $this->version; ?> --> <?php } } // prints popular posts function get_popular_posts($instance, $echo = true) { global $wpdb; $table = $wpdb->prefix . "popularpostsdata"; if ( $instance['pages'] ) { $nopages = ''; } else { $nopages = "AND $wpdb->posts.post_type = 'post'"; } switch( $instance['range'] ) { case 'all': $range = "post_date_gmt < '".gmdate("Y-m-d H:i:s")."'"; break; case 'yesterday': $range = $table."cache.day >= '".gmdate("Y-m-d")."' - INTERVAL 1 DAY"; break; case 'daily': $range = $table."cache.day = CURDATE()"; break; case 'weekly': $range = $table."cache.day >= '".gmdate("Y-m-d")."' - INTERVAL 7 DAY"; break; case 'monthly': $range = $table."cache.day >= '".gmdate("Y-m-d")."' - INTERVAL 30 DAY"; break; default: $range = "post_date_gmt < '".gmdate("Y-m-d H:i:s")."'"; break; } // sorting options switch( $instance['order_by'] ) { case 'comments': $sortby = 'comment_count'; break; case 'views': $sortby = 'pageviews'; break; case 'avg': $sortby = 'avg_views'; break; default: $sortby = 'comment_count'; break; } // dynamic query fields $fields = ', '; if ( $instance['stats_tag']['views'] || ($sortby != 'comment_count') ) { if ( $instance['range'] == 'all') { $fields .= "$table.pageviews AS 'pageviews' "; } else { if ( $sortby == 'avg_views' ) { $fields .= "(SUM(".$table."cache.pageviews)/(IF ( DATEDIFF(CURDATE(), MIN(".$table."cache.day)) > 0, DATEDIFF(CURDATE(), MIN(".$table."cache.day)), 1) )) AS 'avg_views' "; } else { $fields .= "(SUM(".$table."cache.pageviews)) AS 'pageviews' "; } } } if ( $instance['stats_tag']['comment_count'] ) { if ( $fields != ', ' ) { $fields .= ", $wpdb->posts.comment_count AS 'comment_count' "; } else { $fields .= "$wpdb->posts.comment_count AS 'comment_count' "; } } if ( $instance['stats_tag']['author'] ) { if ( $fields != ', ' ) { $fields .= ", (SELECT $wpdb->users.display_name FROM $wpdb->users WHERE $wpdb->users.ID = $wpdb->posts.post_author ) AS 'display_name'"; } else { $fields .= "(SELECT $wpdb->users.display_name FROM $wpdb->users WHERE $wpdb->users.ID = $wpdb->posts.post_author ) AS 'display_name'"; } } if ( $instance['stats_tag']['date']['active'] ) { if ( $fields != ', ' ) { $fields .= ", $wpdb->posts.post_date_gmt AS 'date_gmt'"; } else { $fields .= "$wpdb->posts.post_date_gmt AS 'date_gmt'"; } } if (strlen($fields) == 2) $fields = ''; if ( $instance['range'] == 'all') { $join = "LEFT JOIN $table ON $wpdb->posts.ID = $table.postid"; $force_pv = "AND ".$table.".pageviews > 0 "; } else { $join = "RIGHT JOIN ".$table."cache ON $wpdb->posts.ID = ".$table."cache.id"; $force_pv = ""; } // WPML Support if ($this->wpml) { $join .= ' RIGHT JOIN wp_icl_translations ON wp_posts.ID = wp_icl_translations.element_id'; $range .= ' AND wp_icl_translations.language_code = \'' . ICL_LANGUAGE_CODE . '\' AND wp_icl_translations.element_type = \'post_post\''; } // Category excluding snippet suggested by user raamdev at http://wordpress.org/support/topic/397885 // Thanks, raamdev! if ( $instance['exclude-cats']['active'] && !empty($instance['exclude-cats']['cats']) ) { $exclude = " AND $wpdb->posts.ID NOT IN ( SELECT object_id FROM $wpdb->term_relationships AS r JOIN $wpdb->term_taxonomy AS x ON x.term_taxonomy_id = r.term_taxonomy_id JOIN $wpdb->terms AS t ON t.term_id = x.term_id WHERE x.taxonomy = 'category' AND object_id IN ( SELECT object_id FROM $wpdb->term_relationships AS r JOIN $wpdb->term_taxonomy AS x ON x.term_taxonomy_id = r.term_taxonomy_id JOIN $wpdb->terms AS t ON t.term_id = x.term_id WHERE x.taxonomy = 'category' AND t.term_id IN (".$instance['exclude-cats']['cats']."))) "; } else { $exclude = ""; } $mostpopular = $wpdb->get_results("SELECT $wpdb->posts.ID, $wpdb->posts.post_title $fields FROM $wpdb->posts $join WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_password = '' AND $range $force_pv $nopages $exclude GROUP BY $wpdb->posts.ID ORDER BY $sortby DESC LIMIT " . $instance['limit'] . ""); $content = ''; if ( !is_array($mostpopular) || empty($mostpopular) ) { $content .= "<p>".__('Sorry. No data so far.', 'wordpress-popular-posts')."</p>"."\n"; } else { if ($instance['markup']['custom_html']) { $content .= htmlspecialchars_decode($instance['markup']['wpp-start'], ENT_QUOTES) ."\n"; } else { $content .= "<ul>" . "\n"; } foreach ($mostpopular as $wppost) { $post_stats = ""; $stats = ""; $thumb = ""; $data = array(); // get post title /* qTranslate integration check */ ($this->qTrans) ? $tit = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($wppost->post_title) : $tit = $wppost->post_title; $tit = ($this->magicquotes) ? stripslashes($tit) : $tit; $title_attr = htmlentities($tit, ENT_QUOTES, $this->charset); if ( $instance['shorten_title']['active'] && (strlen($tit) > $instance['shorten_title']['length'])) { $tit = mb_substr($tit, 0, $instance['shorten_title']['length'], $this->charset) . "..."; } $tit = htmlentities($tit, ENT_QUOTES, $this->charset); // get post excerpt if ( $instance['post-excerpt']['active'] ) { if ($instance['markup']['pattern']['active']) { $post_content = "<span class=\"wpp-excerpt\">" . $this->get_summary($wppost->ID, $instance) . "</span>"; } else { $post_content = ": <span class=\"wpp-excerpt\">" . $this->get_summary($wppost->ID, $instance) . "...</span>"; } } else { $post_content = ""; } // build stats tag if ( $instance['stats_tag']['comment_count'] ) { $comment_count = (int) $wppost->comment_count; $post_stats .= "<span class=\"wpp-comments\">" . $comment_count . " " . __(' comment(s)', 'wordpress-popular-posts') . "</span>"; } if ( $instance['stats_tag']['views'] ) { $views_text = __(' view(s)', 'wordpress-popular-posts'); if ($instance['order_by'] == 'views') { $pageviews = (int) $wppost->pageviews; } else if ($instance['order_by'] == 'avg') { $pageviews = ceil($wppost->avg_views); if ($instance['range'] != 'daily') $views_text = __(' view(s) per day', 'wordpress-popular-posts'); } else { $pageviews = (int) $wppost->pageviews; } if ($post_stats != "") { $post_stats .= " | <span class=\"wpp-views\">$pageviews $views_text</span>"; } else { $post_stats .= "<span class=\"wpp-views\">$pageviews $views_text</span>"; } } if ( $instance['stats_tag']['author'] ) { if ($post_stats != "") { $post_stats .= " | ".__('by', 'wordpress-popular-posts')." <span class=\"wpp-author\">".$wppost->display_name."</span>"; } else { $post_stats .= __('by', 'wordpress-popular-posts')." <span class=\"wpp-author\">".$wppost->display_name."</span>"; } } if ( $instance['stats_tag']['date']['active'] ) { if ($post_stats != "") { $post_stats .= " | <span class=\"wpp-date\">".__('posted on', 'wordpress-popular-posts')." ".date($instance['stats_tag']['date']['format'], strtotime($wppost->date_gmt))."</span>"; } else { $post_stats .= "<span class=\"wpp-date\">".__('posted on', 'wordpress-popular-posts')." ".date($instance['stats_tag']['date']['format'], strtotime($wppost->date_gmt))."</span>"; } } if (!empty($post_stats)) { $stats = ' <span class="post-stats">' . $post_stats . '</span> '; } // get thumbnail if ($instance['thumbnail']['active'] && $this->thumb ) { $tbWidth = $instance['thumbnail']['width']; $tbHeight = $instance['thumbnail']['height']; // default image $thumb = "<a href=\"".get_permalink($wppost->ID)."\" class=\"wppnothumb\" title=\"". $title_attr ."\"><img src=\"". $this->pluginDir . "/no_thumb.jpg\" alt=\"".$title_attr."\" border=\"0\" class=\"wpp-thumbnail\" width=\"".$tbWidth."\" height=\"".$tbHeight."\" "."/></a>"; // let's try to retrieve the post thumbnail! if ($instance['thumbnail']['thumb_selection'] == "usergenerated") { // use thumbnail selected by user if (function_exists('get_the_post_thumbnail') && has_post_thumbnail( $wppost->ID )) { $thumb = "<a href=\"".get_permalink($wppost->ID)."\" title=\"". $title_attr ."\">" . get_the_post_thumbnail($wppost->ID, array($tbWidth), array('class' => 'wpp-thumbnail', 'alt' => $title_attr, 'title' => $title_attr) ) ."</a> <!-- $tbWidth $tbHeight-->"; } } else if ($instance['thumbnail']['thumb_selection'] == "wppgenerated") { // WordPress Popular Posts should attempt to create a thumbnail by itself $img = $this->get_img($wppost->ID); if ( ($img && !empty($img)) ) { $thumb = "<a href=\"".get_permalink($wppost->ID)."\" class=\"wppgen\" title=\"". $title_attr ."\"><img src=\"". $this->pluginDir . "/scripts/timthumb.php?src=". $img[1] ."&h=".$tbHeight."&w=".$tbWidth."&zc=1\" alt=\"".$title_attr."\" border=\"0\" class=\"wpp-thumbnail\" width=\"".$tbWidth."\" height=\"".$tbHeight."\" "."/></a>"; } } } // get rating if ($instance['rating'] && $this->postRating) { $rating = '<span class="wpp-rating">'.the_ratings_results($wppost->ID).'</span>'; } else { $rating = ''; } $data = array( 'title' => '<a href="'.get_permalink($wppost->ID).'" title="'. $title_attr .'"><span class="wpp-post-title">'. $tit .'</span></a>', 'summary' => $post_content, 'stats' => $stats, 'img' => $thumb, 'id' => $wppost->ID ); // build custom layout if ($instance['markup']['custom_html']) { if ($instance['markup']['pattern']['active']) { $content .= htmlspecialchars_decode($instance['markup']['post-start'], ENT_QUOTES) . $this->format_content($instance['markup']['pattern']['form'], $data, $instance['rating']) . htmlspecialchars_decode($instance['markup']['post-end'], ENT_QUOTES) . "\n"; } else { $content .= htmlspecialchars_decode($instance['markup']['post-start'], ENT_QUOTES) . $thumb . '<a href="'.get_permalink($wppost->ID).'" title="'. $title_attr .'"><span class="wpp-post-title">'. $tit .'</span></a>'.$post_content.' '. $stats . $rating . htmlspecialchars_decode($instance['markup']['post-end'], ENT_QUOTES) . "\n"; } } else { $content .= '<li>'. $thumb .'<a href="'. get_permalink($wppost->ID) .'" title="'. $title_attr .'"><span class="wpp-post-title">'. $tit .'</span></a>'. $post_content .' '. $stats . $rating .'</li>' . "\n"; } } if ($instance['markup']['custom_html']) { $content .= htmlspecialchars_decode($instance['markup']['wpp-end'], ENT_QUOTES) ."\n"; } else { $content .= "\n"."</ul>"."\n"; } } if ($echo) { echo "<noscript>" . $content . "</noscript>"; } else { return $content; } } // builds posts' excerpt function get_summary($id, $instance){ if (!is_numeric($id)) return false; global $wpdb; $excerpt = ""; $result = ""; $result = $wpdb->get_results("SELECT post_excerpt FROM $wpdb->posts WHERE ID = " . $id, ARRAY_A); if (empty($result[0]['post_excerpt'])) { // no custom excerpt defined, how lazy of you! $result = $wpdb->get_results("SELECT post_content FROM $wpdb->posts WHERE ID = " . $id, ARRAY_A); $excerpt = preg_replace("/\[caption.*\[\/caption\]/", "", $result[0]['post_content']); } else { // user has defined a custom excerpt, yay! $excerpt = preg_replace("/\[caption.*\[\/caption\]/", "", $result[0]['post_excerpt']); } $excerpt = preg_replace("/<object[0-9 a-z_?*=\":\-\/\.#\,\\n\\r\\t]+/smi", "", $excerpt); if ($instance['post-excerpt']['keep_format']) { $excerpt = strip_tags($excerpt, '<a><b><i><strong><em>'); } else { $excerpt = strip_tags($excerpt); } if (strlen($excerpt) > $instance['post-excerpt']['length']) { $excerpt = $this->truncate($excerpt, $instance['post-excerpt']['length'], '', true, true); } return $excerpt; } // gets the first image of post / page function get_img($id = "", $print = false) { if ( empty($id) || !is_numeric($id) ) return false; // get post attachments $attachments = get_children(array('post_parent' => $id, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order')); // no image has been found if ( ! is_array($attachments) ) return false; $count = count($attachments); $first_attachment = array_shift($attachments); $img = wp_get_attachment_image($first_attachment->ID); preg_match('/<\s*img [^\>]*src\s*=\s*[\""\']?([^\""\'\s>]*)/i', $img, $imgm); if ($print) echo $imgm[1]; else
Viewing 3 replies - 1 through 3 (of 3 total)
Viewing 3 replies - 1 through 3 (of 3 total)
- The topic ‘[Plugin: WordPress Popular Posts] Support WPML’ is closed to new replies.