Index: ecrire/inc_cron.php3
===================================================================
RCS file: /home/spip-cvs/spip/ecrire/inc_cron.php3,v
retrieving revision 1.4
diff -u -r1.4 inc_cron.php3
--- ecrire/inc_cron.php3	28 Jan 2004 19:55:34 -0000	1.4
+++ ecrire/inc_cron.php3	24 Feb 2004 17:49:28 -0000
@@ -177,33 +177,12 @@
 	//
 
 	if (lire_meta('activer_moteur') == 'oui') {
-		$fichier_index = $dir_ecrire.'data/.index';
-		if ($id_article OR $id_auteur OR $id_breve OR $id_mot OR $id_rubrique) {
-			include_ecrire("inc_index.php3");
-			$s = '';
-			if ($id_article AND !deja_indexe('article', $id_article))
-				$s .= "article $id_article\n";
-			if ($id_auteur AND !deja_indexe('auteur', $id_auteur))
-				$s .= "auteur $id_auteur\n";
-			if ($id_breve AND !deja_indexe('breve', $id_breve))
-				$s .= "breve $id_breve\n";
-			if ($id_mot AND !deja_indexe('mot', $id_mot))
-				$s .= "mot $id_mot\n";
-			if ($id_rubrique AND !deja_indexe('rubrique', $id_rubrique))
-				$s .= "rubrique $id_rubrique\n";
-			if ($s) {
-				if ($f = @fopen($fichier_index, 'a')) {
-					fputs($f, $s);
-					fclose($f);
-				}
-			}
-		}
-		if ($use_cache AND @file_exists($fichier_index)) {
-			if (timeout('indexation')) {
-				include_ecrire("inc_index.php3");
-				effectuer_une_indexation();
-			}
-		}
+		include_ecrire("inc_index.php3");
+		effectuer_une_indexation();
+		/* bon c'est p'têt un peu sauvage
+		on doit pouvoir créer une fonction
+		qui rassemble les infos d'avancement
+		de l'indexation - bol(yatikekchose-a-indexer YES|NO) */
 	}
Index: ecrire/inc_index.php3
===================================================================
RCS file: /home/spip-cvs/spip/ecrire/inc_index.php3,v
retrieving revision 1.50
diff -u -r1.50 inc_index.php3
--- ecrire/inc_index.php3	28 Jan 2004 00:00:46 -0000	1.50
+++ ecrire/inc_index.php3	24 Feb 2004 17:49:31 -0000
@@ -215,6 +214,10 @@
 
 	$query = "DELETE FROM $table_index WHERE $col_id=$id_objet";
 	$result = spip_query($query);
+	
+	$table = ($type == "syndic") ? "spip_syndic":"spip_".$type."s";
+	$query = "update ".$table." set indx = 'oui' WHERE id_".$type." = ".$id_objet;
+	spip_query($query);
 
 	if ($index) {
 		spip_query($mots);
@@ -228,16 +231,9 @@
 
 // API pour l'espace prive
 function marquer_indexer ($objet, $id_objet) {
-	global $dir_ecrire;
-	$fichier_index = $dir_ecrire.'data/.index';
-	if (!$f = @fopen($fichier_index, 'a')) {
-		spip_log ("impossible d'ecrire dans $fichier_index !");
-		@unlink ($fichier_index);	// on essaie de forcer
-		$f = @fopen($fichier_index, 'a');
-	}
+	$table = ($objet == "syndic") ? "spip_".$objet:"spip_".$objet."s";
+	$query = "update ".$table." set indx = '0' where id_".$objet." = ".$id_objet;
 	spip_log ("demande indexation $objet $id_objet");
-	fputs($f, "$objet $id_objet 1\n");	// 1 = forcer reindexation
-	fclose($f);
 }
 function indexer_article($id_article) {
 	marquer_indexer('article', $id_article);
@@ -259,19 +255,23 @@
 }
 
 function effectuer_une_indexation() {
- 	$fichier_index = 'ecrire/data/.index';
-	if ($s = @sizeof($suite = @file($fichier_index))) {
-		include_ecrire("inc_texte.php3");
-		include_ecrire("inc_filtres.php3");
-		$s = $suite[$n = @rand(0, $s-1)];
-		unset($suite[$n]);
-		$f = fopen($fichier_index, 'wb');
-		fwrite($f, join("", $suite));
-		fclose($f);
-		$s = explode(' ', trim($s));
-		indexer_objet($s[0], $s[1], $s[2]);
+	$elements = array('article', 'breve', 'mot', 'auteur', 'rubrique', 'syndic');
+	$count = count($elements) - 1;
+	for ($x=0;$x < $count * 2;$x++) { /* il faut bien une limite - des fois que... */
+		/* ici on génère une sélection aléatoire
+		sans quoi les syndic seront indexés dans lonnngtemps ;-))
+		!! Nécessite PHP >= 3.0.7 !! */
+		srand(date("s")); /* inutile avec PHP >= 4.0.2 */
+		$rand = rand(0,$count);
+		$choix = $elements[$rand];
+		$table = ($choix == 'syndic') ? "spip_".$choix:"spip_".$choix."s";
+		$result = spip_query("select id_".$choix." from ".$table." where indx = '0' limit 0,1");
+		if (spip_num_rows($result) > 0){
+			$row = spip_fetch_array($result);
+			indexer_objet($choix, $row["id_".$choix]);
+			break;
+		}
 	}
-	else @unlink($fichier_index);
 }
 
 function executer_une_indexation_syndic() {
@@ -290,7 +290,6 @@
 }
 
 function creer_liste_indexation() {
-	$fichier_index = 'data/.index';
 	$elements = array('article', 'breve', 'mot', 'auteur', 'rubrique', 'syndic');
 
 	while (list(,$element) = each ($elements)) {
@@ -309,14 +308,11 @@
 				$statut = '';
 		}
 
-		$res = spip_query("SELECT id_$element FROM $table $statut");
-		while ($row = spip_fetch_array($res))
-			$liste .= "$element ".$row["id_$element"]."\n";
-	}
-
-	if ($f = @fopen("$fichier_index", "w")) {
-		@fputs($f, $liste);
-		@fclose($f);
+		$query = "update ".$table." set indx='0' ".$statut." AND indx != 'non'";
+		/* Qu'est-ce qu'on fait des cas ou indx=non ou indx='' ??
+		peut-être mettre AND indx != 'non'  en défaut ??
+		ça me parait mieux que AND indx = 'oui', allez je le fais !! */
+		spip_query($query);
 	}
 }
 