| Current Path : /home/e/t/i/etiennec/www/oldsite/plugins/auto/cfg/cfg/classes/ |
| Current File : /home/e/t/i/etiennec/www/oldsite/plugins/auto/cfg/cfg/classes/cfg_id.php |
<?php
/**
* Plugin générique de configuration pour SPIP
*
* @license GNU/GPL
* @package plugins
* @subpackage cfg
* @category outils
* @copyright (c) toggg, marcimat 2007-2008
* @link http://www.spip-contrib.net/
* @version $Id: cfg_id.php 36735 2010-03-28 21:25:09Z gilles.vincent@gmail.com $
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* apres que le parseur a trouve les champs
*
* @param string $nom
* @param Object $cfg
* @return string
*/
function cfg_pre_charger_cfg_id($nom, &$cfg){
// id a renseigner
$cfg->champs[$nom]['id'] = count($cfg->champs_id);
$cfg->champs_id[] = $nom;
// Cas des champs multi, si des champs (Y)
// sont declares id par la classe cfg_id,
// <input type='x' name='Yn' class='cfg_id'>
// on les ajoute dans le chemin pour retrouver les donnees
// #CONFIG{.../y1/y2/y3/...}
//
if (_request('_cfg_affiche')) {
$cfg->param['cfg_id'] = implode('/', array_map('_request', $cfg->champs_id));
}
return true;
}
/**
*
* @param string $nom
* @param Object $cfg
* @return string
*/
function cfg_pre_traiter_cfg_id($nom, &$cfg){
// lorsque c'est un champ de type multi que l'on modifie
// et si l'identifiant a change, il faut soit le copier, soit de deplacer
//
// pour ca, on compare le hidden name='cfg_id' aux champs editables
// qui ont la classe css 'cfg_id'
if ($cfg->champs_id) {
$new_id = implode('/', array_map('_request', $cfg->champs_id));
if ($new_id != $cfg->param['cfg_id']){
// si c'est un deplacement, on efface
if (!_request('_cfg_copier')) {
// et ne pas perdre les valeurs suite a l'effacement dans ce cas precis
$vals = $cfg->val;
$cfg->effacer();
$cfg->val = $vals;
}
$cfg->param['cfg_id'] = $new_id;
// recreer un depot avec le nouvel identifiant
// (sinon les requetes ne creent pas les bons 'where')
include_spip('inc/cfg_config');
$cfg->depot = new cfg_depot($cfg->param['depot'], $cfg->params);
// recharger le formulaire avec le nouvel identifiant (sinon les parametres
// <!-- param=valeur --> de formulaires qui contienent
// #ENV{cfg_id} ou #ENV{id} ne sont pas a jour)
$cfg->formulaire();
}
}
return true;
}
?>