PluginProbe ʕ •ᴥ•ʔ
WP Popular Posts / 7.1.0
WP Popular Posts v7.1.0
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 1 year ago Deactivator.php 1 year ago
Activator.php
139 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 mixed $network_wide True if WPMU superadmin uses "Network Activate" action, false if WPMU is disabled or plugin is activated on an individual blog. Sometimes it's NULL though.
28 * @global object $wpdb
29 */
30 public static function activate($network_wide) /** @TODO: starting PHP 8.0 $network_wide can be declared as mixed $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}"); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching
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 || ( defined('WPP_DO_DB_TABLES') && WPP_DO_DB_TABLES )
79 ) {
80 global $wpdb;
81
82 $prefix = $wpdb->prefix . 'popularposts';
83 self::do_db_tables($prefix);
84 }
85 }
86
87 /**
88 * Creates/updates the database tables.
89 *
90 * @since 1.0.0
91 * @param string $prefix
92 * @global object $wpdb
93 */
94 private static function do_db_tables(string $prefix)
95 {
96 global $wpdb;
97 $charset_collate = '';
98
99 if ( ! empty($wpdb->charset) ) {
100 $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset} ";
101 }
102
103 if ( ! empty($wpdb->collate) ) {
104 $charset_collate .= "COLLATE {$wpdb->collate}";
105 }
106
107 $sql = "
108 CREATE TABLE {$prefix}data (
109 postid bigint(20) NOT NULL,
110 day datetime NOT NULL,
111 last_viewed datetime NOT NULL,
112 pageviews bigint(20) DEFAULT 1,
113 PRIMARY KEY (postid)
114 ) {$charset_collate} ENGINE=InnoDB;
115 CREATE TABLE {$prefix}summary (
116 ID bigint(20) NOT NULL AUTO_INCREMENT,
117 postid bigint(20) NOT NULL,
118 pageviews bigint(20) NOT NULL DEFAULT 1,
119 view_date date NOT NULL,
120 view_datetime datetime NOT NULL,
121 PRIMARY KEY (ID),
122 KEY postid (postid),
123 KEY view_date (view_date),
124 KEY view_datetime (view_datetime)
125 ) {$charset_collate} ENGINE=InnoDB;
126 CREATE TABLE {$prefix}transients (
127 ID bigint(20) NOT NULL AUTO_INCREMENT,
128 tkey varchar(191) NOT NULL,
129 tkey_date datetime NOT NULL,
130 PRIMARY KEY (ID)
131 ) {$charset_collate} ENGINE=InnoDB";
132
133 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
134 \dbDelta($sql);
135
136 \update_option('wpp_ver', WPP_VERSION);
137 }
138 }
139