Code Duplication    Length = 39-39 lines in 2 locations

src/Charcoal/Property/FileProperty.php 2 locations

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