3 namespace BookStack\Exports\ZipExports;
6 use Illuminate\Contracts\Validation\ValidationRule;
8 class ZipFileReferenceRule implements ValidationRule
10 public function __construct(
11 protected ZipValidationHelper $context,
12 protected array $acceptedMimes,
20 public function validate(string $attribute, mixed $value, Closure $fail): void
22 if (!$this->context->zipReader->fileExists($value)) {
23 $fail('validation.zip_file')->translate();
26 if (!empty($this->acceptedMimes)) {
27 $fileMime = $this->context->zipReader->sniffFileMime($value);
28 if (!in_array($fileMime, $this->acceptedMimes)) {
29 $fail('validation.zip_file_mime')->translate([
30 'attribute' => $attribute,
31 'validTypes' => implode(',', $this->acceptedMimes),
32 'foundType' => $fileMime