Lorsque toutes les vérifications sont correctes, des traitements sont effectués. Souvent, ces traitements appellent des fonctions présentes dans le même fichier, ou dans une librairie du répertoire inc/
. Parfois l’action est simplement effectuée dans la fonction principale.
Exemple du réglage de la modération d’un article
// Modifier le reglage des forums publics de l'article x
function action_regler_moderation_dist()
{
include_spip('inc/autoriser');
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
if (!preg_match(",^\W*(\d+)$,", $arg, $r)) {
spip_log("action_regler_moderation_dist $arg pas compris");
return;
}
$id_article = $r[1];
if (!autoriser('modererforum', 'article', $id_article))
return;
// traitements
$statut = _request('change_accepter_forum');
sql_updateq("spip_articles", array("accepter_forum" => $statut), "id_article=". $id_article);
if ($statut == 'abo') {
ecrire_meta('accepter_visiteurs', 'oui');
}
include_spip('inc/invalideur');
suivre_invalideur("id='id_forum/a$id_article'");
}
Les traitements effectués modifient la table spip_articles
dans la base de données pour affecter un nouveau statut de gestion de forum. Lorsqu’un forum est demandé sur abonnement, c’est à dire qu’il faut être logé pour poster, il faut obligatoirement vérifier que le site accepte l’inscription de visiteurs, c’est ce que fait ecrire_meta('accepter_visiteurs', 'oui');
.
Enfin, un appel à l’invalidation des fichiers du cache est effectué avec la fonction suivre_invalideur()
. Tout le cache sera recréé (avant SPIP 2.0, cela n’invalidait qu’une partie du cache).