v1.8.1
This commit is contained in:
parent
7b7fff5246
commit
b6a55a7f04
27 changed files with 2221 additions and 45 deletions
148
includes/Network/Plugin.php
Normal file
148
includes/Network/Plugin.php
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
<?php
|
||||
/**
|
||||
* Network admin bootstrap for central mode.
|
||||
*
|
||||
* @package MediaRightsAudit\Network
|
||||
*/
|
||||
|
||||
namespace MediaRightsAudit\Network;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers network admin menu pages and hooks when the plugin operates in central mode.
|
||||
*
|
||||
* In per_site mode, only a lightweight network status page is registered so
|
||||
* network admins can monitor per-site plugin health without managing data centrally.
|
||||
*/
|
||||
class Plugin {
|
||||
|
||||
/**
|
||||
* Network Settings page handler.
|
||||
*
|
||||
* @var Settings
|
||||
*/
|
||||
private Settings $settings;
|
||||
|
||||
/**
|
||||
* Network Audit page handler.
|
||||
*
|
||||
* @var AuditPage
|
||||
*/
|
||||
private AuditPage $audit_page;
|
||||
|
||||
/**
|
||||
* Network Alerts page handler.
|
||||
*
|
||||
* @var AlertsPage
|
||||
*/
|
||||
private AlertsPage $alerts_page;
|
||||
|
||||
/**
|
||||
* Network Tools page handler.
|
||||
*
|
||||
* @var ToolsPage
|
||||
*/
|
||||
private ToolsPage $tools_page;
|
||||
|
||||
/**
|
||||
* Initialises network admin subsystem dependencies.
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->settings = new Settings();
|
||||
$this->audit_page = new AuditPage();
|
||||
$this->alerts_page = new AlertsPage();
|
||||
$this->tools_page = new ToolsPage();
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers all network admin hooks.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run(): void {
|
||||
add_action( 'network_admin_menu', array( $this, 'register_network_pages' ) );
|
||||
add_action( 'network_admin_edit_mra_network_settings', array( $this->settings, 'save' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers network admin menu pages.
|
||||
*
|
||||
* In central mode: full aggregated UI (Audit, Alerts, Tools, Settings).
|
||||
* In per_site mode: only a status overview page is registered.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register_network_pages(): void {
|
||||
$mode = get_site_option( 'robotstxt_mediaaudit_network_mode', 'per_site' );
|
||||
|
||||
if ( 'central' === $mode ) {
|
||||
add_menu_page(
|
||||
__( 'Network Media Audit', 'robotstxt-mediaaudit' ),
|
||||
__( 'Media Audit', 'robotstxt-mediaaudit' ),
|
||||
'manage_network_options',
|
||||
'robotstxt-mediaaudit-network',
|
||||
array( $this->audit_page, 'render' ),
|
||||
'dashicons-camera',
|
||||
11
|
||||
);
|
||||
|
||||
add_submenu_page(
|
||||
'robotstxt-mediaaudit-network',
|
||||
__( 'Network Media Audit', 'robotstxt-mediaaudit' ),
|
||||
__( 'Network Audit', 'robotstxt-mediaaudit' ),
|
||||
'manage_network_options',
|
||||
'robotstxt-mediaaudit-network',
|
||||
array( $this->audit_page, 'render' )
|
||||
);
|
||||
|
||||
add_submenu_page(
|
||||
'robotstxt-mediaaudit-network',
|
||||
__( 'Network Alerts', 'robotstxt-mediaaudit' ),
|
||||
__( 'Alerts', 'robotstxt-mediaaudit' ),
|
||||
'manage_network_options',
|
||||
'robotstxt-mediaaudit-network-alerts',
|
||||
array( $this->alerts_page, 'render' )
|
||||
);
|
||||
|
||||
$tools_suffix = add_submenu_page(
|
||||
'robotstxt-mediaaudit-network',
|
||||
__( 'Network Tools', 'robotstxt-mediaaudit' ),
|
||||
__( 'Tools', 'robotstxt-mediaaudit' ),
|
||||
'manage_network_options',
|
||||
'robotstxt-mediaaudit-network-tools',
|
||||
array( $this->tools_page, 'render' )
|
||||
);
|
||||
|
||||
if ( is_string( $tools_suffix ) ) {
|
||||
$this->tools_page->set_hook_suffix( $tools_suffix );
|
||||
}
|
||||
} else {
|
||||
$status_suffix = add_menu_page(
|
||||
__( 'Media Audit — Network', 'robotstxt-mediaaudit' ),
|
||||
__( 'Media Audit', 'robotstxt-mediaaudit' ),
|
||||
'manage_network_options',
|
||||
'robotstxt-mediaaudit-network',
|
||||
array( $this->tools_page, 'render_status_only' ),
|
||||
'dashicons-camera',
|
||||
11
|
||||
);
|
||||
|
||||
if ( is_string( $status_suffix ) ) {
|
||||
$this->tools_page->set_hook_suffix( $status_suffix );
|
||||
}
|
||||
}
|
||||
|
||||
// Settings always shown in network admin, regardless of mode.
|
||||
add_submenu_page(
|
||||
'robotstxt-mediaaudit-network',
|
||||
__( 'Network Settings', 'robotstxt-mediaaudit' ),
|
||||
__( 'Settings', 'robotstxt-mediaaudit' ),
|
||||
'manage_network_options',
|
||||
'robotstxt-mediaaudit-network-settings',
|
||||
array( $this->settings, 'render' )
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue