Changeset 68549 in spip-zone for _plugins_/abonnements_zones


Ignore:
Timestamp:
Dec 21, 2012, 9:00:04 PM (7 years ago)
Author:
rastapopoulos@…
Message:

Un premier pipeline qui ajoute/retire des zones à un auteur lorsqu'il est abonné ou désabonné à une offre liée à des zones.
It works !

Maintenant il faut le faire aussi pour les abonnements actifs lorsqu'on ajoute ou retire une zone *à l'offre*.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/abonnements_zones/trunk/abozones_pipelines.php

    r68547 r68549  
    1919}
    2020
     21/*
     22 * Ajouter ou retirer un utilisateur des zones liées à une offre suivant divers événements
     23 */
     24function abozones_post_edition($flux){
     25        // Lorsqu'un abonnement change de statut... et que l'offre est liée à des zones !
     26        if (
     27                $flux['args']['table'] == 'spip_abonnements'
     28                and $flux['args']['action'] == 'instituer'
     29                and $id_abonnement = intval($flux['args']['id_objet'])
     30                and $abonnement = sql_fetsel('id_abonnements_offre,id_auteur', 'spip_abonnements', 'id_abonnement = '.$id_abonnement)
     31                and $id_auteur = $abonnement['id_auteur']
     32                and $id_abonnements_offre = $abonnement['id_abonnements_offre']
     33                and include_spip('action/editer_liens')
     34                and $liens = objet_trouver_liens(array('zones'=>'*'), array('abonnements_offre'=>$id_abonnements_offre))
     35        ) {
     36                include_spip('inc/autoriser');
     37                include_spip('action/editer_zone');
     38               
     39                // On ne récupère que les ids
     40                $zones = array();
     41                foreach ($liens as $lien) {
     42                        $zones[] = $lien['id_zone'];
     43                }
     44               
     45                // Si c'est une activation on ajoute les zones trouvées à l'utilisateur de l'abonnement SANS autorisation
     46                if ($flux['data']['statut'] == 'actif') {
     47                        autoriser_exception('affecterzones', 'auteur', $id_auteur);
     48                        zone_lier($zones, 'auteur', $id_auteur);
     49                        autoriser_exception('affecterzones', 'auteur', $id_auteur, false);
     50                }
     51                // Si c'est une désactivation (ancien statut actif, et nouveau différent)
     52                // on supprime les zones
     53                elseif (
     54                        $flux['args']['statut_ancien'] == 'actif'
     55                        and isset($flux['data']['statut'])
     56                        and $flux['data']['statut'] != 'actif'
     57                ) {
     58                        autoriser_exception('retirerzones', 'auteur', $id_auteur);
     59                        zone_lier($zones, 'auteur', $id_auteur, 'del');
     60                        autoriser_exception('retirerzones', 'auteur', $id_auteur, false);
     61                }
     62        }
     63       
     64        return $flux;
     65}
     66
    2167?>
Note: See TracChangeset for help on using the changeset viewer.