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)
strpos($return,'compteur_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
if ($constant)
$invalide = '';
else
{$id_table = $table_des_tables[$type_boucle];
$boucle->select[] = "$id_table.$primary_key";
$invalide = '
$Cache["' . $primary_key . '"][$Pile[$SP]["' .
$primary_key . '"]]=1;';
}
$id_table = $table_des_tables[$type_boucle];
$boucle->select[] = "$id_table.$primary_key";
$invalide = '
$Cache["' . $primary_key . '"][' .
(($primary_key != 'id_forum') ?
('$Pile[$SP]["' . $primary_key . '"]') :
('calcul_index_forum(' .
# Retournera 4 [$SP] mais force la demande du champ au serveur SQL
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 =
((!$flag_cpt) ? "" : "\n\t\t\$compteur_boucle++;") .
......@@ -163,7 +169,6 @@ function calculer_boucle($id_boucle, &$boucles)
return $h0;')));
}
// une grosse fonction pour un petit cas
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
$exp = "";
} else { $texte .= $m;}
$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) {
$texte .= " . $ac";
} else $texte .= "; $am $t .= $ac";
......
......@@ -105,6 +105,16 @@ WHERE id_article='" . ($ida ? $ida : substr(lire_meta("forums_publics"),0,3)) .
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
function calcul_mysql_in($val, $valeurs, $tobeornotobe)
......@@ -241,4 +251,6 @@ SELECT id_rubrique,lang FROM spip_articles WHERE id_article='$id'"))) {
return '';
}
?>
......@@ -152,16 +152,27 @@ if ($validation_finale)
if (file_exists('inc-invalideur.php3'))
{
include('inc-invalideur.php3');
applique_invalideur(($statut == 'publie') ?
array($var_cache, $cache) :
array($var_cache));
}
else // minimum vital
{
@unlink($var_cache);
if ($statut == 'publie') @unlink($cache);
include_local('inc-invalideur.php3');
if ($statut != 'publie')
applique_invalideur(array($var_cache));
else {
include_local('inc-calcul_mysql3.php3');
suivre_invalideur("id_forum='" .
calcul_index_forum($forum_id_article,
$forum_id_breve,
$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;
}
......
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