*/ private array $files = []; public function getMangaDirectory(string $mangaTitle, string $publicationYear): string { $dir = '/tmp/manga/'.$this->slugify($mangaTitle).'_'.$publicationYear; $this->ensureDirectory($dir); return $dir; } public function getVolumeDirectory(string $mangaTitle, string $publicationYear, int $volumeNumber): string { $dir = $this->getMangaDirectory($mangaTitle, $publicationYear).'/volume_'.$volumeNumber; $this->ensureDirectory($dir); return $dir; } public function buildChapterCbzPath(string $mangaTitle, string $publicationYear, int $volumeNumber, string $chapterNumber): string { $dir = $this->getVolumeDirectory($mangaTitle, $publicationYear, $volumeNumber); return $dir.'/'.$this->slugify($mangaTitle).'_vol'.$volumeNumber.'_ch'.$chapterNumber.'.cbz'; } public function buildVolumeCbzPath(string $mangaTitle, string $publicationYear, int $volumeNumber): string { return $this->getVolumeDirectory($mangaTitle, $publicationYear, $volumeNumber) .'/'.$this->slugify($mangaTitle).'_vol'.$volumeNumber.'.cbz'; } public function createCbzArchive(array $files, string $cbzPath): void { // For testing, just store the CBZ path $this->files[$cbzPath] = json_encode($files); } public function moveFileTo(string $sourcePath, string $destinationPath): void { // In-memory: just copy content if source exists if (file_exists($sourcePath)) { $content = file_get_contents($sourcePath); $this->files[$destinationPath] = $content; } } public function fileExists(string $path): bool { return isset($this->files[$path]) || file_exists($path); } /** * Get all stored files. */ public function getFiles(): array { return $this->files; } /** * Clear all stored files. */ public function clear(): void { $this->files = []; } private function slugify(string $text): string { $text = preg_replace('~[^\pL\d]+~u', '-', $text); $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); $text = preg_replace('~[^-\w]+~', '', $text); $text = trim($text, '-'); $text = preg_replace('~-+~', '-', $text); $text = strtolower($text); return $text ?: 'n-a'; } private function ensureDirectory(string $path): void { if (!is_dir($path)) { mkdir($path, 0777, true); } } }