Changeset 30233 in spip-zone


Ignore:
Timestamp:
Jul 26, 2009, 9:21:35 AM (10 years ago)
Author:
marcimat@…
Message:

Permettre de realiser des traitements differents sur les crayons en permettant de transmettre quelques paramètres aux fonctions natives d'enregistrement, notamment pour indiquer des noms de fonctions différentes.

Ceci va permettre à CFG de proposer une balise #EDIT_CONFIG{ma/petite/config} dans un premier temps très basique.

Location:
_plugins_/crayons
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/crayons/action/crayons_store.php

    r27795 r30233  
    6060
    6161
    62 function crayons_store() {
     62function crayons_store($options = array()) {
     63        // permettre de surcharger les fonctions de recuperation des valeurs
     64        // et de sauvegardes de celles-ci
     65        $options = array_merge(array(
     66                        'f_get_valeur' => 'crayons_store_get_valeur',
     67                        'f_set_modifs' => 'crayons_store_set_modifs',
     68                ), $options);
     69               
    6370        include_spip('inc/crayons');
    6471        $wdgcfg = wdgcfg();
     
    8895                                        // recuperer l'existant pour calculer son md5 et verifier
    8996                                        // qu'il n'a pas ete modifie entre-temps
    90                                         $data = valeur_colonne_table($type, array_keys($content), $id);
     97                                        $get_valeur = $options['f_get_valeur'];
     98                                        $data = $get_valeur($content, $regs);
    9199                                        $md5 = md5(serialize($data));
    92100
     
    118126                return $return;
    119127
     128        // on traite toutes les modifications
     129        // en appelant la fonction adequate de traitement
     130        $set_modifs = $options['f_set_modifs'];
     131        $return = $set_modifs($modifs, $return);
     132
     133        // une quelconque erreur ... ou rien ==> on ne fait rien !
     134        if ($return['$erreur'])
     135                return $return;
     136               
     137        // et maintenant refaire l'affichage des crayons modifies
     138        include_spip('inc/texte');
     139        foreach ($modifs as $m) {
     140                list($type, $modele, $id, $content, $wid) = $m;
     141                        $f = charger_fonction($type.'_'.$modele, 'vues', true)
     142                          OR $f = charger_fonction($modele, 'vues', true)
     143                          OR $f = charger_fonction($type, 'vues', true)
     144                          OR $f = 'vues_dist';
     145                        $return[$wid] = $f($type, $modele, $id, $content);
     146        }
     147        return $return;
     148}
     149
     150// recuperer une valeur en fonction des parametres recuperes
     151// cette fonction cherche une valeur d'un colonne d'une table SQL
     152function crayons_store_get_valeur($content, $regs) {
     153        list(,$crayon,$type,$modele,$id) = $regs;
     154        return valeur_colonne_table($type, array_keys($content), $id);
     155}
     156
     157// stocke les valeurs envoyees dans des colonnes de table SQL
     158function crayons_store_set_modifs($modifs, $return) {
    120159        // sinon on bosse : toutes les modifs ont ete acceptees
    121160        // verifier qu'on a tout ce qu'il faut pour mettre a jour la base
     
    196235            }
    197236        }
    198 
    199         // et maintenant refaire l'affichage des crayons modifies
    200         include_spip('inc/texte');
    201         foreach ($modifs as $m) {
    202                 list($type, $modele, $id, $content, $wid) = $m;
    203                         $f = charger_fonction($type.'_'.$modele, 'vues', true)
    204                           OR $f = charger_fonction($modele, 'vues', true)
    205                           OR $f = charger_fonction($type, 'vues', true)
    206                           OR $f = 'vues_dist';
    207                         $return[$wid] = $f($type, $modele, $id, $content);
    208         }
    209         return $return;
     237       
     238        return $return;
    210239}
    211240
     
    317346
    318347function action_crayons_store_dist() {
     348        return action_crayons_store_args();
     349}
     350
     351// permettre de passer une autre fonction de stockage des informations
     352function action_crayons_store_args($store = 'crayons_store') {
    319353        header("Content-Type: text/html; charset=".$GLOBALS['meta']['charset']);
    320354        lang_select($GLOBALS['auteur_session']['lang']);
    321355
    322         $r = crayons_store();
     356        $r = $store();
    323357
    324358        // Si on a ete appeles par jQuery, on renvoie tout, c'est le client
     
    352386        }
    353387
    354         exit;
     388        exit;   
    355389}
    356390
  • _plugins_/crayons/plugin.xml

    r27852 r30233  
    1212        </auteur>
    1313        <version>
    14         1.4
     14        1.5
    1515        </version>
    1616        <etat>
Note: See TracChangeset for help on using the changeset viewer.