Les traitements

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).

Auteur Matthieu Marcillaud Publié le : Mis à jour : 24/11/09

Traductions : English, français