<?php wpp_get_mostpopular(); ?>
Version: 2.2.1
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.2.1";
var $qTrans = false;
var $postRating = false;
var $thumb = false;
var $pluginDir = "";
var $charset = "UTF-8";
var $magicquotes = false;
var $default_thumbnail = "";
// 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 default thumbnail
$this->default_thumbnail = $this->pluginDir . "/no_thumb.jpg";
// set charset
$this->charset = get_bloginfo('charset');
// detect PHP magic quotes
$this->magicquotes = get_magic_quotes_gpc();
// print stylesheet
add_action('wp_head', array(&$this, 'wpp_print_stylesheet'));
// 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'));
// activate textdomain for translations
add_action('init', array(&$this, 'wpp_textdomain'));
// activate maintenance page
add_action('admin_menu', array(&$this, 'add_wpp_maintenance_page'));
// 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;
// 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', '>=') && function_exists('add_theme_support')) $this->thumb = true;
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 (!$wpp_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 ""."\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) . htmlspecialchars_decode($instance['title'], ENT_QUOTES) . htmlspecialchars_decode($instance['markup']['title-end'], ENT_QUOTES);
} else {
echo $before_title . htmlspecialchars_decode($instance['title'], ENT_QUOTES) . $after_title;
}
}
echo $this->get_popular_posts($instance, false);
echo $after_widget . "\n";
echo ""."\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'] : '';
$instance['thumbnail']['thumb_selection'] = "usergenerated";
if ($this->thumb) { // can create thumbnails
$instance['thumbnail']['active'] = $new_instance['thumbnail-active'];
$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']['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
?>
id="get_field_id( 'pages' ); ?>" name="get_field_name( 'pages' ); ?>" /> [?]
postRating) : ?>
id="get_field_id( 'rating' ); ?>" name="get_field_name( 'rating' ); ?>" /> [?]
id="get_field_id( 'shorten_title-active' ); ?>" name="get_field_name( 'shorten_title-active' ); ?>" /> [?]
id="get_field_id( 'post-excerpt-active' ); ?>" name="get_field_name( 'post-excerpt-active' ); ?>" /> [?]
id="get_field_id( 'exclude-cats' ); ?>" name="get_field_name( 'exclude-cats' ); ?>" /> [?]
id="get_field_id( 'custom_html' ); ?>" name="get_field_name( 'custom_html' ); ?>" /> [?]
/> />
/> />
/> />
id="get_field_id( 'pattern_active' ); ?>" name="get_field_name( 'pattern_active' ); ?>" /> [?]
/>
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 = '".$this->now()."', pageviews = pageviews + 1 WHERE postid = '$id'");
} else {
$result = $wpdb->query("INSERT INTO $table (postid, day, last_viewed) VALUES ('".$id."', '".$this->now()."', '".$this->now()."')" );
}
// update popularpostsdatacache table
$isincache = $wpdb->get_results("SELECT id FROM ".$table."cache WHERE id = '" . $id ."' AND day BETWEEN '".$this->curdate()." 00:00:00' AND '".$this->curdate()." 23:59:59';");
if ($isincache) {
$result2 = $wpdb->query("UPDATE ".$table."cache SET pageviews = pageviews + 1, day = '".$this->now()."' WHERE id = '". $id . "' AND day BETWEEN '".$this->curdate()." 00:00:00' AND '".$this->curdate()." 23:59:59';");
} else {
$result2 = $wpdb->query("INSERT INTO ".$table."cache (id, day) VALUES ('".$id."', '".$this->now()."')");
}
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;
$sql = "";
$charset_collate = "";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
if ( ! empty($wpdb->charset) ) $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if ( ! empty($wpdb->collate) ) $charset_collate .= " COLLATE $wpdb->collate";
// 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 ) $charset_collate; CREATE TABLE " . $table ."cache ( UNIQUE KEY id (id, day), id int(10) NOT NULL, day datetime NOT NULL default '0000-00-00 00:00:00', pageviews int(10) default 1 ) $charset_collate;";
} 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 datetime NOT NULL, pageviews int(10) default 1 ) $charset_collate;";
}
$dateField = $wpdb->get_results("SHOW FIELDS FROM " . $table ."cache", ARRAY_A);
if ($dateField[1]['Type'] != 'datetime') $wpdb->query("ALTER TABLE ". $table ."cache CHANGE day day datetime NOT NULL default '0000-00-00 00:00:00';");
}
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;
?>
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 = ".$this->curdate();
$range = $table."cache.day >= '".$this->now()."' - INTERVAL 1 DAY";
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 ( $sortby == 'avg_views' ) {
if ( $instance['range'] == 'all') {
$fields .= "(".$table.".pageviews / (IF ( DATEDIFF('".$this->now()."', $wpdb->posts.post_date_gmt) > 0, DATEDIFF('".$this->now()."', $wpdb->posts.post_date_gmt), 1) )) AS 'avg_views' ";
} else {
$fields .= "(SUM(".$table."cache.pageviews)/(IF ( DATEDIFF('".$this->now()."', MIN(".$table."cache.day)) > 0, DATEDIFF('".$this->now()."', MIN(".$table."cache.day)), 1) )) AS 'avg_views' ";
}
} else {
//$fields .= "(SUM(".$table."cache.pageviews)) AS 'pageviews' ";
if ( $instance['range'] == 'all') {
$fields .= "$table.pageviews AS 'pageviews' ";
} 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 = '';
$force_pv = "";
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";
}
// Category excluding snippet suggested by user almergabor at http://wordpress.org/support/topic/plugin-wordpress-popular-posts-exclude-and-include-categories?replies=2#post-2464701
// Thanks, almergabor!
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 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 = '';
//echo "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'];
if ( !is_array($mostpopular) || empty($mostpopular) ) {
$content .= "".__('Sorry. No data so far.', 'wordpress-popular-posts')."
"."\n";
} else {
if ($instance['markup']['custom_html']) {
$content .= htmlspecialchars_decode($instance['markup']['wpp-start'], ENT_QUOTES) ."\n";
} else {
$content .= "" . "\n";
}
foreach ($mostpopular as $wppost) {
$post_stats = "";
$stats = "";
$thumb = "";
$the_ID = $wppost->ID;
$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);
$title_attr = apply_filters('the_title', $tit);
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);
$tit = apply_filters('the_title', $tit);
// get post excerpt
if ( $instance['post-excerpt']['active'] ) {
if ($instance['markup']['pattern']['active']) {
$post_content = "" . $this->get_summary($the_ID, $instance) . "";
} else {
$post_content = ": " . $this->get_summary($the_ID, $instance) . "...";
}
} else {
$post_content = "";
}
// build stats tag
if ( $instance['stats_tag']['comment_count'] ) {
$comment_count = (int) $wppost->comment_count;
$post_stats .= "";
}
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);
$pageviews = round($wppost->avg_views, 2);
if ($instance['range'] != 'daily') $views_text = __(' view(s) per day', 'wordpress-popular-posts');
} else {
$pageviews = (int) $wppost->pageviews;
}
if ($post_stats != "") {
$post_stats .= " | $pageviews $views_text";
} else {
$post_stats .= "$pageviews $views_text";
}
}
if ( $instance['stats_tag']['author'] ) {
if ($post_stats != "") {
$post_stats .= " | ".__('by', 'wordpress-popular-posts')." ".$wppost->display_name."";
} else {
$post_stats .= __('by', 'wordpress-popular-posts')." ".$wppost->display_name."";
}
}
if ( $instance['stats_tag']['date']['active'] ) {
if ($post_stats != "") {
$post_stats .= " | ".__('posted on', 'wordpress-popular-posts')." ".date_i18n($instance['stats_tag']['date']['format'], strtotime($wppost->date_gmt))."";
} else {
$post_stats .= "".__('posted on', 'wordpress-popular-posts')." ".date_i18n($instance['stats_tag']['date']['format'], strtotime($wppost->date_gmt))."";
}
}
if (!empty($post_stats)) {
$stats = ' ' . $post_stats . ' ';
}
// get thumbnail
if ($instance['thumbnail']['active'] && $this->thumb) {
$tbWidth = $instance['thumbnail']['width'];
$tbHeight = $instance['thumbnail']['height'];
if (!function_exists('get_the_post_thumbnail')) { // if the Featured Image is not active, show default thumbnail
$thumb = "
default_thumbnail . "\" alt=\"".$title_attr."\" border=\"0\" class=\"wpp-thumbnail\" width=\"".$tbWidth."\" height=\"".$tbHeight."\" "."/>";
} else {
if (has_post_thumbnail( $the_ID )) { // if the post has a thumbnail, get it
$thumb = "" . get_the_post_thumbnail($the_ID, array($tbWidth, $tbHeight), array('class' => 'wpp-thumbnail', 'alt' => $title_attr, 'title' => $title_attr) ) . "";
} else { // try to generate a post thumbnail from first image attached to post. If it fails, use default thumbnail
$thumb = "" . $this->generate_post_thumbnail($the_ID, array($tbWidth, $tbHeight), array('class' => 'wpp-thumbnail', 'alt' => $title_attr, 'title' => $title_attr) ) ."";
}
}
}
// get rating
if ($instance['rating'] && $this->postRating) {
$rating = ''.the_ratings_results($the_ID).'';
} else {
$rating = '';
}
$data = array(
'title' => ''. $tit .'',
'summary' => $post_content,
'stats' => $stats,
'img' => $thumb,
'id' => $the_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 . ''. $tit .''.$post_content.' '. $stats . $rating . htmlspecialchars_decode($instance['markup']['post-end'], ENT_QUOTES) . "\n";
}
} else {
$content .= '- '. $thumb .''. $tit .''. $post_content .' '. $stats . $rating .'
' . "\n";
}
}
if ($instance['markup']['custom_html']) {
$content .= htmlspecialchars_decode($instance['markup']['wpp-end'], ENT_QUOTES) ."\n";
} else {
$content .= "\n"."
"."\n";
}
}
if ($echo) { echo ""; } 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']);
}
// RRR added call to the_content filters, allows qTranslate to hook in.
if ($this->qTrans) $excerpt = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($excerpt);
// remove flash objects
$excerpt = preg_replace("/