Changeset 48558 in spip-zone


Ignore:
Timestamp:
Jun 7, 2011, 8:13:33 PM (10 years ago)
Author:
cedric@…
Message:

http://core.spip.org/issues/2105 l'autorisation empêchait la moderation par lots

Location:
_core_/plugins/forum
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/forum/action/instituer_lot_forum.php

    r44713 r48558  
    2121        }
    2222
    23         /**
    24          * Cas 1 : les arguments sont explicites
    25          * statut-ip/email/id_auteur/auteur
    26          *
    27          */
    28         if (preg_match(",^(\w+)-,",$arg,$match)
    29          AND in_array($statut=$match[1],array('publie','off','spam'))
    30          AND autoriser('instituer','forum',0)){
    31                 $arg = substr($arg,strlen($statut)+1);
    32                
    33                 $arg = explode('/',$arg);
    34                 $ip = array_shift($arg);
    35                 $email_auteur = array_shift($arg);
    36                 $id_auteur = intval(array_shift($arg));
    37                 $auteur = implode('/',$arg);
    38                 $where = array();
    39                 if ($ip) $where[] = "ip=".sql_quote($ip);
    40                 if ($email_auteur) $where[] = "email_auteur=".sql_quote($email_auteur);
    41                 if ($id_auteur) $where[] = "id_auteur=".intval($id_auteur);
    42                 if ($auteur) $where[] = "auteur=".sql_quote($auteur);
    43                 $rows = sql_allfetsel("*", "spip_forum", $where);
    44                 if (!count($rows)) return;
    45                
    46                 include_spip('action/instituer_forum');
    47                 foreach ($rows as $row) {
    48                         instituer_un_forum($statut,$row);                       
     23        // verifier les droits
     24        if (autoriser('instituer','forum',0)){
     25
     26                /**
     27                 * Cas 1 : les arguments sont explicites
     28                 * statut-ip/email/id_auteur/auteur
     29                 *
     30                 */
     31                if (preg_match(",^(\w+)-,",$arg,$match)
     32                 AND in_array($statut=$match[1],array('publie','off','spam'))){
     33                        $arg = substr($arg,strlen($statut)+1);
     34
     35                        $arg = explode('/',$arg);
     36                        $ip = array_shift($arg);
     37                        $email_auteur = array_shift($arg);
     38                        $id_auteur = intval(array_shift($arg));
     39                        $auteur = implode('/',$arg);
     40                        $where = array();
     41                        if ($ip) $where[] = "ip=".sql_quote($ip);
     42                        if ($email_auteur) $where[] = "email_auteur=".sql_quote($email_auteur);
     43                        if ($id_auteur) $where[] = "id_auteur=".intval($id_auteur);
     44                        if ($auteur) $where[] = "auteur=".sql_quote($auteur);
     45                        $rows = sql_allfetsel("*", "spip_forum", $where);
     46                        if (!count($rows)) return;
     47
     48                        include_spip('action/instituer_forum');
     49                        foreach ($rows as $row) {
     50                                instituer_un_forum($statut,$row);
     51                        }
     52                }
     53                /**
     54                 * Cas 2 : seul le statut est explicite et signe
     55                 * les id concernes sont passes en arg supplementaires
     56                 * dans un taleau ids[]
     57                 */
     58                elseif (preg_match(",^(\w+)$,",$arg,$match)
     59                 AND in_array($statut=$match[1],array('publie','off','spam'))
     60                 AND $id=_request('ids')
     61                 AND is_array($id)){
     62
     63                        $ids = array_map('intval',$id);
     64                        $rows = sql_allfetsel("*", "spip_forum", sql_in('id_forum',$ids));
     65                        if (!count($rows)) return;
     66
     67                        include_spip('action/instituer_forum');
     68                        foreach ($rows as $row) {
     69                                instituer_un_forum($statut,$row);
     70                        }
    4971                }
    5072        }
    51         /**
    52          * Cas 2 : seul le statut est explicite et signe
    53          * les id concernes sont passes en arg supplementaires
    54          * dans un taleau ids[]
    55          */
    56         elseif (preg_match(",^(\w+)$,",$arg,$match)
    57          AND in_array($statut=$match[1],array('publie','off','spam'))
    58          AND autoriser('instituer','forum',0)
    59          AND $id=_request('ids')
    60          AND is_array($id)){
     73        else {
     74                spip_log("instituer_lot_forum interdit pour auteur ".$GLOBALS['visiteur_session']['id_auteur'],_LOG_ERREUR);
     75        }
    6176
    62                 $ids = array_map('intval',$id);
    63                 $rows = sql_allfetsel("*", "spip_forum", sql_in('id_forum',$ids));
    64                 if (!count($rows)) return;
    65                
    66                 include_spip('action/instituer_forum');
    67                 foreach ($rows as $row) {
    68                         instituer_un_forum($statut,$row);
    69                 }
    70         }
    7177}
    7278
  • _core_/plugins/forum/forum_autoriser.php

    r46138 r48558  
    3939 */
    4040function autoriser_forum_instituer_dist($faire, $type, $id, $qui, $opt){
     41        if (!intval($id)) return autoriser('moderer','forum');
    4142        $row = sql_fetsel('objet,id_objet','spip_forum','id_forum='.intval($id));
    4243        return $row?autoriser('modererforum',$row['objet'],$row['id_objet'],$qui,$opt):false;
Note: See TracChangeset for help on using the changeset viewer.