Changeset 96180 in spip-zone


Ignore:
Timestamp:
Mar 24, 2016, 10:46:28 AM (3 years ago)
Author:
abelass@…
Message:

tabs au lieu d'espaces

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/reservation_evenement/trunk/action/editer_reservations_detail.php

    r95551 r96180  
    11<?php
    2 if (!defined('_ECRIRE_INC_VERSION')) return;
    3 
    4 function reservations_detail_modifier($id_reservations_detail, $set=null) {
    5 
    6   $table_sql = table_objet_sql('reservations_detail');
    7   $trouver_table = charger_fonction('trouver_table','base');
    8   $desc = $trouver_table($table_sql);
    9   if (!$desc OR !isset($desc['field'])) {
    10     spip_log("Objet $objet inconnu dans objet_modifier",_LOG_ERREUR);
    11     return _L("Erreur objet $objet inconnu");
    12   }
    13   include_spip('inc/modifier');
    14 
    15   $champ_date = '';
    16   if (isset($desc['date']) AND $desc['date'])
    17     $champ_date = $desc['date'];
    18   elseif (isset($desc['field']['date']))
    19     $champ_date = 'date';
    20 
    21   $white = array_keys($desc['field']);
    22   // on ne traite pas la cle primaire par defaut, notamment car
    23   // sur une creation, id_x vaut 'oui', et serait enregistre en id_x=0 dans la base
    24   $white = array_diff($white, array($desc['key']['PRIMARY KEY']));
    25 
    26   if (isset($desc['champs_editables']) AND is_array($desc['champs_editables'])) {
    27     $white = $desc['champs_editables'];
    28   }
    29   $c = collecter_requests(
    30     // white list
    31     $white,
    32     // black list
    33     array($champ_date,'statut','id_parent','id_secteur'),
    34     // donnees eventuellement fournies
    35     $set
    36   );
    37 
    38   $donnees_reservations_details=charger_fonction('donnees_reservations_details','inc');
    39  
    40   //On retient le prix original pour le cas ou celui est modifié par la suite
    41 
    42   $details=$donnees_reservations_details($id_reservations_detail,$c);
    43   $details['prix original'] = isset($details['prix_ht']) ? $details['prix_ht'] : '';
    44  
    45   //Pipeline permettant aux plugins de modifier les détails de la réservation
    46   $c = pipeline('reservation_evenement_donnees_details',array(
    47           'args'=>$set,
    48           'data'=>array_merge($c,$details)
    49           )
    50         );
    51 
    52   // Si l'objet est publie, invalider les caches et demander sa reindexation
    53   if (objet_test_si_publie($objet,$id)){
    54     $invalideur = "id='reservations_detail/$id_reservations_detail'";
    55     $indexation = true;
    56   }
    57   else {
    58     $invalideur = "";
    59     $indexation = false;
    60   }
    61 
    62   if ($err = objet_modifier_champs('reservations_detail',$id_reservations_detail,
    63     array(
    64       'nonvide' => '',
    65       'invalideur' => $invalideur,
    66       'indexation' => $indexation,
    67        // champ a mettre a date('Y-m-d H:i:s') s'il y a modif
    68       'date_modif' => (isset($desc['field']['date_modif'])?'date_modif':'')
    69     ),
    70     $c))
    71     return $err;
    72 
    73   // Modification de statut, changement de rubrique ?
    74   // FIXME: Ici lorsqu'un $set est passé, la fonction collecter_requests() retourne tout
    75   //         le tableau $set hors black liste, mais du coup on a possiblement des champs en trop.
    76   $c = collecter_requests(array($champ_date, 'statut', 'id_parent'),array(),$set);
    77   $err = reservations_detail_instituer($id_reservations_detail, $c);
    78 
    79   return $err;
     2if (! defined ( '_ECRIRE_INC_VERSION' ))
     3        return;
     4function reservations_detail_modifier($id_reservations_detail, $set = null) {
     5        $table_sql = table_objet_sql ( 'reservations_detail' );
     6        $trouver_table = charger_fonction ( 'trouver_table', 'base' );
     7        $desc = $trouver_table ( $table_sql );
     8        if (! $desc or ! isset ( $desc ['field'] )) {
     9                spip_log ( "Objet $objet inconnu dans objet_modifier", _LOG_ERREUR );
     10                return _L ( "Erreur objet $objet inconnu" );
     11        }
     12        include_spip ( 'inc/modifier' );
     13       
     14        $champ_date = '';
     15        if (isset ( $desc ['date'] ) and $desc ['date'])
     16                $champ_date = $desc ['date'];
     17        elseif (isset ( $desc ['field'] ['date'] ))
     18                $champ_date = 'date';
     19       
     20        $white = array_keys ( $desc ['field'] );
     21        // on ne traite pas la cle primaire par defaut, notamment car
     22        // sur une creation, id_x vaut 'oui', et serait enregistre en id_x=0 dans la base
     23        $white = array_diff ( $white, array (
     24                        $desc ['key'] ['PRIMARY KEY']
     25        ) );
     26       
     27        if (isset ( $desc ['champs_editables'] ) and is_array ( $desc ['champs_editables'] )) {
     28                $white = $desc ['champs_editables'];
     29        }
     30        $c = collecter_requests (
     31                        // white list
     32                        $white,
     33                        // black list
     34                        array (
     35                                        $champ_date,
     36                                        'statut',
     37                                        'id_parent',
     38                                        'id_secteur'
     39                        ),
     40                        // donnees eventuellement fournies
     41                        $set );
     42       
     43        $donnees_reservations_details = charger_fonction ( 'donnees_reservations_details', 'inc' );
     44       
     45        // On retient le prix original pour le cas ou celui est modifié par la suite
     46       
     47        $details = $donnees_reservations_details ( $id_reservations_detail, $c );
     48        $details ['prix original'] = isset ( $details ['prix_ht'] ) ? $details ['prix_ht'] : '';
     49       
     50        // Pipeline permettant aux plugins de modifier les détails de la réservation
     51        $c = pipeline ( 'reservation_evenement_donnees_details', array (
     52                        'args' => $set,
     53                        'data' => array_merge ( $c, $details )
     54        ) );
     55       
     56        // Si l'objet est publie, invalider les caches et demander sa reindexation
     57        if (objet_test_si_publie ( $objet, $id )) {
     58                $invalideur = "id='reservations_detail/$id_reservations_detail'";
     59                $indexation = true;
     60        } else {
     61                $invalideur = "";
     62                $indexation = false;
     63        }
     64       
     65        if ($err = objet_modifier_champs ( 'reservations_detail', $id_reservations_detail, array (
     66                        'nonvide' => '',
     67                        'invalideur' => $invalideur,
     68                        'indexation' => $indexation,
     69                        // champ a mettre a date('Y-m-d H:i:s') s'il y a modif
     70                        'date_modif' => (isset ( $desc ['field'] ['date_modif'] ) ? 'date_modif' : '')
     71        ), $c ))
     72                return $err;
     73               
     74                // Modification de statut, changement de rubrique ?
     75                // FIXME: Ici lorsqu'un $set est passé, la fonction collecter_requests() retourne tout
     76                // le tableau $set hors black liste, mais du coup on a possiblement des champs en trop.
     77        $c = collecter_requests ( array (
     78                        $champ_date,
     79                        'statut',
     80                        'id_parent'
     81        ), array (), $set );
     82        $err = reservations_detail_instituer ( $id_reservations_detail, $c );
     83       
     84        return $err;
    8085}
    81 
    82 
    83 function reservations_detail_inserer( $id_parent=null, $set=null) {
    84   $objet='reservations_detail';
    85 
    86   $table_sql = table_objet_sql($objet);
    87   $trouver_table = charger_fonction('trouver_table','base');
    88   $desc = $trouver_table($table_sql);
    89   if (!$desc OR !isset($desc['field']))
    90     return 0;
    91 
    92   $champs = array();
    93 
    94 
    95 
    96   if (isset($desc['field']['statut'])){
    97     if (isset($desc['statut_textes_instituer'])){
    98       $cles_statut = array_keys($desc['statut_textes_instituer']);
    99       $champs['statut'] = reset($cles_statut);
    100     }
    101     else
    102       $champs['statut'] = 'attente';
    103   }
    104 
    105   if ((isset($desc['date']) AND $d=$desc['date']) OR isset($desc['field'][$d='date']))
    106     $champs[$d] = date('Y-m-d H:i:s');
    107 
    108   if ($set)
    109     $champs = array_merge($champs, $set);
    110  
    111 
    112   // Envoyer aux plugins
    113   $champs = pipeline('pre_insertion',
    114     array(
    115       'args' => array(
    116         'table' => $table_sql,
    117       ),
    118       'data' => $champs
    119     )
    120   );
    121 
    122   $id = sql_insertq($table_sql, $champs);
    123 
    124   if ($id){
    125     pipeline('post_insertion',
    126       array(
    127         'args' => array(
    128           'table' => $table_sql,
    129           'id_objet' => $id,
    130         ),
    131         'data' => $champs
    132       )
    133     );
    134   }
    135 
    136   return $id;
     86function reservations_detail_inserer($id_parent = null, $set = null) {
     87        $objet = 'reservations_detail';
     88       
     89        $table_sql = table_objet_sql ( $objet );
     90        $trouver_table = charger_fonction ( 'trouver_table', 'base' );
     91        $desc = $trouver_table ( $table_sql );
     92        if (! $desc or ! isset ( $desc ['field'] ))
     93                return 0;
     94       
     95        $champs = array ();
     96       
     97        if (isset ( $desc ['field'] ['statut'] )) {
     98                if (isset ( $desc ['statut_textes_instituer'] )) {
     99                        $cles_statut = array_keys ( $desc ['statut_textes_instituer'] );
     100                        $champs ['statut'] = reset ( $cles_statut );
     101                } else
     102                        $champs ['statut'] = 'attente';
     103        }
     104       
     105        if ((isset ( $desc ['date'] ) and $d = $desc ['date']) or isset ( $desc ['field'] [$d = 'date'] ))
     106                $champs [$d] = date ( 'Y-m-d H:i:s' );
     107       
     108        if ($set)
     109                $champs = array_merge ( $champs, $set );
     110               
     111                // Envoyer aux plugins
     112        $champs = pipeline ( 'pre_insertion', array (
     113                        'args' => array (
     114                                        'table' => $table_sql
     115                        ),
     116                        'data' => $champs
     117        ) );
     118       
     119        $id = sql_insertq ( $table_sql, $champs );
     120       
     121        if ($id) {
     122                pipeline ( 'post_insertion', array (
     123                                'args' => array (
     124                                                'table' => $table_sql,
     125                                                'id_objet' => $id
     126                                ),
     127                                'data' => $champs
     128                ) );
     129        }
     130       
     131        return $id;
    137132}
    138 
    139 function reservations_detail_instituer($id_reservations_detail, $c, $calcul_rub=true) {
    140 
    141   include_spip('inc/autoriser');
    142   include_spip('inc/rubriques');
    143   include_spip('inc/modifier');
    144  
    145  
    146   $row = sql_fetsel('*','spip_reservations_details','id_reservations_detail='.intval($id_reservations_detail));
    147   $id_reservation=$row['id_reservation'];
    148   $id_evenement=$row['id_evenement'];
    149 
    150   $envoi_separe_actif=_request('envoi_separe_actif'); 
    151   if(!$places=$c[places]){
    152     $places=sql_getfetsel('places','spip_evenements','id_evenement='.$id_evenement);
    153     }
    154   $statut_ancien = $statut = $row['statut'];
    155 
    156   $s = isset($c['statut']) ? $c['statut'] : $statut;
    157 
    158   $champs['statut']= $s ;
    159  
    160   // Vérifier si le statut peut être modifiés
    161   $statuts_complets=charger_fonction('complet','inc/statuts');
    162   $statuts=$statuts_complets();   
    163  
    164   /* Si on change depuis un statut non compris dans statuts_complet
    165    * vers un statut compris dans statuts_complet,
    166    * on vérifie si l'événement n'est pas complet
    167    */
    168    
    169   if ($s != $statut_ancien AND in_array($s,$statuts) AND !in_array($statut_ancien,$statuts)) {
    170    
    171     // Si il y a une limitation de places prévu, on sélectionne les détails de réservation qui ont le statut_complet
    172     if($places AND $places>0){
    173       $sql=sql_select('quantite','spip_reservations_details','id_evenement='.$id_evenement.' AND statut IN ("'.implode('","',$statuts).'")');   
    174       $reservations=array();
    175       while($data=sql_fetch($sql)){
    176         $reservations[]=$data['quantite'];
    177       }
    178       if(array_sum($reservations)>=$places) $champs['statut']='attente';               
    179     }
    180   }
    181 
    182 
    183   // Envoyer aux plugins
    184   $champs = pipeline('pre_edition',
    185     array(
    186       'args' => array(
    187         'table' => 'spip_reservations_details',
    188         'id_reservation_detail' => $id_reservations_detail,
    189         'action'=>'instituer',
    190         'statut_ancien' => $statut_ancien,
    191         'date_ancienne' => $date_ancienne,
    192       ),
    193       'data' => $champs
    194     )
    195   );
    196 
    197   // Si la config le prévoit, établir si il y eu un changement de statut.
    198   if ($c['statut_calculer_auto'] == 'on') {
    199     if ($c['statut'] != $champs['statut']) $statut_modifie = 1;
    200     else $statut_modifie = 0;
    201                
    202                 $statuts_details_reservation = _request('statuts_details_reservation');
    203                
    204                 $statuts_details_reservation[$id_reservations_detail] = array(
    205                         'statut' => $champs['statut'],
    206             'statut_modifie' => $statut_modifie
     133function reservations_detail_instituer($id_reservations_detail, $c, $calcul_rub = true) {
     134        include_spip ( 'inc/autoriser' );
     135        include_spip ( 'inc/rubriques' );
     136        include_spip ( 'inc/modifier' );
     137       
     138        $row = sql_fetsel ( '*', 'spip_reservations_details', 'id_reservations_detail=' . intval ( $id_reservations_detail ) );
     139        $id_reservation = $row ['id_reservation'];
     140        $id_evenement = $row ['id_evenement'];
     141       
     142        $envoi_separe_actif = _request ( 'envoi_separe_actif' );
     143        if (! $places = $c [places]) {
     144                $places = sql_getfetsel ( 'places', 'spip_evenements', 'id_evenement=' . $id_evenement );
     145        }
     146        $statut_ancien = $statut = $row ['statut'];
     147       
     148        $s = isset ( $c ['statut'] ) ? $c ['statut'] : $statut;
     149       
     150        $champs ['statut'] = $s;
     151       
     152        // Vérifier si le statut peut être modifiés
     153        $statuts_complets = charger_fonction ( 'complet', 'inc/statuts' );
     154        $statuts = $statuts_complets ();
     155       
     156        /*
     157         * Si on change depuis un statut non compris dans statuts_complet
     158         * vers un statut compris dans statuts_complet,
     159         * on vérifie si l'événement n'est pas complet
     160         */
     161       
     162        if ($s != $statut_ancien and in_array ( $s, $statuts ) and ! in_array ( $statut_ancien, $statuts )) {
     163               
     164                // Si il y a une limitation de places prévu, on sélectionne les détails de réservation qui ont le statut_complet
     165                if ($places and $places > 0) {
     166                        $sql = sql_select ( 'quantite', 'spip_reservations_details', 'id_evenement=' . $id_evenement . ' AND statut IN ("' . implode ( '","', $statuts ) . '")' );
     167                        $reservations = array ();
     168                        while ( $data = sql_fetch ( $sql ) ) {
     169                                $reservations [] = $data ['quantite'];
     170                        }
     171                        if (array_sum ( $reservations ) >= $places)
     172                                $champs ['statut'] = 'attente';
     173                }
     174        }
     175       
     176        // Envoyer aux plugins
     177        $champs = pipeline ( 'pre_edition', array (
     178                        'args' => array (
     179                                        'table' => 'spip_reservations_details',
     180                                        'id_reservation_detail' => $id_reservations_detail,
     181                                        'action' => 'instituer',
     182                                        'statut_ancien' => $statut_ancien,
     183                                        'date_ancienne' => $date_ancienne
     184                        ),
     185                        'data' => $champs
     186        ) );
     187       
     188        // Si la config le prévoit, établir si il y eu un changement de statut.
     189        if ($c ['statut_calculer_auto'] == 'on') {
     190                if ($c ['statut'] != $champs ['statut'])
     191                        $statut_modifie = 1;
     192                else
     193                        $statut_modifie = 0;
     194               
     195                $statuts_details_reservation = _request ( 'statuts_details_reservation' );
     196               
     197                $statuts_details_reservation [$id_reservations_detail] = array (
     198                                'statut' => $champs ['statut'],
     199                                'statut_modifie' => $statut_modifie
    207200                );
    208 
    209     set_request('statuts_details_reservation',$statuts_details_reservation);
    210   }
    211 
    212   if (!count($champs)) return '';
    213   // Envoyer les modifs.
    214   objet_editer_heritage('reservations_detail', $id_reservations_detail,'', $statut_ancien, $champs);
    215 
    216   // Invalider les caches
    217   include_spip('inc/invalideur');
    218   suivre_invalideur("id='reservations_detail/$id_reservations_detail'");
    219 
    220 
    221   // Pipeline
    222   pipeline('post_edition',
    223     array(
    224       'args' => array(
    225         'table' => 'spip_reservations_details',
    226         'id_reservation_detail' => $id_reservations_detail,
    227         'action'=>'instituer',
    228         'statut_ancien' => $statut_ancien,
    229         'date_ancienne' => $date_ancienne,
    230       ),
    231       'data' => $champs
    232     )
    233   );
    234  
    235 
    236  
    237   // Notifications si en mode différé et ne pas déclencher par le changement de statut de la réservation
    238  
    239   if($envoi_separe_actif!='non'){
    240     //Déterminer la langue pour les notifications 
    241     if(!$lang=sql_getfetsel('lang','spip_reservations','id_reservation='.$id_reservation)) $lang=lire_config('langue_site');       
    242 
    243     lang_select($lang); 
    244     include_spip('inc/config'); 
    245     $config = lire_config('reservation_evenement');
    246     $envoi_separe_config=isset($config['envoi_separe'])?$config['envoi_separe']:array();
    247    
    248     if(in_array($s, $envoi_separe_config) OR $s == 'cloture'){
    249      
    250        if ((!$statut_ancien OR $s != $statut_ancien ) &&
    251        ($config['activer']) &&
    252        (in_array($s,$config['quand'])) &&
    253        ($notifications = charger_fonction('notifications', 'inc', true))
    254       ) {
    255         $row=sql_fetsel('id_auteur,email','spip_reservations','id_reservation='.$id_reservation);
    256         $id_auteur=$row['id_auteur'];
    257         $email=$row['email'];
    258        
    259         // Determiner l'expediteur
    260         $options = array('statut'=>$s,'id_reservations_detail'=>$id_reservations_detail,'lang'=>$lang);
    261         if( $config['expediteur'] != "facteur" )
    262           $options['expediteur'] = $config['expediteur_'.$config['expediteur']];
    263    
    264         // Envoyer au vendeur et au client
    265         //Pour le moment pas d'envoi à l'administrateur, prévoir un seul mail pour tout l'événement.
    266         if ($s!='cloture') {
    267           spip_log('envoi mail differe vendeur email:'.$email.', statut:'.$s ,'reservation_evenement'.LOG_INFO);
    268           $notifications('reservation_vendeur', $id_reservation, $options);
    269         }
    270          
    271         if($config['client']){
    272          
    273             if(intval($id_auteur) AND $id_auteur>0)$options['email']=sql_getfetsel('email','spip_auteurs','id_auteur='.$id_auteur);
    274             else $options['email']=$email;
    275            
    276           spip_log('envoi mail séparé client email:'.$options['email'].', statut:'.$s ,'reservation_evenement'._LOG_INFO);
    277           $notifications('reservation_client', $id_reservation, $options);
    278          
    279           }
    280         }
    281       }   
    282     }
    283 
    284   return ''; // pas d'erreur
     201               
     202                set_request ( 'statuts_details_reservation', $statuts_details_reservation );
     203        }
     204       
     205        if (! count ( $champs ))
     206                return '';
     207                // Envoyer les modifs.
     208        objet_editer_heritage ( 'reservations_detail', $id_reservations_detail, '', $statut_ancien, $champs );
     209       
     210        // Invalider les caches
     211        include_spip ( 'inc/invalideur' );
     212        suivre_invalideur ( "id='reservations_detail/$id_reservations_detail'" );
     213       
     214        // Pipeline
     215        pipeline ( 'post_edition', array (
     216                        'args' => array (
     217                                        'table' => 'spip_reservations_details',
     218                                        'id_reservation_detail' => $id_reservations_detail,
     219                                        'action' => 'instituer',
     220                                        'statut_ancien' => $statut_ancien,
     221                                        'date_ancienne' => $date_ancienne
     222                        ),
     223                        'data' => $champs
     224        ) );
     225       
     226        // Notifications si en mode différé et ne pas déclencher par le changement de statut de la réservation
     227       
     228        if ($envoi_separe_actif != 'non') {
     229                // Déterminer la langue pour les notifications
     230                if (! $lang = sql_getfetsel ( 'lang', 'spip_reservations', 'id_reservation=' . $id_reservation ))
     231                        $lang = lire_config ( 'langue_site' );
     232               
     233                lang_select ( $lang );
     234                include_spip ( 'inc/config' );
     235                $config = lire_config ( 'reservation_evenement' );
     236                $envoi_separe_config = isset ( $config ['envoi_separe'] ) ? $config ['envoi_separe'] : array ();
     237               
     238                if (in_array ( $s, $envoi_separe_config ) or $s == 'cloture') {
     239                       
     240                        if ((! $statut_ancien or $s != $statut_ancien) && ($config ['activer']) && (in_array ( $s, $config ['quand'] )) && ($notifications = charger_fonction ( 'notifications', 'inc', true ))) {
     241                                $row = sql_fetsel ( 'id_auteur,email', 'spip_reservations', 'id_reservation=' . $id_reservation );
     242                                $id_auteur = $row ['id_auteur'];
     243                                $email = $row ['email'];
     244                               
     245                                // Determiner l'expediteur
     246                                $options = array (
     247                                                'statut' => $s,
     248                                                'id_reservations_detail' => $id_reservations_detail,
     249                                                'lang' => $lang
     250                                );
     251                                if ($config ['expediteur'] != "facteur")
     252                                        $options ['expediteur'] = $config ['expediteur_' . $config ['expediteur']];
     253                                       
     254                                        // Envoyer au vendeur et au client
     255                                        // Pour le moment pas d'envoi à l'administrateur, prévoir un seul mail pour tout l'événement.
     256                                if ($s != 'cloture') {
     257                                        spip_log ( 'envoi mail differe vendeur email:' . $email . ', statut:' . $s, 'reservation_evenement' . LOG_INFO );
     258                                        $notifications ( 'reservation_vendeur', $id_reservation, $options );
     259                                }
     260                               
     261                                if ($config ['client']) {
     262                                       
     263                                        if (intval ( $id_auteur ) and $id_auteur > 0)
     264                                                $options ['email'] = sql_getfetsel ( 'email', 'spip_auteurs', 'id_auteur=' . $id_auteur );
     265                                        else
     266                                                $options ['email'] = $email;
     267                                       
     268                                        spip_log ( 'envoi mail séparé client email:' . $options ['email'] . ', statut:' . $s, 'reservation_evenement' . _LOG_INFO );
     269                                        $notifications ( 'reservation_client', $id_reservation, $options );
     270                                }
     271                        }
     272                }
     273        }
     274       
     275        return ''; // pas d'erreur
    285276}
Note: See TracChangeset for help on using the changeset viewer.