isFile()) continue; $checked++; $path = $node->getPathname(); $ext = strtolower($node->getExtension()); // فلترة الامتدادات if (!in_array($ext, ALLOWED_EXTS, true)) continue; // فلترة اسم الملف (حماية من حذف ملفات أخرى) $name = $node->getBasename(); if (!preg_match('/^[A-Za-z0-9_-]+__(' . $docTypesRegex . ')\.(jpg|png|webp)$/i', $name)) { continue; } $age = $now - $node->getMTime(); if ($age >= $ttlSeconds) { if (@unlink($path)) { $deleted++; $logln("🗑 Deleted: {$path} | age=" . round($age/3600, 1) . "h"); } else { $logln("⚠️ Failed to delete: {$path}"); } } } $logln("Done. checked={$checked}, deleted={$deleted}"); if ($log) @fclose($log);