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