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"); } ?>