Ignore:
Timestamp:
11/03/12 09:05:06 (7 years ago)
Author:
kent1
Message:

Explications et corrections sur l'institution par email

Location:
plugins_spip/signalement/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • plugins_spip/signalement/trunk/action/instituer_signalement_paremail.php

    r7049 r7050  
    11<?php
    2 /*
    3  * Plugin Notifications
    4  * (c) 2009-2012 SPIP
    5  * Distribue sous licence GPL
     2/**
     3 * Plugin Signalement
    64 *
    7  */
     5 * Auteurs :
     6 * kent1 (http://www.kent1.info - kent1@arscenic.info)
     7 *
     8 * © 2012 - Distribue sous licence GNU/GPL
     9 *
     10 * Action de modération par email
     11 *
     12 **/
    813
    914if (!defined("_ECRIRE_INC_VERSION")) return;
    1015
     16/**
     17 * Fonction de modération de signalement par email
     18 * Les administrateurs reçoivent un email avec un lien permettant de refuser/invalider un
     19 * signalement
     20 */
    1121function action_instituer_signalement_paremail_dist() {
    12 
    13         // verification manuelle de la signature : cas particulier de cette action signee par email
     22       
     23        include_spip("inc/securiser_action");
     24        include_spip("inc/filtres");
     25       
     26        /**
     27         * Verification manuelle de la signature : cas particulier de cette action signee par email
     28         */
    1429        $arg = _request('arg');
    1530        $hash = _request('hash');
    1631
    17         include_spip("inc/securiser_action");
    1832        $action = 'instituer_signalement_paremail';
    1933        $pass = secret_du_site();
     
    2539        $statut = array_shift($ae);
    2640        $statut_init = array_shift($ae);
    27         // l'email est ce qui reste
     41        /**
     42         * l'email est ce qui reste
     43         */
    2844        $email = implode("-",$ae);
    29         $message = null;
     45        $signalement = null;
    3046        $erreur_auteur = _T('notifications:info_moderation_interdite');
    31 
    32         include_spip("inc/filtres");
     47       
    3348        $lien_moderation = lien_ou_expose(url_absolue(generer_url_entite($id_signalement,'signalement',"","signalement$id_signalement",false)),_T('signalement:info_moderation_lien_titre'));
    3449        $erreur = _T('notifications:info_moderation_url_perimee')."<br />$lien_moderation";
    3550
     51        /**
     52         * Vérification de la validité du hash de l'action
     53         */
    3654        if ($hash==_action_auteur("$action-$arg", '', $pass, 'alea_ephemere')
    3755          OR $hash==_action_auteur("$action-$arg", '', $pass, 'alea_ephemere_ancien'))
    3856                $erreur = "";
    3957        else {
    40                 // le hash est invalide, mais peut-etre est-on loge avec cet email ?
    41                 // auquel cas on peut utiliser les liens, meme perimes (confort)
     58                /**
     59                 * Le hash est invalide, mais peut-etre est-on loge avec cet email ?
     60                 * auquel cas on peut utiliser les liens, meme perimes (confort)
     61                 */
    4262                if (isset($GLOBALS['visiteur_session'])
    4363                  AND $GLOBALS['visiteur_session']['id_auteur']
    4464                        AND $GLOBALS['visiteur_session']['email']==$email){
    45                         $message = sql_fetsel("id_objet,objet,statut","spip_signalement","id_signalement=".intval($id_signalement));
    46                         if (autoriser("moderersignalement",$message['objet'],$message['id_objet'])){
     65                        $signalement = sql_fetsel("id_objet,objet,statut","spip_signalement","id_signalement=".intval($id_signalement));
     66                        if (autoriser("moderersignalement",$signalement['objet'],$signalement['id_objet'])){
    4767                                $erreur_auteur = "";
    4868                                $erreur = "";
     
    5070                }
    5171                else
    52                         spip_log("Signature incorrecte pour $arg","moderationsignalementparemail"._LOG_INFO_IMPORTANTE);
     72                        spip_log("Signature incorrecte pour $arg - Moderation de signalement","notifications"._LOG_INFO_IMPORTANTE);
    5373        }
    5474
    55         // si hash est ok, verifier si l'email correspond a un auteur qui a le droit de faire cette action
     75        /**
     76         * si hash est ok, verifier si l'email correspond a un auteur qui a le droit de faire cette action
     77         */
    5678        if (!$erreur){
    57                 // reconstituer l'arg pour l'action standard
     79                /**
     80                 * reconstituer l'arg pour l'action standard
     81                 */
    5882                $arg = "$id_signalement-$statut";
    5983
    60                 if (!$message)
    61                         $message = sql_fetsel("id_objet,objet,statut","spip_signalements","id_signalement=".intval($id_signalement));
     84                if (!$signalement)
     85                        $signalement = sql_fetsel("id_objet,objet,statut","spip_signalements","id_signalement=".intval($id_signalement));
    6286
    63                 // on recherche le message en verifiant qu'il a bien le statut
    64                 if ($message){
    65                         if ($message['statut']!=$statut_init){
    66                                 $erreur = _T("signalement:info_moderation_deja_faite",array('id_signalement'=>$id_signalement,'statut'=>$message['statut']))
     87                /**
     88                 * on recherche le signalement en verifiant qu'il a bien le statut
     89                 */
     90                if ($signalement){
     91                        if ($signalement['statut']!=$statut_init){
     92                                $erreur = _T("signalement:info_moderation_deja_faite",array('id_signalement'=>$id_signalement,'statut'=>$signalement['statut']))
    6793                                        ."<br />$lien_moderation";
    6894                        }
    6995                        else {
    70                                 // trouver le(s) auteur(s) et verifier leur autorisation si besoin
     96                                /**
     97                                 * trouver le(s) auteur(s) et verifier leur autorisation si besoin
     98                                 */
    7199                                if ($erreur_auteur){
    72100                                        $res = sql_select("*","spip_auteurs","email=".sql_quote($email,'','text'));
    73101                                        while ($auteur = sql_fetch($res)){
    74                                                 if (autoriser("moderersignalement",$message['objet'],$message['id_objet'],$auteur)){
     102                                                if (autoriser("moderersignalement",$signalement['objet'],$signalement['id_objet'],$auteur)){
    75103                                                        $erreur_auteur = "";
    76                                                         // on ajoute l'exception car on est pas identifie avec cet id_auteur
    77                                                         autoriser_exception("moderersignalement",$message['objet'],$message['id_objet']);
     104                                                        /**
     105                                                         * on ajoute l'exception car on est pas identifie avec cet id_auteur
     106                                                         */
     107                                                        autoriser_exception("moderersignalement",$signalement['objet'],$signalement['id_objet']);
    78108                                                        break;
    79109                                                }
     
    83113                                        $erreur = $erreur_auteur
    84114                                          . "<br /><small>"
    85                                           . _L("(aucun auteur avec l'email $email n'a de droit suffisant)")
     115                                          . _T('signalement:info_moderation_email_droit_insuffisant',array('email'=>$email))
    86116                                          . "</small>";
    87117                                        spip_log("Aucun auteur pour $email autorise a moderer $id_signalement","moderationsignalementparemail"._LOG_INFO_IMPORTANTE);
     
    90120                }
    91121                else {
    92                         spip_log("Message signalement $id_signalement introuvable","moderationsignalementparemail"._LOG_INFO_IMPORTANTE);
    93                         $erreur = "Message signalement $id_signalement introuvable"; // improbable ?
     122                        spip_log("Signalement $id_signalement introuvable","moderationsignalementparemail"._LOG_INFO_IMPORTANTE);
     123                        $erreur = _T('signalement:info_moderation_signalement_introuvable',array('id'=>$id_signalement)); // improbable ?
    94124                }
    95125        }
     
    101131        }
    102132
    103         // Dans tous les cas on finit sur un minipres qui dit si ok ou echec
     133        /**
     134         * Dans tous les cas on finit sur un minipres qui dit si ok ou echec
     135         */
    104136        $titre = (!$erreur ? _T("signalement:info_moderation_confirmee_$statut",array('id_signalement'=>$id_signalement)) : $erreur);
    105137        include_spip('inc/minipres');
  • plugins_spip/signalement/trunk/lang/signalement_fr.php

    r7049 r7050  
    2626        'info_moderation_lien_titre' => 'Modérer ce signalement depuis l\'espace privé',
    2727        'info_moderation_confirmee_refuse' => 'Le signalement #@id_signalement@ a bien été invalidé',
     28        'info_moderation_email_droit_insuffisant' => 'Aucun auteur avec l\'email @email@ n\'a de droit suffisant.',
     29        'info_moderation_signalement_introuvable' => 'Le signalement @id@ est introuvable.',
    2830        'info_nb_signalements' => '@nb@ signalements',
    2931        'info_sans_motif' => 'Sans motif',
Note: See TracChangeset for help on using the changeset viewer.