# PrimitiveHstore.class.php

Go to the documentation of this file.

    00001 <?php
    00002 /****************************************************************************
    00003  *   Copyright (C) 2009 by Sergey S. Sergeev                                *
    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 PrimitiveHstore extends BasePrimitive
    00016     {
    00017         protected $formMapping  = array();
    00018
    00022         public function setFormMapping($array)
    00023         {
    00024             $this->formMapping = $array;
    00025
    00026             return $this;
    00027         }
    00028
    00029         public function getFormMapping()
    00030         {
    00031             return $this->formMapping;
    00032         }
    00033
    00034         public function getInnerErrors()
    00035         {
    00036             if ($this->value instanceof Form)
    00037                 return $this->value->getInnerErrors();
    00038
    00039             return array();
    00040         }
    00041
    00045         public function getInnerForm()
    00046         {
    00047             return $this->value;
    00048         }
    00049
    00050         public function getValue()
    00051         {
    00052             return $this->exportValue();
    00053         }
    00054
    00059         public function importValue($value)
    00060         {
    00061             if ($value === null)
    00062                 return parent::importValue(null);
    00063
    00064             Assert::isTrue($value instanceof Hstore, 'importValue');
    00065
    00066             if (!$this->value instanceof Form)
    00067                 $this->value = $this->makeForm();
    00068
    00069             $this->value->import($value->getList());
    00070             $this->imported = true;
    00071
    00072             return
    00073                 $this->value->getErrors()
    00074                     ? false
    00075                     : true;
    00076         }
    00077
    00078         public function import($scope)
    00079         {
    00080             if (!isset($scope[$this->name]))
    00081                 return null;
    00082
    00083             $this->rawValue = $scope[$this->name];
    00084
    00085             if (!$this->value instanceof Form)
    00086                 $this->value = $this->makeForm();
    00087
    00088             $this->value->import($this->rawValue);
    00089
    00090             $this->imported = true;
    00091
    00092             if ($this->value->getErrors())
    00093                 return false;
    00094
    00095             return true;
    00096         }
    00097
    00101         public function exportValue()
    00102         {
    00103             if (!$this->value instanceof Form)
    00104                 return null;
    00105
    00106             return Hstore::make($this->value->export());
    00107         }
    00108
    00112         protected function makeForm()
    00113         {
    00114             $form = Form::create();
    00115
    00116             foreach ($this->getFormMapping() as $primitive)
    00117                 $form->add($primitive);
    00118
    00119             return $form;
    00120         }
    00121     }
    00122 ?>