061f66d5b59b400ba30c22983dbd67695d2e3f11
[lhc/web/www.git] / www / plugins / formidable / echanger / formulaire / yaml.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 function echanger_formulaire_yaml_exporter_dist($id_formulaire){
7 include_spip('base/abstract_sql');
8 include_spip('inc/yaml');
9 $id_formulaire = intval($id_formulaire);
10 $export = '';
11
12 if ($id_formulaire > 0){
13 // On récupère le formulaire
14 $formulaire = sql_fetsel(
15 '*',
16 'spip_formulaires',
17 'id_formulaire = '.$id_formulaire
18 );
19
20 // On décompresse les trucs sérialisés
21 $formulaire['saisies'] = unserialize($formulaire['saisies']);
22 $formulaire['traitements'] = unserialize($formulaire['traitements']);
23
24 // On envode en yaml
25 $export = yaml_encode($formulaire);
26 }
27
28 Header("Content-Type: text/x-yaml;");
29 Header('Content-Disposition: attachment; filename=formulaire-'.$formulaire['identifiant'].'.yaml');
30 Header("Content-Length: ".strlen($export));
31 echo $export;
32 exit();
33 }
34
35 function echanger_formulaire_yaml_importer_dist($fichier){
36 $yaml = '';
37 lire_fichier($fichier, $yaml);
38 // Si on a bien recupere une chaine on tente de la decoder
39 if ($yaml){
40 include_spip('inc/yaml');
41 $formulaire = yaml_decode($yaml);
42 // Si le decodage marche on importe alors le contenu
43 if (is_array($formulaire)){
44 include_spip('action/editer_formulaire');
45 // On enlève les champs inutiles
46 unset($formulaire['id_formulaire']);
47 // On vérifie que l'identifiant n'existe pas déjà
48 $deja = sql_getfetsel(
49 'id_formulaire',
50 'spip_formulaires',
51 'identifiant = '.sql_quote($formulaire['identifiant'])
52 );
53 if ($deja){
54 $formulaire['identifiant'] .= '_'.date('Ymd_His');
55 }
56
57 // On insère un nouveau formulaire
58 $id_formulaire = formulaire_inserer();
59 // Si ça a marché on transforme les tableaux et on modifie les champs
60 if ($id_formulaire > 0){
61 if (is_array($formulaire['saisies'])){
62 $formulaire['saisies'] = serialize($formulaire['saisies']);
63 }
64 if (is_array($formulaire['traitements'])){
65 $formulaire['traitements'] = serialize($formulaire['traitements']);
66 }
67
68 $erreur = formulaire_modifier($id_formulaire, $formulaire);
69 }
70 }
71 }
72
73 if ($id_formulaire and !$erreur){
74 return $id_formulaire;
75 }
76 else{
77 return _T('formidable:erreur_importer_yaml').' : '.$erreur;
78 }
79 }
80
81 ?>