diff --git a/src/wp-admin/includes/class-wp-plugins-list-table.php b/src/wp-admin/includes/class-wp-plugins-list-table.php index d8945e103064e..c617d190e9d24 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -1619,7 +1619,36 @@ protected function add_dependents_to_dependency_plugin_row( $dependency ) { return; } - $dependency_note = __( 'Note: This plugin cannot be deactivated or deleted until the plugins that require it are deactivated or deleted.' ); + $dependency_note = ''; + + if ( $this->screen->in_admin( 'network' ) ) { + $is_network_active = is_plugin_active_for_network( $dependency ); + + if ( $is_network_active && current_user_can( 'manage_network_plugins' ) && WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { + $dependency_note = __( 'Note: This plugin cannot be deactivated until the plugins that require it are deactivated.' ); + } elseif ( ! $is_network_active && ! is_plugin_active( $dependency ) && current_user_can( 'delete_plugins' ) ) { + $dependency_note = __( 'Note: This plugin cannot be deleted until the plugins that require it are deleted.' ); + } + } else { + $is_active = is_plugin_active( $dependency ); + + if ( $is_active && current_user_can( 'deactivate_plugin', $dependency ) && WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { + $dependency_note = __( 'Note: This plugin cannot be deactivated until the plugins that require it are deactivated.' ); + } elseif ( ! $is_active && ! is_multisite() && current_user_can( 'delete_plugins' ) ) { + $dependency_note = __( 'Note: This plugin cannot be deleted until the plugins that require it are deleted.' ); + } + } + + $dependency_notice = ''; + if ( '' !== $dependency_note ) { + $dependency_notice = wp_get_admin_notice( + $dependency_note, + array( + 'type' => 'error', + 'additional_classes' => array( 'inline' ), + ) + ); + } $comma = wp_get_list_item_separator(); $required_by = sprintf( @@ -1629,9 +1658,9 @@ protected function add_dependents_to_dependency_plugin_row( $dependency ) { ); printf( - '
%1$s
%2$s
%1$s
%2$s