From 798dade4887f6d53bf9f49465e754b78d012694e Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sat, 7 Jan 2006 09:10:23 +0000
Subject: [PATCH] remplacement de spip_cache.php3 et ses appels par des appels
 au script generique spip_action.php

---
 .gitattributes                    |  1 +
 ecrire/inc_admin_vider.php        | 23 +++++++----
 ecrire/inc_config.php3            |  9 ++--
 ecrire/inc_invalideur.php3        | 44 --------------------
 ecrire/inc_spip_action_purger.php | 68 +++++++++++++++++++++++++++++++
 ecrire/inc_upgrade.php            |  7 ++--
 spip_cache.php3                   | 24 -----------
 7 files changed, 92 insertions(+), 84 deletions(-)
 create mode 100644 ecrire/inc_spip_action_purger.php
 delete mode 100644 spip_cache.php3

diff --git a/.gitattributes b/.gitattributes
index 7589fbc0c6..ee56b06f91 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -315,6 +315,7 @@ ecrire/inc_recherche.php -text
 ecrire/inc_rubriques_edit.php -text
 ecrire/inc_sites_edit.php -text
 ecrire/inc_sites_tous.php -text
+ecrire/inc_spip_action_purger.php -text
 ecrire/inc_spip_cal.php -text
 ecrire/inc_spip_image.php -text
 ecrire/inc_spip_style.php -text
diff --git a/ecrire/inc_admin_vider.php b/ecrire/inc_admin_vider.php
index 5a1159fc2b..3c70e9739f 100644
--- a/ecrire/inc_admin_vider.php
+++ b/ecrire/inc_admin_vider.php
@@ -100,14 +100,16 @@ if ($quota_cache) {
 	echo _T('taille_cache_infinie');
 }
 
- $action = 'purger_cache';
- $hash = calculer_action_auteur($action);
+ $action = 'purger';
+ $arg = 'cache';
+ $hash = calculer_action_auteur("$action $arg");
 
  echo ' (', _T('cache_modifiable_webmestre'),')</p>', 
   "\n<form action='",
-  generer_url_public("spip_cache"),
+  generer_url_public("spip_action.php"),
   "' method='POST'>", 
   "\n<input type='hidden' name='action' value='$action' />",
+  "\n<input type='hidden' name='arg' value='$arg' />",
   "\n<input type='hidden' name='id_auteur' value='$connect_id_auteur' />", 
   "\n<input type='hidden' name='hash' value='$hash' />", 
   "\n<input type='hidden' name='redirect' value='",
@@ -122,22 +124,25 @@ if ($quota_cache) {
 
  debut_cadre_relief("image-24.gif", false, "", _T('info_images_auto'));
 
- $action = 'calculer_cache_vignettes';
- $hash = calculer_action_auteur($action);
+ $action = 'purger';
+ $arg = 'taille_vignettes';
+ $hash = calculer_action_auteur("$action $arg");
 
  echo "<div style='text-align: center;'>",
    "<iframe width='530px' height='65px' src='",
-   generer_url_public("spip_cache", "action=$action&lang=$spip_lang&id_auteur=$connect_id_auteur&hash=$hash"),
+   generer_url_public("spip_action.php", "action=$action&arg=$arg&lang=$spip_lang&id_auteur=$connect_id_auteur&hash=$hash"),
    "'></iframe>",
    "</div>";
 
- $action = 'purger_cache_vignettes';
- $hash = calculer_action_auteur($action);
+ $action = 'purger';
+ $arg = 'vignettes';
+ $hash = calculer_action_auteur("$action $arg");
 
  echo   "\n<form action='",
-   generer_url_public("spip_cache"),
+   generer_url_public("spip_action.php"),
    "' method='POST'>",
    "\n<input type='hidden' name='action' value='$action' />",
+   "\n<input type='hidden' name='arg' value='$arg' />",
    "\n<input type='hidden' name='id_auteur' value='$connect_id_auteur' />",
    "\n<input type='hidden' name='hash' value='$hash' />",
    "\n<input type='hidden' name='redirect' value='",
diff --git a/ecrire/inc_config.php3 b/ecrire/inc_config.php3
index c71dd277f2..064979902c 100644
--- a/ecrire/inc_config.php3
+++ b/ecrire/inc_config.php3
@@ -298,10 +298,11 @@ function appliquer_modifs_config() {
 	}
 
 	if ($purger_skel) {
-	  redirige_par_entete(generer_url_public("spip_cache"), "?action=purger_squelettes&id_auteur=$connect_id_auteur&hash=" .
-				    calculer_action_auteur("purger_squelettes") .
-				    "&redirect=".  _DIR_RESTREINT_ABS .
-						urlencode($clean_link->getUrl()));
+	  $action = 'purger';
+	  $arg = 'squelettes';
+	  $hash = calculer_action_auteur("$action $arg");
+	  redirige_par_entete(generer_url_public("spip_action.php"), "?action=$action&arg=$args&id_auteur=$connect_id_auteur&hash=&hash&redirect=" .
+			      _DIR_RESTREINT_ABS . urlencode($clean_link->getUrl()));
 	}
 }
 
diff --git a/ecrire/inc_invalideur.php3 b/ecrire/inc_invalideur.php3
index dc37802ad4..a4dcaabd0a 100644
--- a/ecrire/inc_invalideur.php3
+++ b/ecrire/inc_invalideur.php3
@@ -134,50 +134,6 @@ function purger_repertoire($dir, $age='ignore', $regexp = '') {
 	closedir($handle);
 }
 
