PluginProbe
Powerkit – Supercharge your WordPress Site / 2.3.6
Powerkit – Supercharge your WordPress Site v2.3.6
3.1.1 3.1.0 3.0.9 3.0.8 trunk 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 All 87 releases
powerkit / modules / post-views / helpers / db-powerkit-post-views.php

db-powerkit-post-views.php in Powerkit – Supercharge your WordPress Site 2.3.6, at modules/post-views/helpers/db-powerkit-post-views.php

119 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Post Views DB
4 *
5 * @package Powerkit
6 * @subpackage Modules/DB
7 */
8
9 class Powerkit_Post_Views_DB {
10
11 /**
12 * Construct.
13 */
14 public function __construct() {
15 add_action( 'powerkit_plugin_activation', array( $this, 'multisite_activation' ) );
16 add_action( 'powerkit_plugin_deactivation', array( $this, 'multisite_deactivation' ) );
17 }
18
19 /**
20 * Multisite activation.
21 *
22 * @global object $wpdb
23 * @param bool $networkwide The networkwide.
24 */
25 public function multisite_activation( $networkwide ) {
26 if ( is_multisite() && $networkwide ) {
27 global $wpdb;
28
29 $activated_blogs = array();
30 $current_blog_id = $wpdb->blogid;
31 $blogs_ids = $wpdb->get_col( $wpdb->prepare( 'SELECT blog_id FROM ' . $wpdb->blogs, '' ) );
32
33 foreach ( $blogs_ids as $blog_id ) {
34 switch_to_blog( $blog_id );
35 $this->activate_single();
36 $activated_blogs[] = (int) $blog_id;
37 }
38
39 switch_to_blog( $current_blog_id );
40
41 update_site_option( 'pk_post_views_activated_blogs', $activated_blogs, array() );
42 } else {
43 $this->activate_single();
44 }
45 }
46
47 /**
48 * Single site activation.
49 *
50 * @global array $wp_roles
51 */
52 public function activate_single() {
53 global $wpdb, $charset_collate;
54
55 // Required for dbdelta.
56 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
57
58 // Create post views table.
59 dbDelta(
60 '
61 CREATE TABLE IF NOT EXISTS ' . $wpdb->prefix . 'pk_post_views (
62 id bigint unsigned NOT NULL,
63 type tinyint(1) unsigned NOT NULL,
64 period varchar(20) NOT NULL,
65 count bigint unsigned NOT NULL,
66 PRIMARY KEY (id)
67 ) ' . $charset_collate . ';'
68 );
69 }
70
71 /**
72 * Multisite deactivation.
73 *
74 * @global array $wpdb
75 * @param bool $networkwide The networkwide.
76 */
77 public function multisite_deactivation( $networkwide ) {
78 if ( is_multisite() && $networkwide ) {
79 global $wpdb;
80
81 $current_blog_id = $wpdb->blogid;
82 $blogs_ids = $wpdb->get_col( $wpdb->prepare( 'SELECT blog_id FROM ' . $wpdb->blogs, '' ) );
83
84 if ( ! ( $activated_blogs = get_site_option( 'pk_post_views_activated_blogs', false, false ) ) ) {
85 $activated_blogs = array();
86 }
87
88 foreach ( $blogs_ids as $blog_id ) {
89 switch_to_blog( $blog_id );
90 $this->deactivate_single( true );
91
92 if ( in_array( (int) $blog_id, $activated_blogs, true ) ) {
93 unset( $activated_blogs[ array_search( $blog_id, $activated_blogs ) ] );
94 }
95 }
96
97 switch_to_blog( $current_blog_id );
98 update_site_option( 'post_views_counter_activated_blogs', $activated_blogs );
99 } else {
100 $this->deactivate_single();
101 }
102 }
103
104 /**
105 * Single site deactivation.
106 *
107 * @param bool $multi The multi.
108 */
109 public function deactivate_single( $multi = false ) {
110 global $wpdb;
111
112 // Delete table from database.
113 $wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'pk_post_views' );
114 }
115 }
116
117
118 new Powerkit_Post_Views_DB();
119