You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.9 KiB

<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2015 *
* 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. *
\***************************************************************************/
10 years ago
/**
* Gestion de l'action purger pour nettoyer le cache
*
* @package SPIP\Core\Cache
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
10 years ago
/**
* Action de purge du cache
*
* L'argument peut être :
*
* - inhibe_cache : inhibe le cache pendant 24h
* - reactive_cache : enlève l'inhibition du cache
* - cache : nettoie tous les caches (sauf celui des vignettes)
* - squelettes : nettoie le cache de compilation des squelettes
* - vignettes : nettoie le cache des vignettes (et compressions css/js)
*
* @pipeline_appel trig_purger
* @uses supprime_invalideurs()
* @uses purger_repertoire()
*
10 years ago
* @param string|null $arg
* Argument attendu. En absence utilise l'argument
* de l'action sécurisée.
*/
function action_purger_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
include_spip('inc/invalideur');
16 years ago
spip_log("purger $arg");
Rendre surchargeable la fonction d'authentification hors HTTP inc_admin. Interface: cette fonction reçoit comme premier argument un nom et demande la création d'un répertoire déduit de ce nom et de l'heure, et relance le script. Si le répertoire existe déjà (au 2e appel normalement) elle mémorise dans la table spip_meta le $REQUEST ayant provoqué l'appel, cette méta étant nommée également par le premier argument. Elle effectue ensuite un charger_fonction sur ce nom et le répertoire {{{base}}} (car ces actions concernent toujours la base de donnnées: upgrade, delete_all, convert_utf8, admin_repair). En cas d'interruption du script, tester la présence de telles variables au niveau de ecrire/index.php permet de s'apercevoir de l'interruption, et de reprendre le travail avec les valeurs transmises dans $_REQUEST lors du premier appel (n'est utilisé actuellement que pour import_all). Lorsque la fonction chargée a fini le travail, la meta et le repertoire sont supprimés. La fonction inc_admin admet 3 arguments supplémentaires optionnels: le titre de la page, un texte preliminaire expliquant l'action entreprise après création du répertoire, et une URL de retour. Au passage, ajout de la destruction du cache du menu des rubriques dans l'action de purge des caches, sinon on croit que l'action convert_utf8 n'a pas marché. La rationnalisation des noms induit donc que la meta "debut_restauration" se nomme à présent "import_all", et "conversion_charset" se nomme "convert_utf8; cet arbitraire ne devrait avoir aucune conséquence. Il reste un cas d'appel de debut_admin en dehors de ce schéma, lié au passage inachevé en plugin de la gestion du vieux htpassword.
16 years ago
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_CHEMIN);
@spip_unlink(_DIR_TMP . "plugin_xml_cache.gz");
// on ne supprime que _CACHE_PLUGINS_OPT qui declenche la reconstruction des 3
// _CACHE_PIPELINES _CACHE_PLUGINS_PATH et _CACHE_PLUGINS_FCT
// pour eviter des problemes de concurence
// cf http://core.spip.net/issues/2989
//@spip_unlink(_CACHE_PIPELINES);
//@spip_unlink(_CACHE_PLUGINS_PATH);
//@spip_unlink(_CACHE_PLUGINS_FCT);
@spip_unlink(_CACHE_PLUGINS_OPT);
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, array('subdir' => true));
break;
}
// le faire savoir aux plugins
pipeline('trig_purger', $arg);
}