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 897e46cda22d2..82edfa8c3c975 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -1567,18 +1567,60 @@ protected function add_dependencies_to_dependent_plugin_row( $dependent ) { return; } - $links = array(); - foreach ( $dependency_names as $slug => $name ) { - $links[] = $this->get_dependency_view_details_link( $name, $slug ); - } + $requires = null; + if ( ! empty( $dependency_names ) ) { - $is_active = is_multisite() ? is_plugin_active_for_network( $dependent ) : is_plugin_active( $dependent ); - $comma = wp_get_list_item_separator(); - $requires = sprintf( - /* translators: %s: List of dependency names. */ - __( 'Requires: %s' ), - implode( $comma, $links ) - ); + $links = array(); + + foreach ( $dependency_names as $slug => $name ) { + $link = $this->get_dependency_view_details_link( $name, $slug ); + $dependency_file = WP_Plugin_Dependencies::get_dependency_filepath( $slug ); + + $is_installed = false; + $is_active = false; + + if ( $dependency_file ) { + $is_installed = true; + $is_active = is_multisite() + ? is_plugin_active_for_network( $dependency_file ) || is_plugin_active( $dependency_file ) + : is_plugin_active( $dependency_file ); + } + + if ( ! $is_installed ) { + $link .= sprintf( + ' %s + %s', + __( '(not installed)' ), + __( 'Not installed' ) + ); + } elseif ( $is_active ) { + $link .= sprintf( + ' %s + + %s', + __( '(installed, active)' ), + __( 'Installed and active' ) + ); + } else { + $link .= sprintf( + ' %s + + %s', + __( '(installed, inactive)' ), + __( 'Installed but inactive' ) + ); + } + + $links[] = $link; + } + + $comma = wp_get_list_item_separator(); + $requires = sprintf( + /* translators: %s: List of dependency names. */ + __( 'Requires: %s' ), + implode( $comma, $links ) + ); + } $notice = ''; $error_message = '';