$lien_moderation"; if ($hash==_action_auteur("$action-$arg", '', $pass, 'alea_ephemere') OR $hash==_action_auteur("$action-$arg", '', $pass, 'alea_ephemere_ancien')) $erreur = ""; else { // le hash est invalide, mais peut-etre est-on loge avec cet email ? // auquel cas on peut utiliser les liens, meme perimes (confort) if (isset($GLOBALS['visiteur_session']) AND $GLOBALS['visiteur_session']['id_auteur'] AND $GLOBALS['visiteur_session']['email']==$email){ $message = sql_fetsel("id_objet,objet,statut","spip_forum","id_forum=".intval($id_forum)); if (autoriser("modererforum",$message['objet'],$message['id_objet'])){ $erreur_auteur = ""; $erreur = ""; } } else spip_log("Signature incorrecte pour $arg","moderationparemail"._LOG_INFO_IMPORTANTE); } // si hash est ok, verifier si l'email correspond a un auteur qui a le droit de faire cette action if (!$erreur){ // reconstituer l'arg pour l'action standard $arg = "$id_forum-$statut"; if (!$message) $message = sql_fetsel("id_objet,objet,statut","spip_forum","id_forum=".intval($id_forum)); // on recherche le message en verifiant qu'il a bien le statut if ($message){ if ($message['statut']!=$statut_init){ $erreur = _T("notifications:info_moderation_deja_faite",array('id_forum'=>$id_forum,'statut'=>$message['statut'])) ."
$lien_moderation"; } else { // trouver le(s) auteur(s) et verifier leur autorisation si besoin if ($erreur_auteur){ $res = sql_select("*","spip_auteurs","email=".sql_quote($email,'','text')); while ($auteur = sql_fetch($res)){ if (autoriser("modererforum",$message['objet'],$message['id_objet'],$auteur)){ $erreur_auteur = ""; // on ajoute l'exception car on est pas identifie avec cet id_auteur autoriser_exception("modererforum",$message['objet'],$message['id_objet']); break; } } } if ($erreur_auteur){ $erreur = $erreur_auteur . "
" . _L("(aucun auteur avec l'email $email n'a de droit suffisant)") . ""; spip_log("Aucun auteur pour $email autorise a moderer $id_forum","moderationparemail"._LOG_INFO_IMPORTANTE); } } } else { spip_log("Message forum $id_forum introuvable","moderationparemail"._LOG_INFO_IMPORTANTE); $erreur = "Message forum $id_forum introuvable"; // improbable ? } } if (!$erreur){ spip_log("Moderation message $id_forum $statut par $email","moderationparemail"._LOG_INFO_IMPORTANTE); $instituer_forum = charger_fonction("instituer_forum","action"); $instituer_forum($arg); } // Dans tous les cas on finit sur un minipres qui dit si ok ou echec $titre = (!$erreur ? _T("notifications:info_moderation_confirmee_$statut",array('id_forum'=>$id_forum)) : $erreur); include_spip('inc/minipres'); echo minipres($titre,"","",true); }