Changeset 113113 in spip-zone


Ignore:
Timestamp:
Dec 24, 2018, 5:10:30 PM (3 months ago)
Author:
cam.lafit
Message:

évènements orphelins : meilleure gestion de l’institution et ajout des $id dans les fonctions d’autorisation

Location:
_plugins_/agenda/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/agenda/trunk

    • Property subgit:lock:7c4803ce4ff63842f0acf004d709c705c97d46fb deleted
    • Property subgit:lock:515ec13582de4f0ad2140297c335451ef20db340 set to 2018-12-24T18:12:25.602
  • _plugins_/agenda/trunk/action/editer_evenement.php

    r113112 r113113  
    260260        $champs = array();
    261261
    262         if (!$id_parent && autoriser('instituerorphelin', 'evenement')) return ''; // pas d'erreur si on a pas de parent et qu'on a le droit d'instituer
    263 
    264         if (!autoriser('modifier', 'article', $id_parent)
    265                 or (isset($c['id_parent'])
    266                 and !autoriser('modifier', 'article', $c['id_parent']))) {
    267                 spip_log("editer_evenement $id_evenement refus " . join(' ', $c));
    268                 return false;
    269         }
    270 
    271         // Verifier que l'article demande existe et est different
    272         // de l'article actuel
    273         if (isset($c['id_parent'])
    274                 and $c['id_parent'] != $id_parent
    275                 and (sql_countsel('spip_articles', 'id_article='.intval($c['id_parent'])))) {
    276                 $id_parent = $champs['id_article'] = $c['id_parent'];
    277         }
    278 
    279         $sa = sql_getfetsel('statut', 'spip_articles', 'id_article='.intval($id_parent));
    280         if ($id_parent
    281                 and (
    282                         $id_parent !== $id_parent_ancien
    283                         or $statut == '0'
    284                 )) {
    285                 switch ($sa) {
    286                         case 'publie':
    287                                 // statut par defaut si besoin
    288                                 if ($statut == '0') {
    289                                         $champs['statut'] = $statut = 'publie';
     262
     263        if (!$id_parent) {
     264                if (!autoriser('instituerorphelin', 'evenement', $id_evement)) {
     265                        return false; // pas le droit d'instituer des orphelins : on abandonne
     266                } else {
     267                        // si pas d'article lie, et statut par defaut
     268                        // on met en propose
     269                        if ($statut=='0') {
     270                                $champs['statut'] = $statut = 'prop';
     271                        } else {
     272                                if (isset($c['statut']) and $s = $c['statut'] and $s != $statut) {
     273                                        $champs['statut'] = $statut = $s;
    290274                                }
    291                                 break;
    292                         case 'poubelle':
    293                                 // si article a la poubelle, evenement aussi
    294                                 $champs['statut'] = $statut = 'poubelle';
    295                                 break;
    296                         default:
    297                                 // pas de publie ni 0 si article pas publie
    298                                 if (in_array($statut, array('publie','0'))) {
    299                                         $champs['statut'] = $statut = 'prop';
    300                                 }
    301                                 break;
    302                 }
    303         }
    304 
    305         // si pas d'article lie, et statut par defaut
    306         // on met en propose
    307         if ($statut=='0') {
    308                 $champs['statut'] = $statut = 'prop';
    309         }
    310 
    311         if (isset($c['statut'])
    312                 and $s = $c['statut']
    313                 and $s != $statut) {
    314                 // pour instituer un evenement il faut avoir le droit d'instituer l'article associe avec le meme statut
    315                 if (autoriser('instituer', 'article', $id_parent, null, array('statut'=>$s))
    316                         and ($sa=='publie' or $s!=='publie')) {
    317                         $champs['statut'] = $statut = $s;
    318                 } else {
     275                        }
     276                }
     277        } else {
     278
     279                if (!autoriser('modifier', 'article', $id_parent)
     280                        or (isset($c['id_parent'])
     281                        and !autoriser('modifier', 'article', $c['id_parent']))) {
    319282                        spip_log("editer_evenement $id_evenement refus " . join(' ', $c));
    320                 }
     283                        return false;
     284                }
     285
     286                // Verifier que l'article demande existe et est different
     287                // de l'article actuel
     288                if (isset($c['id_parent'])
     289                        and $c['id_parent'] != $id_parent
     290                        and (sql_countsel('spip_articles', 'id_article='.intval($c['id_parent'])))) {
     291                        $id_parent = $champs['id_article'] = $c['id_parent'];
     292                }
     293
     294                $sa = sql_getfetsel('statut', 'spip_articles', 'id_article='.intval($id_parent));
     295                if ($id_parent
     296                        and (
     297                                $id_parent !== $id_parent_ancien
     298                                or $statut == '0'
     299                        )) {
     300                        switch ($sa) {
     301                                case 'publie':
     302                                        // statut par defaut si besoin
     303                                        if ($statut == '0') {
     304                                                $champs['statut'] = $statut = 'publie';
     305                                        }
     306                                        break;
     307                                case 'poubelle':
     308                                        // si article a la poubelle, evenement aussi
     309                                        $champs['statut'] = $statut = 'poubelle';
     310                                        break;
     311                                default:
     312                                        // pas de publie ni 0 si article pas publie
     313                                        if (in_array($statut, array('publie','0'))) {
     314                                                $champs['statut'] = $statut = 'prop';
     315                                        }
     316                                        break;
     317                        }
     318                }
     319
     320                // si pas d'article lie, et statut par defaut
     321                // on met en propose
     322                if ($statut=='0') {
     323                        $champs['statut'] = $statut = 'prop';
     324                }
     325
     326                if (isset($c['statut'])
     327                        and $s = $c['statut']
     328                        and $s != $statut) {
     329                        // pour instituer un evenement il faut avoir le droit d'instituer l'article associe avec le meme statut
     330                        if (autoriser('instituer', 'article', $id_parent, null, array('statut'=>$s))
     331                                and ($sa=='publie' or $s!=='publie')) {
     332                                $champs['statut'] = $statut = $s;
     333                        } else {
     334                                spip_log("editer_evenement $id_evenement refus " . join(' ', $c));
     335                        }
     336                }
     337
    321338        }
    322339
  • _plugins_/agenda/trunk/agenda_autoriser.php

    r113112 r113113  
    8989        }
    9090        if (!$id_article) {
    91                 return autoriser('modifierorphelin', 'evenement');
     91                return autoriser('modifierorphelin', 'evenement', $id, $qui);
    9292        }
    9393        return autoriser('modifier', 'article', $id_article, $qui);
     
    108108        }
    109109        if (!$id_article) {
    110                 return autoriser('instituerorphelin', 'evenement');
     110                return autoriser('instituerorphelin', 'evenement', $id, $qui);
    111111        }
    112112        $statut = sql_getfetsel('statut', 'spip_articles', 'id_article='.intval($id_article));
     
    136136        }
    137137        if (!$id_article) {
    138                 return autoriser('voirorphelin', 'evenement');
     138                return autoriser('voirorphelin', 'evenement', $id, $qui);
    139139        }
    140140        return autoriser('voir', 'article', $id_article, $qui);
     
    173173 * @return bool
    174174 */
    175 function autoriser_evenement_creerorphelin_dist($faire, $quoi) {
    176         return _AGENDA_AUTORISER_ORPHELINS && $GLOBALS['auteur_session']['statut'] == '0minirezo' and !$GLOBALS['auteur_session']['restreint'];
     175function autoriser_evenement_creerorphelin_dist($faire, $quoi, $id, $qui) {
     176        return _AGENDA_AUTORISER_ORPHELINS && $qui['statut'] == '0minirezo' && !$qui['restreint'];
    177177}
    178178
     
    184184 * @return bool
    185185 */
    186 function autoriser_evenement_voirorphelin_dist($faire, $quoi) {
     186function autoriser_evenement_voirorphelin_dist($faire, $quoi, $id, $qui) {
    187187        return _AGENDA_AUTORISER_ORPHELINS;
    188188}
     
    195195 * @return bool
    196196 */
    197 function autoriser_evenement_modifierorphelin_dist($faire, $quoi) {
    198         return _AGENDA_AUTORISER_ORPHELINS && $GLOBALS['auteur_session']['statut'] == '0minirezo' and !$GLOBALS['auteur_session']['restreint'];
     197function autoriser_evenement_modifierorphelin_dist($faire, $quoi, $id, $qui) {
     198        return _AGENDA_AUTORISER_ORPHELINS && $qui['statut'] == '0minirezo' && !$qui['restreint'];
    199199}
    200200
     
    206206 * @return bool
    207207 */
    208 function autoriser_evenement_instituerorphelin_dist($faire, $quoi) {
    209         return _AGENDA_AUTORISER_ORPHELINS && $GLOBALS['auteur_session']['statut'] == '0minirezo' and !$GLOBALS['auteur_session']['restreint'];
    210 }
     208function autoriser_evenement_instituerorphelin_dist($faire, $quoi, $id, $qui) {
     209        return _AGENDA_AUTORISER_ORPHELINS && $qui['statut'] == '0minirezo' && !$qui['restreint'];
     210}
Note: See TracChangeset for help on using the changeset viewer.