-function purger_cache() {
-	supprime_invalideurs();
-	purger_repertoire(_DIR_CACHE, 0);
-}
-
-function purger_cache_squelettes() {
-	purger_repertoire(_DIR_CACHE, 0, '^skel_');
-}
-
-
-function purger_cache_vignettes() {
-	purger_repertoire(_DIR_IMG, $age='ignore', $regexp = '^cache\-');
-	spip_log('vider le cache');
-	purger_cache();
-}
-
-
-function calculer_cache_vignettes() {
-  	global $lang;
-	$handle = @opendir(_DIR_IMG);
-	if (!$handle) return;
-
-	while (($fichier = @readdir($handle)) !== false) {
-		// Eviter ".", "..", ".htaccess", etc.
-		if ($fichier[0] == '.') continue;
-		if ($regexp AND !ereg($regexp, $fichier)) continue;
-		if (is_dir(_DIR_IMG.$fichier) AND ereg("^cache-", $fichier)) {
-			$taille += calculer_taille_dossier(_DIR_IMG.$fichier);
-		}
-	}
-	closedir($handle);
-	
-	include_ecrire("inc_filtres");
-	include_ecrire('inc_lang');
-	lang_select($lang);
-	echo "<html><body>\n";
-	echo "<div style='font-family: verdana, arial, sans; font-size: 12px;'>";
-	echo "<p align='justify'>\n";
-	echo _T('ecrire:taille_cache_image', array('dir' => _DIR_IMG,
-		'taille' => "<b>".taille_en_octets($taille)."</b>"));
-	echo "</p></div></body></html>";
-
-}
-
 // Fonctions pour le cache des images (vues reduites)
 
 
diff --git a/ecrire/inc_spip_action_purger.php b/ecrire/inc_spip_action_purger.php
new file mode 100644
index 0000000000..402c4a5cce
--- /dev/null
+++ b/ecrire/inc_spip_action_purger.php
@@ -0,0 +1,68 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2006                                                *
+ *  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.   *
+\***************************************************************************/
+
+include_ecrire("inc_session");
+
+function spip_action_purger_dist()
+{
+  global $arg, $hash, $id_auteur, $action;
+
+  if (!verifier_action_auteur("$action $arg", $hash, $id_auteur)) exit;
+
+  include_ecrire("inc_invalideur");
+
+  switch ($arg) {
+
+  case 'cache': 
+      supprime_invalideurs();
+      purger_repertoire(_DIR_CACHE, 0);
+      break;
+
+  case 'squelettes':
+	purger_repertoire(_DIR_CACHE, 0, '^skel_');
+	break;
+
+  case 'vignettes':
+	purger_repertoire(_DIR_IMG, $age='ignore', $regexp = '^cache\-');
+	spip_log('vider le cache');
+	supprime_invalideurs();
+	purger_repertoire(_DIR_CACHE, 0);
+	break;
+
+  case 'taille_vignettes':
+
+  	global $lang;
+	$handle = @opendir(_DIR_IMG);
+	if (!$handle) return;
+
+	while (($fichier = @readdir($handle)) !== false) {
+		// Eviter ".", "..", ".htaccess", etc.
+		if ($fichier[0] == '.') continue;
+		if ($regexp AND !ereg($regexp, $fichier)) continue;
+		if (is_dir(_DIR_IMG.$fichier) AND ereg("^cache-", $fichier)) {
+			$taille += calculer_taille_dossier(_DIR_IMG.$fichier);
+		}
+	}
+	closedir($handle);
+	
+	include_ecrire("inc_filtres");
+	include_ecrire('inc_lang');
+	lang_select($lang);
+	echo "<html><body>\n";
+	echo "<div style='font-family: verdana, arial, sans; font-size: 12px;'>";
+	echo "<p align='justify'>\n";
+	echo _T('ecrire:taille_cache_image', array('dir' => _DIR_IMG,
+		'taille' => "<b>".taille_en_octets($taille)."</b>"));
+	echo "</p></div></body></html>";
+	break;
+  }
+}
diff --git a/ecrire/inc_upgrade.php b/ecrire/inc_upgrade.php
index c63a610e5d..cfb343bb1f 100644
--- a/ecrire/inc_upgrade.php
+++ b/ecrire/inc_upgrade.php
@@ -82,9 +82,10 @@ function upgrade_dist()
   fin_admin($upgrade_titre);
 
   if ($ok) {
-	$action = 'purger_cache';
-	$hash = calculer_action_auteur($action);
-	redirige_par_entete(generer_url_public("spip_cache"), "?action=$action&id_auteur=$connect_id_auteur&hash=$hash&redirect=" .  _DIR_RESTREINT_ABS);
+	$action = 'purger';
+	$arg = 'cache';
+	$hash = calculer_action_auteur("$action $arg");
+	redirige_par_entete(generer_url_public("spip_action.php"), "?action=$action&id_auteur=$connect_id_auteur&hash=$hash&redirect=" .  _DIR_RESTREINT_ABS);
   }
   else {
 	echo _T('alerte_maj_impossible', array('version' => $spip_version));
diff --git a/spip_cache.php3 b/spip_cache.php3
deleted file mode 100644
index fec0cc8333..0000000000
--- a/spip_cache.php3
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/***************************************************************************\
- *  SPIP, Systeme de publication pour l'internet                           *
- *                                                                         *
- *  Copyright (c) 2001-2006                                                *
- *  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.   *
-\***************************************************************************/
-
-include ("ecrire/inc_version.php3");
-
-include_ecrire("inc_session");
-include_ecrire("inc_invalideur");
-
-if (verifier_action_auteur($action, $hash, $id_auteur)) {
-	$action();
-	spip_log($action);
- }
-if ($redirect) redirige_par_entete($redirect);
-
-?>
-- 
GitLab