@@ 522-560 (lines=39) @@ | ||
519 | * @return boolean Returns TRUE if all values are valid. |
|
520 | * Otherwise, returns FALSE and reports issues. |
|
521 | */ |
|
522 | public function validateMimetypes() |
|
523 | { |
|
524 | $acceptedMimetypes = $this['acceptedMimetypes']; |
|
525 | if (empty($acceptedMimetypes)) { |
|
526 | // No validation rules = always true |
|
527 | return true; |
|
528 | } |
|
529 | ||
530 | $files = $this->parseValAsFileList($this->val()); |
|
531 | ||
532 | if (empty($files)) { |
|
533 | return true; |
|
534 | } |
|
535 | ||
536 | $valid = true; |
|
537 | ||
538 | foreach ($files as $file) { |
|
539 | $mime = $this->getMimetypeFor($file); |
|
540 | ||
541 | if ($mime === null) { |
|
542 | $valid = false; |
|
543 | ||
544 | $this->validator()->error(sprintf( |
|
545 | 'File [%s] not found or MIME type unrecognizable', |
|
546 | $file |
|
547 | ), 'acceptedMimetypes'); |
|
548 | } elseif (!in_array($mime, $acceptedMimetypes)) { |
|
549 | $valid = false; |
|
550 | ||
551 | $this->validator()->error(sprintf( |
|
552 | 'File [%s] has unacceptable MIME type [%s]', |
|
553 | $file, |
|
554 | $mime |
|
555 | ), 'acceptedMimetypes'); |
|
556 | } |
|
557 | } |
|
558 | ||
559 | return $valid; |
|
560 | } |
|
561 | ||
562 | /** |
|
563 | * Validates the file sizes for the property's value(s). |
|
@@ 568-606 (lines=39) @@ | ||
565 | * @return boolean Returns TRUE if all values are valid. |
|
566 | * Otherwise, returns FALSE and reports issues. |
|
567 | */ |
|
568 | public function validateFilesizes() |
|
569 | { |
|
570 | $maxFilesize = $this['maxFilesize']; |
|
571 | if (empty($maxFilesize)) { |
|
572 | // No max size rule = always true |
|
573 | return true; |
|
574 | } |
|
575 | ||
576 | $files = $this->parseValAsFileList($this->val()); |
|
577 | ||
578 | if (empty($files)) { |
|
579 | return true; |
|
580 | } |
|
581 | ||
582 | $valid = true; |
|
583 | ||
584 | foreach ($files as $file) { |
|
585 | $filesize = $this->getFilesizeFor($file); |
|
586 | ||
587 | if ($filesize === null) { |
|
588 | $valid = false; |
|
589 | ||
590 | $this->validator()->error(sprintf( |
|
591 | 'File [%s] not found or size unknown', |
|
592 | $file |
|
593 | ), 'maxFilesize'); |
|
594 | } elseif (($filesize > $maxFilesize)) { |
|
595 | $valid = false; |
|
596 | ||
597 | $this->validator()->error(sprintf( |
|
598 | 'File [%s] exceeds maximum file size [%s]', |
|
599 | $file, |
|
600 | $this->formatFilesize($maxFilesize) |
|
601 | ), 'maxFilesize'); |
|
602 | } |
|
603 | } |
|
604 | ||
605 | return $valid; |
|
606 | } |
|
607 | ||
608 | /** |
|
609 | * Parse a multi-dimensional array of value(s) into a single level. |