| // +----------------------------------------------------------------------+ // // $Id$ /** * I18Nv2::DecoratedList::Filter * * @package I18Nv2 * @category Internationalization */ require_once 'I18Nv2/DecoratedList.php'; /** * I18Nv2_DecoratedList_Filter * * The Filter Decorator only operates on getAllCodes(). * * @author Michael Wallner * @version $Revision: 1.2 $ * @package I18Nv2 * @access public */ class I18Nv2_DecoratedList_Filter extends I18Nv2_DecoratedList { /** * Filter * * exclude|include resp. false|true * * @access public * @var mixed */ var $filter = 'include'; /** * Elements * * Keys that should be filtered * * @access public * @var array */ var $elements = array(); /** * decorate * * @access protected * @return mixed * @param mixed $value */ function decorate($value) { if (is_array($value)) { $result = array(); $filter = array_map( array(&$this->list, 'changeKeyCase'), $this->elements ); switch ($this->filter) { case false: case 'exclude': foreach ($value as $key => $val) { if (!in_array($key, $filter)) { $result[$key] = $val; } } break; case 'include': case true: foreach ($value as $key => $val) { if (in_array($key, $filter)) { $result[$key] = $val; } } break; } return $result; } return $value; } } ?>