d36bb954d1
Baseline before backporting wp-data-optimizer v3.0.1-v3.4.6. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
50 lines
1.6 KiB
PHP
50 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* TMDO_Capability — Multisite-aware admin capability check (v2.14.0).
|
|
*
|
|
* Centralizes the "can this user manage WPDO?" decision. Behaviour:
|
|
*
|
|
* - Single-site: require `manage_options` (site admin)
|
|
* - Multisite per-site: require `manage_options` (site admin on that site)
|
|
* - Multisite network: super admin always passes; site admin still passes
|
|
* on their own site if they hold `manage_options`
|
|
*
|
|
* Pre-v2.14.0 the codebase called `current_user_can('manage_options')` in 17
|
|
* places. On a network-admin context page, super admins do NOT automatically
|
|
* have `manage_options` — WordPress maps it to `do_not_allow` for non-super
|
|
* admins and lets `is_super_admin()` carry the decision separately. By
|
|
* routing through this helper, the plugin works identically on single-site
|
|
* and multisite without per-call-site if/else.
|
|
*
|
|
* @package WP_Data_Optimizer
|
|
* @since 2.14.0
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* Static helper class — drop-in replacement for `current_user_can('manage_options')`.
|
|
*/
|
|
final class TMDO_Capability {
|
|
|
|
/**
|
|
* Whether the current user can manage WP Data Optimizer.
|
|
*
|
|
* Super admins always pass on multisite; site admins pass on their site.
|
|
* On single-site WordPress this is functionally identical to
|
|
* `current_user_can('manage_options')`.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function current_user_can_admin(): bool {
|
|
if ( function_exists( 'is_multisite' ) && is_multisite()
|
|
&& function_exists( 'is_super_admin' ) && is_super_admin()
|
|
) {
|
|
return true;
|
|
}
|
|
return current_user_can( 'manage_options' );
|
|
}
|
|
}
|