API CFG : #CONFIG, lire_config(), ecrire_config(), effacer_config()

CFG fournit pour les scripts php 3 fonctions pour manipuler les données comme le ferait un formulaire CFG.

CFG fournit pour les scripts php 3 fonctions pour manipuler les données comme le ferait un formulaire CFG, en plus de la balise #CONFIG.

Ces fonctions sont lire_config(), ecrire_config() et effacer_config().

1 - CONFIG

Cette balise SPIP est étendue par CFG pour lire aussi les informations stockées depuis celui-ci. Elle permet d’extraire des informations d’un dépot (meta, metapack, tablepack, table ou php).

Cette balise admet 2 arguments, le lieu/adresse de la chaine à lire, et la valeur par défaut si cette dernière est vide.

Dépot meta

  • #CONFIG{meta::descriptif_site} : affiche le descriptif du site
  • #CONFIG{meta::entree_serialisee} : affiche la chaine sérialisée (la sérialisation, généralement faite par CFG, permet de stocker plusieurs informations dans une seule méta de SPIP)

Dépot metapack
CFG, par défaut, stocke les informations avec le dépot ’metapack’ qui sérialise les champs du formulaire CFG dans une seule méta de SPIP. Les informations lue avec ce dépot sont déserialisée et peuvent donc retourner dans certains cas des tableaux php.

  • #CONFIG{metapack::descriptif_site} : sera vide car ’descriptif_site’ est une chaine non serialisée
  • #CONFIG{metapack::entree_serialisee} : retournera la valeur désérialisée. Si c’est un tableau, celui-ci sera donc retourné.
  • #CONFIG{metapack::nom/champ} : retournera la valeur du champ stocké dans la meta ’nom’.
  • #CONFIG{metapack::nom/casier/champ} : retournera la valeur du champ stocké dans la meta ’nom’ rangée dans le dossier ’casier’.

Dépot tablepack
permet de récupérer des informations sérialisées dans une colonne d’une table SPIP, telle que la colonne ’extra’ :

  • #CONFIG{tablepack::auteur:3/nom/champ} : récupère la valeur de ’nom/champ’ dans la colonne ’cfg’ de la table spip_auteurs (id_auteur=3) (/!\ cette colonne par défaut est encore en discussion)
  • #CONFIG{tablepack::rubrique@extra:5/nom/champ} : récupère la valeur de ’nom/champ’ dans la colonne ’extra’ de la table spip_rubriques (id_rubrique = 5)
  • #CONFIG{tablepack::~13/nom/champ} : pour histoire, cela sélectionne la table ’spip_auteurs’ avec id_auteur=13.

Dépot php
récupère des informations stockés par CFG dans un fichier php :

  • #CONFIG{php::nom} : récupère le tableau ’nom’ (stocké dans /local/cfg/nom.php)(A voir s’il ne serait pas mieux dans /tmp, non accessible)
  • #CONFIG{php::nom/champ} : récupère la valeur de ’nom/champ’
  • #CONFIG{php::adresse/fichier.php:nom/champ} : récupère la valeur de ’nom/champ’ d’un fichier dont l’adresse est indiquée.

Raccourcis
Si le nom du dépot n’est pas passé à la balise #CONFIG, voilà ce qui se passe :

  • #CONFIG{nom} : lecture avec le depot ’meta’
  • #CONFIG{nom/} : (présence d’un /) lecture avec le depot ’metapack’ (sera donc déserialisé et pourra retourner un tableau). Une syntaxe utile peut être [(#ID_RUBRIQUE|in_array{#CONFIG{nom/,#ARRAY}})]
  • #CONFIG{nom,'',''} : pour histoire, déserialise ’nom’, comme l’écriture ci-dessus
  • #CONFIG{table:id/} : lecture avec ’tablepack’
  • #CONFIG{~id_auteur/} : lecture avec ’tablepack’

2 - lire_config()

Cette fonction est identique à la balise #CONFIG étendue par CFG. Elle lit la donnée demandée. Si le nom du dépot n’est pas donné (depot::), ce sont les mêmes raccourcis que la balise #CONFIG qui s’appliquent... à une exception historique près : si lire_config('nom') peut être déserialisée, elle le sera.

  • lire_config($chemin='', $defaut=null);
  • $chemin : le chemin comme celui de #CONFIG,
  • $defaut : une valeur par défaut éventuelle

Lire le descriptif du site :

$c = lire_config('descriptif_site');

Lire une donnée sérialisée dans spip_meta :

$c = lire_config('nom/casier/mon_champ');

Cette commande lira la valeur de ’nom_champ’ (on peut l’imaginer comme un tableau $meta['nom']['casier']['mon_champ'])

Pour que la valeur demandée existe, il faut soit l’avoir créé avec ecrire_config('nom/casier/mon_champ', $valeur) ou avec
un formulaire CFG en utilisant les paramètres :

<!-- nom=nom -->
<!-- casier=casier -->

Lire la colonne extra d’un auteur :

$c = lire_config('~id_auteur/dossier/champ');
$c = lire_config('auteur:8/dossier/champ');

C’est la colonne extra qui est lue par défaut.
Ce comportement est susceptible d’évoluer (utilisation d’une colonne ’cfg’ ?)

Lire une colonne quelconque (ici, ’prefs’) d’une table :

$c = lire_config('auteur@prefs:8/champ');
$c = lire_config('spip_auteurs@prefs:8/champ'); // equivalent

3 - ecrire_config()

Introduit en version 1.2 de CFG, cette fonction permet d’écrire une configuration.

  • ecrire_config($chemin, $valeur);
  • $chemin : le chemin comme celui de la fonction lire_config(),
  • $valeur : la valeur à écrire. Peut être un tableau de valeurs.

change le descriptif du site !

ecrire_config('meta::descriptif_site', 'mon descriptif');

stocker une meta de spip_meta !

ecrire_config('prefixe/champ', 'valeur');
ecrire_config('prefixe/dossier/champ', 'valeur');
ecrire_config('prefixe/dossier', array(...) ); // pleins de valeurs d'un coup

stocker un extra d’auteur :

ecrire_config('~id_auteur/champ', 'valeur');

stocker une colonne ’extra’ de rubrique :

ecrire_config('rubrique@extra:4/dossier/champ', 'valeur');

4 - effacer_config()

Introduit en version 1.2 de CFG, cette fonction permet d’effacer une configuration.

  • effacer_config($chemin);
  • $chemin : le chemin comme celui de la fonction lire_config() ou ecrire_config().

Exemples :

effacer_config('prefixe/dossier');
effacer_config('~id_auteur/champ');

Discussion

No discussion

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom