# powerkit/2.3.6/modules/post-views/helpers/db-powerkit-post-views.php

Powerkit – Supercharge your WordPress Site, version 2.3.6. 119 lines.

- Page: https://pluginprobe.com/plugins/powerkit/2.3.6/code/modules/post-views/helpers/db-powerkit-post-views.php
- Raw: https://pluginprobe.com/plugins/powerkit/2.3.6/raw/modules/post-views/helpers/db-powerkit-post-views.php
- Modified: 2020-09-19T14:20:04+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/powerkit/2.3.6/code/modules/post-views/helpers/db-powerkit-post-views.php#L10-L20`.

```php
<?php
/**
 * Post Views DB
 *
 * @package    Powerkit
 * @subpackage Modules/DB
 */

class Powerkit_Post_Views_DB {

	/**
	 * Construct.
	 */
	public function __construct() {
		add_action( 'powerkit_plugin_activation', array( $this, 'multisite_activation' ) );
		add_action( 'powerkit_plugin_deactivation', array( $this, 'multisite_deactivation' ) );
	}

	/**
	 * Multisite activation.
	 *
	 * @global object $wpdb
	 * @param bool $networkwide The networkwide.
	 */
	public function multisite_activation( $networkwide ) {
		if ( is_multisite() && $networkwide ) {
			global $wpdb;

			$activated_blogs = array();
			$current_blog_id = $wpdb->blogid;
			$blogs_ids       = $wpdb->get_col( $wpdb->prepare( 'SELECT blog_id FROM ' . $wpdb->blogs, '' ) );

			foreach ( $blogs_ids as $blog_id ) {
				switch_to_blog( $blog_id );
				$this->activate_single();
				$activated_blogs[] = (int) $blog_id;
			}

			switch_to_blog( $current_blog_id );

			update_site_option( 'pk_post_views_activated_blogs', $activated_blogs, array() );
		} else {
			$this->activate_single();
		}
	}

	/**
	 * Single site activation.
	 *
	 * @global array $wp_roles
	 */
	public function activate_single() {
		global $wpdb, $charset_collate;

		// Required for dbdelta.
		require_once ABSPATH . 'wp-admin/includes/upgrade.php';

		// Create post views table.
		dbDelta(
			'
			CREATE TABLE IF NOT EXISTS ' . $wpdb->prefix . 'pk_post_views (
				id bigint unsigned NOT NULL,
				type tinyint(1) unsigned NOT NULL,
				period varchar(20) NOT NULL,
				count bigint unsigned NOT NULL,
				PRIMARY KEY (id)
			) ' . $charset_collate . ';'
		);
	}

	/**
	 * Multisite deactivation.
	 *
	 * @global array $wpdb
	 * @param bool $networkwide The networkwide.
	 */
	public function multisite_deactivation( $networkwide ) {
		if ( is_multisite() && $networkwide ) {
			global $wpdb;

			$current_blog_id = $wpdb->blogid;
			$blogs_ids       = $wpdb->get_col( $wpdb->prepare( 'SELECT blog_id FROM ' . $wpdb->blogs, '' ) );

			if ( ! ( $activated_blogs = get_site_option( 'pk_post_views_activated_blogs', false, false ) ) ) {
				$activated_blogs = array();
			}

			foreach ( $blogs_ids as $blog_id ) {
				switch_to_blog( $blog_id );
				$this->deactivate_single( true );

				if ( in_array( (int) $blog_id, $activated_blogs, true ) ) {
					unset( $activated_blogs[ array_search( $blog_id, $activated_blogs ) ] );
				}
			}

			switch_to_blog( $current_blog_id );
			update_site_option( 'post_views_counter_activated_blogs', $activated_blogs );
		} else {
			$this->deactivate_single();
		}
	}

	/**
	 * Single site deactivation.
	 *
	 * @param bool $multi The multi.
	 */
	public function deactivate_single( $multi = false ) {
		global $wpdb;

		// Delete table from database.
		$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'pk_post_views' );
	}
}


new Powerkit_Post_Views_DB();

```
