SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 187 visiteurs en ce moment

Accueil > Outils pour plugins > Config (CFG) > API CFG : #CONFIG, lire_config(), ecrire_config(), effacer_config()

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

30 mars 2008 – par Matthieu Marcillaud – 11 commentaires

5 votes

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().

#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’

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 :

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

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 :

Lire la colonne extra d’un auteur :

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 :

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 !

stocker une meta de spip_meta !

stocker un extra d’auteur :

stocker une colonne ’extra’ de rubrique :

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 :

Dernière modification de cette page le 24 août 2008

Retour en haut de la page

Vos commentaires

  • Le 20 avril 2011 à 15:11, par seds En réponse à : API CFG : #CONFIG, lire_config(), ecrire_config(), effacer_config()

    bonjour,
    d’abord j’ai pas su où vraiment poster ma question, il y a je crois plusieurs fonctions en jeu

    je voudrais insérer un lire_config dans mon fichier cfg, et si « oui » insérer un javascript dans head
    alors pour mon premier test j’ai mis ça dans mon fichier cfg :
    <input type="radio" name="redirection" value="oui" [ checked="(#ENV{redirection}|=={oui}|?{checked})"]/>

    et dans un pipeline j’ai mis ça mais évidemment ça va pas :
    Parse error : syntax error, unexpected T_STRING in /mnt/165/sdb/3/9/scozzi/spip_2.1.10/plugins/itwx_mobile_3_00_christ/itwx_pipeline.php on line 10

    1. <?php
    2. function itwx_mobile_redirection($flux)
    3. {
    4. $redirection = lire_config('itwx/redirection') ;
    5. switch ($redirection)
    6. {
    7. case 'oui':
    8. $flux .= '<script language=javascript>
    9. var redirectagent = navigator.userAgent.toLowerCase();
    10. var redirect_devices = ['vnd.wap.xhtml+xml', 'wap1', 'wap2'];
    11. for (var i in redirect_devices) {
    12. if (redirectagent.indexOf(redirect_devices[i]) != -1) {
    13.  
    14. var question = confirm("Souhaitez-vous naviguer sur le site optimisé pour Mobile?")
    15. if (question)
    16. {window.location = "#URL_PAGE{mob_sommaire}"; }
    17.  
    18. }
    19. };
    20. var redirectagent = navigator.userAgent.toLowerCase();
    21. var redirect_devices = ['sony', 'symbian', 'nokia', 'samsung', 'mobile', 'windows ce', 'epoc', 'opera mini', 'nitro', 'j2me', 'midp-', 'cldc-', 'netfront', 'mot', 'up.browser', 'up.link', 'audiovox', 'blackberry', 'ericsson', 'panasonic', 'philips', 'sanyo', 'sharp', 'sie-', 'portalmmm', 'blazer', 'avantgo', 'danger', 'palm', 'series60', 'palmsource', 'pocketpc', 'smartphone', 'rover', 'ipaq', 'au-mic', 'alcatel', 'ericy', 'vodafone', 'teleca', 'playstation', 'lge', 'lg-', 'iphone', 'android', 'htc', 'dream', 'webos', 'bolt', 'nintendo'];
    22. for (var i in redirect_devices) {
    23. if (redirectagent.indexOf(redirect_devices[i]) != -1) {
    24. location.replace("#URL_PAGE{smart_sommaire}");
    25. }
    26. }
    27.  
    28. </script>';
    29. break ;
    30. }
    31. return $flux;
    32. }
    33. ?>

    Télécharger

    je reconnais que je ne sais pas encore trop ce que je fais en prog :/

    y a-t-il d’autres solutions ou celle-ci est-elle bonne mais où comment corriger ?

    Répondre à ce message

  • Le 29 juillet 2009 à 14:40, par Fabrizio En réponse à : Repertoire de stockage

    Merci pour ta réponse ultra rapide. Le répertoire IMG me parait bien dans la mesure notamment ou le répertoire n’est jamais purgé. Une fois la modif effectué peux tu me signaler sur le forum comme ca je récupérer la dernière version de CFG sur la zone ?

    Merci bien en tout les cas pour ta réponse.

    Répondre à ce message

  • Le 29 juillet 2009 à 14:19, par Fabrizio En réponse à : Fichier dans local/cfg effacés

    Bonjour , et merci bien pour cet excellent article et pour le plugin. Je viens de terminer un plugin qui utilise CFG avec un dépot php . Tout fonctionne correctement, et dans le répertoire local se créer un répertoire cfg (local/cfg) à l’intérieur duquel sont stockes mais variables sous forme de tableau PHP. Jusque là tout est impeccable , par contre quand je vais dans l’admin et que je vide le cache ’ ?exec=admin_vider’ cela supprime mes fichiers !!!!

    Y a t il un moyen pour éviter cela ?

    Merci d’avance !!!!

    • Le 29 juillet 2009 à 14:35, par Matthieu Marcillaud En réponse à : Fichier dans local/cfg effacés

      Ah la blague… j’ai pas pensé à ça…
      pom pom pom…

      Faut réfléchir alors pour le sauver ailleurs, mais « tmp » n’a pas un nom qui incite à stocker dedans non plus… grml de grml…

      Il faut certainement stocker dans IMG alors ? ça irait ?

    Répondre à ce message

  • Le 28 juin 2008 à 10:28, par cam.lafit En réponse à : API CFG : #CONFIG, lire_config(), ecrire_config(), effacer_config()

    S’lt

    Il pourrait être bon de rappeller qu’il ne faut pas oublier de faire :
            include_spip('inc/cfg_config'); pour accéder à l’api.

    Répondre à ce message

  • Le 7 avril 2008 à 12:25, par cent20 En réponse à : API CFG : #CONFIG, lire_config(), ecrire_config(), effacer_config()

    Salut Marcimat,

    Je suis en train de jouer avec #CONFIG & ecrire_config() et je n’arrive pas à écrire "non" dans la méta « activer_breves ».

    Tous mes tests se soldent par des échecs.

    #CONFIG{meta::activer_breves}
    #CONFIG{meta::descriptif_site}
    <?php
    ecrire_config('meta::activer_breves', 'non');
    ecrire_config('meta::descriptif_site', 'mon descriptif');
    ?>
    #CONFIG{meta::descriptif_site}
    #CONFIG{meta::activer_breves}

    Je n’arrive pas à écraser les métas il me semble, même l’écriture de la méta descriptif_site ne semble pas fonctionner.

    Ceci marche :

    ecrire_config('activer_breves', 'non');

    Mais malheureusement le NON est stocké sous forme sérialisé :

    s:3 :"oui" ;

    ce qui rend cette config inopérante pour spip.

    Tests réalisés sur un SPIP 1.9.3 SVN [11346] en prod, avec cfg 1.3.8 [19338], le code étant contenu dans une page de cfg « ?exec=cfg&cfg=blip3_autoconf »

    Intérêt de la manipulation que je veux faire ?

    Pouvoir proposer une page qui modifie la configuration d’un site sous SPIP et l’adapte au squelette par exemple (désactiver les brèves, activer ceci, modifier cela ... etc).

    Le tout étant bien entendu fairplay, on explique avant les modifications qui vont être réalisées ...

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Import ICS 2 (agenda distant)

    2 août – 35 commentaires

    La version 2 du plugin « import ICS » en reprend la principale fonctionnalité, à savoir l’ajout automatique d’évènements distants dans la liste des évènements d’un site. À la différence de la première version, elle ne dépend pas du plugin « Séminaire » et est (...)

  • Newsletters

    16 janvier 2013 – 374 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)

  • CKeditor 3.0

    4 octobre 2009 – 1217 commentaires

    CKeditor est l’évolution de l’éditeur WYSIWYG : FCKeditor, avec ce plugin vous pourrez utiliser cet éditeur à la place de l’éditeur de spip tout en laissant le choix à vos auteurs de l’éditeur qu’ils préfèrent utiliser. Attention : cet éditeur WYSIWYG (...)

  • GIS 4

    11 août 2012 – 1284 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • SPIPr

    23 mars 2015 – 75 commentaires

    SPIPr est à la fois une famille de squelettes et un framework pour le développement front avec SPIP. Prêt à l’emploi, thémable, responsive, et conçu dans une approche d’industrialisation et de développement rapide. Documentation source : (...)

Ça spipe par là