# PrimitiveMultiList.class.php

Go to the documentation of this file.

    00001 <?php
    00002 /***************************************************************************
    00003  *   Copyright (C) 2004-2007 by Anton E. Lebedevich                        *
    00004  *                                                                         *
    00005  *   This program is free software; you can redistribute it and/or modify  *
    00006  *   it under the terms of the GNU Lesser General Public License as        *
    00007  *   published by the Free Software Foundation; either version 3 of the    *
    00008  *   License, or (at your option) any later version.                       *
    00009  *                                                                         *
    00010  ***************************************************************************/
    00011
    00015     final class PrimitiveMultiList extends PrimitiveList
    00016     {
    00017         private $selected = array();
    00018
    00019         public function getChoiceValue()
    00020         {
    00021             return $this->selected;
    00022         }
    00023
    00024         public function getActualChoiceValue()
    00025         {
    00026             if ($this->value !== null)
    00027                 return $this->selected;
    00028             elseif ($this->default) {
    00029                 $out = array();
    00030
    00031                 foreach ($this->default as $index)
    00032                     $out[] = $this->list[$index];
    00033
    00034                 return $out;
    00035             }
    00036
    00037             return array();
    00038         }
    00039
    00043         public function setDefault($default)
    00044         {
    00045             Assert::isArray($default);
    00046
    00047             foreach ($default as $index)
    00048                 Assert::isTrue(array_key_exists($index, $this->list));
    00049
    00050             return parent::setDefault($default);
    00051         }
    00052
    00053         public function import($scope)
    00054         {
    00055             if (!BasePrimitive::import($scope))
    00056                 return null;
    00057
    00058             if (!$this->list)
    00059                 throw new WrongStateException(
    00060                     'list to check is not set; '
    00061                     .'use PrimitiveArray in case it is intentional'
    00062                 );
    00063
    00064             if (is_array($scope[$this->name])) {
    00065                 $values = array();
    00066
    00067                 foreach ($scope[$this->name] as $value) {
    00068                     if (isset($this->list[$value])) {
    00069                         $values[] = $value;
    00070                         $this->selected[$value] = $this->list[$value];
    00071                     }
    00072                 }
    00073
    00074                 if (count($values)) {
    00075                     $this->value = $values;
    00076
    00077                     return true;
    00078                 }
    00079             } elseif (!empty($scope[$this->name])) {
    00080                 $this->value = array($scope[$this->name]);
    00081
    00082                 return true;
    00083             }
    00084
    00085             return false;
    00086         }
    00087
    00091         public function clean()
    00092         {
    00093             $this->selected = array();
    00094
    00095             return parent::clean();
    00096         }
    00097
    00098         public function exportValue()
    00099         {
    00100             throw new UnimplementedFeatureException();
    00101         }
    00102     }
    00103 ?>