Changeset 113129 in spip-zone


Ignore:
Timestamp:
Dec 27, 2018, 9:41:17 AM (3 months ago)
Author:
cedric@…
Message:

Revert de r113112, r113113, r113124, r113125, r113126
par un svn merge -r113126:113019 .
Le plugin agenda est fondamentalement pensé et conçu pour avoir des évènements attachés à des articles, le changement de philosophie ne saurait être une modif à la marge et ne peut se faire que sur une branche de développement car ce n'est pas une modif mineure
+ r113125 totalement buggué supprime tous les évènements liés à un article
Je rappelle qu'il y a une branche experimentale (non supportee) pour les évenements autonomes

Location:
_plugins_/agenda/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/agenda/trunk

    • Property subgit:lock:cfeab043bb639da7ef29591011ea9361a45d943e deleted
  • _plugins_/agenda/trunk/action/editer_evenement.php

    r113113 r113129  
    260260        $champs = array();
    261261
    262 
    263         if (!$id_parent) {
    264                 if (!autoriser('instituerorphelin', 'evenement', $id_evement)) {
    265                         return false; // pas le droit d'instituer des orphelins : on abandonne
     262        if (!autoriser('modifier', 'article', $id_parent)
     263                or (isset($c['id_parent'])
     264                and !autoriser('modifier', 'article', $c['id_parent']))) {
     265                spip_log("editer_evenement $id_evenement refus " . join(' ', $c));
     266                return false;
     267        }
     268
     269        // Verifier que l'article demande existe et est different
     270        // de l'article actuel
     271        if (isset($c['id_parent'])
     272                and $c['id_parent'] != $id_parent
     273                and (sql_countsel('spip_articles', 'id_article='.intval($c['id_parent'])))) {
     274                $id_parent = $champs['id_article'] = $c['id_parent'];
     275        }
     276
     277        $sa = sql_getfetsel('statut', 'spip_articles', 'id_article='.intval($id_parent));
     278        if ($id_parent
     279                and (
     280                        $id_parent !== $id_parent_ancien
     281                        or $statut == '0'
     282                )) {
     283                switch ($sa) {
     284                        case 'publie':
     285                                // statut par defaut si besoin
     286                                if ($statut == '0') {
     287                                        $champs['statut'] = $statut = 'publie';
     288                                }
     289                                break;
     290                        case 'poubelle':
     291                                // si article a la poubelle, evenement aussi
     292                                $champs['statut'] = $statut = 'poubelle';
     293                                break;
     294                        default:
     295                                // pas de publie ni 0 si article pas publie
     296                                if (in_array($statut, array('publie','0'))) {
     297                                        $champs['statut'] = $statut = 'prop';
     298                                }
     299                                break;
     300                }
     301        }
     302
     303        // si pas d'article lie, et statut par defaut
     304        // on met en propose
     305        if ($statut=='0') {
     306                $champs['statut'] = $statut = 'prop';
     307        }
     308
     309        if (isset($c['statut'])
     310                and $s = $c['statut']
     311                and $s != $statut) {
     312                // pour instituer un evenement il faut avoir le droit d'instituer l'article associe avec le meme statut
     313                if (autoriser('instituer', 'article', $id_parent, null, array('statut'=>$s))
     314                        and ($sa=='publie' or $s!=='publie')) {
     315                        $champs['statut'] = $statut = $s;
    266316                } 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;
    274                                 }
    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']))) {
    282317                        spip_log("editer_evenement $id_evenement refus " . join(' ', $c));
    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 
     318                }
    338319        }
    339320
  • _plugins_/agenda/trunk/agenda_autoriser.php

    r113124 r113129  
    3636function autoriser_article_creerevenementdans_dist($faire, $quoi, $id, $qui, $options) {
    3737        if (!$id) {
    38                 return autoriser('creerorphelin', 'evenement');
     38                return false; // interdit de creer un evenement sur un article vide !
    3939        }
    4040        // si on a le droit de modifier l'article alors on a peut-etre le droit d'y creer un evenement
     
    8989        }
    9090        if (!$id_article) {
    91                 return autoriser('modifierorphelin', 'evenement', $id, $qui);
     91                return false;
    9292        }
    9393        return autoriser('modifier', 'article', $id_article, $qui);
     
    108108        }
    109109        if (!$id_article) {
    110                 return autoriser('instituerorphelin', 'evenement', $id, $qui);
     110                return false;
    111111        }
    112112        $statut = sql_getfetsel('statut', 'spip_articles', 'id_article='.intval($id_article));
     
    136136        }
    137137        if (!$id_article) {
    138                 return autoriser('voirorphelin', 'evenement', $id, $qui);
     138                return false;
    139139        }
    140140        return autoriser('voir', 'article', $id_article, $qui);
     
    165165        return autoriser('modifier', 'article', $id_article, $qui);
    166166}
    167 
    168 /**
    169  * Autorisation de voir un evenement orphelin : constante
    170  *
    171  * @param string $faire
    172  * @param string $quoi
    173  * @return bool
    174  */
    175 function autoriser_evenement_creerorphelin_dist($faire, $quoi, $id, $qui)
    176 {
    177     return lire_config('agenda/autoriser_orphelins') && $qui['statut'] == '0minirezo' && !$qui['restreint'];
    178 }
    179 
    180 /**
    181  * Autorisation de modifier un evenement orphelin : constante
    182  *
    183  * @param string $faire
    184  * @param string $quoi
    185  * @return bool
    186  */
    187 function autoriser_evenement_voirorphelin_dist($faire, $quoi, $id, $qui)
    188 {
    189     return lire_config('agenda/autoriser_orphelins');
    190 }
    191 
    192 /**
    193  * Autorisation de modifier un evenement orphelin : constante
    194  *
    195  * @param string $faire
    196  * @param string $quoi
    197  * @return bool
    198  */
    199 function autoriser_evenement_modifierorphelin_dist($faire, $quoi, $id, $qui)
    200 {
    201     return lire_config('agenda/autoriser_orphelins') && $qui['statut'] == '0minirezo' && !$qui['restreint'];
    202 }
    203 
    204 /**
    205  * Autorisation d’instituer un evenement orphelin : constante + admin
    206  *
    207  * @param string $faire
    208  * @param string $quoi
    209  * @return bool
    210  */
    211 function autoriser_evenement_instituerorphelin_dist($faire, $quoi, $id, $qui)
    212 {
    213     return lire_config('agenda/autoriser_orphelins') && $qui['statut'] == '0minirezo' && !$qui['restreint'];
    214 }
  • _plugins_/agenda/trunk/agenda_pipelines.php

    r113125 r113129  
    102102function agenda_optimiser_base_disparus($flux) {
    103103
    104     # passer a la poubelle
    105     # les evenements lies a un article inexistant (et orphelin interdit)
    106     $where = lire_config('agenda/autoriser_orphelins') ? '' : 'articles.id_article IS NULL';
    107     $res = sql_select(
    108         'DISTINCT evenements.id_article',
    109         'spip_evenements AS evenements LEFT JOIN spip_articles AS articles ON evenements.id_article=articles.id_article',
    110         $where
    111     );
    112     while ($row = sql_fetch($res)) {
    113         sql_updateq('spip_evenements', array('statut'=>'poubelle'), 'id_article='.$row['id_article']);
    114     }
     104        # passer a la poubelle
     105        # les evenements lies a un article inexistant
     106        $res = sql_select(
     107                'DISTINCT evenements.id_article',
     108                'spip_evenements AS evenements LEFT JOIN spip_articles AS articles ON evenements.id_article=articles.id_article',
     109                'articles.id_article IS NULL'
     110        );
     111        while ($row = sql_fetch($res)) {
     112                sql_updateq('spip_evenements', array('statut'=>'poubelle'), 'id_article='.$row['id_article']);
     113        }
    115114
    116115        // Evenements a la poubelle
  • _plugins_/agenda/trunk/formulaires/configurer_agenda.html

    r113124 r113129  
    101101                                        </fieldset>
    102102                                </li>
    103                                 <li class="fieldset">
    104                                         <fieldset>
    105                                                 <legend><:configureragenda:mode_expert:></legend>
    106                                                 <ul>
    107                                                         #SET{name,autoriser_orphelins}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
    108                                                         <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
    109                                                                 <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
    110                                                                 <span class='erreur_message'>(#GET{erreurs})</span>
    111                                                                 ]
    112                                                                 #SET{val,1}
    113                                                                 <div class="choix">
    114                                                                         <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name},#GET{defaut}}}|oui)checked="checked"] />
    115                                                                         <label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
    116                                                                 </div>
    117                                                         </li>
    118                                                 </ul>
    119                                         </fieldset>
    120                                 </li>
    121103                        </ul>
    122104
  • _plugins_/agenda/trunk/formulaires/editer_evenement.php

    r113112 r113129  
    104104
    105105        if (!$id_parent = intval(_request('id_parent'))) {
    106                 if (!autoriser('creerorphelin', 'evenement')) $erreurs['id_parent'] = _T('agenda:erreur_article_manquant');
     106                $erreurs['id_parent'] = _T('agenda:erreur_article_manquant');
    107107        } else {
    108108                if (!autoriser('creerevenementdans', 'article', $id_parent)) {
  • _plugins_/agenda/trunk/paquet.xml

    r113126 r113129  
    22        prefix="agenda"
    33        categorie="date"
    4         version="3.25.1"
     4        version="3.24.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.