1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Finder\Iterator;
13
14use Symfony\Component\Finder\Comparator\DateComparator;
15
16/**
17 * DateRangeFilterIterator filters out files that are not in the given date range (last modified dates).
18 *
19 * @author Fabien Potencier <fabien@symfony.com>
20 */
21class DateRangeFilterIterator extends \FilterIterator
22{
23    private $comparators = [];
24
25    /**
26     * @param \Iterator        $iterator    The Iterator to filter
27     * @param DateComparator[] $comparators An array of DateComparator instances
28     */
29    public function __construct(\Iterator $iterator, array $comparators)
30    {
31        $this->comparators = $comparators;
32
33        parent::__construct($iterator);
34    }
35
36    /**
37     * Filters the iterator values.
38     *
39     * @return bool true if the value should be kept, false otherwise
40     */
41    public function accept()
42    {
43        $fileinfo = $this->current();
44
45        if (!file_exists($fileinfo->getPathname())) {
46            return false;
47        }
48
49        $filedate = $fileinfo->getMTime();
50        foreach ($this->comparators as $compare) {
51            if (!$compare->test($filedate)) {
52                return false;
53            }
54        }
55
56        return true;
57    }
58}
59