Browse Source

PSR et optimisation des images

svn/root/tags/v2.9.16
kent1@arscenic.info 6 years ago
parent
commit
d7e9bcc7f4
  1. 33
      action/dupliquer_formulaire.php
  2. 64
      action/editer_formulaire.php
  3. 16
      action/exporter_formulaire.php
  4. 19
      action/supprimer_formulaire.php
  5. 19
      action/supprimer_formulaires_reponse.php
  6. 22
      action/vider_formulaire.php
  7. 112
      base/formidable_tables.php
  8. 763
      echanger/formulaire/forms.php
  9. 86
      echanger/formulaire/wcs.php
  10. 47
      echanger/formulaire/yaml.php
  11. 27
      exec/puce_statut_formulaires.php
  12. 241
      formidable_administrations.php
  13. 91
      formidable_autorisations.php
  14. 62
      formidable_fonctions.php
  15. 39
      formidable_options.php
  16. 135
      formidable_pipelines.php
  17. 42
      formulaires/editer_formulaire.php
  18. 76
      formulaires/editer_formulaire_champs.php
  19. 65
      formulaires/editer_formulaire_traitements.php
  20. 185
      formulaires/exporter_formulaire_analyse.php
  21. 23
      formulaires/exporter_formulaire_reponses.php
  22. 159
      formulaires/formidable.php
  23. 40
      formulaires/importer_formulaire.php
  24. BIN
      icones_barre/formulaire.png
  25. BIN
      images/formidable-128.png
  26. BIN
      images/formidable-24.png
  27. BIN
      images/formidable-64.png
  28. BIN
      images/formulaire-24.png
  29. BIN
      images/formulaire-action-ajouter.png
  30. BIN
      images/formulaire-analyse-24.png
  31. BIN
      images/formulaire-config-auteurs-24.png
  32. BIN
      images/formulaire-config-champs-24.png
  33. BIN
      images/formulaire-config-traitements-24.png
  34. BIN
      images/formulaire-dupliquer-24.png
  35. BIN
      images/formulaire-editer-24.png
  36. BIN
      images/formulaire-exporter-24.png
  37. BIN
      images/formulaire-nouveau-48.png
  38. BIN
      images/formulaire-reponse-24.png
  39. BIN
      images/formulaire-reponse-supprimer-24.png
  40. BIN
      images/formulaire-reponses-24.png
  41. BIN
      images/formulaire-reponses-exporter-24.png
  42. BIN
      images/formulaire-reponses-supprimer-24.png
  43. BIN
      images/formulaire-supprimer-24.png
  44. 556
      inc/formidable.php
  45. 30
      inc/rechercher_joints_formulaires_reponse_formulaires_reponses_champ.php
  46. BIN
      prive/themes/basic/images/formulaire-16.png
  47. BIN
      prive/themes/spip/images/formulaire-16.png
  48. BIN
      prive/themes/spip/images/formulaire-24.png
  49. BIN
      prive/themes/spip/images/formulaires_reponse-24.png
  50. 25
      public/formidable_criteres.php
  51. 57
      puce_statut/formulaires_reponse.php
  52. 149
      traiter/email.php
  53. 68
      traiter/enregistrement.php

33
action/dupliquer_formulaire.php

