Exemple #1
0
 public function affectPost2XML($item)
 {
     global $formxSession;
     //Certains items ne peuvent être instanciés
     if (in_array($item->getAttribute('type'), array('CLOSER'))) {
         return;
     }
     $reg = array();
     //eko("affectation de la variable ".$this->prefix.$item->getAttribute('id')."  à  ".$_POST[$this->prefix.$item->getAttribute('id')]);
     //eko("je traite le post ".$this->prefix.$item->getAttribute('id'));
     $this->debug("Entrée dans affectPost2XML," . "affectation de la variable " . $this->prefix . $item->getAttribute('id') . "  à  la valeur " . clFoRmXtOoLs::getPost($this->prefix . $item->getAttribute('id')));
     //si pas de données post pour cet item, mais que sa valeur n'est pas nulle, surtout on ne
     //touche à rien, on risquerait d'écraser les données
     //ex: balises conditionelles
     //isPostValueForItem se charge des cas particuliers (ex CHECK )
     //f ( ! $this->isPostValueForItem($item) && (string) $item->getElementsByTagName('Val')->item(0)->nodeValue ) {
     if (!$this->isPostValueForItem($item)) {
         $this->debug("Aucune donnée POST n'est associée à cet item,  Sortie de la methode");
         return;
     }
     //si pas les droits au moins W
     $droit = $this->session->droit;
     if ($this->XMLCore['access']) {
         $droit = utf8_decode((string) $this->XMLCore['access']);
     }
     if ($item->getAttribute('access')) {
         $droit = utf8_decode($item->getAttribute('access'));
     }
     if (!$formxSession->getDroit($droit, 'w')) {
         $this->debug("acces refusé en écriture. cet item est associé au droit '{$droit}'");
         return;
     }
     if (is_object($item->getElementsByTagName('Val')->item(0))) {
         $val_old_value = $item->getElementsByTagName('Val')->item(0)->nodeValue;
     } else {
         $val_old_value = "";
     }
     switch ($item->getAttribute('type')) {
         case 'LISTEN':
             //  	echo(afftab($_POST));
             $i = 0;
             $val = '';
             while ($_POST[$this->prefix . $item->getAttribute('id') . '_LISTEN_' . $i]) {
                 $val .= stripslashes($_POST[$this->prefix . $item->getAttribute('id') . '_LISTEN_' . $i]) . '|';
                 $i++;
             }
             $val = rtrim($val, '|');
             $this->makeBalVal($item, 'Val', $val);
             break;
         case 'TAB':
             ereg("list:(.*)", $item->getElementsByTagName('Rows')->item(0)->nodeValue, $reg);
             $rows = explode('|', $reg[1]);
             ereg("list:(.*)", $item->getElementsByTagName('Cols')->item(0)->nodeValue, $reg);
             $cols = explode('|', $reg[1]);
             $nb_cols = 0;
             foreach ($cols as $col) {
                 $nb_cols++;
             }
             $x = 0;
             $y = 0;
             $tab = array();
             foreach ($rows as $row) {
                 foreach ($cols as $col) {
                     $tab[$y * $nb_cols + $x] = $_POST[$this->prefix . $item->getAttribute('id') . "_{$x}" . "_{$y}"];
                     $x++;
                 }
                 $x = 0;
                 $y++;
             }
             $tab = implode('|', $tab);
             $this->makeBalVal($item, 'Val', $tab);
             break;
         case 'LISTEDYN':
             //SI DEMANDE on va inserer dans la liste XHAM la valeur demandée
             $nouveau = stripslashes($_POST[$this->prefix . $item->getAttribute('id') . '_new']);
             if ($nouveau) {
                 $param['liste_nom'] = $item->getElementsByTagName('FromXHAMList')->item(0)->nodeValue;
                 $param['item_nom'] = $nouveau;
                 $param['idapplication'] = IDAPPLICATION;
                 $req = new clResultQuery();
                 //execution de la requete
                 $res = $req->Execute("Fichier", "FX_addXHAMListItem", $param, "ResultQuery");
                 //eko($res['INDIC_SVC']);
                 //nouvelle valeur
                 $this->makeBalVal($item, 'Val', $nouveau);
                 break;
             }
             //insertOnList
         //insertOnList
         case 'LISTE':
             if ($item->hasAttribute('multiple')) {
                 if (!isset($_POST[$this->prefix . $item->getAttribute('id')]) || !$_POST[$this->prefix . $item->getAttribute('id')]) {
                     $this->makeBalVal($item, 'Val', '');
                 } else {
                     $this->makeBalVal($item, 'Val', @stripslashes(implode('|', $_POST[$this->prefix . $item->getAttribute('id')])));
                 }
             } else {
                 $this->makeBalVal($item, 'Val', stripslashes($_POST[$this->prefix . $item->getAttribute('id')]));
             }
             break;
         case 'FILE':
             if (!$item->hasAttribute('extension')) {
                 $this->addErreur("L'attribut extention n'est pas présent. Pour des raisons de sécurité la balise FILE est désactivée.");
                 break;
             }
             if ($item->hasAttribute('rename')) {
                 $rename = $item->getAttribute('rename');
             } else {
                 $rename = '';
             }
             if ($item->hasAttribute('destination')) {
                 $destination = $item->getAttribute('destination');
             } else {
                 $destination = $this->destinationUploads;
             }
             if ($item->hasAttribute('maxfilesize')) {
                 $maxfilesize = $item->getAttribute('maxfilesize');
             } else {
                 $maxfilesize = $this->max_size_upload;
             }
             $re = clFoRmXtOoLs::gestUpload($this->prefix . $item->getAttribute('id'), $destination, $rename, $maxfilesize, utf8_decode($item->getAttribute('extension')));
             if ($re) {
                 $this->makeBalVal($item, 'Val', 'ok');
             } else {
                 $this->makeBalVal($item, 'Val', '¤ko');
             }
             break;
         case 'RADIO':
         case 'CHECK':
             if (!isset($_POST[$this->prefix . $item->getAttribute('id')])) {
                 $this->makeBalVal($item, 'Val', '');
                 break;
             }
             if ($_POST[$this->prefix . $item->getAttribute('id')] == '') {
                 $this->makeBalVal($item, 'Val', '');
             } else {
                 //debug horreur de php 5.1.3
                 $dat = $_POST[$this->prefix . $item->getAttribute('id')];
                 $this->makeBalVal($item, 'Val', stripslashes(clFoRmXtOoLs::implode_r($dat)));
             }
             break;
         case 'CAL':
             $postval = stripslashes($_POST[$this->prefix . $item->getAttribute('id')]);
             $this->makeBalVal($item, 'Val2', $postval);
             if ($item->hasAttribute('formatStore') && $postval) {
                 $date = new clDate($postval);
                 switch ($item->getAttribute('formatStore')) {
                     case 'timestamp':
                         $newval = $date->getTimestamp();
                         break;
                     case 'date':
                         $newval = $date->getDate();
                         break;
                     case 'datetime':
                     default:
                         $newval = $date->getDatetime();
                         break;
                 }
                 $this->makeBalVal($item, 'Val', $newval);
             } else {
                 $this->makeBalVal($item, 'Val', $postval);
             }
             break;
         default:
             $this->makeBalVal($item, 'Val', formxTools::helper_formatDatatype($item, stripslashes($_POST[$this->prefix . $item->getAttribute('id')])));
     }
     $val_new_value = $item->getElementsByTagName('Val')->item(0)->nodeValue;
     //si la valeur de la balise a été modifiée et que d'autres éléments dynamiques dépendent de sa valeur,
     //on réinitialise leur valeurs pour  ne pas avoir d'incohérences
     if ($val_new_value != $val_old_value && is_object($item->getElementsByTagName('OnChangeRefresh')->item(0))) {
         $strListIds = $this->getValueFrom($item->getElementsByTagName('OnChangeRefresh')->item(0)->nodeValue);
         $arrListIds = explode('|', $strListIds);
         foreach ($arrListIds as $id) {
             //print "<br />va chercher ".$id;
             $this->makeBalVal($this->getDomItemFromId($id), 'Val', "");
             if (isset($_POST[$this->prefix . $id])) {
                 unset($_POST[$this->prefix . $id]);
             }
         }
     }
 }