3 namespace BookStack\Exports\ZipExports;
5 use BookStack\Exports\ZipExports\Models\ZipExportModel;
6 use Illuminate\Validation\Factory;
9 class ZipValidationHelper
11 protected Factory $validationFactory;
13 public function __construct(
14 protected ZipArchive $zip,
16 $this->validationFactory = app(Factory::class);
19 public function validateData(array $data, array $rules): array
21 $messages = $this->validationFactory->make($data, $rules)->errors()->messages();
23 foreach ($messages as $key => $message) {
24 $messages[$key] = implode("\n", $message);
30 public function zipFileExists(string $name): bool
32 return $this->zip->statName("files/{$name}") !== false;
35 public function fileReferenceRule(): ZipFileReferenceRule
37 return new ZipFileReferenceRule($this);
41 * Validate an array of relation data arrays that are expected
42 * to be for the given ZipExportModel.
43 * @param class-string<ZipExportModel> $model
45 public function validateRelations(array $relations, string $model): array
49 foreach ($relations as $key => $relationData) {
50 if (is_array($relationData)) {
51 $results[$key] = $model::validate($this, $relationData);
53 $results[$key] = [trans('validation.zip_model_expected', ['type' => gettype($relationData)])];