'revisions', 'db_auto_drafts' => 'auto_drafts', 'db_trashed_posts' => 'trashed_posts', 'db_spam_comments' => 'spam_comments', 'db_trashed_comments' => 'trashed_comments', 'db_expired_transients' => 'expired_transients', 'db_optimize_tables' => 'optimized_tables', ]; /** * @param DatabaseMaintenance $maintenance Maintenance port. */ public function __construct( private readonly DatabaseMaintenance $maintenance ) { } public const COUNTABLE = [ 'revisions', 'auto_drafts', 'trashed_posts', 'spam_comments', 'trashed_comments', 'expired_transients' ]; /** * What each cleanup would remove right now, whether enabled or not. * * @return array */ public function candidates(): array { $counts = []; foreach ( self::COUNTABLE as $task ) { $counts[ $task ] = $this->maintenance->count( $task ); } return $counts; } /** * Runs enabled tasks. * * @param Settings $settings Settings. * @return array Removed per task. */ public function clean( Settings $settings ): array { $removed = []; foreach ( self::TASKS as $setting => $task ) { if ( $settings->get( $setting ) ) { $removed[ $task ] = $this->maintenance->run( $task ); } } return $removed; } }