wp_cli = $wp_cli ?? new WP_CLI(); } /** * Get the name of the command. * * @since 1.15.0 * * @return string */ public static function get_name(): string { return 'accessibility-checker get-site-stats'; } /** * Get the short name of the command. * * @since 1.33.0 * * @return string */ public static function get_shortname(): string { return 'edac get-site-stats'; } /** * Get the arguments for the command * * @since 1.15.0 * * @return array */ public static function get_args(): array { return [ 'synopsis' => [ [ 'type' => 'assoc', 'name' => 'stat', 'description' => esc_html__( 'Keys to show in the results. Defaults to all keys.', 'accessibility-checker' ), 'optional' => true, 'default' => null, 'repeating' => true, ], [ 'type' => 'flag', 'name' => 'clear-cache', 'description' => esc_html__( 'Clear the cache before retrieving the stats (can be intensive).', 'accessibility-checker' ), 'repeating' => false, 'optional' => true, ], ], ]; } /** * Gets the accessibility-checker stats for the whole site. Use the --clear-cache flag to clear the cache before retrieving the stats. * * @since 1.15.0 * * @param array $options The positional argument, none is this case. * @param array $arguments The associative arguments, the stat keys in this case. * * @return void * @throws ExitException If the post ID does not exist, or the class we need isn't available. */ public function __invoke( array $options = [], array $arguments = [] ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( ! empty( $arguments['clear-cache'] ) ) { // Clear the cache. ( new Scans_Stats() )->clear_cache(); } $all_stats = ( new Scans_Stats() )->summary(); if ( ! empty( $arguments['stat'] ) ) { $items_to_return = []; $requested_stats = explode( ',', $arguments['stat'] ); foreach ( $requested_stats as $key ) { $stats_key = trim( $key ); if ( ! isset( $all_stats[ $stats_key ] ) ) { $this->wp_cli::error( sprintf( // translators: 1: a stat key that was requested but not found. esc_html__( 'Stat key: %1$s not found in stats.', 'accessibility-checker' ), $stats_key ) ); return; } $items_to_return[ $stats_key ] = $all_stats[ $stats_key ]; } } if ( isset( $items_to_return ) ) { $this->wp_cli::success( wp_json_encode( $items_to_return, JSON_PRETTY_PRINT ) ); return; } $this->wp_cli::success( wp_json_encode( $all_stats, JSON_PRETTY_PRINT ) ); } }