Mark Ghosh. Configure...
Author: Ajay D'Souza
Author URI: http://ajaydsouza.com/
*/
//if (!defined('ABSPATH')) die("Aren't you supposed to come here via WP-Admin?");
if (!function_exists('add_action')) {
$wp_root = '../../..';
if (file_exists($wp_root.'/wp-load.php')) {
require_once($wp_root.'/wp-load.php');
} else {
require_once($wp_root.'/wp-config.php');
}
}
$tptn_db_version = "2.0";
function ald_tptn_init() {
load_plugin_textdomain('myald_tptn_plugin', PLUGINDIR.'/'.dirname(plugin_basename(__FILE__)));
}
add_action('init', 'ald_tptn_init');
define('ALD_TPTN_DIR', dirname(__FILE__));
/*********************************************************************
* Main Function (Do not edit) *
********************************************************************/
// Update post views
add_action('wp_head','tptn_add_viewed_count');
function tptn_add_viewed_count() {
global $post, $wpdb, $single;
$table_name = $wpdb->prefix . "top_ten";
$tptn_settings = tptn_read_options();
$current_user = wp_get_current_user();
$post_author = ( $current_user->ID == $post->post_author ? true : false );
if((is_single() || is_page())) {
if (!(($post_author)&&(!$tptn_settings['track_authors']))) {
$id = intval($post->ID);
$output = '';
echo $output;
}
}
}
// Function to add count to content
function tptn_pc_content($content) {
global $single, $post;
$tptn_settings = tptn_read_options();
$id = intval($post->ID);
if(($single)&&($tptn_settings['add_to_content'])) {
$output = '';
return $content.$output;
} else {
return $content;
}
}
add_filter('the_content', 'tptn_pc_content');
// Function to manually display count
function echo_tptn_post_count() {
global $post;
$id = intval($post->ID);
$output = '';
echo $output;
}
// Function to show popular posts
function tptn_show_pop_posts() {
global $wpdb, $siteurl, $tableposts, $id;
$table_name = $wpdb->prefix . "top_ten";
$tptn_settings = tptn_read_options();
$limit = $tptn_settings['limit'];
$sql = "SELECT postnumber, cntaccess , ID, post_type, post_status ";
$sql .= "FROM $table_name INNER JOIN ". $wpdb->posts ." ON postnumber=ID " ;
if ($tptn_settings['exclude_pages']) $sql .= "AND post_type = 'post' ";
$sql .= "AND post_status = 'publish' ";
$sql .= "ORDER BY cntaccess DESC LIMIT $limit";
$results = $wpdb->get_results($sql);
echo '
';
}
// Function to show daily popular posts
function tptn_show_daily_pop_posts() {
global $wpdb, $siteurl, $tableposts, $id;
$table_name = $wpdb->prefix . "top_ten_daily";
$tptn_settings = tptn_read_options();
$limit = $tptn_settings['limit'];
$sql = "SELECT postnumber, cntaccess , ID, post_type, post_status ";
$sql .= "FROM $table_name INNER JOIN ". $wpdb->posts ." ON postnumber=ID " ;
if ($tptn_settings['exclude_pages']) $sql .= "AND post_type = 'post' ";
$sql .= "AND post_status = 'publish' ";
$sql .= "ORDER BY cntaccess DESC LIMIT $limit";
$results = $wpdb->get_results($sql);
echo '';
}
// Default Options
function tptn_default_options() {
$title = __('Popular Posts
','ald_tptn_plugin');
$title_daily = __('Daily Popular
','ald_tptn_plugin');
$tptn_settings = Array (
show_credit => true, // Add link to plugin page of my blog in top posts list
add_to_content => true, // Add post count to content (only on single pages)
exclude_pages => true, // Exclude Pages
track_authors => false, // Track Authors visits
pv_in_admin => true, // Add an extra column on edit posts/pages to display page views?
count_disp_form => '(Visited %totalcount% times, %dailycount% visits today)', // Format to display the count
title => $title, // Title of Popular Posts
title_daily => $title_daily, // Title of Daily Popular
limit => '10', // How many posts to display?
);
return $tptn_settings;
}
// Function to read options from the database
function tptn_read_options() {
// Upgrade table code
global $tptn_db_version;
$installed_ver = get_option( "tptn_db_version" );
if( $installed_ver != $tptn_db_version ) tptn_install();
$tptn_settings_changed = false;
$defaults = tptn_default_options();
$tptn_settings = array_map('stripslashes',(array)get_option('ald_tptn_settings'));
unset($tptn_settings[0]); // produced by the (array) casting when there's nothing in the DB
foreach ($defaults as $k=>$v) {
if (!isset($tptn_settings[$k])) {
$tptn_settings[$k] = $v;
$tptn_settings_changed = true;
}
}
if ($tptn_settings_changed == true)
update_option('ald_tptn_settings', $tptn_settings);
return $tptn_settings;
}
// Create tables to store pageviews
function tptn_install() {
global $wpdb;
global $tptn_db_version;
$table_name = $wpdb->prefix . "top_ten";
$table_name_daily = $wpdb->prefix . "top_ten_daily";
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "CREATE TABLE " . $table_name . " (
accessedid int NOT NULL AUTO_INCREMENT,
postnumber int NOT NULL,
cntaccess int NOT NULL,
PRIMARY KEY (accessedid)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option("tptn_db_version", $tptn_db_version);
}
if($wpdb->get_var("show tables like '$table_name_daily'") != $table_name_daily) {
$sql = "CREATE TABLE " . $table_name_daily . " (
accessedid int NOT NULL AUTO_INCREMENT,
postnumber int NOT NULL,
cntaccess int NOT NULL,
PRIMARY KEY (accessedid)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option("tptn_db_version", $tptn_db_version);
}
// Upgrade table code
$installed_ver = get_option( "tptn_db_version" );
if( $installed_ver != $tptn_db_version ) {
$sql = "CREATE TABLE " . $table_name . " (
accessedid int NOT NULL AUTO_INCREMENT,
postnumber int NOT NULL,
cntaccess int NOT NULL,
PRIMARY KEY (accessedid)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
$sql = "CREATE TABLE " . $table_name_daily . " (
accessedid int NOT NULL AUTO_INCREMENT,
postnumber int NOT NULL,
cntaccess int NOT NULL,
PRIMARY KEY (accessedid)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
update_option( "tptn_db_version", $tptn_db_version );
}
}
if (function_exists('register_activation_hook')) {
register_activation_hook(__FILE__,'tptn_install');
register_activation_hook(__FILE__, 'tptn_cron_install');
}
/* Schedule daily cron to clean up the Daily Table */
add_action('tptn_cron_hook', 'tptn_daily_clean');
function tptn_cron_install() {
if (!wp_next_scheduled('tptn_cron_hook')) {
wp_schedule_event(mktime(0,0), 'daily', 'tptn_cron_hook');
}
}
function tptn_daily_clean() {
global $wpdb;
$table_name_daily = $wpdb->prefix . "table_name_daily";
$sql = "TRUNCATE TABLE $table_name_daily";
$wpdb->query($sql);
}
if (function_exists('register_deactivation_hook')) {
register_deactivation_hook(__FILE__, 'tptn_cron_deinstall');
}
function tptn_cron_deinstall() {
wp_clear_scheduled_hook('tptn_cron_hook');
}
// Create a WordPress Widget for Popular Posts
function widget_tptn_pop($args) {
global $wpdb, $siteurl, $tableposts, $id;
extract($args); // extracts before_widget,before_title,after_title,after_widget
$table_name = $wpdb->prefix . "top_ten";
$tptn_settings = tptn_read_options();
$limit = $tptn_settings['limit'];
$sql = "SELECT postnumber, cntaccess , ID, post_type ";
$sql .= "FROM $table_name INNER JOIN ". $wpdb->posts ." ON postnumber=ID " ;
if ($tptn_settings['exclude_pages']) $sql .= "AND post_type = 'post' ";
$sql .= "ORDER BY cntaccess DESC LIMIT $limit";
$results = $wpdb->get_results($sql);
$title = (($tptn_settings['title']) ? strip_tags($tptn_settings['title']) : __('Popular Posts'));
echo $before_widget;
echo $before_title.$title.$after_title;
echo '';
echo $after_widget;
}
// Create a WordPress Widget for Daily Popular Posts
function widget_tptn_pop_daily($args) {
global $wpdb, $siteurl, $tableposts, $id;
extract($args); // extracts before_widget,before_title,after_title,after_widget
$table_name = $wpdb->prefix . "top_ten_daily";
$tptn_settings = tptn_read_options();
$limit = $tptn_settings['limit'];
$sql = "SELECT postnumber, cntaccess , ID, post_type ";
$sql .= "FROM $table_name INNER JOIN ". $wpdb->posts ." ON postnumber=ID " ;
if ($tptn_settings['exclude_pages']) $sql .= "AND post_type = 'post' ";
$sql .= "ORDER BY cntaccess DESC LIMIT $limit";
$results = $wpdb->get_results($sql);
$title = (($tptn_settings['title_daily']) ? strip_tags($tptn_settings['title_daily']) : __('Daily Popular'));
echo $before_widget;
echo $before_title.$title.$after_title;
echo '';
echo $after_widget;
}
function init_tptn(){
register_sidebar_widget(__('Popular Posts','ald_tptn_plugin'), 'widget_tptn_pop');
register_sidebar_widget(__('Daily Popular','ald_tptn_plugin'), 'widget_tptn_pop_daily');
}
add_action("plugins_loaded", "init_tptn");
// This function adds an Options page in WP Admin
if (is_admin() || strstr($_SERVER['PHP_SELF'], 'wp-admin/')) {
require_once(ALD_TPTN_DIR . "/admin.inc.php");
}
?>