Files
server/usr/share/psa-horde/imp/lib/Ftree/Iterator.php
2026-01-07 20:52:11 +01:00

98 lines
1.8 KiB
PHP

<?php
/**
* Copyright 2013-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.horde.org/licenses/gpl.
*
* @category Horde
* @copyright 2013-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
/**
* Iterator for the IMP_Ftree object.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @copyright 2013-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
class IMP_Ftree_Iterator implements RecursiveIterator
{
/**
* Sorted list of elements.
*
* @var array
*/
protected $_elts = array();
/**
* Constructor.
*
* @param mixed $elt Either the parent element of the level
* (IMP_Ftree_Element object), or a flat list of
* Ftree elements to use as the base level.
*/
public function __construct($elt)
{
$this->_elts = ($elt instanceof IMP_Ftree_Element)
? $elt->child_list
: $elt;
}
/* RecursiveIterator methods. */
/**
*/
public function getChildren()
{
return new self($this->current());
}
/**
*/
public function hasChildren()
{
return $this->current()->children;
}
/**
*/
public function current()
{
return current($this->_elts);
}
/**
*/
public function key()
{
return key($this->_elts);
}
/**
*/
public function next()
{
next($this->_elts);
}
/**
*/
public function rewind()
{
reset($this->_elts);
}
/**
*/
public function valid()
{
return !is_null($this->key());
}
}