/** class for describing flags
*/
-class PlFlagSet implements XDBFormat
+class PlFlagSet extends PlAbstractIterable implements XDBFormat
{
/** string that holds the PlFlagSet */
private $values = array();
{
return XDB::escape($this->flags());
}
+
+
+ /** Build an iterator for this PlFlagSet.
+ */
+ public function iterate()
+ {
+ $array = array();
+ foreach ($this->values as $key=>$value) {
+ if ($value) {
+ $array[] = $key;
+ }
+ }
+ return PlIteratorUtils::fromArray($array, 1, true);
+ }
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
--- /dev/null
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2010 Polytechnique.org *
+ * http://opensource.polytechnique.org/ *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., *
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
+ ***************************************************************************/
+
+require_once dirname(__FILE__) . '/../include/test.inc.php';
+
+class PlFlagSetTest extends PlTestCase
+{
+ public function testSimple()
+ {
+ $flagset = new PlFlagSet('a,b,c,d');
+ $array = array();
+ foreach ($flagset as $value) {
+ $array[] = $value;
+ }
+ $this->assertSame(array('a', 'b', 'c', 'd'), $array);
+ }
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>