Changeset 54231 in spip-zone


Ignore:
Timestamp:
Nov 9, 2011, 8:54:05 AM (8 years ago)
Author:
cedric@…
Message:

Synchroniser le statut des evenements lies a un article sur les changements de statut de l'article

Location:
_plugins_/agenda/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/agenda/trunk/agenda_pipelines.php

    r54215 r54231  
    133133        return $flux['data'];
    134134}
     135
     136/**
     137 * Synchroniser le statut des evenements lorsqu'on publie/depublie un article
     138 * @param array $flux
     139 * @return array
     140 */
     141function agenda_post_edition($flux){
     142        if ($flux['args']['table']=='spip_articles'
     143          AND $flux['args']['action'] = 'instituer'
     144          AND $id_article = $flux['args']['id_objet']
     145          AND isset($flux['data']['statut'])
     146          AND $statut = $flux['data']['statut']
     147          AND $statut_ancien = $flux['args']['statut_ancien']
     148          AND $statut!=$statut_ancien){
     149
     150                $set = array();
     151                // les evenements principaux, associes a cet article
     152                $where = array('id_article='.intval($id_article),'id_evenement_source=0');
     153                switch($statut){
     154                        case 'poubelle':
     155                                // on passe aussi tous les evenements associes a la poubelle, sans distinction
     156                                $set['statut'] = 'poubelle';
     157                                break;
     158                        case 'publie':
     159                                // on passe aussi tous les evenements prop en publie
     160                                $set['statut'] = 'publie';
     161                                $where[] = "statut='prop'";
     162                                break;
     163                        default:
     164                                if ($statut_ancien=='publie'){
     165                                        // on depublie aussi tous les evenements publie
     166                                        $set['statut'] = 'prop';
     167                                        $where[] = "statut='publie'";
     168                                }
     169                                break;
     170                }
     171                if (count($set)){
     172                        include_spip('action/editer_evenement');
     173                        $res = sql_select('id_evenement','spip_evenements',$where);
     174                        // et on applique a tous les evenements lies a l'article
     175                        while ($row = sql_fetch($res)){
     176                                evenement_modifier($row['id_evenement'],$set);
     177                        }
     178                }
     179        }
     180        return $flux;
     181}
    135182?>
  • _plugins_/agenda/trunk/paquet.xml

    r54212 r54231  
    2929        <pipeline nom="optimiser_base_disparus" inclure="agenda_pipelines.php" />
    3030        <pipeline nom="quete_calendrier_prive" inclure="agenda_pipelines.php" />
     31        <pipeline nom="post_edition" inclure="agenda_pipelines.php" />
    3132
    3233        <utilise nom="Fulltext" compatibilite="[0.2;[" />
Note: See TracChangeset for help on using the changeset viewer.