Changeset 98100 in spip-zone for _plugins_/abonnements_zones


Ignore:
Timestamp:
May 28, 2016, 11:46:57 PM (3 years ago)
Author:
rastapopoulos@…
Message:

OUPS quand est vide Accès Restreint le remplace par * ! Donc ça supprime toutes les zones… + code un peu plus efficace avec moins de foreach.

Location:
_plugins_/abonnements_zones/trunk
Files:
2 edited

Legend:

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

    r98099 r98100  
    3232                and $id_abonnements_offre = $abonnement['id_abonnements_offre']
    3333                and include_spip('action/editer_liens')
    34                 and $liens = objet_trouver_liens(array('zones'=>'*'), array('abonnements_offre'=>$id_abonnements_offre))
     34                and $liens = objet_trouver_liens(array('zone'=>'*'), array('abonnements_offre'=>$id_abonnements_offre))
    3535        ) {
    3636                include_spip('inc/autoriser');
     
    6161                ) {
    6262                        // On cherche si la personne a d'autres abonnements ACTIFS en même temps
    63                         if ($autres_abonnements = sql_allfetsel(
    64                                 'id_abonnement, id_abonnements_offre',
     63                        if ($autres_abonnements_actifs = sql_allfetsel(
     64                                'id_abonnements_offre',
    6565                                'spip_abonnements',
    6666                                array('id_auteur = '.$id_auteur, 'id_abonnement != '.$id_abonnement, 'statut = "actif"')
    6767                        )) {
     68                                $autres_offres_actives = array_map('reset', $autres_abonnements_actifs);
    6869                                $zones_a_pas_retirer = array();
    6970                               
    70                                 foreach ($autres_abonnements as $autre_abonnement) {
    71                                         // Si cet abonnement a des zones restreintes liées
    72                                         if ($liens_autre = objet_trouver_liens(
    73                                                 array('zones'=>'*'),
    74                                                 array('abonnements_offre'=>$autre_abonnement['id_abonnements_offre'])
    75                                         )) {
    76                                                 // On ne va PAS retirer ces zones à l'utilisateur
    77                                                 foreach ($liens_autre as $lien_autre) {
    78                                                         $zones_a_pas_retirer[] = $lien_autre['id_zone'];
    79                                                 }
     71                                // Si ces offres actives ont des zones restreintes liées
     72                                if ($liens_autres = objet_trouver_liens(
     73                                        array('zone'=>'*'),
     74                                        array('abonnements_offre'=>$autres_offres_actives)
     75                                )) {
     76                                        // On ne va PAS retirer ces zones à l'utilisateur
     77                                        foreach ($liens_autres as $lien_autres) {
     78                                                $zones_a_pas_retirer[] = $lien_autres['id_zone'];
    8079                                        }
    8180                                }
     
    8685                       
    8786                        // On retire à l'utilisateur toutes les zones qui ne sont pas aussi dans d'autres abonnements actifs
    88                         autoriser_exception('retirerzones', 'auteur', $id_auteur);
    89                         zone_lier($zones, 'auteur', $id_auteur, 'del');
    90                         autoriser_exception('retirerzones', 'auteur', $id_auteur, false);
     87                        if ($zones) {
     88                                autoriser_exception('retirerzones', 'auteur', $id_auteur);
     89                                zone_lier($zones, 'auteur', $id_auteur, 'del');
     90                                autoriser_exception('retirerzones', 'auteur', $id_auteur, false);
     91                        }
    9192                }
    9293        }
  • _plugins_/abonnements_zones/trunk/paquet.xml

    r98099 r98100  
    22        prefix="abozones"
    33        categorie="auteur"
    4         version="1.0.4"
     4        version="1.0.5"
    55        etat="stable"
    66        compatibilite="[3.0.5;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.