Source for file jFormsDatasource.class.php

Documentation is available at jFormsDatasource.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  forms
  5. @author      Laurent Jouanneau
  6. @contributor
  7. @copyright   2006-2007 Laurent Jouanneau
  8. @link        http://www.jelix.org
  9. @licence     http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  10. */
  11.  
  12. /**
  13.  * Interface for objects which provides a source of data to fill some controls in a form,
  14.  * like menulist, listbox etc...
  15.  * @package     jelix
  16.  * @subpackage  forms
  17.  */
  18. interface jIFormDatasource {
  19.     /**
  20.      * load and returns data to fill a control. The returned array should be
  21.      * an associative array  key => label
  22.      * @return array the data
  23.      */
  24.     public function getDatas();
  25.  
  26.     /**
  27.      * Return the label corresponding to the given key
  28.      * @param string $key the key
  29.      * @return string the label
  30.      */
  31.     public function getLabel($key);
  32. }
  33.  
  34. /**
  35.  * A datasource which is based on static values.
  36.  * @package     jelix
  37.  * @subpackage  forms
  38.  */
  39. class jFormStaticDatasource implements jIFormDatasource {
  40.     /**
  41.      * associative array which contains keys and labels
  42.      * @var array 
  43.      */
  44.     public $datas = array();
  45.  
  46.     public function getDatas(){
  47.         return $this->datas;
  48.     }
  49.  
  50.     public function getLabel($key){
  51.         if(isset($this->datas[$key]))
  52.             return $this->datas[$key];
  53.         else
  54.             return null;
  55.     }
  56. }
  57.  
  58.  
  59. /**
  60.  * A datasource which is based on a dao
  61.  * @package     jelix
  62.  * @subpackage  forms
  63.  */
  64. class jFormDaoDatasource implements jIFormDatasource {
  65.  
  66.     protected $selector;
  67.     protected $method;
  68.     protected $labelProperty;
  69.     protected $keyProperty;
  70.  
  71.     protected $dao = null;
  72.  
  73.     function __construct ($selector ,$method $label$key){
  74.         $this->selector  = $selector;
  75.         $this->method = $method ;
  76.         $this->labelProperty = $label;
  77.         if($key == ''){
  78.             $rec jDao::createRecord($this->selector);
  79.             $pfields $rec->getPrimaryKeyNames();
  80.             $key $pfields[0];
  81.         }
  82.         $this->keyProperty = $key;
  83.     }
  84.  
  85.     public function getDatas(){
  86.         if($this->dao === null$this->dao = jDao::get($this->selector);
  87.         $found $this->dao->{$this->method}();
  88.         $result=array();
  89.         foreach($found as $obj){
  90.             $result[$obj->{$this->keyProperty}$obj->{$this->labelProperty};
  91.         }
  92.         return $result;
  93.     }
  94.  
  95.     public function getLabel($key){
  96.         if($this->dao === null$this->dao = jDao::get($this->selector);
  97.         $rec $this->dao->get($key);
  98.         if($rec)
  99.             return $rec->{$this->labelProperty};
  100.         else
  101.             return null;
  102.     }
  103.  
  104. }
  105.  
  106. ?>

Documentation generated on Wed, 07 Sep 2011 13:47:29 +0200 by phpDocumentor 1.4.3