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]); } } } }
static function implode_r($tab) { foreach ($tab as $key => $value) { if (is_array($value)) { $tab[$key] = clFoRmXtOoLs::implode_r($value); } } return implode('|', $tab); }