@ -1,7 +1,9 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/config');
@ -10,15 +12,16 @@ include_spip('inc/config');
* @param unknown_type $arg
* @return unknown_type
*/
function action_dupliquer_formulaire_dist($arg=null) {
if (is_null($arg)){
function action_dupliquer_formulaire_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
$id_formulaire = intval($arg);
// Si le formulaire existe bien
if ($id_formulaire > 0 and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)){
if ($id_formulaire > 0
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)) {
include_spip('action/editer_formulaire');
// On enlève les champs inutiles
unset($formulaire['id_formulaire']);
@ -29,9 +32,10 @@ function action_dupliquer_formulaire_dist($arg=null) {
// On insère un nouveau formulaire
$id_formulaire = insert_formulaire();
// Si ça a marché on modifie les champs de base
if ($id_formulaire > 0 and !($erreur = formulaire_set($id_formulaire, $formulaire))){
if ($id_formulaire > 0
and !($erreur = formulaire_set($id_formulaire, $formulaire))) {
// Et ensuite les saisies et les traitements
$ok = sql_updateq(
sql_updateq(
'spip_formulaires',
array(
'saisies' => $formulaire['saisies'],
@ -49,22 +53,23 @@ function action_dupliquer_formulaire_dist($arg=null) {
}
// Et on redirige vers la vue
$redirect = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire, '&');
}
// Sinon on reste sur la page qui liste tout
else{
} else {
// Sinon on reste sur la page qui liste tout
$redirect = generer_url_ecrire('formulaires');
}
}
// Si on a précisé une direction on va plutôt là
if (_request('redirect')) {
$redirect = parametre_url(urldecode(_request('redirect')),
'id_formulaire', $id_formulaire, '&') . $erreur;
$redirect = parametre_url(
urldecode(_request('redirect')),
'id_formulaire',
$id_formulaire,
'&'
) . $erreur;
}
// On redirige
include_spip('inc/headers');
redirige_par_entete($redirect);
}
?>

64
action/editer_formulaire.php

@ -1,15 +1,17 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action de création / Modification d'un formulaire
* @param unknown_type $arg
* @return unknown_type
*/
function action_editer_formulaire_dist($arg=null) {
if (is_null($arg)){
function action_editer_formulaire_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
@ -20,17 +22,23 @@ function action_editer_formulaire_dist($arg=null) {
}
// Enregistre l'envoi dans la BD
if ($id_formulaire > 0) $err = formulaire_modifier($id_formulaire);
if ($id_formulaire > 0) {
$err = formulaire_modifier($id_formulaire);
}
if (_request('redirect')) {
$redirect = parametre_url(urldecode(_request('redirect')),
'id_formulaire', $id_formulaire, '&') . $err;
$redirect = parametre_url(
urldecode(_request('redirect')),
'id_formulaire',
$id_formulaire,
'&'
) . $err;
include_spip('inc/headers');
redirige_par_entete($redirect);
}
else
} else {
return array($id_formulaire,$err);
}
}
/**
@ -44,7 +52,8 @@ function formulaire_inserer() {
'date_creation' => date('Y-m-d H:i:s'),
);
// Envoyer aux plugins
$champs = pipeline('pre_insertion',
$champs = pipeline(
'pre_insertion',
array(
'args' => array(
'table' => 'spip_formulaires',
@ -52,9 +61,10 @@ function formulaire_inserer() {
'data' => $champs
)
);
$id_formulaire = sql_insertq("spip_formulaires", $champs);
$id_formulaire = sql_insertq('spip_formulaires', $champs);
pipeline('post_insertion',
pipeline(
'post_insertion',
array(
'args' => array(
'table' => 'spip_formulaires',
@ -74,14 +84,14 @@ function formulaire_inserer() {
* @param array|null $set
* @return string
*/
function formulaire_modifier($id_formulaire, $set=null) {
function formulaire_modifier($id_formulaire, $set = null) {
include_spip('inc/modifier');
include_spip('inc/filtres');
$err = '';
$c = collecter_requests(
// white list
objet_info('formulaire','champs_editables'),
objet_info('formulaire', 'champs_editables'),
// black list
array('statut'),
// donnees eventuellement fournies
@ -90,25 +100,33 @@ function formulaire_modifier($id_formulaire, $set=null) {
$invalideur = "id='id_formulaire/$id_formulaire'";
if ($err = objet_modifier_champs('formulaire', $id_formulaire,
if ($err = objet_modifier_champs(
'formulaire',
$id_formulaire,
array(
'data' => $set,
'nonvide' => array('titre' => _T('info_sans_titre')),
'invalideur' => $invalideur,
),
$c))
$c
)) {
return $err;
}
// Modification de statut, changement de rubrique ?
$c = collecter_requests(array('statut'),array(),$set);
include_spip("action/editer_objet");
$err = objet_instituer('formulaire',$id_formulaire, $c);
$c = collecter_requests(array('statut'), array(), $set);
include_spip('action/editer_objet');
$err = objet_instituer('formulaire', $id_formulaire, $c);
return $err;
}
function revision_formulaire($id_formulaire, $c=false) { return formulaire_modifier($id_formulaire, $c);}
function insert_formulaire() { return formulaire_inserer();}
function formulaire_set($id_formulaire, $set=null) { return formulaire_modifier($id_formulaire, $set);}
function revision_formulaire($id_formulaire, $c = false) {
return formulaire_modifier($id_formulaire, $c);
}
function insert_formulaire() {
return formulaire_inserer();
}
function formulaire_set($id_formulaire, $set = null) {
return formulaire_modifier($id_formulaire, $set);
}

16
action/exporter_formulaire.php

@ -1,24 +1,24 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function action_exporter_formulaire_dist($arg=null){
function action_exporter_formulaire_dist($arg = null) {
include_spip('inc/formidable');
if (is_null($arg)){
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
list($id_formulaire, $type_export) = preg_split('/[\W]/', $arg);
if ($id_formulaire > 0
and $type_export
and $types_echange = echanges_formulaire_lister_disponibles()
and $exporter = $types_echange['exporter'][$type_export]
){
) {
$exporter($id_formulaire);
}
}
?>

19
action/supprimer_formulaire.php

@ -1,28 +1,25 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action de suppression d'un formulaire
* @param int $arg
* @return unknown_type
*/
function action_supprimer_formulaire_dist($arg=null) {
if (is_null($arg)){
function action_supprimer_formulaire_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
// si id_formulaire n'est pas un nombre, on ne fait rien
if ($id_formulaire = intval($arg)) {
$set = array('statut'=>'poubelle');
include_spip("action/editer_formulaire");
formulaire_modifier($id_formulaire,$set);
$set = array('statut' => 'poubelle');
include_spip('action/editer_formulaire');
formulaire_modifier($id_formulaire, $set);
}
}
?>

19
action/supprimer_formulaires_reponse.php

@ -1,28 +1,25 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action de suppression d'une réponse
* @param int $arg
* @return unknown_type
*/
function action_supprimer_formulaires_reponse_dist($arg=null) {
if (is_null($arg)){
function action_supprimer_formulaires_reponse_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
// si id_formulaires_reponse n'est pas un nombre, on ne fait rien
if ($id_formulaires_reponse = intval($arg)) {
include_spip("action/editer_objet");
$set = array('statut'=>'refuse');
objet_modifier('formulaires_reponse',$id_formulaires_reponse,$set);
include_spip('action/editer_objet');
$set = array('statut' => 'refuse');
objet_modifier('formulaires_reponse', $id_formulaires_reponse, $set);
}
}
?>

22
action/vider_formulaire.php

@ -1,29 +1,31 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/*
* Action de suppression des réponses à un formulaire
* @param int $arg
* @return unknown_type
*/
function action_vider_formulaire_dist($arg=null) {
if (is_null($arg)){
function action_vider_formulaire_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
include_spip('inc/autoriser');
// si id_formulaires_reponse n'est pas un nombre, on ne fait rien
if ($id_formulaire = intval($arg)
AND autoriser('instituer','formulairesreponse',$id_formulaire)) {
and autoriser('instituer', 'formulairesreponse', $id_formulaire)) {
// On supprime les réponse (statut => refuse)
$ok = sql_updateq('spip_formulaires_reponses', array('statut' => 'refuse'),
'id_formulaire=' . intval($id_formulaire));
$ok = sql_updateq(
'spip_formulaires_reponses',
array('statut' => 'refuse'),
'id_formulaire=' . intval($id_formulaire)
);
if ($ok) {
/* on n'a plus de réponses à montrer, retour vers la page du formulaire */
@ -33,5 +35,3 @@ function action_vider_formulaire_dist($arg=null) {
}
}
}
?>

112
base/formidable_tables.php

@ -2,18 +2,20 @@
/**
* Déclarations relatives à la base de données
*
*
* @package SPIP\Formidable\Pipelines
**/
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Déclarer les interfaces des tables de formidable pour le compilateur
*
*
* @pipeline declarer_tables_interfaces
*
*
* @param array $interfaces
* Déclarations d'interface pour le compilateur
* @return array
@ -60,25 +62,25 @@ function formidable_declarer_tables_objets_sql($tables) {
'champs_editables' => array('titre', 'identifiant', 'descriptif','message_retour', 'saisies', 'traitements', 'public','apres','unicite','message_erreur_unicite','url_redirect','resume_reponse'),
'champs_versionnes' => array('titre', 'identifiant', 'descriptif','message_retour', 'saisies', 'traitements', 'public','apres','unicite','message_erreur_unicite','url_redirect','resume_reponse'),
'field' => array(
"id_formulaire" => "bigint(21) NOT NULL",
"identifiant" => "varchar(200)",
"titre" => "text NOT NULL default ''",
"descriptif" => "text",
"message_retour" => "text NOT NULL default ''",
"saisies" => "longtext NOT NULL default ''",
"traitements" => "text NOT NULL default ''",
"public" => "enum('non', 'oui') DEFAULT 'non' NOT NULL",
"apres" => "varchar(12) NOT NULL default ''",
"unicite" => "text NOT NULL default ''",
"message_erreur_unicite" => "text NOT NULL default ''",
"url_redirect" => "varchar(255)",
"statut" => "varchar(10) NOT NULL default ''",
"resume_reponse" => "text NOT NULL default ''",
"date_creation" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
"maj" => "timestamp",
'id_formulaire' => 'bigint(21) NOT NULL',
'identifiant' => 'varchar(200)',
'titre' => "text NOT NULL default ''",
'descriptif' => 'text',
'message_retour' => "text NOT NULL default ''",
'saisies' => "longtext NOT NULL default ''",
'traitements' => "text NOT NULL default ''",
'public' => "enum('non', 'oui') DEFAULT 'non' NOT NULL",
'apres' => "varchar(12) NOT NULL default ''",
'unicite' => "text NOT NULL default ''",
'message_erreur_unicite' => "text NOT NULL default ''",
'url_redirect' => 'varchar(255)',
'statut' => "varchar(10) NOT NULL default ''",
'resume_reponse' => "text NOT NULL default ''",
'date_creation' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
'maj' => 'timestamp',
),
'key' => array(
"PRIMARY KEY" => "id_formulaire"
'PRIMARY KEY' => 'id_formulaire'
),
'join'=> array(
'id_formulaire' => 'id_formulaire'
@ -124,20 +126,20 @@ function formidable_declarer_tables_objets_sql($tables) {
'info_nb_objets' => 'formidable:info_nb_reponses',
'field' => array(
"id_formulaires_reponse" => "bigint(21) NOT NULL",
"id_formulaire" => "bigint(21) NOT NULL default 0",
"date" => "datetime NOT NULL default '0000-00-00 00:00:00'",
"ip" => "varchar(255) NOT NULL default ''",
"id_auteur" => "bigint(21) NOT NULL default 0",
"cookie" => "varchar(255) NOT NULL default ''",
"statut" => "varchar(10) NOT NULL default ''",
"maj" => "timestamp"
'id_formulaires_reponse' => 'bigint(21) NOT NULL',
'id_formulaire' => 'bigint(21) NOT NULL default 0',
'date' => "datetime NOT NULL default '0000-00-00 00:00:00'",
'ip' => "varchar(255) NOT NULL default ''",
'id_auteur' => 'bigint(21) NOT NULL default 0',
'cookie' => "varchar(255) NOT NULL default ''",
'statut' => "varchar(10) NOT NULL default ''",
'maj' => 'timestamp'
),
'key' => array(
"PRIMARY KEY" => "id_formulaires_reponse",
"KEY id_formulaire" => "id_formulaire",
"KEY id_auteur" => "id_auteur",
"KEY cookie" => "cookie"
'PRIMARY KEY' => 'id_formulaires_reponse',
'KEY id_formulaire' => 'id_formulaire',
'KEY id_auteur' => 'id_auteur',
'KEY cookie' => 'cookie'
),
'join' => array(
'id_formulaires_reponse' => 'id_formulaires_reponse',
@ -180,27 +182,27 @@ function formidable_declarer_tables_objets_sql($tables) {
* @return array
* Description complétée des tables
**/
function formidable_declarer_tables_principales($tables_principales){
function formidable_declarer_tables_principales($tables_principales) {
// Table formulaires_reponses_champs
// Table formulaires_reponses_champs
$formulaires_reponses_champs = array(
"id_formulaires_reponses_champ" => "bigint(21) NOT NULL",
"id_formulaires_reponse" => "bigint(21) NOT NULL default 0",
"nom" => "varchar(255) NOT NULL default ''",
"valeur" => "text NOT NULL DEFAULT ''",
"maj" => "timestamp"
'id_formulaires_reponses_champ' => 'bigint(21) NOT NULL',
'id_formulaires_reponse' => 'bigint(21) NOT NULL default 0',
'nom' => "varchar(255) NOT NULL default ''",
'valeur' => "text NOT NULL DEFAULT ''",
'maj' => 'timestamp'
);
$formulaires_reponses_champs_cles = array(
"PRIMARY KEY" => "id_formulaires_reponses_champ",
"KEY id_formulaires_reponse" => "id_formulaires_reponse",
"KEY nom" => "nom",
"UNIQUE reponse" => "id_formulaires_reponse,nom",
'PRIMARY KEY' => 'id_formulaires_reponses_champ',
'KEY id_formulaires_reponse' => 'id_formulaires_reponse',
'KEY nom' => 'nom',
'UNIQUE reponse' => 'id_formulaires_reponse,nom',
);
$tables_principales['spip_formulaires_reponses_champs'] = array(
'field' => &$formulaires_reponses_champs,
'key' => &$formulaires_reponses_champs_cles
);
return $tables_principales;
}
@ -213,26 +215,22 @@ function formidable_declarer_tables_principales($tables_principales){
* @return array
* Description complétée des tables
**/
function formidable_declarer_tables_auxiliaires($tables_auxiliaires){
function formidable_declarer_tables_auxiliaires($tables_auxiliaires) {
$formulaires_liens = array(
"id_formulaire" => "bigint(21) DEFAULT '0' NOT NULL",
"id_objet" => "bigint(21) DEFAULT '0' NOT NULL",
"objet" => "VARCHAR (25) DEFAULT '' NOT NULL"
'id_formulaire' => "bigint(21) DEFAULT '0' NOT NULL",
'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
'objet' => "VARCHAR (25) DEFAULT '' NOT NULL"
);
$formulaires_liens_cles = array(
"PRIMARY KEY" => "id_formulaire,id_objet,objet",
"KEY id_formulaire" => "id_formulaire"
'PRIMARY KEY' => 'id_formulaire,id_objet,objet',
'KEY id_formulaire' => 'id_formulaire'
);
$tables_auxiliaires['spip_formulaires_liens'] = array(
'field' => &$formulaires_liens,
'key' => &$formulaires_liens_cles
);
return $tables_auxiliaires;
}
?>

763
echanger/formulaire/forms.php

@ -1,376 +1,387 @@
<?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;
}
<?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;
}

86
echanger/formulaire/wcs.php

@ -1,22 +1,24 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function echanger_formulaire_wcs_importer_dist($fichier){
function echanger_formulaire_wcs_importer_dist($fichier) {
include_spip('inc/xml');
include_spip('inc/filtres');
include_spip('inc/saisies');
$arbre = spip_xml_load($fichier, false);
if ($arbre and is_array($arbre) and isset($arbre['formdef'])){
foreach($arbre['formdef'] as $form){
if ($arbre and is_array($arbre) and isset($arbre['formdef'])) {
foreach ($arbre['formdef'] as $form) {
$formulaire = array();
// Le titre
$titre = filtrer_entites(trim(spip_xml_aplatit($form['name'])));
$formulaire['titre'] = $titre ? $titre : _T('info_sans_titre');
// On vérifie que l'identifiant n'existe pas déjà
$formulaire['identifiant'] = str_replace('-', '_', trim(spip_xml_aplatit($form['url_name'])));
$deja = sql_getfetsel(
@ -24,31 +26,32 @@ function echanger_formulaire_wcs_importer_dist($fichier){
'spip_formulaires',
'identifiant = '.sql_quote($formulaire['identifiant'])
);
if ($deja)
if ($deja) {
$formulaire['identifiant'] = $formulaire['identifiant'].'_'.time();
}
// Les champs
$formulaire['saisies'] = array();
// Par défaut le conteneur c'est le formulaire
$conteneur =& $formulaire;
foreach($form['fields'] as $fields){
foreach($fields['field'] as $field){
foreach ($form['fields'] as $fields) {
foreach ($fields['field'] as $field) {
$changer_conteneur = false;
// Le truc par défaut
$saisie = array(
'saisie' => 'input',
'options' => array('size'=>40)
);
// Le label
$saisie['options']['label'] = filtrer_entites(trim(spip_xml_aplatit($field['label'])));
// On essaye de traduire tous les types de champs
$type = trim(spip_xml_aplatit($field['type']));
switch ($type){
switch ($type) {
case 'string':
if ($size = intval(trim(spip_xml_aplatit($field['size'])))){
if ($size = intval(trim(spip_xml_aplatit($field['size'])))) {
$saisie['options']['maxlength'] = $size;
$saisie['verifier'] = array(
'type' => 'taille',
@ -61,10 +64,10 @@ function echanger_formulaire_wcs_importer_dist($fichier){
unset($saisie['options']['size']);
$saisie['options']['rows'] = 5;
$saisie['options']['cols'] = 40;
if ($rows = intval(trim(spip_xml_aplatit($field['rows'])))){
if ($rows = intval(trim(spip_xml_aplatit($field['rows'])))) {
$saisie['options']['rows'] = $rows;
}
if ($cols = intval(trim(spip_xml_aplatit($field['cols'])))){
if ($cols = intval(trim(spip_xml_aplatit($field['cols'])))) {
$saisie['options']['cols'] = $cols;
}
break;
@ -110,65 +113,64 @@ function echanger_formulaire_wcs_importer_dist($fichier){
case 'file':
$saisie = null;
}
// On continue seulement si on a toujours une saisie
if ($saisie){
if ($saisie) {
// Les choix pour les types select
if(isset($field['items']) and is_array($field['items'])){
if (isset($field['items']) and is_array($field['items'])) {
$saisie['options']['datas'] = array();
foreach($field['items'] as $items){
foreach($items['item'] as $cle=>$item){
foreach ($field['items'] as $items) {
foreach ($items['item'] as $cle => $item) {
$titre = filtrer_entites(trim($item));
$saisie['options']['datas']['choix_'.$cle] = $titre;
}
}
}
// Le nom
$saisie['options']['nom'] = saisies_generer_nom($formulaire['saisies'], $saisie['saisie']);
// Obligatoire
if (trim(spip_xml_aplatit($field['required'])) == 'True')
if (trim(spip_xml_aplatit($field['required'])) == 'True') {
$saisie['options']['obligatoire'] = 'on';
}
// Explication éventuelle
if ($explication = trim(spip_xml_aplatit($field['hint'])))
if ($explication = trim(spip_xml_aplatit($field['hint']))) {
$saisie['options']['explication'] = $explication;
}
// On ajoute enfin la saisie
$conteneur['saisies'][] = $saisie;
// Faut-il changer de conteneur ?
if ($changer_conteneur){
if ($changer_conteneur) {
$conteneur =& $conteneur['saisies'][count($conteneur['saisies'])-1];
}
}
}
}
include_spip('action/editer_formulaire');
// On insère un nouveau formulaire
$id_formulaire = formulaire_inserer();
// Si ça a marché on transforme les tableaux et on modifie les champs
if ($id_formulaire > 0){
if (is_array($formulaire['saisies'])){
if ($id_formulaire > 0) {
if (is_array($formulaire['saisies'])) {
$formulaire['saisies'] = serialize($formulaire['saisies']);
}
if (is_array($formulaire['traitements'])){
if (is_array($formulaire['traitements'])) {
$formulaire['traitements'] = serialize($formulaire['traitements']);
}
$erreur = formulaire_modifier($id_formulaire, $formulaire);
}
}
}
if ($id_formulaire and !$erreur){
if ($id_formulaire and !$erreur) {
return $id_formulaire;
}
else{
} else {
return _T('formidable:erreur_importer_wcs').' : '.$erreur;
}
}
?>

47
echanger/formulaire/yaml.php

@ -1,46 +1,48 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function echanger_formulaire_yaml_exporter_dist($id_formulaire){
function echanger_formulaire_yaml_exporter_dist($id_formulaire) {
include_spip('base/abstract_sql');
include_spip('inc/yaml');
$id_formulaire = intval($id_formulaire);
$export = '';
if ($id_formulaire > 0){
if ($id_formulaire > 0) {
// On récupère le formulaire
$formulaire = sql_fetsel(
'*',
'spip_formulaires',
'id_formulaire = '.$id_formulaire
);
// On décompresse les trucs sérialisés
$formulaire['saisies'] = unserialize($formulaire['saisies']);
$formulaire['traitements'] = unserialize($formulaire['traitements']);
// On envode en yaml
$export = yaml_encode($formulaire);
}
Header("Content-Type: text/x-yaml;");
Header('Content-Type: text/x-yaml;');
Header('Content-Disposition: attachment; filename=formulaire-'.$formulaire['identifiant'].'.yaml');
Header("Content-Length: ".strlen($export));
Header('Content-Length: '.strlen($export));
echo $export;
exit();
}
function echanger_formulaire_yaml_importer_dist($fichier){
function echanger_formulaire_yaml_importer_dist($fichier) {
$yaml = '';
lire_fichier($fichier, $yaml);
// Si on a bien recupere une chaine on tente de la decoder
if ($yaml){
if ($yaml) {
include_spip('inc/yaml');
$formulaire = yaml_decode($yaml);
// Si le decodage marche on importe alors le contenu
if (is_array($formulaire)){
if (is_array($formulaire)) {
include_spip('action/editer_formulaire');
// On enlève les champs inutiles
unset($formulaire['id_formulaire']);
@ -50,32 +52,29 @@ function echanger_formulaire_yaml_importer_dist($fichier){
'spip_formulaires',
'identifiant = '.sql_quote($formulaire['identifiant'])
);
if ($deja){
if ($deja) {
$formulaire['identifiant'] .= '_'.date('Ymd_His');
}
// On insère un nouveau formulaire
$id_formulaire = formulaire_inserer();
// Si ça a marché on transforme les tableaux et on modifie les champs
if ($id_formulaire > 0){
if (is_array($formulaire['saisies'])){
if ($id_formulaire > 0) {
if (is_array($formulaire['saisies'])) {
$formulaire['saisies'] = serialize($formulaire['saisies']);
}