| @@ 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. |
|