PluginProbe
WebberZone Top 10 — Popular Posts / 4.5.1
WebberZone Top 10 — Popular Posts v4.5.1
4.5.1 4.5.0 4.4.3 4.4.2 4.4.1 4.4.0 4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 trunk 1.0 1.0.1 1.1 1.2 1.3 1.4 1.4.1 1.5 1.5.1 1.5.2 1.5.3 1.6 1.6.1 All 117 releases
← All changes | top-10.php +248 -220 1.04.5.1 View file →
@@ -1,220 +1,248 @@
1 -<?php
2 -/*
3 -Plugin Name: Top 10
4 -Version: 1.0
5 -Plugin URI: http://ajaydsouza.com/wordpress/plugins/top-10/
6 -Description: Count visits per post and display the top 10 posts. Based on the plugin by <a href="http://weblogtoolscollection.com">Mark Ghosh</a>. <a href="options-general.php?page=tptn_options">Configure...</a>
7 -Author: Ajay D'Souza
8 -Author URI: http://ajaydsouza.com/
9 -*/
10 -
11 -//if (!defined('ABSPATH')) die("Aren't you supposed to come here via WP-Admin?");
12 -if (!function_exists('add_action')) {
13 - $wp_root = '../../..';
14 - if (file_exists($wp_root.'/wp-load.php')) {
15 - require_once($wp_root.'/wp-load.php');
16 - } else {
17 - require_once($wp_root.'/wp-config.php');
18 - }
19 -}
20 -
21 -$tptn_db_version = "1.0";
22 -
23 -function ald_tptn_init() {
24 - load_plugin_textdomain('myald_tptn_plugin', PLUGINDIR.'/'.dirname(plugin_basename(__FILE__)));
25 -}
26 -add_action('init', 'ald_tptn_init');
27 -
28 -define('ALD_TPTN_DIR', dirname(__FILE__));
29 -
30 -/*********************************************************************
31 -* Main Function (Do not edit) *
32 -********************************************************************/
33 -// Update post views
34 -add_action('wp_head','tptn_add_viewed_count');
35 -function tptn_add_viewed_count() {
36 - global $post, $wpdb, $single;
37 - $table_name = $wpdb->prefix . "top_ten";
38 -
39 - if(is_single() || is_page()) {
40 - $id = intval($post->ID);
41 - if(defined('WP_CACHE') && WP_CACHE) { ?>
42 - <!-- Start of Top 10 JS -->
43 - <?php wp_print_scripts(array('sack')); ?>
44 - <script type="text/javascript">
45 - //<![CDATA[
46 - top_ten_count = new sack("<?php bloginfo( 'wpurl' ); ?>/wp-content/plugins/top-10/top-10_ajax.php");
47 - top_ten_count.setVar( "top_ten_id", <?php echo $id ?> );
48 - top_ten_count.method = 'GET';
49 - top_ten_count.onError = function() { alert('Ajax error' )};
50 - top_ten_count.runAJAX();
51 - top_ten_count = null;
52 - //]]>
53 - </script>
54 - <!-- Start of Top 10 JS -->
55 - <?php } else {
56 - $results = $wpdb->get_results("select postnumber, cntaccess from $table_name where postnumber = '$id'");
57 - $test = 0;
58 - if ($results) {
59 - foreach ($results as $result) {
60 - $wpdb->query("update $table_name set cntaccess = cntaccess + 1 where postnumber = $result->postnumber");
61 - $test = 1;
62 - }
63 - }
64 - if ($test == 0) {
65 - $wpdb->query("insert into $table_name (postnumber, cntaccess) values('$id', '1')");
66 - }
67 - }
68 - }
69 -}
70 -
71 -// Function to show post count
72 -function tptn_show_post_count() {
73 - global $wpdb, $post;
74 - $id = intval($post->ID);
75 - $table_name = $wpdb->prefix . "top_ten";
76 - $tptn_settings = tptn_read_options();
77 - $before_count = $tptn_settings['before_count'];
78 - $after_count = $tptn_settings['after_count'];
79 -
80 - $resultscount = $wpdb->get_row("select postnumber, cntaccess from $table_name WHERE postnumber = $id");
81 - $cntaccess = (($resultscount) ? $resultscount->cntaccess : 0);
82 -
83 - return $before_count.$cntaccess.$after_count;
84 -}
85 -
86 -function tptn_pc_content($content) {
87 -
88 - global $single, $post;
89 - $tptn_settings = tptn_read_options();
90 - $id = intval($post->ID);
91 -
92 - if(($single)&&($tptn_settings['add_to_content'])) {
93 - if(defined('WP_CACHE') && WP_CACHE) {
94 - $output = '<script type="text/javascript" src="'.get_bloginfo('wpurl').'/wp-content/plugins/top-10/top-10-counter.js.php?top_ten_id='.$id.'"></script>';
95 - } else {
96 - $output = tptn_show_post_count();
97 - }
98 - return $content.$output;
99 - } else {
100 - return $content;
101 - }
102 -}
103 -add_filter('the_content', 'tptn_pc_content');
104 -
105 -function echo_tptn_post_count() {
106 - $output = tptn_show_post_count();
107 - echo $output;
108 -}
109 -
110 -
111 -// Function to show popular posts
112 -function tptn_show_pop_posts() {
113 - global $wpdb, $siteurl, $tableposts, $id;
114 - $table_name = $wpdb->prefix . "top_ten";
115 - $tptn_settings = tptn_read_options();
116 - $limit = $tptn_settings['limit'];
117 -
118 - $results = $wpdb->get_results("select postnumber, cntaccess from $table_name ORDER BY cntaccess DESC LIMIT $limit");
119 -
120 - echo '<div id="crp_related">'.$tptn_settings['title'];
121 - echo '<ul>';
122 - if ($results) {
123 - foreach ($results as $result) {
124 - echo '<li><a href="'.get_permalink($result->postnumber).'">'.get_the_title($result->postnumber).'</a> ('.$result->cntaccess.')</li>';
125 - }
126 - }
127 - if ($tptn_settings['show_credit']) echo '<li>Popular posts by <a href="http://ajaydsouza.com/wordpress/plugins/top-10/">Top 10 plugin</a></li>';
128 - echo '</ul>';
129 - echo '</div><br/><br/>';
130 -
131 -}
132 -
133 -// Default Options
134 -function tptn_default_options() {
135 - $title = __('<h3>Popular Posts:</h3>');
136 -
137 - $tptn_settings = Array (
138 - show_credit => true, // Add link to plugin page of my blog in top posts list
139 - add_to_content => true, // Add post count to content (only on single pages)
140 - before_count => '(Visited ', // Text to display before the count
141 - after_count => ' times)', // Text to display after the count
142 - title => $title, // Add before the content
143 - limit => '10', // How many posts to display?
144 - );
145 - return $tptn_settings;
146 -}
147 -
148 -// Function to read options from the database
149 -function tptn_read_options() {
150 -
151 - $tptn_settings_changed = false;
152 -
153 - $defaults = tptn_default_options();
154 -
155 - $tptn_settings = array_map('stripslashes',(array)get_option('ald_tptn_settings'));
156 - unset($tptn_settings[0]); // produced by the (array) casting when there's nothing in the DB
157 -
158 - foreach ($defaults as $k=>$v) {
159 - if (!isset($tptn_settings[$k]))
160 - $tptn_settings[$k] = $v;
161 - $tptn_settings_changed = true;
162 - }
163 - if ($tptn_settings_changed == true)
164 - update_option('ald_tptn_settings', $tptn_settings);
165 -
166 - return $tptn_settings;
167 -
168 -}
169 -
170 -// Create tables to store pageviews
171 -function tptn_install() {
172 - global $wpdb;
173 - global $tptn_db_version;
174 -
175 - $table_name = $wpdb->prefix . "top_ten";
176 - if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
177 -
178 - $sql = "CREATE TABLE " . $table_name . " (
179 - accessedid int NOT NULL AUTO_INCREMENT,
180 - postnumber int NOT NULL,
181 - cntaccess int NOT NULL,
182 - PRIMARY KEY (accessedid)
183 - );";
184 -
185 - require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
186 - dbDelta($sql);
187 -
188 - add_option("tptn_db_version", $tptn_db_version);
189 - }
190 -
191 - // Upgrade table code
192 - $installed_ver = get_option( "tptn_db_version" );
193 -
194 - if( $installed_ver != $tptn_db_version ) {
195 -
196 - $sql = "CREATE TABLE " . $table_name . " (
197 - accessedid int NOT NULL AUTO_INCREMENT,
198 - postnumber int NOT NULL,
199 - cntaccess int NOT NULL,
200 - PRIMARY KEY (accessedid)
201 - );";
202 -
203 - require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
204 - dbDelta($sql);
205 -
206 - update_option( "tptn_db_version", $tptn_db_version );
207 - }
208 -
209 -}
210 -if (function_exists('register_activation_hook')) {
211 - register_activation_hook(__FILE__,'tptn_install');
212 -}
213 -
214 -// This function adds an Options page in WP Admin
215 -if (is_admin() || strstr($_SERVER['PHP_SELF'], 'wp-admin/')) {
216 - require_once(ALD_TPTN_DIR . "/admin.inc.php");
217 -}
218 -
219 -
220 -?>
1 +<?php
2 +/**
3 + * Top 10.
4 + *
5 + * Count daily and total visits per post and display the most popular posts based on the number of views.
6 + *
7 + * @package Top_Ten
8 + * @author Ajay D'Souza
9 + * @license GPL-2.0+
10 + * @link https://webberzone.com
11 + * @copyright 2008-2026 Ajay D'Souza
12 + *
13 + * @wordpress-plugin
14 + * Plugin Name: WebberZone Top 10
15 + * Plugin URI: https://webberzone.com/plugins/top-10/
16 + * Description: Count daily and total visits per post and display the most popular posts based on the number of views
17 + * Version: 4.5.1
18 + * Author: WebberZone
19 + * Author URI: https://webberzone.com
20 + * License: GPL-2.0+
21 + * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
22 + * Text Domain: top-10
23 + * Domain Path: /languages
24 + * GitHub Plugin URI: https://github.com/WebberZone/top-10/
25 + */
26 +
27 +namespace WebberZone\Top_Ten;
28 +
29 +if ( ! defined( 'WPINC' ) ) {
30 + die;
31 +}
32 +
33 +/**
34 + * Holds the version of Top 10.
35 + *
36 + * @since 3.1.0
37 + */
38 +if ( ! defined( 'TOP_TEN_VERSION' ) ) {
39 + define( 'TOP_TEN_VERSION', '4.5.1' );
40 +}
41 +
42 +/**
43 + * Holds the filesystem directory path (with trailing slash) for Top 10
44 +*
45 + * @since 2.3.0
46 + */
47 +if ( ! defined( 'TOP_TEN_PLUGIN_FILE' ) ) {
48 + define( 'TOP_TEN_PLUGIN_FILE', __FILE__ );
49 +}
50 +
51 +/**
52 + * Holds the filesystem directory path (with trailing slash) for Top 10
53 + *
54 + * @since 2.3.0
55 + */
56 +if ( ! defined( 'TOP_TEN_PLUGIN_DIR' ) ) {
57 + define( 'TOP_TEN_PLUGIN_DIR', plugin_dir_path( TOP_TEN_PLUGIN_FILE ) );
58 +}
59 +
60 +/**
61 + * Holds the filesystem directory path (with trailing slash) for Top 10
62 + *
63 + * @since 2.3.0
64 + */
65 +if ( ! defined( 'TOP_TEN_PLUGIN_URL' ) ) {
66 + define( 'TOP_TEN_PLUGIN_URL', plugin_dir_url( TOP_TEN_PLUGIN_FILE ) );
67 +}
68 +
69 +/**
70 + * Holds the default thumbnail URL for Top 10.
71 + *
72 + * @since 4.2.0
73 + */
74 +if ( ! defined( 'TOP_TEN_DEFAULT_THUMBNAIL_URL' ) ) {
75 + define( 'TOP_TEN_DEFAULT_THUMBNAIL_URL', TOP_TEN_PLUGIN_URL . 'default.png' );
76 +}
77 +
78 +/**
79 + * Number of days of data to be saved in the daily tables.
80 + *
81 + * @since 3.0.0
82 + */
83 +if ( ! defined( 'TOP_TEN_STORE_DATA' ) ) {
84 + define( 'TOP_TEN_STORE_DATA', 180 );
85 +}
86 +
87 +/**
88 + * Number of days of raw visit rows to retain in the visits log table.
89 + *
90 + * @since 4.3.0
91 + */
92 +if ( ! defined( 'TOP_TEN_LOG_STORE_DATA' ) ) {
93 + define( 'TOP_TEN_LOG_STORE_DATA', 30 );
94 +}
95 +
96 +if ( ! function_exists( __NAMESPACE__ . '\\tptn_deactivate_other_instances' ) ) {
97 + /**
98 + * Deactivate other instances of Top 10 when this plugin is activated.
99 + *
100 + * @param string $plugin The plugin being activated.
101 + * @param bool $network_wide Whether the plugin is being activated network-wide.
102 + */
103 + function tptn_deactivate_other_instances( $plugin, $network_wide = false ) {
104 + $free_plugin = 'top-10/top-10.php';
105 + $pro_plugin = 'top-10-pro/top-10.php';
106 +
107 + // Only proceed if one of our plugins is being activated.
108 + if ( ! in_array( $plugin, array( $free_plugin, $pro_plugin ), true ) ) {
109 + return;
110 + }
111 +
112 + $plugins_to_deactivate = array();
113 + $deactivated_plugin = '';
114 +
115 + // If pro is being activated, deactivate free.
116 + if ( $pro_plugin === $plugin ) {
117 + if ( is_plugin_active( $free_plugin ) || ( $network_wide && is_plugin_active_for_network( $free_plugin ) ) ) {
118 + $plugins_to_deactivate[] = $free_plugin;
119 + $deactivated_plugin = 'Top 10';
120 + }
121 + }
122 +
123 + // If free is being activated, deactivate pro.
124 + if ( $free_plugin === $plugin ) {
125 + if ( is_plugin_active( $pro_plugin ) || ( $network_wide && is_plugin_active_for_network( $pro_plugin ) ) ) {
126 + $plugins_to_deactivate[] = $pro_plugin;
127 + $deactivated_plugin = 'Top 10 Pro';
128 + }
129 + }
130 +
131 + if ( ! empty( $plugins_to_deactivate ) ) {
132 + deactivate_plugins( $plugins_to_deactivate, false, $network_wide );
133 + set_transient( 'tptn_deactivated_notice', $deactivated_plugin, 1 * HOUR_IN_SECONDS );
134 + }
135 + }
136 + add_action( 'activated_plugin', __NAMESPACE__ . '\\tptn_deactivate_other_instances', 10, 2 );
137 +}
138 +
139 +// Show admin notice about automatic deactivation.
140 +if ( ! has_action( 'admin_notices', __NAMESPACE__ . '\\tptn_show_deactivation_notice' ) ) {
141 + add_action(
142 + 'admin_notices',
143 + function () {
144 + $deactivated_plugin = get_transient( 'tptn_deactivated_notice' );
145 + if ( $deactivated_plugin ) {
146 + /* translators: %s: Name of the deactivated plugin */
147 + $message = sprintf( __( "Top 10 and Top 10 PRO should not be active at the same time. We've automatically deactivated %s.", 'top-10' ), $deactivated_plugin );
148 + ?>
149 + <div class="updated" style="border-left: 4px solid #ffba00;">
150 + <p><?php echo esc_html( $message ); ?></p>
151 + </div>
152 + <?php
153 + delete_transient( 'tptn_deactivated_notice' );
154 + }
155 + }
156 + );
157 +}
158 +
159 +/**
160 + * Global variable holding the current database version of Top 10
161 + *
162 + * @since 1.0
163 + *
164 + * @var string
165 + */
166 +global $tptn_db_version;
167 +$tptn_db_version = '7.3';
168 +
169 +// Load the Composer autoloader (includes the Freemius SDK).
170 +$composer_autoload = plugin_dir_path( __FILE__ ) . 'vendor/autoload.php';
171 +if ( file_exists( $composer_autoload ) ) {
172 + require_once $composer_autoload;
173 +}
174 +
175 +if ( ! function_exists( __NAMESPACE__ . '\\tptn_freemius' ) ) {
176 + // Load Freemius.
177 + require_once plugin_dir_path( __FILE__ ) . 'load-freemius.php';
178 +}
179 +
180 +// Load the autoloader.
181 +if ( ! function_exists( __NAMESPACE__ . '\\autoload' ) ) {
182 + require_once plugin_dir_path( __FILE__ ) . 'includes/autoloader.php';
183 +}
184 +
185 +// Load the CrawlerDetect library (bundled directly; not via the Composer autoloader).
186 +$tptn_crawler_detect_src = plugin_dir_path( __FILE__ ) . 'vendor/jaybizzle/crawler-detect/src/';
187 +if ( ! class_exists( '\Jaybizzle\CrawlerDetect\CrawlerDetect' ) && is_dir( $tptn_crawler_detect_src ) ) {
188 + require_once $tptn_crawler_detect_src . 'Fixtures/AbstractProvider.php';
189 + require_once $tptn_crawler_detect_src . 'Fixtures/Crawlers.php';
190 + require_once $tptn_crawler_detect_src . 'Fixtures/Exclusions.php';
191 + require_once $tptn_crawler_detect_src . 'Fixtures/Headers.php';
192 + require_once $tptn_crawler_detect_src . 'CrawlerDetect.php';
193 +}
194 +unset( $tptn_crawler_detect_src );
195 +
196 +
197 +if ( ! function_exists( __NAMESPACE__ . '\wz_top_ten' ) ) {
198 + /**
199 + * Returns the main instance of Top 10 to prevent the need to use globals.
200 + *
201 + * @since 4.0.6
202 + *
203 + * @return Main Main instance of the plugin.
204 + */
205 + function wz_top_ten(): Main {
206 + return Main::get_instance();
207 + }
208 +}
209 +
210 +if ( ! function_exists( __NAMESPACE__ . '\load_tptn' ) ) {
211 + /**
212 + * The main function responsible for returning the one true Top 10 instance to functions everywhere.
213 + *
214 + * @since 3.3.0
215 + */
216 + function load_tptn(): void {
217 + wz_top_ten();
218 + }
219 + add_action( 'plugins_loaded', __NAMESPACE__ . '\load_tptn' );
220 +}
221 +
222 +// Register the activation hook.
223 +register_activation_hook( __FILE__, __NAMESPACE__ . '\Admin\Activator::activation_hook' );
224 +
225 +// Register the deactivation hook.
226 +register_deactivation_hook( __FILE__, __NAMESPACE__ . '\Admin\Activator::deactivation_hook' );
227 +
228 +/*
229 + *----------------------------------------------------------------------------
230 + * Include files
231 + *----------------------------------------------------------------------------
232 + */
233 +if ( ! function_exists( 'tptn_get_settings' ) ) {
234 + require_once plugin_dir_path( __FILE__ ) . 'includes/options-api.php';
235 + require_once plugin_dir_path( __FILE__ ) . 'includes/wz-pluggables.php';
236 + require_once plugin_dir_path( __FILE__ ) . 'includes/class-top-ten-query.php';
237 + require_once plugin_dir_path( __FILE__ ) . 'includes/functions.php';
238 +}
239 +
240 +/**
241 + * Global variable holding the current settings for Top 10
242 + *
243 + * @since 1.9.3
244 + *
245 + * @var array
246 + */
247 +global $tptn_settings;
248 +$tptn_settings = tptn_get_settings();