Une grande réécriture du code a été faite entre les versions 1.4 et 1.7 de CFG afin de lui permettre d’être étendu assez facilement.
Il y a essentiellement 4 types d’extensions :
créer un dépôt,
Ou en utilisant les points d’entrées de CFG :
créer un type de validation pour un champ de formulaire,
créer une action sur un champ de formulaire,
créer une action sur un paramètre de formulaire,
Créer un dépot
Les dépôts sont les méthodes de stockage des informations passées à CFG. Pour utiliser un dépôt dans un formulaire, il faut passer le paramètre <!-- depot=nom_du_depot -->. Les dépôts fournis avec CFG sont "meta", "metapack", "tablepack", "table" et "php".
Ils peuvent être appelés aussi avec la balise #CONFIG et les fonctions lire_config(), ecrire_config() et effacer_config(), par exemple comme ceci : #CONFIG{php::nom/champ}
Le code des dépots se situent dans le dossier cfg/depots/xxx.php. Ils se composent d’une classe cfg_depot_xxx et d’au moins 5 fonctions :
cfg_depot_xxx($params=array()), constructeur de la classe,
lire(),
ecrire(),
effacer(),
et charger_args($args) qui détermine la manière dont sont traités les arguments passés à la balise #CONFIG ou aux fonctions lire_config(), ecrire_config() et effacer_config()
Pour ajouter un nouveau dépôt, il suffit de créer un nouveau fichier php dans ce dossier (ou dans la même arborescence dans un autre plugin).
Les points d’entrées
CFG dispose maintenant de points d’entrées, qui peuvent être utilisés pour les 3 extensions décrites ensuites. Actuellement, les actions possibles sont :
pre_charger : avant la lecture du dépôt
charger : après la lecture du dépôt
pre_verifier : après validation du formulaire, mais avant de récupérer les valeurs postées
verifier : après la récupération des valeurs postées
pre_traiter : si la vérification était OK, avant le traitement (écriture ou effacement dans le dépôt)
post_traiter : après le traitement dans le dépôt.
Types de validations
Il y a 2 façons de vérifier les données d’un formulaire CFG.
Vérifier tous les champs d’un coup
La première est de faire, un peu comme la nouvelle API sur les formulaires dynamiques de SPIP (version de développement), une fonction qui analyse les valeurs postées et renseigne un tableau d’erreur.
Prenons l’exemple d’un formulaire fonds/cfg_toto.html contenant un champs <input type="text" name="annee" />. Il est possible de créer un fichier fonds/cfg_toto_fonctions.php contenant :
Si $err n’est pas vide, la vérification échoue et le traitement du formulaire ne se fait pas.
Vérifier selon un type de champ
La seconde façon est de vérifier un champ en le déclarant d’un certain type. Cela se traduit en CFG en passant une classe css "type_yy" au champ en question. Attention, l’attribut class doit suivre l’attribut name. Par exemple :
<input type="password" name="mon_passe" class="type_pwd" /> indique que ce champ est de type "pwd", ce qui entraine la lecture, par CFG des points d’entrées proposés dans le fichier cfg/classes/type_pwd.php. Il y a actuellement dans ce fichier :
Le point d’entrée utilisé est "verifier", et 2 paramètres sont passés : le nom du champ et sa valeur. Si une chaine non vide est retournée, c’est une erreur. Un tableau peut être retourné contenant array($ok, $val) indiquant que la valeur a été modifiée. Par exemple, le type "idnum" (identifiant numérique) applique la fonction "intval" au moment du traitement de cette façon :
Pour créer un nouveau type de champ, il suffit de créer un fichier cfg/classes/type_yy.php contenant des fonctions cfg_action_quoi().
Action sur un champ de formulaire
Il est possible de réaliser des actions plus complexes que les verifications (type_yy) en utilisant une classe css "cfg_yy". Au lieu de passer $nom et $val comme dans les types, se sont $nom et la classe php CFG qui sont transmises, ce qui permet de réaliser nombre d’action.
En voici une très simple, du fichier cfg/classes/cfg_couleur.php, qui revient à mettre automatiquement dans un formulaire CFG le paramètre <!-- selecteur_couleur=1 --> si au moins un champ possède la classe "cfg_couleur" :
Action sur un paramètre de formulaire
Comme les 2 extensions précédentes, il est possible d’indiquer des actions à réaliser en fonction de paramètres donnés dans le formulaire, sous 2 conditions : que le paramètre soit non vide et qu’un fichier cfg/params/mon_parametre.php existe.
Ces actions sont faites juste après les actions proposées par les classes css. 2 arguments sont passés aux fonctions : $valeur est la valeur du paramètre, et &$cfg est la classe php de CFG.
Voici par exemple une partie de ce que le paramètre "selecteur_couleur" effectue : mettre dans le head html les scripts javascripts nécessaires à son fonctionnement :

