Skip to content
Extraits de code Groupes Projets
Valider 3eba76b2 rédigé par esj's avatar esj
Parcourir les fichiers

Invalidation de TOUS les caches référençant un forum mis à jour

parent 2d655d84
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -60,18 +60,24 @@ function calculer_boucle($id_boucle, &$boucles) ...@@ -60,18 +60,24 @@ function calculer_boucle($id_boucle, &$boucles)
strpos($return,'compteur_boucle'); strpos($return,'compteur_boucle');
$primary_key = $table_primary[$type_boucle]; $primary_key = $table_primary[$type_boucle];
if ($primary_key) // sinon c'est une boucle hors Spip # invalidation des caches si c'est une boucle SPIP, non constante de surcroit
if ((!$primary_key) || $constant)
$invalide = '';
else
{ {
// invalidation des caches si la boucle n'est pas constante $id_table = $table_des_tables[$type_boucle];
if ($constant) $boucle->select[] = "$id_table.$primary_key";
$invalide = ''; $invalide = '
else $Cache["' . $primary_key . '"][' .
{$id_table = $table_des_tables[$type_boucle]; (($primary_key != 'id_forum') ?
$boucle->select[] = "$id_table.$primary_key"; ('$Pile[$SP]["' . $primary_key . '"]') :
$invalide = ' ('calcul_index_forum(' .
$Cache["' . $primary_key . '"][$Pile[$SP]["' . # Retournera 4 [$SP] mais force la demande du champ au serveur SQL
$primary_key . '"]]=1;'; index_pile($id_boucle, 'id_article', $boucles) . ',' .
} index_pile($id_boucle, 'id_breve', $boucles) . ',' .
index_pile($id_boucle, 'id_syndic', $boucles) . ',' .
index_pile($id_boucle, 'id_rubrique', $boucles) . ')')) .
'] = 1;';
} }
$debut = $debut =
((!$flag_cpt) ? "" : "\n\t\t\$compteur_boucle++;") . ((!$flag_cpt) ? "" : "\n\t\t\$compteur_boucle++;") .
...@@ -163,7 +169,6 @@ function calculer_boucle($id_boucle, &$boucles) ...@@ -163,7 +169,6 @@ function calculer_boucle($id_boucle, &$boucles)
return $h0;'))); return $h0;')));
} }
// une grosse fonction pour un petit cas // une grosse fonction pour un petit cas
function calculer_parties($partie, $mode_partie, $total_parties, $id_boucle) function calculer_parties($partie, $mode_partie, $total_parties, $id_boucle)
...@@ -300,7 +305,7 @@ function calculer_liste($tableau, $prefix, $id_boucle, $niv, &$boucles, $id_mere ...@@ -300,7 +305,7 @@ function calculer_liste($tableau, $prefix, $id_boucle, $niv, &$boucles, $id_mere
$exp = ""; $exp = "";
} else { $texte .= $m;} } else { $texte .= $m;}
$texte .= "\n\t\tif ($t = $c) {\n" . $bm; $texte .= "\n\t\tif ($t = $c) {\n" . $bm;
$texte .= "\n\t\t$t = $bc . $t"; if ($bc != "''") $texte .= "\n\t\t$t = $bc . $t";
if (!$am) { if (!$am) {
$texte .= " . $ac"; $texte .= " . $ac";
} else $texte .= "; $am $t .= $ac"; } else $texte .= "; $am $t .= $ac";
......
...@@ -105,6 +105,16 @@ WHERE id_article='" . ($ida ? $ida : substr(lire_meta("forums_publics"),0,3)) . ...@@ -105,6 +105,16 @@ WHERE id_article='" . ($ida ? $ida : substr(lire_meta("forums_publics"),0,3)) .
return array($titre, $table, $forum); return array($titre, $table, $forum);
} }
# Index arbitraire mais ressemblant aux md5 utiliss ailleurs
function calcul_index_forum($id_article, $id_breve, $id_rubrique, $id_syndic)
{
return
'a' . ($id_article ? $id_article : '0') .
'b' . ($id_breve ? $id_breve : '0') .
'c' . ($id_rubrique ? $id_rubrique : '0') .
'd' . ($id_syndic ? $id_syndic : '0');
}
# Critere {branche} : recuperer les descendants d'une rubrique # Critere {branche} : recuperer les descendants d'une rubrique
function calcul_mysql_in($val, $valeurs, $tobeornotobe) function calcul_mysql_in($val, $valeurs, $tobeornotobe)
...@@ -241,4 +251,6 @@ SELECT id_rubrique,lang FROM spip_articles WHERE id_article='$id'"))) { ...@@ -241,4 +251,6 @@ SELECT id_rubrique,lang FROM spip_articles WHERE id_article='$id'"))) {
return ''; return '';
} }
?> ?>
...@@ -152,16 +152,27 @@ if ($validation_finale) ...@@ -152,16 +152,27 @@ if ($validation_finale)
if (file_exists('inc-invalideur.php3')) if (file_exists('inc-invalideur.php3'))
{ {
include('inc-invalideur.php3'); include_local('inc-invalideur.php3');
applique_invalideur(($statut == 'publie') ? if ($statut != 'publie')
array($var_cache, $cache) : applique_invalideur(array($var_cache));
array($var_cache)); else {
} include_local('inc-calcul_mysql3.php3');
else // minimum vital suivre_invalideur("id_forum='" .
{ calcul_index_forum($forum_id_article,
@unlink($var_cache); $forum_id_breve,
if ($statut == 'publie') @unlink($cache); $forum_id_rubrique,
$forum_id_syndic) .
"'",
'spip_id_forum_caches');
}
} }
// trou de scurit si on ne vrifie pas
// (code transitoire ne cas d'absence d'invalideur)
// else
// {
// @unlink($var_cache);
// if ($statut == 'publie') @unlink($cache);
// }
} }
$redirect = $retour_forum; $redirect = $retour_forum;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter