Changeset 48993 in spip-zone


Ignore:
Timestamp:
Jun 22, 2011, 12:36:19 PM (10 years ago)
Author:
cedric@…
Message:

modification du fonctionnement du plugin :
au lieu de stocker le verrou dans la base, on le stocke via un fichier sur le filesystem, dans local/
La meta n'est qu'un cache qui permet d'eviter les acces disques.
Cela permet de ne pas perdre la protection du plugin si jamais on importe une nouvelle base sur un site en travaux.

Location:
_plugins_/en_travaux/trunk
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/en_travaux/trunk/entravaux_install.php

    r48270 r48993  
    1919
    2020        include_spip('inc/autoriser');
     21        // upgrade inconditionnel
     22        if (isset($GLOBALS['meta']['entravaux_id_auteur'])){
     23                entravaux_poser_verrou("accesferme");
     24                effacer_meta('entravaux_id_auteur');
     25        }
     26
    2127        // seul un webmestre peut activer les travaux sur le site
    2228        // si c'est un autre admin qui active le plugin, il ne fait rien en base
    2329        if (autoriser('travaux')) {
    2430                $maj['create'] = array(
    25                         array('ecrire_meta','entravaux_id_auteur',$GLOBALS['visiteur_session']['id_auteur']),
     31                        array('entravaux_poser_verrou','accesferme'),
    2632                );
    2733                include_spip('base/upgrade');
    2834                maj_plugin($nom_meta_base_version, $version_cible, $maj);
    2935        }
    30         else
    31                 // sans mise a jour de $nom_meta_base_version ce qui fera une erreur dans le panneau plugin
    32                 effacer_meta('entravaux_id_auteur');
     36        // sinon on ne fait *rien* (activation par un admin, ou upgrade silencieux apres import de base)
    3337}
    3438
     
    4650
    4751
     52/**
     53 * Poser un verrou sous forme de fichier dans local/
     54 * pour ne pas qu'il saute si on importe une base
     55 * On loge dans le verrou l'id_auteur qui l'a pose a toute fin utile
     56 * On force la mise a jour de la meta
     57 * @param string $nom
     58 */
     59function entravaux_poser_verrou($nom){
     60        ecrire_fichier(_DIR_VAR.'entravaux_'.$nom.'.lock',"auteur:".$GLOBALS['visiteur_session']['id_auteur']);
     61        entravaux_check_verrou($nom, true);
     62}
     63
     64/**
     65 * Lever un verrou sous forme de fichier dans local/
     66 * pour ne pas qu'il saute si on importe une base
     67 * On force la mise a jour de la meta
     68 * @param string $nom
     69 */
     70function entravaux_lever_verrou($nom){
     71        spip_unlink(_DIR_VAR.'entravaux_'.$nom.'.lock');
     72        entravaux_check_verrou($nom, true);
     73}
    4874
    4975?>
  • _plugins_/en_travaux/trunk/entravaux_options.php

    r48287 r48993  
    1616
    1717/**
     18 * Verifier un verrou fichier pose dans local/entravaux_xxx.lock
     19 * pour ne pas qu'il saute si on importe une base
     20 * La meta n'est qu'un cache qu'on met a jour si pas dispo.
     21 * @param string $nom
     22 * @param bool $force
     23 * @return bool
     24 */
     25function entravaux_check_verrou($nom, $force=false){
     26        if (!isset($GLOBALS['meta'][$m='entravaux_'.$nom]) OR $force){
     27                ecrire_meta($m,file_exists(_DIR_VAR.$m.".lock")?"oui":"non",'non');
     28        }
     29        return $GLOBALS['meta'][$m]=="oui"; // si oui : verrou pose
     30}
     31/**
    1832 * A-t-on active les travaux oui ou non ?
    1933 * @return bool
    2034 */
    21 function is_entravaux(){ return (isset($GLOBALS['meta']['entravaux_id_auteur']) AND $GLOBALS['meta']['entravaux_id_auteur']);}
     35function is_entravaux(){
     36        // upgrade sauvage ?
     37        if (isset($GLOBALS['meta']['entravaux_id_auteur'])){include_spip('entravaux_install');entravaux_poser_verrou("accesferme");effacer_meta('entravaux_id_auteur');}
     38        return entravaux_check_verrou("accesferme");
     39}
    2240
    2341if (is_entravaux()){
     
    92110 * de retablir le site
    93111 *
    94  * @param <type> $flux
     112 * @param string $flux
    95113 */
    96114function entravaux_affichage_final($flux){
  • _plugins_/en_travaux/trunk/formulaires/configurer_entravaux.html

    r48285 r48993  
    2222                #ACTION_FORMULAIRE{SELF}
    2323                <ul>
    24                         <li class="editer_id_auteur pleine_largeur">
     24                        <li class="editer_accesferme pleine_largeur">
    2525                                <div class="choix">
    26                                         <input type="checkbox" name="id_auteur"[ (#ENV{id_auteur}|?{checked="checked"})] id="id_auteur" value="#SESSION{id_auteur}"
     26                                        <input type="checkbox" name="accesferme"[ (#ENV{accesferme}|?{checked="checked"})] id="accesferme" value="1"
    2727                                        onchange="if ($(this).attr('checked')) $(this).closest('li').next().show('fast').next().hide('fast'); else $(this).closest('li').next().hide('fast').next().show('fast');" />
    28                                         <label for="id_auteur"><:entravaux:activer_message:></label>
     28                                        <label for="accesferme"><:entravaux:activer_message:></label>
    2929                                </div>
    3030                        </li>
  • _plugins_/en_travaux/trunk/plugin.xml

    r48285 r48993  
    1010        </auteur>
    1111        <licence>GPL</licence>
    12         <version>3.0.0</version>
    13         <version_base>0.1.0</version_base>
     12        <version>3.1.0</version>
     13        <version_base>0.2.0</version_base>
    1414        <etat>stable</etat>
    1515        <description><multi>
Note: See TracChangeset for help on using the changeset viewer.