[SPIP] v3.2.1-->v3.2.2
[lhc/web/www.git] / www / ecrire / action / purger.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 /**
14 * Gestion de l'action purger pour nettoyer le cache
15 *
16 * @package SPIP\Core\Cache
17 **/
18 if (!defined('_ECRIRE_INC_VERSION')) {
19 return;
20 }
21
22 /**
23 * Action de purge du cache
24 *
25 * L'argument peut être :
26 *
27 * - inhibe_cache : inhibe le cache pendant 24h
28 * - reactive_cache : enlève l'inhibition du cache
29 * - cache : nettoie tous les caches (sauf celui des vignettes)
30 * - squelettes : nettoie le cache de compilation des squelettes
31 * - vignettes : nettoie le cache des vignettes (et compressions css/js)
32 *
33 * @pipeline_appel trig_purger
34 * @uses supprime_invalideurs()
35 * @uses purger_repertoire()
36 *
37 * @param string|null $arg
38 * Argument attendu. En absence utilise l'argument
39 * de l'action sécurisée.
40 */
41 function action_purger_dist($arg = null) {
42 if (is_null($arg)) {
43 $securiser_action = charger_fonction('securiser_action', 'inc');
44 $arg = $securiser_action();
45 }
46
47 include_spip('inc/invalideur');
48
49 spip_log("purger $arg");
50
51 switch ($arg) {
52 case 'inhibe_cache':
53 // inhiber le cache pendant 24h
54 ecrire_meta('cache_inhib', $_SERVER['REQUEST_TIME'] + 24 * 3600);
55 break;
56 case 'reactive_cache':
57 effacer_meta('cache_inhib');
58 break;
59
60 case 'cache':
61 supprime_invalideurs();
62 @spip_unlink(_CACHE_RUBRIQUES);
63 @spip_unlink(_CACHE_CHEMIN);
64 @spip_unlink(_DIR_TMP . "plugin_xml_cache.gz");
65 // on ne supprime que _CACHE_PLUGINS_OPT qui declenche la reconstruction des 3
66 // _CACHE_PIPELINES _CACHE_PLUGINS_PATH et _CACHE_PLUGINS_FCT
67 // pour eviter des problemes de concurence
68 // cf http://core.spip.net/issues/2989
69 //@spip_unlink(_CACHE_PIPELINES);
70 //@spip_unlink(_CACHE_PLUGINS_PATH);
71 //@spip_unlink(_CACHE_PLUGINS_FCT);
72 @spip_unlink(_CACHE_PLUGINS_OPT);
73 purger_repertoire(_DIR_CACHE, array('subdir' => true));
74 purger_repertoire(_DIR_AIDE);
75 purger_repertoire(_DIR_VAR . 'cache-css');
76 purger_repertoire(_DIR_VAR . 'cache-js');
77 break;
78
79 case 'squelettes':
80 purger_repertoire(_DIR_SKELS);
81 break;
82
83 case 'vignettes':
84 purger_repertoire(_DIR_VAR, array('subdir' => true));
85 supprime_invalideurs();
86 purger_repertoire(_DIR_CACHE, array('subdir' => true));
87 break;
88 }
89
90 // le faire savoir aux plugins
91 pipeline('trig_purger', $arg);
92 }