-<?php\r
-\r
-// Sécurité\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-// Importation d'un formulaire forms&table\r
-\r
-function echanger_formulaire_forms_importer_dist($fichier){\r
- include_spip('inc/xml');\r
- $arbre = spip_xml_load($fichier, false);\r
- \r
- if ($arbre and is_array($arbre) and isset($arbre['forms'])){\r
- foreach($arbre['forms'] as $forms){\r
- foreach ($forms['form'] as $form){\r
- $formulaire = array();\r
-\r
- $form_source = array(\r
- 'id_form' => intval(trim(spip_xml_aplatit($form['id_form']))),\r
- 'titre' => trim(spip_xml_aplatit($form['titre'])),\r
- 'descriptif' => trim(spip_xml_aplatit($form['descriptif'])),\r
- 'texte' => trim(spip_xml_aplatit($form['texte'])),\r
- 'email' => unserialize(trim(spip_xml_aplatit($form['email']))),\r
- 'moderation' => trim(spip_xml_aplatit($form['moderation'])),\r
- 'modifiable' => trim(spip_xml_aplatit($form['modifiable'])),\r
- 'multiple' => trim(spip_xml_aplatit($form['multiple'])),\r
- 'champconfirm' => trim(spip_xml_aplatit($form['champconfirm'])),\r
- );\r
-\r
- // configurer le formulaire (titre etc)\r
- forms_configure_formulaire($form_source,$formulaire);\r
-\r
- // ajouter les champs de saisies\r
- foreach($form['fields'] as $fields){\r
- foreach($fields['field'] as $field){\r
- $champ = array(\r
- 'champ'=>trim(spip_xml_aplatit($field['champ'])),\r
- 'titre'=>trim(spip_xml_aplatit($field['titre'])),\r
- 'type'=>trim(spip_xml_aplatit($field['type'])),\r
- 'obligatoire'=>trim(spip_xml_aplatit($field['obligatoire'])),\r
- 'taille'=>trim(spip_xml_aplatit($field['taille'])),\r
- 'extra_info'=>trim(spip_xml_aplatit($field['extra_info'])),\r
- 'aide'=>trim(spip_xml_aplatit($field['aide'])),\r
- 'saisie'=>trim(spip_xml_aplatit($field['saisie'])),\r
- );\r
-\r
- // Les choix pour les types select et multiple\r
- if(isset($field['les_choix']) and is_array($field['les_choix'])){\r
- $champ['choix'] = array();\r
- foreach($field['les_choix'] as $les_choix){\r
- foreach($les_choix['un_choix'] as $un_choix){\r
- $champ['choix'][] = array(\r
- 'choix'=>trim(spip_xml_aplatit($un_choix['choix'])),\r
- 'titre'=>trim(spip_xml_aplatit($un_choix['titre'])),\r
- );\r
- }\r
- }\r
- }\r
-\r
- if ($saisie = forms_champ_vers_saisie($champ))\r
- $formulaire['saisies'][] = $saisie;\r
- }\r
- }\r
- \r
- // les traitements\r
- forms_configure_traitement_formulaire($form_source,$formulaire);\r
- $id_formulaire = forms_importe_en_base($formulaire);\r
- }\r
- }\r
- }\r
- \r
- if ($id_formulaire){\r
- return $id_formulaire;\r
- }\r
- else{\r
- return _T('formidable:erreur_importer_forms');\r
- }\r
-}\r
-\r
-/**\r
- * Importer le tableau $formulaire en base\r
- * @param array $formulaire\r
- * @return bool|int\r
- */\r
-function forms_importe_en_base($formulaire){\r
- include_spip('action/editer_formulaire');\r
- // On insère un nouveau formulaire\r
- // cas utilise par l'installation/import f&t\r
- if (isset($formulaire['id_formulaire']) AND !sql_countsel("spip_formulaires","id_formulaire=".intval($formulaire['id_formulaire']))){\r
- $champs = array(\r
- 'id_formulaire' => $formulaire['id_formulaire'],\r
- 'statut' => 'prop',\r
- 'date_creation' => date('Y-m-d H:i:s'),\r
- );\r
- // Envoyer aux plugins\r
- $champs = pipeline('pre_insertion',\r
- array(\r
- 'args' => array(\r
- 'table' => 'spip_formulaires',\r
- ),\r
- 'data' => $champs\r
- )\r
- );\r
- $id_formulaire = sql_insertq("spip_formulaires", $champs);\r
-\r
- pipeline('post_insertion',\r
- array(\r
- 'args' => array(\r
- 'table' => 'spip_formulaires',\r
- 'id_objet' => $id_formulaire\r
- ),\r
- 'data' => $champs\r
- )\r
- );\r
- }\r
- else\r
- $id_formulaire = formulaire_inserer();\r
-\r
- $formulaire['saisies'] = forms_regroupe_saisies_fieldset($formulaire['saisies']);\r
-\r
- if (is_array($formulaire['saisies']))\r
- $formulaire['saisies'] = serialize($formulaire['saisies']);\r
- if (is_array($formulaire['traitements']))\r
- $formulaire['traitements'] = serialize($formulaire['traitements']);\r
-\r
- // si l'identifiant existe deja (multiples imports du meme form)\r
- // le dater\r
- if (sql_countsel("spip_formulaires","identifiant=".sql_quote($formulaire['identifiant']))){\r
- $formulaire['identifiant'] .= "_".date('Ymd_His');\r
- }\r
-\r
- // Si ok on modifie les champs de base\r
- if ($id_formulaire>0\r
- AND !($erreur = formulaire_modifier($id_formulaire, $formulaire))){\r
-\r
- return $id_formulaire;\r
- }\r
-\r
- return false;\r
-}\r
-\r
-/**\r
- * Configuration de l'objet formulaire formidable a partir du form f&t\r
- * @param array $form\r
- * @param array $formulaire\r
- */\r
-function forms_configure_formulaire($form,&$formulaire){\r
-\r
- // Le titre\r
- $formulaire['titre'] = ($form['titre'] ? $form['titre'] : _T('info_sans_titre'));\r
-\r
- // Generer un identifiant\r
- // si id_form fourni, on s'en sert\r
- if (isset($form['id_form'])){\r
- $formulaire['identifiant'] = "form_import_".$form['id_form'];\r
- }\r
- else {\r
- $formulaire['identifiant'] = "form_import_".preg_replace(",\W,","_",strtolower($formulaire['titre']));\r
- }\r
-\r
- // Le descriptif\r
- $formulaire['descriptif'] = (isset($form['descriptif']) ? $form['descriptif'] : '');\r
-\r
- // Le message de retour si ok\r
- $formulaire['message_retour'] = (isset($form['texte']) ? $form['texte'] : '');\r
-\r
- if (!isset($formulaire['traitements']))\r
- $formulaire['traitements'] = array();\r
-\r
- if (!isset($formulaire['saisies']))\r
- $formulaire['saisies'] = array();\r
-}\r
-\r
-/**\r
- * Configurer les traitements\r
- *\r
- * @param array $form\r
- * @param array $formulaire\r
- */\r
-function forms_configure_traitement_formulaire($form,&$formulaire){\r
- // Le traitement email\r
- if ($form['champconfirm']){\r
- if (!isset($formulaire['traitements']['email']))\r
- $formulaire['traitements']['email'] = array();\r
- $formulaire['traitements']['email']['champ_courriel_destinataire_form'] = $form['champconfirm'];\r
- }\r
-\r
- // $form['email'] est possiblement serialize\r
- if (is_string($form['email']) AND $a=unserialize($form['email']))\r
- $form['email'] = $a;\r
- if (is_array($form['email'])){\r
-\r
- if ($email_defaut = $form['email']['defaut']){\r
- if (!isset($formulaire['traitements']['email']))\r
- $formulaire['traitements']['email'] = array();\r
- $formulaire['traitements']['email']['destinataires_plus'] = $email_defaut;\r
- }\r
-\r
- // TODO email route : feature qui n'existe pas dans formidable\r
- if ($route = $form['email']['route']){\r
-\r
- }\r
- }\r
-\r
- // Le traitement enregistrement : toujours\r
- $formulaire['traitements']['enregistrement'] = array(\r
- 'moderation' => ($form['moderation'] == 'priori') ? 'priori' : 'posteriori',\r
- 'modifiable' => ($form['modifiable'] == 'oui') ? 'on' : '',\r
- 'multiple' => ($form['multiple'] == 'non') ? '' : 'on'\r
- );\r
-\r
-}\r
-\r
-\r
-/**\r
- * On a genere un fieldset pour chaque separateur de f&t\r
- * il faut le peupler avec les saisies qui le suivent\r
- *\r
- * @param array $saisies\r
- * @return array\r
- */\r
-function forms_regroupe_saisies_fieldset($saisies){\r
- $s = array();\r
- $ins = &$s;\r
-\r
- foreach($saisies as $k=>$saisie){\r
- if ($saisie['saisie']=='fieldset'){\r
- if (!isset($saisies[$k]['saisies']))\r
- $saisies[$k]['saisies'] = array();\r
- $ins = &$saisies[$k]['saisies'];\r
- $s[] = &$saisies[$k];\r
- }\r
- else\r
- $ins[] = &$saisies[$k];\r
- }\r
-\r
- return $s;\r
-}\r
-\r
-/**\r
- * Transforme un champ f&t en Saisie\r
- * @param array $champ\r
- * string champ\r
- * string titre\r
- * string type\r
- * string obligatoire\r
- * string taille\r
- * string aide\r
- * string extra_info\r
- * string saisie oui/non\r
- * array choix\r
- * string choix\r
- * string titre\r
- * @return array|bool\r
- */\r
-function forms_champ_vers_saisie($champ){\r
-\r
- // Le truc par défaut\r
- $saisie = array(\r
- 'saisie' => 'input',\r
- 'options' => array('size'=>40)\r
- );\r
-\r
- // On essaye de traduire tous les types de champs\r
- $type = $champ['type'];\r
- switch ($type){\r
- case 'texte':\r
- $saisie['saisie'] = 'textarea';\r
- unset($saisie['options']['size']);\r
- $saisie['options']['rows'] = 5;\r
- $saisie['options']['cols'] = 40;\r
- break;\r
- case 'password':\r
- $saisie['options']['type'] = 'password';\r
- break;\r
- case 'date':\r
- $saisie['saisie'] = 'date';\r
- $saisie['verifier'] = array(\r
- 'type' => 'date'\r
- );\r
- break;\r
- case 'num':\r
- case 'monnaie':\r
- if (!isset($champ['taille']) OR !intval($taille = $champ['taille'])){\r
- $saisie['verifier'] = array(\r
- 'type' => 'entier'\r
- );\r
- }\r
- else {\r
- $saisie['verifier'] = array(\r
- 'type' => 'decimal'\r
- );\r
- $saisie['verifier']['options'] = array('nb_decimales' => $taille);\r
- }\r
- break;\r
- case 'email':\r
- $saisie['verifier'] = array(\r
- 'type' => 'email'\r
- );\r
- break;\r
- case 'telephone':\r
- $saisie['verifier'] = array(\r
- 'type' => 'telephone'\r
- );\r
- break;\r
- case 'select':\r
- unset($saisie['options']['size']);\r
- $liste = $champ['extra_info'];\r
- if ($liste == 'radio')\r
- $saisie['saisie'] = 'radio';\r
- else\r
- $saisie['saisie'] = 'selection';\r
- break;\r
- case 'multiple':\r
- $saisie['saisie'] = 'checkbox';\r
- unset($saisie['options']['size']);\r
- break;\r
- case 'mot':\r
- $saisie['saisie'] = 'mot';\r
- $saisie['options']['id_groupe'] = $champ['extra_info'];\r
- unset($saisie['options']['size']);\r
- break;\r
- case 'textestatique':\r
- $saisie['saisie'] = 'explication';\r
- unset($saisie['options']['size']);\r
- $saisie['options']['texte'] = $champ['titre'];\r
- unset($champ['titre']);\r
- unset($champ['aide']);\r
- break;\r
- case 'separateur':\r
- $saisie['saisie'] = 'fieldset';\r
- $saisie['saisies'] = array();\r
- unset($saisie['options']['size']);\r
- break;\r
- case 'fichier':\r
- // TODO saisie file NIY\r
- $saisie = null;\r
- break;\r
- }\r
-\r
- // On continue seulement si on a toujours une saisie\r
- if (!$saisie)\r
- return false;\r
-\r
- // Les choix pour les types select et multiple\r
- if(isset($champ['choix']) and is_array($champ['choix'])){\r
- $saisie['options']['datas'] = array();\r
- foreach($champ['choix'] as $un_choix){\r
- $choix = $un_choix['choix'];\r
- $titre = $un_choix['titre'];\r
- $saisie['options']['datas'][$choix] = $titre;\r
- }\r
- }\r
-\r
- // Le nom\r
- $saisie['options']['nom'] = $champ['champ'];\r
-\r
- // Le label\r
- if (isset($champ['titre']) AND $champ['titre'])\r
- $saisie['options']['label'] = $champ['titre'];\r
-\r
- // Obligatoire\r
- if (isset($champ['obligatoire']) AND $champ['obligatoire'] == 'oui')\r
- $saisie['options']['obligatoire'] = 'on';\r
-\r
- // Explication éventuelle\r
- if (isset($champ['aide']) AND $explication = $champ['aide'])\r
- $saisie['options']['explication'] = $explication;\r
-\r
- if (isset($champ['saisie']) AND $champ['saisie']=='non'){\r
- $saisie['options']['disable'] = 'on';\r
- // masquer en JS, fallback\r
- $saisie['options']['afficher_si'] = 'false';\r
- }\r
-\r
- return $saisie;\r
-}\r
+<?php
+
+// Sécurité
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
+
+// Importation d'un formulaire forms&table
+
+function echanger_formulaire_forms_importer_dist($fichier) {
+ include_spip('inc/xml');
+ $arbre = spip_xml_load($fichier, false);
+
+ if ($arbre and is_array($arbre) and isset($arbre['forms'])) {
+ foreach ($arbre['forms'] as $forms) {
+ foreach ($forms['form'] as $form) {
+ $formulaire = array();
+ $form_source = array(
+ 'id_form' => intval(trim(spip_xml_aplatit($form['id_form']))),
+ 'titre' => trim(spip_xml_aplatit($form['titre'])),
+ 'descriptif' => trim(spip_xml_aplatit($form['descriptif'])),
+ 'texte' => trim(spip_xml_aplatit($form['texte'])),
+ 'email' => unserialize(trim(spip_xml_aplatit($form['email']))),
+ 'moderation' => trim(spip_xml_aplatit($form['moderation'])),
+ 'modifiable' => trim(spip_xml_aplatit($form['modifiable'])),
+ 'multiple' => trim(spip_xml_aplatit($form['multiple'])),
+ 'champconfirm' => trim(spip_xml_aplatit($form['champconfirm'])),
+ );
+
+ // configurer le formulaire (titre etc)
+ forms_configure_formulaire($form_source, $formulaire);
+
+ // ajouter les champs de saisies
+ foreach ($form['fields'] as $fields) {
+ foreach ($fields['field'] as $field) {
+ $champ = array(
+ 'champ'=>trim(spip_xml_aplatit($field['champ'])),
+ 'titre'=>trim(spip_xml_aplatit($field['titre'])),
+ 'type'=>trim(spip_xml_aplatit($field['type'])),
+ 'obligatoire'=>trim(spip_xml_aplatit($field['obligatoire'])),
+ 'taille'=>trim(spip_xml_aplatit($field['taille'])),
+ 'extra_info'=>trim(spip_xml_aplatit($field['extra_info'])),
+ 'aide'=>trim(spip_xml_aplatit($field['aide'])),
+ 'saisie'=>trim(spip_xml_aplatit($field['saisie'])),
+ );
+
+ // Les choix pour les types select et multiple
+ if (isset($field['les_choix']) and is_array($field['les_choix'])) {
+ $champ['choix'] = array();
+ foreach ($field['les_choix'] as $les_choix) {
+ foreach ($les_choix['un_choix'] as $un_choix) {
+ $champ['choix'][] = array(
+ 'choix'=>trim(spip_xml_aplatit($un_choix['choix'])),
+ 'titre'=>trim(spip_xml_aplatit($un_choix['titre'])),
+ );
+ }
+ }
+ }
+
+ if ($saisie = forms_champ_vers_saisie($champ)) {
+ $formulaire['saisies'][] = $saisie;
+ }
+ }
+ }
+
+ // les traitements
+ forms_configure_traitement_formulaire($form_source, $formulaire);
+ $id_formulaire = forms_importe_en_base($formulaire);
+ }
+ }
+ }
+
+ if ($id_formulaire) {
+ return $id_formulaire;
+ } else {
+ return _T('formidable:erreur_importer_forms');
+ }
+}
+
+/**
+ * Importer le tableau $formulaire en base
+ * @param array $formulaire
+ * @return bool|int
+ */
+function forms_importe_en_base($formulaire) {
+ include_spip('action/editer_formulaire');
+ // On insère un nouveau formulaire
+ // cas utilise par l'installation/import f&t
+ if (isset($formulaire['id_formulaire'])
+ and !sql_countsel('spip_formulaires', 'id_formulaire='.intval($formulaire['id_formulaire']))) {
+ $champs = array(
+ 'id_formulaire' => $formulaire['id_formulaire'],
+ 'statut' => 'prop',
+ 'date_creation' => date('Y-m-d H:i:s'),
+ );
+ // Envoyer aux plugins
+ $champs = pipeline(
+ 'pre_insertion',
+ array(
+ 'args' => array(
+ 'table' => 'spip_formulaires',
+ ),
+ 'data' => $champs
+ )
+ );
+ $id_formulaire = sql_insertq('spip_formulaires', $champs);
+
+ pipeline(
+ 'post_insertion',
+ array(
+ 'args' => array(
+ 'table' => 'spip_formulaires',
+ 'id_objet' => $id_formulaire
+ ),
+ 'data' => $champs
+ )
+ );
+ } else {
+ $id_formulaire = formulaire_inserer();
+ }
+
+ $formulaire['saisies'] = forms_regroupe_saisies_fieldset($formulaire['saisies']);
+
+ if (is_array($formulaire['saisies'])) {
+ $formulaire['saisies'] = serialize($formulaire['saisies']);
+ }
+ if (is_array($formulaire['traitements'])) {
+ $formulaire['traitements'] = serialize($formulaire['traitements']);
+ }
+
+ // si l'identifiant existe deja (multiples imports du meme form)
+ // le dater
+ if (sql_countsel('spip_formulaires', 'identifiant='.sql_quote($formulaire['identifiant']))) {
+ $formulaire['identifiant'] .= '_'.date('Ymd_His');
+ }
+
+ // Si ok on modifie les champs de base
+ if ($id_formulaire > 0
+ and !($erreur = formulaire_modifier($id_formulaire, $formulaire))) {
+ return $id_formulaire;
+ }
+
+ return false;
+}
+
+/**
+ * Configuration de l'objet formulaire formidable a partir du form f&t
+ * @param array $form
+ * @param array $formulaire
+ */
+function forms_configure_formulaire($form, &$formulaire) {
+
+ // Le titre
+ $formulaire['titre'] = ($form['titre'] ? $form['titre'] : _T('info_sans_titre'));
+
+ // Generer un identifiant
+ // si id_form fourni, on s'en sert
+ if (isset($form['id_form'])) {
+ $formulaire['identifiant'] = 'form_import_'.$form['id_form'];
+ } else {
+ $formulaire['identifiant'] = 'form_import_'.preg_replace(',\W,', '_', strtolower($formulaire['titre']));
+ }
+
+ // Le descriptif
+ $formulaire['descriptif'] = (isset($form['descriptif']) ? $form['descriptif'] : '');
+
+ // Le message de retour si ok
+ $formulaire['message_retour'] = (isset($form['texte']) ? $form['texte'] : '');
+
+ if (!isset($formulaire['traitements'])) {
+ $formulaire['traitements'] = array();
+ }
+
+ if (!isset($formulaire['saisies'])) {
+ $formulaire['saisies'] = array();
+ }
+}
+
+/**
+ * Configurer les traitements
+ *
+ * @param array $form
+ * @param array $formulaire
+ */
+function forms_configure_traitement_formulaire($form, &$formulaire) {
+ // Le traitement email
+ if ($form['champconfirm']) {
+ if (!isset($formulaire['traitements']['email'])) {
+ $formulaire['traitements']['email'] = array();
+ }
+ $formulaire['traitements']['email']['champ_courriel_destinataire_form'] = $form['champconfirm'];
+ }
+
+ // $form['email'] est possiblement serialize
+ if (is_string($form['email']) and $a=unserialize($form['email'])) {
+ $form['email'] = $a;
+ }
+ if (is_array($form['email'])) {
+ if ($email_defaut = $form['email']['defaut']) {
+ if (!isset($formulaire['traitements']['email'])) {
+ $formulaire['traitements']['email'] = array();
+ }
+ $formulaire['traitements']['email']['destinataires_plus'] = $email_defaut;
+ }
+
+ // TODO email route : feature qui n'existe pas dans formidable
+ if ($route = $form['email']['route']) {
+ }
+ }
+
+ // Le traitement enregistrement : toujours
+ $formulaire['traitements']['enregistrement'] = array(
+ 'moderation' => ($form['moderation'] == 'priori') ? 'priori' : 'posteriori',
+ 'modifiable' => ($form['modifiable'] == 'oui') ? 'on' : '',
+ 'multiple' => ($form['multiple'] == 'non') ? '' : 'on'
+ );
+
+}
+
+
+/**
+ * On a genere un fieldset pour chaque separateur de f&t
+ * il faut le peupler avec les saisies qui le suivent
+ *
+ * @param array $saisies
+ * @return array
+ */
+function forms_regroupe_saisies_fieldset($saisies) {
+ $s = array();
+ $ins = &$s;
+
+ foreach ($saisies as $k => $saisie) {
+ if ($saisie['saisie']=='fieldset') {
+ if (!isset($saisies[$k]['saisies'])) {
+ $saisies[$k]['saisies'] = array();
+ }
+ $ins = &$saisies[$k]['saisies'];
+ $s[] = &$saisies[$k];
+ } else {
+ $ins[] = &$saisies[$k];
+ }
+ }
+
+ return $s;
+}
+
+/**
+ * Transforme un champ f&t en Saisie
+ * @param array $champ
+ * string champ
+ * string titre
+ * string type
+ * string obligatoire
+ * string taille
+ * string aide
+ * string extra_info
+ * string saisie oui/non
+ * array choix
+ * string choix
+ * string titre
+ * @return array|bool
+ */
+function forms_champ_vers_saisie($champ) {
+ // Le truc par défaut
+ $saisie = array(
+ 'saisie' => 'input',
+ 'options' => array('size'=>40)
+ );
+
+ // On essaye de traduire tous les types de champs
+ $type = $champ['type'];
+ switch ($type) {
+ case 'texte':
+ $saisie['saisie'] = 'textarea';
+ unset($saisie['options']['size']);
+ $saisie['options']['rows'] = 5;
+ $saisie['options']['cols'] = 40;
+ break;
+ case 'password':
+ $saisie['options']['type'] = 'password';
+ break;
+ case 'date':
+ $saisie['saisie'] = 'date';
+ $saisie['verifier'] = array(
+ 'type' => 'date'
+ );
+ break;
+ case 'num':
+ case 'monnaie':
+ if (!isset($champ['taille']) or !intval($taille = $champ['taille'])) {
+ $saisie['verifier'] = array(
+ 'type' => 'entier'
+ );
+ } else {
+ $saisie['verifier'] = array(
+ 'type' => 'decimal'
+ );
+ $saisie['verifier']['options'] = array('nb_decimales' => $taille);
+ }
+ break;
+ case 'email':
+ $saisie['verifier'] = array(
+ 'type' => 'email'
+ );
+ break;
+ case 'telephone':
+ $saisie['verifier'] = array(
+ 'type' => 'telephone'
+ );
+ break;
+ case 'select':
+ unset($saisie['options']['size']);
+ $liste = $champ['extra_info'];
+ if ($liste == 'radio') {
+ $saisie['saisie'] = 'radio';
+ } else {
+ $saisie['saisie'] = 'selection';
+ }
+ break;
+ case 'multiple':
+ $saisie['saisie'] = 'checkbox';
+ unset($saisie['options']['size']);
+ break;
+ case 'mot':
+ $saisie['saisie'] = 'mot';
+ $saisie['options']['id_groupe'] = $champ['extra_info'];
+ unset($saisie['options']['size']);
+ break;
+ case 'textestatique':
+ $saisie['saisie'] = 'explication';
+ unset($saisie['options']['size']);
+ $saisie['options']['texte'] = $champ['titre'];
+ unset($champ['titre']);
+ unset($champ['aide']);
+ break;
+ case 'separateur':
+ $saisie['saisie'] = 'fieldset';
+ $saisie['saisies'] = array();
+ unset($saisie['options']['size']);
+ break;
+ case 'fichier':
+ // TODO saisie file NIY
+ $saisie = null;
+ break;
+ }
+
+ // On continue seulement si on a toujours une saisie
+ if (!$saisie) {
+ return false;
+ }
+
+ // Les choix pour les types select et multiple
+ if (isset($champ['choix']) and is_array($champ['choix'])) {
+ $saisie['options']['datas'] = array();
+ foreach ($champ['choix'] as $un_choix) {
+ $choix = $un_choix['choix'];
+ $titre = $un_choix['titre'];
+ $saisie['options']['datas'][$choix] = $titre;
+ }
+ }
+
+ // Le nom
+ $saisie['options']['nom'] = $champ['champ'];
+
+ // Le label
+ if (isset($champ['titre']) and $champ['titre']) {
+ $saisie['options']['label'] = $champ['titre'];
+ }
+
+ // Obligatoire
+ if (isset($champ['obligatoire']) and $champ['obligatoire'] == 'oui') {
+ $saisie['options']['obligatoire'] = 'on';
+ }
+
+ // Explication éventuelle
+ if (isset($champ['aide']) and $explication = $champ['aide']) {
+ $saisie['options']['explication'] = $explication;
+ }
+
+ if (isset($champ['saisie']) and $champ['saisie']=='non') {
+ $saisie['options']['disable'] = 'on';
+ // masquer en JS, fallback
+ $saisie['options']['afficher_si'] = 'false';
+ }
+
+ return $saisie;
+}