diff --git a/admin/class-admin.php b/admin/class-admin.php index 9cb8c292d..d19d504ed 100644 --- a/admin/class-admin.php +++ b/admin/class-admin.php @@ -14,6 +14,7 @@ use EqualizeDigital\AccessibilityChecker\Admin\Upgrade_Promotion; use EqualizeDigital\AccessibilityChecker\Admin\Admin_Footer_Text; use EqualizeDigital\AccessibilityChecker\Admin\Activation_Redirect; +use EqualizeDigital\AccessibilityChecker\Admin\Plugin_List_Tab; if ( ! defined( 'ABSPATH' ) ) { exit; @@ -80,6 +81,9 @@ public function init(): void { $plugin_row_meta = new Plugin_Row_Meta(); $plugin_row_meta->init_hooks(); + $plugin_list_tab = new Plugin_List_Tab(); + $plugin_list_tab->init_hooks(); + $admin_footer_text = new Admin_Footer_Text(); $admin_footer_text->init(); diff --git a/admin/class-plugin-list-tab.php b/admin/class-plugin-list-tab.php new file mode 100644 index 000000000..f48d0aa08 --- /dev/null +++ b/admin/class-plugin-list-tab.php @@ -0,0 +1,123 @@ +>> $plugins The plugins list keyed by status. + * + * @return array>> The filtered plugins list. + */ + public function filter_plugins_list( $plugins ) { + if ( ! \is_array( $plugins ) || ! isset( $plugins['all'] ) || ! \is_array( $plugins['all'] ) ) { + return $plugins; + } + + $equalize_digital_plugins = []; + foreach ( $plugins['all'] as $plugin_file => $plugin_data ) { + if ( $this->is_equalize_digital_plugin( $plugin_data ) ) { + $equalize_digital_plugins[ $plugin_file ] = $plugin_data; + } + } + + if ( \count( $equalize_digital_plugins ) < self::MINIMUM_FOR_TAB ) { + return $plugins; + } + + $plugins[ self::STATUS_SLUG ] = $equalize_digital_plugins; + + return $plugins; + } + + /** + * Returns the label text for the Equalize Digital tab. + * + * @since 1.43.0 + * + * @param string $text The current status text. + * @param int $_count Unused — "Equalize Digital" does not inflect by count. + * @param string $type The status type slug. + * + * @return string The status text. + */ + public function get_status_text( $text, $_count, $type ) { + if ( self::STATUS_SLUG !== $type ) { + return $text; + } + + return \__( 'Equalize Digital', 'accessibility-checker' ); + } + + /** + * Determines whether a plugin belongs to Equalize Digital. + * + * @since 1.43.0 + * + * @param array $plugin_data The plugin header data. + * + * @return bool + */ + private function is_equalize_digital_plugin( $plugin_data ): bool { + if ( ! \is_array( $plugin_data ) || empty( $plugin_data['AuthorURI'] ) ) { + return false; + } + + return false !== \stripos( $plugin_data['AuthorURI'], 'equalizedigital.com' ); + } +}