Source for file jForms.class.php

Documentation is available at jForms.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.  *
  14.  */
  15. require_once(JELIX_LIB_FORMS_PATH.'jFormsBase.class.php');
  16.  
  17. /**
  18.  * static class to manage and call a form
  19.  *
  20.  * A form is identified by a selector, and each instance of a form have a unique id (formId).
  21.  * This id can be the id of a record for example. If it is not given, the id is set to 0.
  22.  * @package     jelix
  23.  * @subpackage  forms
  24.  */
  25. class jForms {
  26.  
  27.     const ID_PARAM '__forms_id__';
  28.  
  29.     const DEFAULT_ID 0;
  30.  
  31.     const ERRDATA_INVALID 1;
  32.     const ERRDATA_REQUIRED 2;
  33.  
  34.     private function __construct()}
  35.  
  36.     /**
  37.      * Create a new form with empty data
  38.      *
  39.      * Call it to create a new form, before to display it.
  40.      * Data of the form are stored in the php session in a jFormsDataContainer object.
  41.      * If a form with same id exists, data are erased.
  42.      *
  43.      * @param string $formSel the selector of the xml jform file
  44.      * @param string $formId  the id of the new instance (an id of a record for example)
  45.      * @return jFormBase the object representing the form
  46.      */
  47.     public static function create($formSel $formId=null){
  48.         $sel new jSelectorForm($formSel);
  49.         // normalize the selector to avoid conflict in session
  50.         $formSel $sel->toString();
  51.         jIncluder::inc($sel);
  52.         $c $sel->getClass();
  53.         if($formId === null)
  54.             $formId self::DEFAULT_ID;
  55.         $fid is_array($formIdserialize($formId$formId;
  56.         if(!isset($_SESSION['JFORMS'][$formSel][$fid])){
  57.             $_SESSION['JFORMS'][$formSel][$fid]new jFormsDataContainer($formSel$formId);
  58.         }
  59.         $form new $c($formSel$_SESSION['JFORMS'][$formSel][$fid],true);
  60.         return $form;
  61.     }
  62.  
  63.     /**
  64.      * get an existing instance of a form
  65.      *
  66.      * In your controller, call it before to re-display a form with existing data.
  67.      *
  68.      * @param string $formSel the selector of the xml jform file
  69.      * @param string $formId  the id of the form (if you use multiple instance of a form)
  70.      * @return jFormBase the object representing the form. Return null if there isn't an existing form
  71.      */
  72.     static public function get($formSel,$formId=null){
  73.         global $gJCoord;
  74.         if($formId === null)
  75.             $formIdself::DEFAULT_ID;
  76.         $fid is_array($formIdserialize($formId$formId;
  77.  
  78.         $sel new jSelectorForm($formSel);
  79.         // normalize the selector to avoid conflict in session
  80.         $formSel $sel->toString();
  81.  
  82.         if(!isset($_SESSION['JFORMS'][$formSel][$fid])){
  83.             return null;
  84.         }
  85.  
  86.         jIncluder::inc($sel);
  87.         $c $sel->getClass();
  88.         $form new $c($formSel$_SESSION['JFORMS'][$formSel][$fid],false);
  89.  
  90.         return $form;
  91.     }
  92.  
  93.     /**
  94.      * get an existing instance of a form, and fill it with data provided by the request
  95.      *
  96.      * use it in the action called to submit a webform.
  97.      *
  98.      * @param string $formSel the selector of the xml jform file
  99.      * @param string $formId  the id of the form (if you use multiple instance of a form)
  100.      * @return jFormBase the object representing the form. Return null if there isn't an existing form
  101.      */
  102.     static public function fill($formSel,$formId=null){
  103.         $form self::get($formSel,$formId);
  104.         if($form)
  105.             $form->initFromRequest();
  106.         return $form;
  107.     }
  108.  
  109.     /**
  110.      * destroy a form in the session
  111.      *
  112.      * use it after saving data of a form, and if you don't want to re-display the form.
  113.      *
  114.      * @param string $formSel the selector of the xml jform file
  115.      * @param string $formId  the id of the form (if you use multiple instance of a form)
  116.      */
  117.     static public function destroy($formSel,$formId=null){
  118.         global $gJCoord;
  119.         if($formId === null)  $formId self::DEFAULT_ID;
  120.         if(is_array($formId)) $formId serialize($formId);
  121.         // normalize the selector to avoid conflict in session
  122.         $sel new jSelectorForm($formSel);
  123.         $formSel $sel->toString();
  124.         if(isset($_SESSION['JFORMS'][$formSel][$formId])){
  125.             unset($_SESSION['JFORMS'][$formSel][$formId]);
  126.         }
  127.     }
  128. }
  129.  
  130. ?>

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