<?php wpp_get_mostpopular(); ?>
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 $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;
// 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 ""."\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 ""."\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'] : '';
/* Restrict Posts to only specific categories - kaynenh */
$instance['include-cats']['active'] = $new_instance['include-cats'];
$instance['include-cats']['cats'] = empty($new_instance['included']) ? '' : (ctype_digit(str_replace(",", "", $new_instance['included']))) ? $new_instance['included'] : '';
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
?>
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( 'include-cats' ); ?>" name="get_field_name( 'include-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 = 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;
?>
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 = "";
}
// 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 = "";
}
/* Category including snippet by kaynenh - only show popular posts in a specific category */
$currentcatobj = get_category(get_query_var('cat'),false);
$currentcat = $currentcatobj->term_id;
if ( $instance['include-cats']['active'] && !empty($instance['include-cats']['cats']) ) {
$includecats = " AND $wpdb->posts.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 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['include-cats']['cats'].")))";
}
/* Added $includecats variable to show only popular posts from a specific category - kaynenh */
$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 $includecats GROUP BY $wpdb->posts.ID ORDER BY $sortby DESC LIMIT " . $instance['limit'] . "");
/*$cat_name = get_cat_name($currentcat);*/
$content = "";
if ( !is_array($mostpopular) || empty($mostpopular) ) {
$content .= "".__('Sorry. No data so far.', 'wordpress-popular-posts').$currentcat."
"."\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 = "";
$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 = "" . $this->get_summary($wppost->ID, $instance) . "";
} else {
$post_content = ": " . $this->get_summary($wppost->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);
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($instance['stats_tag']['date']['format'], strtotime($wppost->date_gmt))."";
} else {
$post_stats .= "".__('posted on', 'wordpress-popular-posts')." ".date($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'];
// default image
$thumb = "ID)."\" class=\"wppnothumb\" title=\"". $title_attr ."\">pluginDir . "/no_thumb.jpg\" alt=\"".$title_attr."\" border=\"0\" class=\"wpp-thumbnail\" width=\"".$tbWidth."\" height=\"".$tbHeight."\" "."/>";
// 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 = "ID)."\" title=\"". $title_attr ."\">" . get_the_post_thumbnail($wppost->ID, array($tbWidth), array('class' => 'wpp-thumbnail', 'alt' => $title_attr, 'title' => $title_attr) ) ." ";
}
} 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 = "ID)."\" class=\"wppgen\" title=\"". $title_attr ."\">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."\" "."/>";
}
}
}
// get rating
if ($instance['rating'] && $this->postRating) {
$rating = ''.the_ratings_results($wppost->ID).'';
} else {
$rating = '';
}
$data = array(
'title' => ''. $tit .'',
'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 . ''. $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']);
}
$excerpt = preg_replace("/