IMP_Ftree_IteratorFilter::rewind PHP Метод

rewind() публичный Метод

public rewind ( )
    public function rewind()
    {
        if (!isset($this->iterator)) {
            throw new InvalidArgumentException('Missing iterator.');
        }
        $i = $this->iterator;
        if (!$i instanceof RecursiveIterator) {
            $i = $i->getIterator();
        }
        /* Need to add RecursiveIteratorFilters first. */
        $filters = array(self::CHILDREN => 'IMP_Ftree_IteratorFilter_Children', self::EXPANDED => 'IMP_Ftree_IteratorFilter_Expanded', self::REMOTE => 'IMP_Ftree_IteratorFilter_Remote');
        foreach ($filters as $key => $val) {
            if ($this->_mask & $key) {
                $i = new $val($i);
            }
        }
        $i = new RecursiveIteratorIterator($i, RecursiveIteratorIterator::SELF_FIRST);
        /* Now we can add regular FilterIterators. */
        $filters = array(self::CONTAINERS => 'IMP_Ftree_IteratorFilter_Containers', self::NONIMAP => 'IMP_Ftree_IteratorFilter_Nonimap', self::POLLED => 'IMP_Ftree_IteratorFilter_Polled', self::SPECIALMBOXES => 'IMP_Ftree_IteratorFilter_Special', self::UNSUB => 'IMP_Ftree_IteratorFilter_Subscribed', self::VFOLDER => 'IMP_Ftree_IteratorFilter_Vfolder');
        foreach ($filters as $key => $val) {
            if ($this->_mask & $key) {
                $i = new $val($i);
            }
        }
        /* Mailbox filter is handled separately. */
        if (!empty($this->mboxes)) {
            $i = new IMP_Ftree_IteratorFilter_Mailboxes($i);
            $i->mboxes = $this->mboxes;
        }
        $i->rewind();
        $this->_filter = $i;
    }