From 90815a4694ed887f5b223a15b7c6b84b5c72d6dc Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Mon, 20 Sep 2010 20:58:26 +0000 Subject: [PATCH] page pour vider le cache en squelette + integration de la fonction 'desactiver temporairement le cache'/'reactiver le cache' Dans tous les cas, le cache se reactive automatiquement au bout de 24h pour eviter tout oubli. --- .gitattributes | 3 +- ecrire/action/purger.php | 63 +++++---- ecrire/exec/admin_vider.php | 127 ------------------ ecrire/public/cacher.php | 1 + .../squelettes/contenu/page-admin_vider.html | 52 +++++++ .../contenu/page-admin_vider_fonctions.php | 49 +++++++ prive/style_prive_plugins.html | 2 +- 7 files changed, 141 insertions(+), 156 deletions(-) delete mode 100644 ecrire/exec/admin_vider.php create mode 100644 prive/squelettes/contenu/page-admin_vider.html create mode 100644 prive/squelettes/contenu/page-admin_vider_fonctions.php diff --git a/.gitattributes b/.gitattributes index c797d88646..2f3827b896 100644 --- a/.gitattributes +++ b/.gitattributes @@ -114,7 +114,6 @@ ecrire/exec/admin_effacer.php -text ecrire/exec/admin_plugin.php -text ecrire/exec/admin_repair.php -text ecrire/exec/admin_tech.php -text -ecrire/exec/admin_vider.php -text ecrire/exec/aide_index.php -text ecrire/exec/articles.php -text ecrire/exec/articles_edit.php -text @@ -737,6 +736,8 @@ prive/rss/signatures.html -text prive/spip_pass.html -text prive/spip_style.css -text prive/squelettes/body.html -text +prive/squelettes/contenu/page-admin_vider.html -text +prive/squelettes/contenu/page-admin_vider_fonctions.php -text prive/squelettes/contenu/page-breves.html -text prive/squelettes/contenu/page-charte.html -text prive/squelettes/contenu/page-configurer.html -text diff --git a/ecrire/action/purger.php b/ecrire/action/purger.php index d0ea45a680..cfd2679ca3 100644 --- a/ecrire/action/purger.php +++ b/ecrire/action/purger.php @@ -13,41 +13,50 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // securiser // http://doc.spip.org/@action_purger_dist -function action_purger_dist() +function action_purger_dist($arg=null) { - $securiser_action = charger_fonction('securiser_action', 'inc'); - $arg = $securiser_action(); + if (is_null($arg)) { + $securiser_action = charger_fonction('securiser_action', 'inc'); + $arg = $securiser_action(); + } include_spip('inc/invalideur'); spip_log("purger $arg"); switch ($arg) { + case 'inhibe_cache': + // inhiber le cache pendant 24h + ecrire_meta('cache_inhib',$_SERVER['REQUEST_TIME']+24*3600); + break; + case 'reactive_cache': + effacer_meta('cache_inhib'); + break; + + case 'cache': + supprime_invalideurs(); + @spip_unlink(_CACHE_RUBRIQUES); + @spip_unlink(_CACHE_PIPELINES); + @spip_unlink(_CACHE_PLUGINS_PATH); + @spip_unlink(_CACHE_PLUGINS_OPT); + @spip_unlink(_CACHE_PLUGINS_FCT); + @spip_unlink(_CACHE_PLUGINS_VERIF); + @spip_unlink(_CACHE_CHEMIN); + purger_repertoire(_DIR_CACHE,array('subdir'=>true)); + purger_repertoire(_DIR_AIDE); + purger_repertoire(_DIR_VAR.'cache-css'); + purger_repertoire(_DIR_VAR.'cache-js'); + break; + + case 'squelettes': + purger_repertoire(_DIR_SKELS); + break; - case 'cache': - supprime_invalideurs(); - @spip_unlink(_CACHE_RUBRIQUES); - @spip_unlink(_CACHE_PIPELINES); - @spip_unlink(_CACHE_PLUGINS_PATH); - @spip_unlink(_CACHE_PLUGINS_OPT); - @spip_unlink(_CACHE_PLUGINS_FCT); - @spip_unlink(_CACHE_PLUGINS_VERIF); - @spip_unlink(_CACHE_CHEMIN); - purger_repertoire(_DIR_CACHE,array('subdir'=>true)); - purger_repertoire(_DIR_AIDE); - purger_repertoire(_DIR_VAR.'cache-css'); - purger_repertoire(_DIR_VAR.'cache-js'); - break; - - case 'squelettes': - purger_repertoire(_DIR_SKELS); - break; - - case 'vignettes': - purger_repertoire(_DIR_VAR,array('subdir'=>true)); - supprime_invalideurs(); - purger_repertoire(_DIR_CACHE); - break; + case 'vignettes': + purger_repertoire(_DIR_VAR,array('subdir'=>true)); + supprime_invalideurs(); + purger_repertoire(_DIR_CACHE); + break; } } diff --git a/ecrire/exec/admin_vider.php b/ecrire/exec/admin_vider.php deleted file mode 100644 index 29331cfb99..0000000000 --- a/ecrire/exec/admin_vider.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -/***************************************************************************\ - * SPIP, Systeme de publication pour l'internet * - * * - * Copyright (c) 2001-2010 * - * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * - * * - * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * - * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * -\***************************************************************************/ - -if (!defined("_ECRIRE_INC_VERSION")) return; - -include_spip('inc/presentation'); -include_spip('inc/actions'); - - -// http://doc.spip.org/@calculer_taille_dossier -function calculer_taille_dossier ($dir) { - $handle = @opendir($dir); - if (!$handle) return; - $taille = 0; - while (($fichier = @readdir($handle)) !== false) { - // Eviter ".", "..", ".htaccess", etc. - if ($fichier[0] == '.') continue; - if (is_file($d = "$dir/$fichier")) { - $taille += filesize($d); - } - else if (is_dir($d)) - $taille += calculer_taille_dossier($d); - } - closedir($handle); - return $taille; -} - - - -// http://doc.spip.org/@afficher_taille_cache_vignettes -function afficher_taille_cache_vignettes() { - $taille = calculer_taille_dossier(_DIR_VAR); - return _T('ecrire:taille_cache_image', - array( - 'dir' => joli_repertoire(_DIR_VAR), - 'taille' => "<b>".taille_en_octets($taille)."</b>" - ) - ); -} - -// http://doc.spip.org/@exec_admin_vider_dist -function exec_admin_vider_dist() -{ - global $quota_cache, $spip_lang; - - // autorisation a affiner - if (!autoriser('configurer', 'admin_vider')){ - include_spip('inc/minipres'); - echo minipres(); - } else { - $commencer_page = charger_fonction('commencer_page', 'inc'); - echo $commencer_page(_T('onglet_vider_cache'), "configuration", "cache"); - - echo gros_titre(_T('titre_admin_vider'),'', false); -// barre_onglets("administration", "vider"); - - echo debut_gauche("",true); - - echo debut_boite_info(true); - - echo _T('info_gauche_admin_vider'); - - echo fin_boite_info(true); - - echo debut_droite("",true); - - echo debut_cadre_trait_couleur("cache-24.png", true, "", _T('texte_vider_cache')); - - echo "\n<p style='text-align: justify;'>"._T('texte_suppression_fichiers')."</p>", - "<p style='text-align: justify;'>"._T('texte_recalcul_page')."</p>"; - - echo "\n<div> </div>"; - -// -// Quota et taille du cache -// - echo debut_cadre_relief("", true, "", _T('taille_repertoire_cache')); - - include_spip('inc/invalideur'); - if (($n = taille_du_cache())>250*1024) - $info = _T('taille_cache_octets', array('octets' => taille_en_octets($n))); - else - $info = _T('taille_cache_vide'); - - echo "<p style='text-align: justify;'><b>$info</b></p>\n"; - - echo "\n<p style='text-align: justify;'>"; - if ($quota_cache) { - echo _T('taille_cache_maxi', - array('octets' => taille_en_octets($quota_cache*1024*1024))); - } else { - echo _T('taille_cache_infinie'); - } - - echo ' (', _T('cache_modifiable_webmestre'),')</p>', - redirige_action_post('purger', 'cache', "admin_vider", '', - "\n<div style='text-align: right'><input class='fondo' type='submit' value=\"" . - str_replace('"', '"', _T('bouton_vider_cache')) . - "\" /></div>"); - echo fin_cadre_relief(true); - - echo debut_cadre_relief("image-24.gif", true, "", _T('info_images_auto')); - - echo afficher_taille_cache_vignettes(); - - echo redirige_action_post('purger', 'vignettes', "admin_vider",'', - "\n<div style='text-align: right'><input class='fondo' type='submit' value=\"" . - str_replace('"', '"', _T('bouton_vider_cache')) . - "\" /></div>"); - - echo fin_cadre_relief(true); - - echo fin_cadre_trait_couleur(true); - echo "<br />"; - echo fin_gauche(), fin_page(); - } -} -?> diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php index 7b3b2e796d..43db5c81c0 100644 --- a/ecrire/public/cacher.php +++ b/ecrire/public/cacher.php @@ -95,6 +95,7 @@ function gunzip_page(&$page) { function cache_valide(&$page, $date) { if (isset($GLOBALS['var_nocache']) AND $GLOBALS['var_nocache']) return -1; + if (isset($GLOBALS['meta']['cache_inhib']) AND $_SERVER['REQUEST_TIME']<$GLOBALS['meta']['cache_inhib']) return -1; if (defined('_NO_CACHE')) return (_NO_CACHE==0 AND !isset($page['texte']))?1:_NO_CACHE; if (!$page OR !isset($page['texte']) OR !isset($page['entetes']['X-Spip-Cache'])) return 1; diff --git a/prive/squelettes/contenu/page-admin_vider.html b/prive/squelettes/contenu/page-admin_vider.html new file mode 100644 index 0000000000..0abe39344c --- /dev/null +++ b/prive/squelettes/contenu/page-admin_vider.html @@ -0,0 +1,52 @@ +[(#AUTORISER{configurer,admin_vider}|interdire_acces)] + +<h1><:texte_vider_cache:></h1> + +<p><:texte_suppression_fichiers:></p> +<p><:texte_recalcul_page:></p> + + +#BOITE_OUVRIR{#CHEMIN_IMAGE{cache-24.png}|balise_img{'',cadre-icone}|concat{#VAL{taille_repertoire_cache}|_T}|wrap{'<h3>'},'simple','titrem'} +#SET{taille,#REM|taille_du_cache} + +<p><b> + [(#GET{taille}|intval|>{250000}|non) <:taille_cache_vide:>] + [(#GET{taille}|intval|>{250000}|oui) + #SET{taille,#GET{taille}|taille_en_octets} + <:taille_cache_octets{octets=#GET{taille}}:> + ] +</b></p> + +#SET{quota,#EVAL{$GLOBALS}|table_valeur{quota_cache}} +<p> + [(#GET{quota}|non) <:taille_cache_infinie:>] + [(#GET{quota}|oui) + #SET{quota,#GET{quota}|mult{1024}|mult{1024}|taille_en_octets} + <:taille_cache_maxi{octets=#GET{quota}}:> + ] + (<:cache_modifiable_webmestre:>) +</p> + +#SET{cache_inhib,#CONFIG{cache_inhib}|sinon{0}|>{#REM|time}|oui} + +[(#GET{cache_inhib}|oui) +<div><strong>Le cache est temporairement desactivé.</strong> [(#BOUTON_ACTION{Reactiver le cache,#URL_ACTION_AUTEUR{purger,reactive_cache,#SELF},ajax link})] +</div> +] +[(#GET{cache_inhib}|non) +<div>[(#BOUTON_ACTION{Desactiver temporairement le cache,#URL_ACTION_AUTEUR{purger,inhibe_cache,#SELF},ajax link})] +</div> +] + +#BOITE_PIED + [(#BOUTON_ACTION{<:bouton_vider_cache:>,#URL_ACTION_AUTEUR{purger,cache,#SELF},ajax})] +#BOITE_FERMER + + +#BOITE_OUVRIR{#CHEMIN_IMAGE{image-24.png}|balise_img{'',cadre-icone}|concat{#VAL{info_images_auto}|_T}|wrap{'<h3>'},'simple','titrem'} + +[<p>(#REM|afficher_taille_cache_vignettes{})</p>] + +#BOITE_PIED + [(#BOUTON_ACTION{<:bouton_vider_cache:>,#URL_ACTION_AUTEUR{purger,vignettes,#SELF},ajax})] +#BOITE_FERMER diff --git a/prive/squelettes/contenu/page-admin_vider_fonctions.php b/prive/squelettes/contenu/page-admin_vider_fonctions.php new file mode 100644 index 0000000000..cd06f3ccd5 --- /dev/null +++ b/prive/squelettes/contenu/page-admin_vider_fonctions.php @@ -0,0 +1,49 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2009 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/invalideur'); + +// http://doc.spip.org/@calculer_taille_dossier +function calculer_taille_dossier ($dir) { + $handle = @opendir($dir); + if (!$handle) return; + $taille = 0; + while (($fichier = @readdir($handle)) !== false) { + // Eviter ".", "..", ".htaccess", etc. + if ($fichier[0] == '.') continue; + if (is_file($d = "$dir/$fichier")) { + $taille += filesize($d); + } + else if (is_dir($d)) + $taille += calculer_taille_dossier($d); + } + closedir($handle); + return $taille; +} + + + +// http://doc.spip.org/@afficher_taille_cache_vignettes +function afficher_taille_cache_vignettes() { + $taille = calculer_taille_dossier(_DIR_VAR); + return _T('ecrire:taille_cache_image', + array( + 'dir' => joli_repertoire(_DIR_VAR), + 'taille' => "<b>".taille_en_octets($taille)."</b>" + ) + ); +} + + +?> \ No newline at end of file diff --git a/prive/style_prive_plugins.html b/prive/style_prive_plugins.html index 74c7520340..7e2aca4772 100644 --- a/prive/style_prive_plugins.html +++ b/prive/style_prive_plugins.html @@ -61,7 +61,7 @@ ul.menu li a:hover {background-color:[#(#GET{claire}|couleur_eclaircir|couleur_e ul.menu li .on {background-color:[#(#GET{claire}|couleur_eclaircir|couleur_eclaircir)];} /* les boutons action */ -form.bouton_action_post.link, form.bouton_action_post.lien div {display:inline;} +form.bouton_action_post.link, form.bouton_action_post.link div {display:inline;} form.bouton_action_post.link button.submit, .formulaire_spip .boutons input.link,.formulaire_spip .boutons button.link {margin:0;font-weight:normal;} .formulaire_spip .boutons button {cursor:pointer;} -- GitLab