Changeset 67846 in spip-zone


Ignore:
Timestamp:
Nov 21, 2012, 5:19:21 PM (7 years ago)
Author:
rastapopoulos@…
Message:

Il y avait une petite incohérence avec la gestion des répétitions : l'interface côté admin est censé ne *jamais* laisser la possibilité ni de voir ni d'édition une répétition : les répétitions doivent donc être des clones parfaits de l'événement d'origine.
Le formulaire copiait bien les champs, mais aucune des liaisons, du coup les répétitions n'avaient ni les mêmes mots, ni les mêmes docs, etc.
Ce commit s'insère donc dans le récent pipeline "post_edition_lien" afin tout ajout ou suppression de lien sur un événement.

Location:
_plugins_/agenda/trunk
Files:
2 edited

Legend:

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

    r66213 r67846  
    201201}
    202202
     203/*
     204 * Synchroniser les liaisons (mots, docs, gis, etc) de l'événement édité avec ses répétitions s'il en a
     205 * @param array $flux
     206 * @param array
     207 */
     208function agenda_post_edition_lien($flux){
     209        // Si on est en train de lier ou délier quelque chose a un événement
     210        if ($flux['args']['objet'] == 'evenement'){
     211                // On cherche si cet événement a des répétitions
     212                if ($id_evenement = $flux['args']['id_objet']
     213                        and $id_evenement > 0
     214                        and $repetitions = sql_allfetsel('id_evenement', 'spip_evenements', 'id_evenement_source = '.$id_evenement)
     215                        and is_array($repetitions)
     216                ){
     217                        include_spip('action/editer_liens');
     218                       
     219                        // On a la liste des ids des répétitions
     220                        $repetitions = array_map('reset', $repetitions);
     221                       
     222                        // Si c'est un ajout de lien, on l'ajoute à toutes les répétitions
     223                        if ($flux['args']['action'] == 'insert'){
     224                                objet_associer(
     225                                        array($flux['args']['objet_source'] => $flux['args']['id_objet_source']),
     226                                        array('evenement' => $repetitions)
     227                                );
     228                        }
     229                        // Si c'est une suppression de lien, on le supprime à toutes les répétitions
     230                        elseif ($flux['args']['action'] == 'delete'){
     231                                objet_dissocier(
     232                                        array($flux['args']['objet_source'] => $flux['args']['id_objet_source']),
     233                                        array('evenement' => $repetitions)
     234                                );
     235                        }
     236                }
     237        }
     238       
     239        return $flux;
     240}
     241
    203242/**
    204243 * Les evenements peuvent heriter des compositions des articles
  • _plugins_/agenda/trunk/paquet.xml

    r67349 r67846  
    22        prefix="agenda"
    33        categorie="date"
    4         version="3.10.1"
     4        version="3.11.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
     
    3535        <pipeline nom="optimiser_base_disparus" inclure="agenda_pipelines.php" />
    3636        <pipeline nom="post_edition" inclure="agenda_pipelines.php" />
     37        <pipeline nom="post_edition_lien" inclure="agenda_pipelines.php" />
    3738        <pipeline nom="quete_calendrier_prive" inclure="agenda_pipelines.php" />
    3839
Note: See TracChangeset for help on using the changeset viewer.