$files */ private function __construct(private array $files) { } public static function load(): self { $data = get_option(self::OPTION, []); return new self(is_array($data) ? $data : []); } public static function reset(): void { delete_option(self::OPTION); } public function save(): void { update_option(self::OPTION, $this->files, false); } public function isDone(string $file): bool { return !empty($this->files[$file]['done']); } public function position(string $file): int { return (int) ($this->files[$file]['pos'] ?? 0); } public function classifierDone(string $file): bool { return !empty($this->files[$file]['classifier']); } public function setPosition(string $file, int $pos): void { $this->files[$file]['pos'] = $pos; } public function markClassifier(string $file): void { $this->files[$file]['classifier'] = true; } public function markDone(string $file): void { $this->files[$file]['done'] = true; } }