source: spip-zone/_plugins_/location_objets/branches/v1/inc/objets_location.php

Last change on this file was 123080, checked in by Rainer Müller, 15 months ago

utiliser la fonction actuelle

File size: 3.9 KB
Line 
1<?php
2/**
3 * Fonctions spécifiquesdes objets locations
4 *
5 * @plugin     Location d&#039;objets
6 * @copyright  2018 - 2020
7 * @author     Rainer Müller
8 * @licence    GNU/GPL v3
9 * @package    SPIP\Location_objets\Fonctions
10 */
11if (!defined('_ECRIRE_INC_VERSION')) {
12        return;
13}
14
15/**
16 * Calcule le prix et infos relationnées d'un objet
17 *
18 * @param array $set
19 *              Les valeurs à enregistrer.
20 * @param array $contexte
21 *              Les variables de l'environnement.
22 * @return array
23 *              Les valeurs à enregistrer.
24 */
25function location_prix_objet($set, $contexte) {
26
27        // Crée une variable pour chaque élément du contexte.
28        foreach ($contexte as $cle => $valeur) {
29                $$cle = $valeur;
30        }
31
32        if (test_plugin_actif('prix_objets')) {
33                $prix_objet = TRUE;
34                if ($prix_unitaire_ht = prix_par_objet(
35                                        $location_objet,
36                                        $id_location_objet,
37                                        array(
38                                                'date_debut' => $date_debut,
39                                                'date_fin' => $date_fin
40                                        ),
41                                        'prix_ht',
42                                        array(
43                                                'mode' => $mode_calcul_prix,
44                                        )
45                                )) {
46                        $set['prix_unitaire_ht'] = $prix_unitaire_ht;
47                        $prix_ttc = prix_par_objet(
48                                $location_objet,
49                                $id_location_objet,
50                                array(
51                                        'date_debut' => $date_debut,
52                                        'date_fin' => $date_fin
53                                ),
54                                'prix',
55                                array(
56                                        'mode' => $mode_calcul_prix,
57                                )
58                        );
59                        $set['taxe'] = $prix_ttc - $prix_unitaire_ht;
60                        $set['devise'] = prix_objet_formate($id_location_objet, $location_objet);
61                        $set['prix_total'] = _request('prix_total');
62                }
63        }
64
65        $set = pipeline('location_prix_objet', array(
66                'data' => $set,
67                'args' => $contexte
68        ));
69
70        return $set;
71}
72
73/**
74 * Retourne les valeurs disponibles pour le champ entite_duree
75 *
76 * @return array
77 *   les valeurs.
78 */
79function entite_duree_definitions() {
80        return [
81                'jour' => _T('ecrire:jours'),
82                'nuit' => _T('dates_outils:nuits'),
83        ];
84}
85
86function objets_location_verifier() {
87        $erreurs = [];
88
89        $type_verification = ['general', 'dates'];
90
91        foreach ($type_verification AS $type) {
92                $verifier = 'objets_location_verifier_' . $type;
93                $erreurs = $verifier($erreurs);
94        }
95
96        return $erreurs;
97}
98
99function objets_location_verifier_general($erreurs) {
100
101        $erreurs += formulaires_editer_objet_verifier(
102                'objets_location',
103                $id_objets_location,
104                array(
105                        'id_auteur',
106                        'location_objet',
107                        'id_location_objet',
108                        'date_debut',
109                        'date_fin',
110                )
111        );
112
113        $erreurs = pipeline('objets_location_verifier_general', [
114                        'args' => ['type' => 'general'],
115                        'data' => $erreurs
116                ]);
117
118return $erreurs;
119}
120
121function objets_location_verifier_dates($erreurs) {
122        include_spip('public/assembler');
123        $champs_dates = ['date_debut', 'date_fin'];
124
125        $contexte = calculer_contexte();
126
127        // Vérifier si on a une date correcte.
128        $verifier = charger_fonction('verifier', 'inc');
129        foreach ($champs_dates  AS $champ) {
130                $normaliser = null;
131
132                if ($erreur = $verifier(
133                        _request($champ),
134                        'date',
135                        array('normaliser'=>'datetime'),
136                        $normaliser)) {
137                        $erreurs[$champ] = $erreur;
138                        // si une valeur de normalisation a ete transmis, la prendre.
139                }
140                elseif (!is_null($normaliser)) {
141                        set_request($champ, $normaliser);
142                        // si pas de normalisation ET pas de date soumise, il ne faut pas tenter d'enregistrer ''
143                }
144                else {
145                        set_request($champ, null);
146                }
147        }
148
149        if (($date_debut = _request('date_debut') AND $date_fin = _request('date_fin')) AND
150                strtotime($date_debut) > strtotime($date_fin)) {
151                $erreurs['date_fin'] = _T('objets_location:erreur_date_fin_anterieur_date_debut');
152        }
153        elseif ($args = array_merge([
154                        'objet' => objet_type(_request('location_objet')),
155                        'id_objet' => _request('id_location_objet'),
156                        'utilisation_id_exclu' => _request('id_objets_location'),
157                ], calculer_contexte()) AND
158                        $erreur = $verifier(
159                                array(
160                                        'date_debut' => $date_debut,
161                                        'date_fin' => $date_fin
162                                ),
163                                'dates_diponibles',
164                                $args
165                        )
166                ) {
167                $erreurs['date_fin'] = $erreur;
168        }
169
170        $erreurs = pipeline('objets_location_verifier_dates', [
171                        'args' => ['type' => 'dates'],
172                        'data' => $erreurs
173                ]);
174
175return $erreurs;
176}
177
178
Note: See TracBrowser for help on using the repository browser.