source: spip-zone/_plugins_/commandes/trunk/commandes_pipelines.php @ 79133

Last change on this file since 79133 was 79133, checked in by tcharlss@…, 5 years ago

Incrémentation de z
+ micros changements : indentation, commentaires, et 1 item de langue.

File size: 5.8 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6// La CSS pour une commande
7function commandes_insert_head_css($flux){
8        $css = find_in_path('css/commandes.css');
9        $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n";
10        return $flux;
11}
12
13// Supprimer toutes les commandes en cours qui sont trop vieilles
14function commandes_optimiser_base_disparus($flux){
15        include_spip('inc/config');
16        // On cherche la date depuis quand on a le droit d'avoir fait la commande (par défaut 1h)
17        $depuis = date('Y-m-d H:i:s', time() - 3600*intval(lire_config('commandes/duree_vie', 1)));
18        // On récupère les commandes trop vieilles
19        $commandes = sql_allfetsel(
20                'id_commande',
21                'spip_commandes',
22                'statut = '.sql_quote('encours').' and date<'.sql_quote($depuis)
23        );
24
25        // S'il y a bien des commandes à supprimer
26        if ($commandes) {
27                $commandes = array_map('reset', $commandes);
28                include_spip('inc/commandes');
29                commandes_effacer($commandes);
30                $flux['data'] += count($commandes);
31        }
32
33        return $flux;
34}
35
36
37/**
38 * Ajouter une boite sur la fiche de commande
39 *
40 * @param string $flux
41 * @return string
42 */
43function commandes_affiche_gauche($flux) {
44
45        if (
46                $flux['args']['exec'] == 'commande_edit'
47                AND $table = preg_replace(",_edit$,","",$flux['args']['exec'])
48                AND $type = objet_type($table)
49                AND $id_table_objet = id_table_objet($type)
50                AND ($id = intval($flux['args'][$id_table_objet]))
51                AND (autoriser('modifier', 'commande', 0))
52        ) {
53                //un test pour todo ajouter un objet (produit,document,article,abonnement,rubrique ...)
54                $flux['data'] .= recuperer_fond('prive/objets/editer/colonne_document',array('objet'=>$type,'id_objet'=>$id));
55        }
56
57        return $flux;
58}
59
60
61/**
62 * accueil : liste des commandes en attente de validation
63 *
64 * @param string $flux
65 * @return string $flux
66 */
67function commandes_accueil_encours($flux) {
68
69        $statuts = array('attente','partiel','paye');
70        foreach( $statuts as $statut ){
71                if ( $nb_{$statut} = sql_countsel(table_objet_sql('commande'), "statut=".sql_quote($statut)) ) {
72                        $titre_{$statut} = singulier_ou_pluriel($nb_{$statut}, _T('commandes:info_1_commande_statut_'.$statut), _T('commandes:info_nb_commandes_statut_'.$statut, array('nb'=> $nb_{$statut})));
73                        $liste .= recuperer_fond('prive/objets/liste/commandes', array(
74                                'titre' => $titre_{$statut},
75                                'statut' => $statut,
76                                'cacher_tri' => true),
77                                array( 'ajax' => true )
78                        );
79                }
80        }
81
82        if ( isset($liste) ) {
83                $flux .= "<div class='commandes'>" . $liste . "</div>";
84        }
85        return $flux;
86}
87
88
89/**
90 * Liste des commandes sur la page d'un auteur
91 *
92 * @param array $flux
93 * @return array $flux
94**/
95function commandes_affiche_auteurs_interventions($flux) {
96        $texte = "";
97        $exec = isset($flux['args']['exec']) ? $flux['args']['exec'] : _request('exec');
98        if ($id_auteur = intval($flux['args']['id_auteur'])) {
99                $texte .= recuperer_fond('prive/objets/liste/commandes', array(
100                        'id_auteur' => $id_auteur,
101                        'titre' => _T('commandes:titre_commandes_auteur'),
102                        'cacher_tri' => true
103                        ),
104                        array('ajax' => true)
105                );
106        }
107        if ($texte) {
108                $flux['data'] .= $texte;
109        }
110
111        return $flux;
112}
113
114
115/**
116 * Traitements après l'édition d'une commande
117 * Quand on  modifie le satut d'une commande :
118 * - Mettre à jour les dates de paiement et d'envoi si par mégarde ça n'a pas été fait manuellement
119 * - Envoyer les notifications
120 *
121 * @param array $flux
122 *     $flux['args'][x] = arguments (table, id_objet, action, statut_ancien, date_ancienne, id_parent_ancien)
123 *     $flux['data'][x] = champs modifiés (statut, date_paiement etc.)
124 * @return array $flux
125**/
126function commandes_post_edition($flux){
127
128        if (
129                ($action = $flux['args']['action']) == 'instituer' // action instituer
130                and ($table = $flux['args']['table']) == table_objet_sql('commande') // on institue une commande
131                and ($statut_ancien = $flux['args']['statut_ancien']) != ($statut = $flux['data']['statut']) // le statut a été modifié
132                and $id_commande = $flux['args']['id_objet'] // on a bien un identifiant pour la commande
133        ) {
134
135                // Mise à jour des dates de paiement ou d'envoi si ça n'a pas été fait manuellement
136                if (
137                        in_array($statut, array('paye','envoye'))
138                        and $maj = sql_getfetsel('maj', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
139                        and $date_paiement = sql_getfetsel('date_paiement', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
140                        and $date_envoi = sql_getfetsel('date_envoi', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
141                        and include_spip('action/editer_objet')
142                ) {
143                        if (
144                                $statut == 'paye'
145                                and intval($date_paiement) == 0
146                        ){
147                                objet_modifier('commande', $id_commande, array('date_paiement'=>$maj));
148                        }
149                        if (
150                                $statut == 'envoye'
151                                and intval($date_envoi) == 0
152                        ){
153                                objet_modifier('commande', $id_commande, array('date_envoi'=>$maj));
154                        }
155                }
156
157                // Envoi des notifications
158                if (
159                        include_spip('inc/config')
160                        and $config = lire_config('commandes')
161                        and $quand = $config['quand'] ? $config['quand'] : array()
162                        and ($config['activer']) // les notifications sont activées
163                        and (in_array($statut, $quand)) // le nouveau statut est valide pour envoyer une notification
164                        and ($notifications = charger_fonction('notifications', 'inc', true)) // la fonction est bien chargée
165                ) {
166                        // Déterminer l'expediteur
167                        $options = array();
168                        if( $config['expediteur'] != "facteur" )
169                                $options['expediteur'] = $config['expediteur_'.$config['expediteur']];
170
171                        // Envoyer au vendeur et optionnellement au client
172                        $notifications('commande_vendeur', $id_commande, $options);
173                        if($config['client'])
174                                $notifications('commande_client', $id_commande, $options);
175                }
176        }
177
178        return($flux);
179}
180
181?>
Note: See TracBrowser for help on using the repository browser.