source: spip-zone/_plugins_/prix_objets/trunk/prix_objets_fonctions.php @ 78968

Last change on this file since 78968 was 78968, checked in by abelass@…, 6 years ago

branchiser

  • Property svn:executable set to *
File size: 8.4 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6include_spip('base/abstract_sql');
7
8
9function devises(){
10    $devises=array(
11   
12        //A
13        'AUD'=>'AUD',   
14             
15        //B
16        'BRL'=>'Real',               
17             
18        //C         
19        'CAD'=>'CAD',       
20        'CHF'=>'CHF',   
21        'CNY'=>'Yuan',
22        'CSD'=>'CSD',                       
23        'CZK'=>'CZK',
24                 
25        //D     
26        'DKK'=>'DKK', 
27             
28        //E     
29        'EUR'=>'€',
30             
31        //G         
32        'GBP'=>'£',
33             
34        //H
35        'HKD'=>'HKD',       
36        'HUF'=>'HUF',
37                 
38        //I             
39        'IDR'=>'IDR',               
40        'ILS'=>'Shekel',
41        'IQD'=>'IQD',       
42        'IRR'=>'IRR',       
43        'ISK'=>'ISK',   
44           
45        //J         
46        'JEP'=>'JEP',   
47        'JOD'=>'JOD',                       
48        'JMD'=>'JMD',               
49        'JPY'=>'¥',
50       
51        //K     
52        'KES'=>'KES',   
53        'KGS'=>'KGS',
54        'KWD'=>'KWD',           
55        'KZT'=>'Tenge',                         
56       
57        //L     
58        'LAK'=>'Kip',   
59        'LBP'=>'LBP',   
60        'LKR'=>'LKR',                           
61        'LRD'=>'LRD',   
62        'LTL'=>'Litas', 
63        'LVL'=>'Lat',                               
64                           
65        //M     
66        'MAD'=>'Dirham',     
67        'MDL'=>'MDL',                   
68        'MGA'=>'Ariary',   
69        'MKD'=>'MKD',           
70        'MNT'=>'Tughrik',           
71        'MRO'=>'Ouguiya',   
72        'MUR'=>'MUR',
73        'MVR'=>'Rufiyaa',                           
74        'MWK'=>'MWK',                   
75        'MXN'=>'MXN',
76        'MYR'=>'Ringgit',       
77        'MZN'=>'Metical',       
78       
79        //N     
80        'NAD'=>'NAD',
81        'NGN'=>'Naira',
82        'NIO'=>'Cordoba',           
83        'NPR'=>'NPR',                                   
84        'NOK'=>'NOK',       
85        'NZD'=>'NZD',
86       
87        //O     
88        'OMR'=>'OMR',
89               
90        'QAR'=>'Riyal',             
91       
92        //P     
93        'PGK'=>'Kina',
94        'PHP'=>'PHP',   
95        'PKR'=>'PKR',                               
96        'PLN'=>'Zloty', 
97           
98       
99        'RON'=>'RON',       
100        'RUB'=>'Rouble',           
101        'RWF'=>'RWF',
102       
103        //S     
104        'SCR'=>'SCR',           
105        'SDD'=>'SDD',                           
106        'SEK'=>'SEK',       
107        'SGD'=>'SGD',
108        'SOS'=>'SOS',       
109        'SLL'=>'Leone',         
110        'SRD'=>'SRD',       
111        'STD'=>'Dobra',
112        'SVC'=>'Colon',
113        'SYP'=>'SYP',                           
114               
115        //T
116        'THB'=>'Baht',             
117        'TJS'=>'Somoni',                   
118        'TND'=>'TND',   
119        'TMM'=>'TMM',                   
120        'TRY'=>'Lirasi',
121        'TTD'=>'TTD',       
122        'TWD'=>'TWD',
123        'TZS'=>'TZS',       
124           
125           
126        //U     
127        'UAH'=>'Hryvna',   
128        'UGX'=>'UGX',                                                   
129        'USD'=>'USD',
130        'UZS'=>'UZS',       
131       
132        //V     
133        'VND'=>'Dong',
134       
135        //X     
136        'XAF'=>'XAF',
137        'XOF'=>'XOF',   
138       
139        //Y     
140        'YER'=>'Rial',         
141       
142        //Z     
143        'ZMK'=>'ZMK',                               
144        'ZWN'=>'ZWN',       
145        );
146
147    return $devises;
148}
149
150// traduit le nom de la devise
151function traduire_devise($code_devise){
152        include_spip('inc/devises');
153   
154        $devises =devises();
155        $trad= $devises[$code_devise];
156
157        return $trad;
158}
159
160function prix_defaut($id_objet,$objet='article'){
161
162        if($_COOKIE['spip_devise'])$devise_defaut=$_COOKIE['spip_devise'];
163        elseif(lire_config('prix_objets/devise_default'))$devise_defaut=lire_config('prix_objets/devise_default');
164        else    $devise_defaut='EUR';
165
166        $req=sql_select('code_devise,prix','spip_prix_objets','id_objet='.$id_objet.' AND objet='.sql_quote($objet));
167
168        while($row=sql_fetch($req)){
169       
170                $prix= $row['prix'].' '.traduire_devise($row['code_devise']);
171       
172                if($row['code_devise']==$devise_defaut) $defaut = $row['prix'].' '.traduire_devise($row['code_devise']);
173        }       
174               
175        if($defaut)$defaut=$defaut;
176        else $defaut=$prix;
177
178        return $defaut;
179}
180
181function devise_defaut_prix($prix='',$traduire=true){
182
183    if($_COOKIE['spip_devise'])$devise_defaut=$_COOKIE['spip_devise'];
184    elseif(lire_config('prix_objets/devise_default'))$devise_defaut=lire_config('prix_objets/devise_default');
185    else    $devise_defaut='EUR';
186    $devise_defaut=traduire_devise($devise_defaut);
187    if($prix)$devise_defaut= $prix.' '.$devise_defaut;
188
189    return $devise_defaut;
190}
191
192
193
194function devise_defaut($id_objet,$objet='article'){
195    include_spip('inc/config');
196    $config=lire_config('prix_objets');
197
198        if(!$devise_defaut=$_COOKIE['geo_devise'])$devise_defaut=$config['devise_default'];
199        else    $devise_defaut='EUR';
200
201        $req=sql_select('code_devise,prix','spip_prix_objets','id_objet='.$id_objet.' AND objet='.sql_quote($objet));
202
203        while($row=sql_fetch($req)){
204       
205                $prix= $row['prix'].' '.traduire_devise($row['code_devise']);
206       
207                if($row['code_devise']==$devise_defaut) $defaut = $row['code_devise'];
208        }       
209               
210        if($defaut)$defaut=$defaut;
211        else $defaut=$prix;
212
213        return $defaut;
214}
215
216function traduire_code_devise($code_devise,$id_objet,$objet='article',$option=""){
217
218        $prix=sql_getfetsel('prix','spip_prix_objets','id_objet='.$id_objet.' AND objet='.sql_quote($objet).' AND code_devise ='.sql_quote($code_devise));
219
220        if($option=='prix') $orix=$prix.' '. traduire_devise($code_devise);
221               
222        return $prix;
223}
224
225function rubrique_prix($id='',$objet='article',$sousrubriques=false){
226        include_spip('inc/config');
227        include_spip('prive/formulaires/selecteur/generique_fonctions');
228
229        $rubrique_produit=picker_selected(lire_config('prix_objets/rubrique_prix',array()),'rubrique');
230
231        if($rubrique_produit){
232        $id_parent=$rubrique_produit;
233
234        if(!$sousrubriques){
235            $rubriques=$id_parent;
236            }
237        else $rubriques=array();
238
239        $rubriques=rubriques_enfant($id_parent,$rubriques);
240        if($id){
241            $retour=sql_getfetsel('id_'.$objet, 'spip_'.$objet.'s', 'id_'.$objet.'='.$id.' AND id_rubrique IN ('.implode(',',$rubriques).')');
242            }
243        else $retour=$rubriques;
244       }
245    else echo '<div class="erreur">veuillez configurer une rubrique produit</div>';
246return $retour;
247} 
248
249
250function rubriques_enfant($id_parent,$rubriques=array()){
251
252$id_p='';
253    if (is_array($id_parent))$id_parent=implode(',',$id_parent);
254
255
256    if($id_parent)$sql=sql_select('id_rubrique','spip_rubriques','id_parent IN ('.$id_parent.')');
257   
258    $id_p=array();
259    while($row=sql_fetch($sql)){
260        $id_p[]=$row['id_rubrique'];
261        $rubriques[]=$row['id_rubrique'];
262        }
263
264    if(count($id_p)>0)$rubriques=rubriques_enfant($id_p,$rubriques);
265return $rubriques;
266}
267
268//Surcharge de la fonction filtres_prix_formater_dist du plugin prix
269function filtres_prix_formater($prix){
270    include_spip('inc/config');
271    include_spip('inc/cookie');   
272    $config=lire_config('prix_objets');
273    $devises=isset($config['devises'])?$config['devises']:array();
274   
275    //Si il y a un cookie 'geo_devise' et qu'il figure parmis les devises diponibles on le prend
276    if(isset($_COOKIE['geo_devise']) AND in_array($_COOKIE['geo_devise'],$devises))$devise=$_COOKIE['geo_devise'];
277    // Sinon on regarde si il ya une devise defaut valable
278    elseif($config['devise_default'] AND in_array($config['devise_default'] ,$devises))$devise=$config['devise_default'];
279     // Sinon on prend la première des devises choisies
280    elseif(isset( $devises[0])) $devise=$devises[0];
281     // Sinon on met l'Euro
282    else $devise='EUR';
283
284    //On met le cookie
285    spip_setcookie('geo_devise',$devise, time() + 3660*24*365, '/');
286   
287    //On détermine la langue du contexte
288    if(isset($_COOKIE['spip_lang']))$lang=$_COOKIE['spip_lang'];
289    else $lang=lire_config('langue_site');
290
291    // Si PECL intl est présent on dermine le format de l'affichage de la devise selon la langue du contexte
292    if(function_exists('numfmt_create')){
293        $fmt = numfmt_create($lang, NumberFormatter::CURRENCY );
294        $prix = numfmt_format_currency($fmt, $prix,$devise);
295    }
296    //Sino on formate à la française
297    else $prix=$prix.'&nbsp;'.traduire_devise($devise);
298
299    return $prix;
300}
301
302
303?>
Note: See TracBrowser for help on using the repository browser.