File "class-multisite-helper.php"

Full Path: /home/rrterraplen/public_html/wp-content-20241221212636/plugins/ultimate-dashboard-pro/helpers/class-multisite-helper.php
File size: 3.49 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * Multisite helper.
 *
 * @package Ultimate_Dashboard
 */

namespace UdbPro\Helpers;

defined( 'ABSPATH' ) || die( "Can't access directly" );

/**
 * Class to setup multisite helper.
 */
class Multisite_Helper {
	/**
	 * Check whether plugin is active on multisite or not.
	 *
	 * @return bool
	 */
	public function is_network_active() {
		// Load plugin.php if it doesn't already exist.
		if ( ! function_exists( 'is_plugin_active_for_network' ) || ! function_exists( 'is_plugin_active' ) ) {
			require_once ABSPATH . '/wp-admin/includes/plugin.php';
		}

		return ( is_plugin_active_for_network( 'ultimate-dashboard-pro/ultimate-dashboard-pro.php' ) ? true : false );
	}

	/**
	 * Check whether multisite actions are supported or not.
	 *
	 * @return bool
	 */
	public function multisite_supported() {
		return ( $this->is_network_active() && apply_filters( 'udb_pro_ms_support', false ) ? true : false );
	}

	/**
	 * Check whether we need to switch blog.
	 *
	 * @param bool $check_multisite_support Whether to check for multisite support or not.
	 *
	 *                                      If $check_multisite_support is true, `get_network_option` would be called during the process.
	 *                                      It's default to true because many of `needs_to_switch_blog` calls come from outside multisite module.
	 *
	 *                                      When working inside multisite module, we can set it to false, because multisite module is only being called
	 *                                      after multisite support check.
	 * @return bool
	 */
	public function needs_to_switch_blog( $check_multisite_support = true ) {

		if ( $check_multisite_support ) {
			if ( ! $this->multisite_supported() ) {
				return false;
			}
		}

		global $blueprint;

		if ( empty( $blueprint ) || get_current_blog_id() === $blueprint ) {
			return false;
		}

		return true;

	}

	/**
	 * Check if a site is an excluded site.
	 *
	 * @param int $site_id The site id. If omitted, it will use the current site id.
	 * @return bool
	 */
	public function is_blueprint_site( $site_id = 0 ) {

		global $blueprint;

		$site_id = $site_id ? $site_id : get_current_blog_id();

		if ( ! empty( $blueprint ) && $site_id === $blueprint ) {
			return true;
		}

		return false;

	}

	/**
	 * Construct array of excluded sites
	 *
	 * @return array The array of excluded sites.
	 */
	public function get_excluded_sites() {

		global $blueprint;

		$array = array();

		// Include blueprint site if it is defined.
		if ( ! empty( $blueprint ) ) {
			$array[] = $blueprint;
		}

		if ( get_site_option( 'udb_multisite_exclude' ) ) {
			$excluded_sites = get_site_option( 'udb_multisite_exclude' );
			$excluded_sites = str_replace( ' ', '', $excluded_sites );
			$excluded_sites = explode( ',', $excluded_sites );
		} else {
			$excluded_sites = array();
		}

		$excluded_sites = array_merge( $array, $excluded_sites );

		foreach ( $excluded_sites as $index => $excluded_site ) {
			$excluded_sites[ $index ] = absint( $excluded_site );
		}

		return $excluded_sites;

	}

	/**
	 * Check if a site is an excluded site.
	 *
	 * @param int $site_id The site id. If omitted, it will use the current site id.
	 * @return bool
	 */
	public function is_site_excluded( $site_id = 0 ) {

		global $blueprint;

		if ( empty( $blueprint ) ) {
			true;
		}

		if ( ! $site_id ) {
			$site_id = get_current_blog_id();
		}

		$excluded_sites = $this->get_excluded_sites();

		if ( in_array( $site_id, $excluded_sites, true ) ) {
			return true;
		}

		return false;

	}

}