PluginProbe ʕ •ᴥ•ʔ
WP Popular Posts / 5.2.2
WP Popular Posts v5.2.2
4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.2.0 4.2.1 4.2.2 5.0.0 5.0.1 5.0.2 5.1.0 5.2.0 5.2.1 5.2.2 5.2.3 5.2.4 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.1.2 6.1.3 6.1.4 6.2.0 6.2.1 6.3.0 6.3.1 6.3.2 6.3.3 6.3.4 6.4.0 6.4.1 6.4.2 7.0.0 7.0.1 7.1.0 7.2.0 7.3.0 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 7.3.8 7.4.0 trunk 2.3.7 3.0.0 3.0.1 3.0.2 3.0.3 3.1.0 3.1.1 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.2 4.0.3 4.0.5 4.0.6
wordpress-popular-posts / src / Activation / Activator.php
wordpress-popular-posts / src / Activation Last commit date
Activator.php 5 years ago Deactivator.php 5 years ago
Activator.php
130 lines
1 <?php
2
3 /**
4 * Fired during plugin activation
5 *
6 * @since 1.0.0
7 * @package WordPressPopularPosts
8 */
9
10 /**
11 * Fired during plugin activation.
12 *
13 * This class defines all code necessary to run during the plugin's activation.
14 *
15 * @since 1.0.0
16 * @package WordPressPopularPosts
17 * @author Hector Cabrera <me@cabrerahector.com>
18 */
19
20 namespace WordPressPopularPosts\Activation;
21
22 class Activator {
23 /**
24 * Fired when the plugin is activated.
25 *
26 * @since 1.0.0
27 * @param bool $network_wide True if WPMU superadmin uses "Network Activate" action, false if WPMU is disabled or plugin is activated on an individual blog.
28 * @global object $wpdb
29 */
30 public static function activate($network_wide)
31 {
32 global $wpdb;
33
34 if ( function_exists('is_multisite') && \is_multisite() ) {
35 // run activation for each blog in the network
36 if ( $network_wide ) {
37 $original_blog_id = \get_current_blog_id();
38 $blogs_ids = $wpdb->get_col("SELECT blog_id FROM {$wpdb->blogs}");
39
40 foreach( $blogs_ids as $blog_id ) {
41 \switch_to_blog($blog_id);
42 self::plugin_activate();
43 }
44
45 // switch back to current blog
46 \switch_to_blog($original_blog_id);
47
48 return;
49 }
50 }
51
52 self::plugin_activate();
53 }
54
55 /**
56 * When a new MU site is added, generate its WPP DB tables.
57 *
58 * @since 1.0.0
59 */
60 public static function track_new_site()
61 {
62 self::plugin_activate();
63 }
64
65 /**
66 * On plugin activation, checks that the WPP database tables are present.
67 *
68 * @since 1.0.0
69 * @global object $wpdb
70 */
71 private static function plugin_activate()
72 {
73 $wpp_ver = \get_option('wpp_ver');
74
75 if (
76 ! $wpp_ver
77 || version_compare($wpp_ver, WPP_VERSION, '<')
78 ) {
79 global $wpdb;
80
81 $prefix = $wpdb->prefix . "popularposts";
82 self::do_db_tables($prefix);
83 }
84 }
85
86 /**
87 * Creates/updates the database tables.
88 *
89 * @since 1.0.0
90 * @param string $prefix
91 * @global object $wpdb
92 */
93 private static function do_db_tables($prefix)
94 {
95 global $wpdb;
96 $charset_collate = "";
97
98 if ( !empty($wpdb->charset) )
99 $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset} ";
100
101 if ( !empty($wpdb->collate) )
102 $charset_collate .= "COLLATE {$wpdb->collate}";
103
104 $sql = "
105 CREATE TABLE {$prefix}data (
106 postid bigint(20) NOT NULL,
107 day datetime NOT NULL,
108 last_viewed datetime NOT NULL,
109 pageviews bigint(20) DEFAULT 1,
110 PRIMARY KEY (postid)
111 ) {$charset_collate} ENGINE=InnoDB;
112 CREATE TABLE {$prefix}summary (
113 ID bigint(20) NOT NULL AUTO_INCREMENT,
114 postid bigint(20) NOT NULL,
115 pageviews bigint(20) NOT NULL DEFAULT 1,
116 view_date date NOT NULL,
117 view_datetime datetime NOT NULL,
118 PRIMARY KEY (ID),
119 KEY postid (postid),
120 KEY view_date (view_date),
121 KEY view_datetime (view_datetime)
122 ) {$charset_collate} ENGINE=InnoDB;";
123
124 require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
125 \dbDelta($sql);
126
127 \update_option('wpp_ver', WPP_VERSION);
128 }
129 }
130