cfe9a862c8be998dce76506cd2799a029f6c7969
[lhc/web/www.git] / www / plugins / formidable / action / dupliquer_formulaire.php
1 <?php
2
3 // Sécurité
4 if (!defined('_ECRIRE_INC_VERSION')) {
5 return;
6 }
7
8 include_spip('inc/config');
9
10 /**
11 * Dupliquer un formulaire
12 * @param unknown_type $arg
13 * @return unknown_type
14 */
15 function action_dupliquer_formulaire_dist($arg = null) {
16 if (is_null($arg)) {
17 $securiser_action = charger_fonction('securiser_action', 'inc');
18 $arg = $securiser_action();
19 }
20 $id_formulaire = intval($arg);
21
22 // Si le formulaire existe bien
23 if ($id_formulaire > 0
24 and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)) {
25 include_spip('action/editer_formulaire');
26 // On enlève les champs inutiles
27 unset($formulaire['id_formulaire']);
28 // On modifie un peu le titre
29 $formulaire['titre'] = $formulaire['titre'].' '._T('formidable:formulaires_dupliquer_copie');
30 // On s'assure que l'identifiant n'existe pas déjà
31 $formulaire['identifiant'] = $formulaire['identifiant'].'_'.time();
32 // On insère un nouveau formulaire
33 $id_formulaire = insert_formulaire();
34 // Si ça a marché on modifie les champs de base
35 if ($id_formulaire > 0
36 and !($erreur = formulaire_set($id_formulaire, $formulaire))) {
37 // Et ensuite les saisies et les traitements
38 sql_updateq(
39 'spip_formulaires',
40 array(
41 'saisies' => $formulaire['saisies'],
42 'traitements' => $formulaire['traitements']
43 ),
44 'id_formulaire = '.$id_formulaire
45 );
46 // Tout a fonctionné. En fonction de la config, on attribue l'auteur courant
47 $auteurs = lire_config('formidable/analyse/auteur');
48 if ($auteurs == 'on') {
49 if ($id_auteur = session_get('id_auteur')) {
50 // association (par défaut) du formulaire et de l'auteur courant
51 objet_associer(array('formulaire'=>$id_formulaire), array('auteur'=>$id_auteur));
52 }
53 }
54 // Et on redirige vers la vue
55 $redirect = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire, '&');
56 } else {
57 // Sinon on reste sur la page qui liste tout
58 $redirect = generer_url_ecrire('formulaires');
59 }
60 }
61
62 // Si on a précisé une direction on va plutôt là
63 if (_request('redirect')) {
64 $redirect = parametre_url(
65 urldecode(_request('redirect')),
66 'id_formulaire',
67 $id_formulaire,
68 '&'
69 ) . $erreur;
70 }
71
72 // On redirige
73 include_spip('inc/headers');
74 redirige_par_entete($redirect);
75 }