2 // +----------------------------------------------------------------------+
 
   3 // | Anuko Time Tracker
 
   4 // +----------------------------------------------------------------------+
 
   5 // | Copyright (c) Anuko International Ltd. (https://www.anuko.com)
 
   6 // +----------------------------------------------------------------------+
 
   7 // | LIBERAL FREEWARE LICENSE: This source code document may be used
 
   8 // | by anyone for any purpose, and freely redistributed alone or in
 
   9 // | combination with other software, provided that the license is obeyed.
 
  11 // | There are only two ways to violate the license:
 
  13 // | 1. To redistribute this code in source form, with the copyright
 
  14 // |    notice or license removed or altered. (Distributing in compiled
 
  15 // |    forms without embedded copyright notices is permitted).
 
  17 // | 2. To redistribute modified versions of this code in *any* form
 
  18 // |    that bears insufficient indications that the modifications are
 
  19 // |    not the work of the original author(s).
 
  21 // | This license applies to this document only, not any other software
 
  22 // | that it may be combined with.
 
  24 // +----------------------------------------------------------------------+
 
  26 // | https://www.anuko.com/time_tracker/credits.htm
 
  27 // +----------------------------------------------------------------------+
 
  29 import("DateAndTime");
 
  34     var $mValues        = array(); // values without localisation
 
  35     var $mVariables = array();
 
  37     var $mInitForm      = false;
 
  39     function __construct($name, &$form, $request=null) {
 
  40         $this->setName($name);
 
  41                 $this->setForm($form);
 
  42                 //if ($request) $this->initAttributes($request);
 
  43                 $this->initAttributes($request);
 
  46     function setForm(&$form) {
 
  48         $elements = $form->getElements();
 
  49         if (is_array($elements))
 
  50                 $this->setVariablesNames(array_keys($elements));
 
  53     function &getFormElement($name) {
 
  54         if ($this->mForm!=null) {
 
  55             return  $this->mForm->elements[$name];
 
  64     function setName($name) {
 
  66                 $this->mSessionCell = "formbean_".$this->mName;
 
  70      * init parameters and form
 
  72      * @param object $request
 
  74     function initAttributes(&$request) {
 
  75         $submit_flag = (is_object($request) && ($request->isPost()));
 
  78                 // fill ActionForm and Form from Request
 
  80                 foreach ($this->mVariables as $name) {
 
  81                         if ($this->mForm->elements[$name] && $request->getParameter($name)) {
 
  82                             $this->mForm->elements[$name]->setValue($request->getParameter($name));
 
  83                             $this->mValues[$name] = $this->mForm->elements[$name]->getValue();
 
  87                 // fill ActionForm from Session
 
  91         // fill Form by ActionForm
 
  93                 $elements = $this->mForm->getElements();
 
  94                         foreach ($elements as $name=>$el) {
 
  95                         if ($this->mForm->elements[$name] && isset($this->mValues[$name])) {
 
  96                                     $this->mForm->elements[$name]->setValue($this->mValues[$name]);
 
  99                 $this->mInitForm = true;
 
 104      * Init custom variables
 
 106      * @param unknown $request
 
 107      * @param unknown $respons
 
 109     function initVariables(&$request, &$respons) {
 
 113     function setVariablesNames($namelist) {
 
 114         $this->mVariables = $namelist;
 
 117     function setAttribute($name,$value) {
 
 120         $this->mValues[$name] = $value;
 
 122                 if (isset($this->mForm->elements[$name])) {
 
 123                         if ($this->mForm->elements[$name]->cClassName=="DateField") {
 
 124                                 $dt = new DateAndTime($user->date_format, $value);
 
 125                                         $value = $dt->toString(DB_DATEFORMAT);
 
 127                         $this->mForm->elements[$name]->setValueSafe($value);
 
 132     function getAttribute($name) {
 
 133         return @$this->mValues[$name];
 
 136         function getAttributes() {
 
 137         return $this->mValues;
 
 140     function validate(&$actionMapping, &$request) {
 
 144         function setAttributes($value) {
 
 147         $this->mValues = $value;
 
 148         if (is_array($this->mValues))
 
 149         foreach ($this->mValues as $name=>$value) {
 
 151                         if (isset($this->mForm->elements[$name])) {
 
 152                                 if ($this->mForm->elements[$name]->cClassName=="DateField") {
 
 153                                         $dt = new DateAndTime($user->date_format, $value);
 
 154                                                 $value = $dt->toString(DB_DATEFORMAT);
 
 156                                 $this->mForm->elements[$name]->setValueSafe($value);
 
 163         print_r($this->mValues);
 
 166     function saveBean() {
 
 168                 $elements = $this->mForm->getElements();
 
 170                 foreach ($elements as $el) {
 
 171                         $el_list[] = array("name"=>$el->getName(),"class"=>$el->getClass());
 
 173                                 $_SESSION[$this->mSessionCell . "_" . $el->getName()] = $el->getValueSafe();
 
 175                 $_SESSION[$this->mSessionCell . "session_store_elements"] = $el_list;
 
 177         //print_r($_SESSION);
 
 180     function loadBean() {
 
 181         $el_list = @$_SESSION[$this->mSessionCell . "session_store_elements"];
 
 182         if (is_array($el_list)) {
 
 183                 foreach ($el_list as $ref_el) {
 
 185                         // restore form elements
 
 186                         import('form.'.$ref_el["class"]);
 
 187                         $class_name = $ref_el["class"];
 
 188                         $el = new $class_name($ref_el["name"]);
 
 189                         if (isset($GLOBALS["I18N"])) $el->setLocalization($GLOBALS["I18N"]);
 
 190                         $el->setValueSafe(@$_SESSION[$this->mSessionCell . "_" .$el->getName()]);
 
 192                                 if ($this->mForm && !isset($this->mForm->elements[$ref_el["name"]])) {
 
 193                                         $this->mForm->elements[$ref_el["name"]] = &$el;
 
 195                         $this->mValues[$el->getName()] = $el->getValue();
 
 198                 //print_r($_SESSION);
 
 201     function destroyBean() {
 
 202         $el_list = @$_SESSION[$this->mSessionCell . "session_store_elements"];
 
 203         if (is_array($el_list)) {
 
 204                 foreach ($el_list as $ref_el) {
 
 205                         unset($_SESSION[$this->mSessionCell . "_" .$ref_el["name"]]);
 
 208         unset($_SESSION[$this->mSessionCell . "session_store_elements"]);
 
 212         return (isset($_SESSION[$this->mSessionCell . "session_store_elements"]) ? true : false);