source: spip-zone/_plugins_/en_travaux/trunk/entravaux_install.php @ 48993

Last change on this file since 48993 was 48993, checked in by cedric@…, 10 years ago

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.

File size: 1.9 KB
Line 
1<?php
2/*
3 * Plugin En Travaux
4 * (c) 2006-2009 Arnaud Ventre, Cedric Morin
5 * Distribue sous licence GPL
6 *
7 */
8
9
10/**
11 * Installation/maj base
12 *
13 * @param string $nom_meta_base_version
14 * @param string $version_cible
15 */
16function entravaux_upgrade($nom_meta_base_version,$version_cible){
17
18        $maj = array();
19
20        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
27        // seul un webmestre peut activer les travaux sur le site
28        // si c'est un autre admin qui active le plugin, il ne fait rien en base
29        if (autoriser('travaux')) {
30                $maj['create'] = array(
31                        array('entravaux_poser_verrou','accesferme'),
32                );
33                include_spip('base/upgrade');
34                maj_plugin($nom_meta_base_version, $version_cible, $maj);
35        }
36        // sinon on ne fait *rien* (activation par un admin, ou upgrade silencieux apres import de base)
37}
38
39/**
40 * Installation/maj base
41 *
42 * @param string $nom_meta_base_version
43 */
44function entravaux_vider_tables($nom_meta_base_version) {
45
46        effacer_meta("entravaux_id_auteur");
47        effacer_meta("entravaux_message");
48        effacer_meta($nom_meta_base_version);
49}
50
51
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}
74
75?>
Note: See TracBrowser for help on using the repository browser.