wp-multisite-dashboard/wp-multisite-dashboard.php
wenpai c96429c72b refactor: migrate from plugin-update-checker to WenPai Updater v1.2.1
- Remove lib/plugin-update-checker and lib/updatepulse-updater
- Remove init_update_checker() and get_update_checker() from Plugin_Core
- Add includes/class-wenpai-updater.php v1.2.1
- Add Update URI header for WordPress 5.8+ update routing
- Update ajax-handler to use native update_plugins transient
2026-04-05 08:22:24 +08:00

150 lines
4.6 KiB
PHP
Executable file

<?php
/**
* Plugin Name: WP Multisite Dashboard
* Plugin URI: https://wpmultisite.com/plugins/wp-multisite-dashboard
* Description: Essential dashboard widgets for WordPress multisite administrators
* Version: 1.5.0
* Author: WPMultisite.com
* Author URI: https://WPMultisite.com
* License: GPLv2+
* Text Domain: wp-multisite-dashboard
* Domain Path: /languages
* Update URI: https://updates.wenpai.net
* Requires PHP: 7.4
*/
if (!defined("ABSPATH")) {
exit();
}
// AJAX output management - aggressive cleanup for MSD requests
if (defined('DOING_AJAX') && DOING_AJAX && isset($_POST['action']) && strpos($_POST['action'], 'msd_') === 0) {
// Ultra-early cleanup
while (ob_get_level()) {
ob_end_clean();
}
ob_start();
// Additional cleanup hooks as backup
add_action('init', function() {
while (ob_get_level()) {
ob_end_clean();
}
ob_start();
}, 1);
add_action('admin_init', function() {
while (ob_get_level()) {
ob_end_clean();
}
ob_start();
}, 1);
}
// Also handle regular form submissions for settings
if (isset($_POST['submit']) && isset($_POST['msd_settings_nonce'])) {
add_action('init', function() {
while (ob_get_level()) {
ob_end_clean();
}
ob_start();
}, 1);
}
define("WP_MSD_VERSION", "1.5.0");
define("WP_MSD_PLUGIN_DIR", plugin_dir_path(__FILE__));
define("WP_MSD_PLUGIN_URL", plugin_dir_url(__FILE__));
require_once WP_MSD_PLUGIN_DIR . "includes/class-error-handler.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-performance-manager.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-background-tasks.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-helpers.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-network-data.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-user-manager.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-ajax-handler.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-admin-interface.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-settings-manager.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-error-log-manager.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-404-monitor.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-plugin-core.php";
require_once WP_MSD_PLUGIN_DIR . "includes/class-wenpai-updater.php";
new WenPai_Updater( plugin_basename( __FILE__ ), WP_MSD_VERSION );
// Load integrations
require_once WP_MSD_PLUGIN_DIR . "includes/integrations/class-domain-mapping-integration.php";
function wp_msd_init()
{
// Clean any output that might have been generated during plugin loading
if (is_admin() && (defined('DOING_AJAX') && DOING_AJAX || isset($_POST['submit']))) {
while (ob_get_level()) {
ob_end_clean();
}
ob_start();
}
if (!is_multisite()) {
add_action("admin_notices", "wp_msd_multisite_required_notice");
return;
}
WP_MSD_Plugin_Core::get_instance();
WP_MSD_Background_Tasks::get_instance();
}
function wp_msd_multisite_load_textdomain()
{
$plugin_rel_path = dirname(plugin_basename(__FILE__)) . "/languages/";
load_plugin_textdomain("wp-multisite-dashboard", false, $plugin_rel_path);
}
add_action("plugins_loaded", "wp_msd_multisite_load_textdomain");
function wp_msd_multisite_required_notice()
{
echo '<div class="notice notice-error"><p>';
echo __(
"WP Multisite Dashboard requires WordPress Multisite to be enabled.",
"wp-multisite-dashboard"
);
echo "</p></div>";
}
register_activation_hook(__FILE__, "wp_msd_activation");
function wp_msd_activation()
{
if (!is_multisite()) {
deactivate_plugins(plugin_basename(__FILE__));
wp_die(
__(
"This plugin requires WordPress Multisite to be enabled.",
"wp-multisite-dashboard"
)
);
}
$network_data = new WP_MSD_Network_Data();
$network_data->create_activity_log_table();
// Create 404 monitor table
WP_MSD_404_Monitor::create_table();
set_site_transient("msd_activation_notice", true, 30);
}
add_action("network_admin_notices", "wp_msd_activation_notice");
function wp_msd_activation_notice()
{
if (get_site_transient("msd_activation_notice")) {
echo '<div class="notice notice-success is-dismissible">';
echo "<p>" .
__(
"WP Multisite Dashboard has been activated successfully!",
"wp-multisite-dashboard"
) .
"</p>";
echo "</div>";
delete_site_transient("msd_activation_notice");
}
}
add_action("plugins_loaded", "wp_msd_init");