source: spip-zone/_plugins_/prix_objets/trunk/formulaires/prix.php @ 110381

Last change on this file since 110381 was 110370, checked in by abelass@…, 3 years ago

harmoniser l'affichage avec blocks liens objet

File size: 5.5 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION"))
3        return;
4
5include_spip('inc/saisies');
6
7function formulaires_prix_charger_dist($id_objet, $objet = 'article') {
8        include_spip('inc/config');
9        include_spip('inc/prix_objets');
10
11        $devises_dispos = lire_config('prix_objets/devises');
12        $taxes_inclus = lire_config('prix_objets/taxes_inclus');
13        $taxes = lire_config('prix_objets/taxes');
14        $table = 'spip_prix_objets';
15
16        // Devise par défaut si rien configuré
17        if (!$devises_dispos) {
18                $devises_dispos = array(
19                        '0' => 'EUR'
20                );
21        }
22
23        $devises_choisis = array();
24        $prix_choisis = array();
25        if (is_array($id_objet)) {
26                $id_objet_produit = implode(',', $id_objet);
27        }
28
29        if ($id_objet) {
30                $d = sql_select(
31                        '*',
32                        'spip_prix_objets',
33                        'id_prix_objet_source = 0 AND id_objet IN(' . $id_objet . ') AND objet =' . sql_quote($objet)
34                );
35        }
36
37        // établit les devises diponible moins ceux déjà utilisés
38        while ($row = sql_fetch($d)) {
39                $prix_choisis[] = $row;
40        }
41
42        $devises = array_diff($devises_dispos, $devises_choisis);
43
44        $valeurs = array(
45                'prix_choisis' => $prix_choisis,
46                'taxes_inclus' => $taxes_inclus,
47                'devises' => $devises,
48                'code_devise' => '',
49                'objet' => $objet,
50                'id_objet' => $id_objet,
51                'prix_ht' => $taxes_inclus,
52                'objet_titre' => '',
53                'taxes' => $taxes,
54                'taxe' => '',
55                'visible' => _request('visible') ? _request('visible') : ''
56        );
57
58        $valeurs['_hidden'] = '<input type="hidden" name="objet" value="' . $objet . '">';
59        $valeurs['_hidden'] .= '<input type="hidden" name="id_objet" value="' . $id_objet . '">';
60
61        // Inclure les extensions.
62        $valeurs['_saisies_extras'] = prix_objets_extensions_declaration($valeurs);
63        $extensions = array_keys($valeurs['_saisies_extras']);
64        $saisies = array();
65
66        foreach ($valeurs['_saisies_extras'] as $s) {
67                $saisies = array_merge($saisies, $s);
68                foreach (saisies_lister_par_nom($s) as $nom => $definition) {
69                        $valeurs[$nom] = _request($nom);
70                }
71        }
72
73        // Déclarer les extensions
74        if (count($extensions) > 0) {
75
76                $valeurs['extensions'] = _request('extensions');
77
78                $valeurs['_saisies_extras'] = array_merge(
79                        array(
80                                array(
81                                        'saisie' => 'hidden',
82                                        'options' => array(
83                                                'nom' => 'extensions',
84                                                'defaut' => implode(',', $extensions),
85                                        )
86                                ),
87                                array(
88                                        'saisie' => 'fieldset',
89                                        'options' => array(
90                                                'nom' => 'extensions',
91                                                'label' => _T('prix_objets:info_extensions'),
92                                        ),
93                                        'saisies' =>    $saisies,
94                                )
95                        )
96                );
97        }
98
99
100
101        return $valeurs;
102}
103function formulaires_prix_verifier_dist($id_objet, $objet = 'article') {
104
105
106        if (!_request('code_devise')) {
107                $erreurs['code_devise'] = _T('info_obligatoire');
108        }
109
110        if (!is_numeric(_request('prix'))) {
111                $erreurs['prix'] = _T('info_obligatoire');
112        }
113
114
115
116        return $erreurs; // si c'est vide, traiter sera appele, sinon le formulaire sera resoumis
117}
118function formulaires_prix_traiter_dist($id_objet, $objet = 'article') {
119        $prix = _request('prix');
120        $id_declinaison = _request('id_declinaison');
121        $extensions =  _request('extensions') ? explode(',', _request('extensions')) : array();
122
123        // Génération du titre
124        $titre = extraire_multi(supprimer_numero(generer_info_entite($id_objet, $objet, 'titre', '*')));
125
126        // Le titre secondaire composé des extensions.
127        if (!is_array($extensions)) {
128                $extensions = array(0 => $extensions);
129        }
130
131        // Les infos des extensions
132        $titre_secondaire = array();
133        $valeurs_extensions = array();
134        foreach($extensions as $extension) {
135                if ($id_extension = _request('id_prix_extension_' . $extension)) {
136                        if (!is_array($id_extension)) {
137                                $titre_secondaire = extraire_multi(
138                                        supprimer_numero(
139                                                generer_info_entite(
140                                                        $id_extension,
141                                                        $extension,
142                                                        'titre', '*'
143                                                        )
144                                                )
145                                        );
146                                $titres_secondaires[] = $titre_secondaire;
147                                $valeurs_extensions[] = array(
148                                        'objet' => $objet,
149                                        'id_objet' => $id_objet,
150                                        'titre' => $titre_secondaire,
151                                        'extension' => $extension,
152                                        'id_extension' => $id_extension
153                                );
154                        }
155                        else {
156                                foreach ($id_extension as $id) {
157                                        $titre_secondaire = extraire_multi(
158                                                supprimer_numero(
159                                                        generer_info_entite(
160                                                                $id,
161                                                                $extension,
162                                                                'titre', '*'
163                                                                )
164                                                        )
165                                                );
166                                        $titres_secondaires[] = $titre_secondaire;
167                                        $valeurs_extensions[] = array(
168                                                'objet' => $objet,
169                                                'id_objet' => $id_objet,
170                                                'titre' => $titre_secondaire,
171                                                'extension' => $extension,
172                                                'id_extension' => $id
173                                        );
174                                }
175                        }
176                }
177        }
178
179
180        if ($titres_secondaires) {
181                $titres_secondaires = implode(' / ', $titres_secondaires);
182                $titre = $titre . ' - ' . $titres_secondaires;
183        }
184
185        $table = 'spip_prix_objets';
186
187        $dernier_rang = sql_getfetsel(
188                'rang_lien',
189                $table,
190                'id_objet=' .$id_objet . ' AND objet LIKE ' . sql_quote($objet) . ' AND id_prix_objet_source=0',
191                '',
192                'rang_lien DESC'
193        );
194
195        // On inscrit dans la bd
196        $valeurs =  array(
197                        'id_objet' => $id_objet,
198                        'objet' => $objet,
199                        'code_devise' => _request('code_devise'),
200                        'titre' => $titre,
201                        'taxe' => _request('taxe'),
202                        'prix' => 0,
203                        'prix_ht' => 0,
204                        'rang_lien' => $dernier_rang + 1,
205                );
206
207        if ($ttc = _request('taxes_inclus')) {
208                $valeurs['prix'] = $prix;
209        }
210        else {
211                $valeurs['prix_ht'] = $prix;
212        }
213
214        // Enregistrement du prix
215        $id_prix_objet = sql_insertq($table, $valeurs);
216
217        // Enregistrement des extensions
218        foreach($valeurs_extensions as $valeur_extension) {
219                $valeur_extension['id_prix_objet_source'] = $id_prix_objet;
220                sql_insertq('spip_prix_objets', $valeur_extension);
221        }
222
223        // Ivalider le cache
224        include_spip('inc/invalideur');
225        suivre_invalideur("id='id_prix_objet/$id_prix_objet'");
226
227        return $valeur['message_ok'] = true;
228}
Note: See TracBrowser for help on using the repository browser.