[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / cfg / cfg / classes / cfg_id.php
1 <?php
2
3 /**
4 * Plugin générique de configuration pour SPIP
5 *
6 * @license GNU/GPL
7 * @package plugins
8 * @subpackage cfg
9 * @category outils
10 * @copyright (c) toggg, marcimat 2007-2008
11 * @link http://www.spip-contrib.net/
12 * @version $Id: cfg_id.php 36735 2010-03-28 21:25:09Z gilles.vincent@gmail.com $
13 */
14
15 if (!defined("_ECRIRE_INC_VERSION")) return;
16
17 /**
18 * apres que le parseur a trouve les champs
19 *
20 * @param string $nom
21 * @param Object $cfg
22 * @return string
23 */
24 function cfg_pre_charger_cfg_id($nom, &$cfg){
25
26 // id a renseigner
27 $cfg->champs[$nom]['id'] = count($cfg->champs_id);
28 $cfg->champs_id[] = $nom;
29
30 // Cas des champs multi, si des champs (Y)
31 // sont declares id par la classe cfg_id,
32 // <input type='x' name='Yn' class='cfg_id'>
33 // on les ajoute dans le chemin pour retrouver les donnees
34 // #CONFIG{.../y1/y2/y3/...}
35 //
36 if (_request('_cfg_affiche')) {
37 $cfg->param['cfg_id'] = implode('/', array_map('_request', $cfg->champs_id));
38 }
39
40 return true;
41 }
42
43 /**
44 *
45 * @param string $nom
46 * @param Object $cfg
47 * @return string
48 */
49 function cfg_pre_traiter_cfg_id($nom, &$cfg){
50
51 // lorsque c'est un champ de type multi que l'on modifie
52 // et si l'identifiant a change, il faut soit le copier, soit de deplacer
53 //
54 // pour ca, on compare le hidden name='cfg_id' aux champs editables
55 // qui ont la classe css 'cfg_id'
56 if ($cfg->champs_id) {
57 $new_id = implode('/', array_map('_request', $cfg->champs_id));
58 if ($new_id != $cfg->param['cfg_id']){
59 // si c'est un deplacement, on efface
60 if (!_request('_cfg_copier')) {
61 // et ne pas perdre les valeurs suite a l'effacement dans ce cas precis
62 $vals = $cfg->val;
63 $cfg->effacer();
64 $cfg->val = $vals;
65 }
66 $cfg->param['cfg_id'] = $new_id;
67 // recreer un depot avec le nouvel identifiant
68 // (sinon les requetes ne creent pas les bons 'where')
69 include_spip('inc/cfg_config');
70 $cfg->depot = new cfg_depot($cfg->param['depot'], $cfg->params);
71 // recharger le formulaire avec le nouvel identifiant (sinon les parametres
72 // <!-- param=valeur --> de formulaires qui contienent
73 // #ENV{cfg_id} ou #ENV{id} ne sont pas a jour)
74 $cfg->formulaire();
75 }
76 }
77
78 return true;
79 }
80
81 ?>