source: spip-zone/_plugins_/spip-bible/trunk/bible_fonctions.php

Last change on this file was 109155, checked in by Maïeul Rouquette, 3 years ago

sécurité (surtout pour pouvoir tester git.spip.net)

File size: 10.1 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4include_spip('inc/bible_tableau');
5
6
7function bible_supprimer_retour($texte){
8   
9    $texte = preg_replace("#\t#",'',$texte);
10   
11    $texte = preg_replace("# {2,}#",'',$texte);
12    $texte = preg_replace("#[\r|\n][\r|\n]#",'',$texte);
13   
14 return $texte;
15}
16function bible_traduire_abreviation($abrev,$lang_original,$lang_traduction){
17        $tableau_gateway = bible_tableau("gateway");
18        $tableau_originales = bible_tableau('original');
19        if (array_key_exists($lang_traduction,$tableau_originales)){
20                return $abrev; 
21               
22        }
23
24        $livre = livre_seul($abrev);
25       
26        $numero = $tableau_gateway[$lang_original][$livre];
27       
28        $tableau_inverse = array_flip($tableau_gateway[$lang_traduction]);
29        $livre_traduit = $tableau_inverse[$numero];
30       
31        return str_replace($livre,$livre_traduit,$abrev);
32
33
34}
35
36function bible_test_livre_seul($i){
37        if (preg_match('#[0-9|,|-]+$#',$i)){ return 'non';}
38        else {return 'oui';}
39
40}
41function livre_seul($i){
42        return preg_replace('#[0-9|,|-]+$#','',$i);
43
44}
45function bible_analyser_ref($passage,$traduction){
46        $tableau_traduction = bible_tableau('traduction');
47        $tableau_separateur = bible_tableau('separateur');
48        $tableau_livres = bible_tableau('livres');
49        global $spip_lang;
50        $verset_debut = '';
51
52        $lang = $tableau_traduction[$traduction]['lang'];
53        $langues_originales = bible_tableau('original');
54        array_key_exists($lang,$langues_originales) ? $lang = $spip_lang : $lang = $lang;
55       
56        $separateur = $tableau_separateur[$lang];
57   
58        $livres=$tableau_livres[$lang];
59       
60        // phase d'anaylse
61       
62        $tableau = explode('-',$passage);
63        if (count($tableau)==2){
64                $fin=$tableau[1];
65                //chercher chapitre et verset de fin
66                        $tableau2 = explode(',',$fin);
67                        if (count($tableau2)==1){
68                               
69                                $verset_fin = $tableau2[0];}
70                        else{
71                                $chapitre_fin   = $tableau2[0];
72                                $verset_fin = $tableau2[1];}                   
73               
74                }
75       
76        $debut = $tableau[0];
77       
78        $livre = livre_seul($debut);
79       
80        if (!array_key_exists($livre,$livres)){
81                return _T('bible:pas_livre');
82       
83        }
84
85        $debut = str_replace($livre,'',$debut);
86       
87       
88        //problème Isaïe / Esaïe => on converti dans la bonne confession
89        if ($lang=='fr' and ($livre == 'Is' or $livre =='Es' )){
90           $livre = $tableau_traduction[$traduction]['isaie'];
91           $isaie=true;
92       
93       
94        }
95       
96        //chercher chapitre et verset du début
97       
98        $tableau = explode(',',$debut);
99        if (count($tableau)==2){
100                $verset_debut = $tableau[1];}
101        else{
102                if (count($tableau2)==1){
103                        $chapitre_fin=$tableau2[0];
104                        $verset_fin='';
105                }
106               
107       
108                }
109        $chapitre_debut  = $tableau[0]; 
110               
111       
112        // si reference courte
113        if ($chapitre_fin==''){$chapitre_fin=$chapitre_debut;};
114       
115        if ($verset_debut=='' and count($tableau2)==2){$verset_debut=1;
116        $verset_fin=='';
117        $chapitre_fin=$chapitre_debut;};
118        if ($verset_fin=='' and (count($tableau)==2)){$verset_fin=$verset_debut;}
119    return  array($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin);
120}
121
122function bible($passage,$traduction='jerusalem',$mode_test=false){
123
124       
125        $tableau_traduction = bible_tableau('traduction');
126        $tableau_separateur = bible_tableau('separateur');
127       
128    global $spip_lang;
129       
130        $traduction = strtolower($traduction);
131       
132        $erreur = true;
133       
134        if (array_key_exists($traduction,$tableau_traduction)){$erreur = false;};
135               
136        if ($erreur) { 
137                return _T('bible:traduction_pas_dispo');
138        }
139    $lang = $tableau_traduction[$traduction]['lang'];
140    $langues_originales = bible_tableau('original');
141    $lang_original = $lang;
142               
143       
144        //si langue originel
145        foreach ($langues_originales as $i=>$dir){
146                if ($i ==$lang){
147                $original = true;
148                $lang     = $spip_lang;
149                $lang_original = $i;
150                $dir = $dir;
151                include_spip('inc/lang');
152                break;
153                }
154       
155        }
156        $separateur = $tableau_separateur[$lang];
157
158    $tableau_analyse = bible_analyser_ref($passage,$traduction);
159    if (!is_array($tableau_analyse)){
160        return $tableau_analyse;
161    }
162    if ($mode_test){
163           return ;
164        }
165       
166       
167
168    $livre = $tableau_analyse[0];
169    $chapitre_debut = $tableau_analyse[1];
170    $verset_debut = $tableau_analyse[2];
171    $chapitre_fin = $tableau_analyse[3];
172    $verset_fin = $tableau_analyse[4];
173   
174   
175    $gateway = $tableau_traduction[$traduction]['gateway'];
176        $wissen  = $tableau_traduction[$traduction]['wissen'];
177        $unbound = $tableau_traduction[$traduction]['unbound']; 
178    $lire = $tableau_traduction[$traduction]['lire'];
179       
180        if ($lire){
181                include_spip('traduction/lire');
182                $tableau = recuperer_passage_lire($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$lire,$lang);
183        }
184       
185        else if ($unbound){
186                include_spip('traduction/unbound');
187                $tableau = recuperer_passage_unbound($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$unbound,$lang);
188        }
189               
190               
191        else if ($wissen){
192                $isaie == true ? $livre = str_replace('Es','Is',$livre) : $passage = $passage;
193                include_spip('traduction/wissen');
194                $tableau = recuperer_passage_wissen($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$wissen,$lang);
195               
196                }
197       
198        else if ($gateway){
199                include_spip('traduction/gateway');
200                $tableau = recuperer_passage_gateway($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$gateway,$lang);
201
202               
203        }
204       
205        else{
206       
207                include_spip('traduction/'.$traduction);
208                $fonction= 'recuperer_passage_'.$traduction;
209                $tableau = $fonction($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$lang);
210        }
211        include_spip('inc/utils');
212       
213        return (array('passage_texte'=>$tableau,'passage'=>$tableau_analyse,'lang_original'=>$lang_original,'spip_lang'=>$spip_lang,'lang'=>$lang,'separateur'=>$separateur));
214       
215        }
216function livre_long($i,$lang=''){
217        global $spip_lang;
218        $lang =='' ? $lang = $spip_lang : $lang=$lang;
219       
220        $i = livre_seul($i);
221       
222        $tableau_livres = bible_tableau('livres');
223       
224        return $tableau_livres[$lang][$i];
225
226}
227function filtre_ref($i){
228        global $spip_lang;
229        $tableau_livres = bible_tableau('livres');
230       
231        $livre =livre_seul($i);
232        $trad = $tableau_livres[$spip_lang][$livre];
233       
234        $c = str_replace($livre,'',$i);
235       
236        return $trad.' '.$c; 
237       
238       
239}
240function bible_afficher_references_direct($ref,$traduction,$lang,$nommer_trad=true){
241        $t = bible_analyser_ref($ref,$traduction);
242        $tableau_separateur = bible_tableau('separateur');
243        $lang_version           = info_bible_version($traduction,'lang_abrev');
244        $separateur = $tableau_separateur[$lang_version];
245        return afficher_references_archive($t[0],$t[1],$t[2],$t[3],$t[4],$traduction,$separateur,$lang,$nommer_trad);
246}
247function afficher_references_archive($livre,$cd,$vd,$cf,$vf,$trad,$separateur,$lang,$nommer_trad='true',$propre='oui',$url='oui',$forme_livre='abbr'){
248        // fonction archivistique, pour compat ascendante, mais déconseillé d'emploi
249        $tab = array(
250            "livre"     => $livre,
251            "cd"        => $cd,
252            "vd"        => $vd,
253            "cf"        => $cf,
254            "vf"        => $vf,
255            "trad"      => $trad,
256            "separateur"=> $separateur,
257            "lang"      => $lang,
258            "nommer_trad" => $nommer_trad == true ? "oui" : $nommer_trad,
259            "url"       => $url,
260            "forme_livre" =>$forme_livre
261        );
262        return afficher_references($tab);
263        }
264function afficher_references($param){
265        $tableau_traduction = bible_tableau('traduction');
266        $tableau_livres = bible_tableau('livres');
267        $param["trad"] = strtolower($param["trad"]);
268        $traduction = $tableau_traduction[$param["trad"]]['traduction'];
269       
270        $livre_long = $tableau_livres[$param["lang"]][$param["livre"]] ;
271       
272        $param["livre"] = str_replace('1','1 ',$param["livre"]);
273        $param["livre"] = str_replace('2','2 ',$param["livre"]);
274        $param["livre"] = str_replace('3','3 ',$param["livre"]);
275       
276        $affichage_livre = recuperer_fond("forme_livre/".$param['forme_livre'],
277                array(
278                    "livre_long"        =>$livre_long,
279                    "livre"             =>$param["livre"],
280                ))
281            ." ";
282    if ($param["nommer_trad"]=='oui'){
283        if ($param["url"]=='oui'){
284             $param["url"] = bible_url_passage($param["livre"],$param["cd"],$param["vd"],$param["cf"],$param["vf"],$param["trad"],$param["lang"]);
285                 $bloc_fin = " ({[".$traduction."->".$param['url']."]})"; 
286            }
287            else{
288                  $bloc_fin = " ({$traduction})" ;
289            }
290        }
291        else {
292            $bloc_fin='';
293        }
294       
295        if ($param["cd"]==$param["cf"] and $param["vd"]=='' and $param["vf"]==''){
296               
297                $chaine = $affichage_livre.$param["cd"];
298       
299        }
300       
301        else if ($param["vd"]=='' and $param["vf"]==''){
302               
303                $chaine = $affichage_livre.$param["cd"].'-'.$param["cf"];
304       
305        }
306    else{
307        $chaine = $affichage_livre.$param["cd"].$param["separateur"]." ".$param["vd"];
308       
309        if ($param["cd"]!=$param["cf"]){
310                       
311                $chaine .= '-'.$param["cf"].$param["separateur"].' '.$param["vf"];
312       
313        }
314        elseif ($param["vd"]!=$param["vf"]) {
315               
316                $chaine .= '-'.$param["vf"];
317               
318        }
319    }
320        $chaine.= $bloc_fin;
321   
322        return $chaine;
323
324}
325function bible_url_passage($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$traduction,$lang){
326    $tableau_traduction = bible_tableau('traduction');
327   
328    $gateway = $tableau_traduction[$traduction]['gateway'];
329        $wissen  = $tableau_traduction[$traduction]['wissen'];
330        $unbound = $tableau_traduction[$traduction]['unbound']; 
331    $lire = $tableau_traduction[$traduction]['lire'];
332
333        if ($lire){
334                include_spip('traduction/lire');
335                $url = generer_url_passage_lire($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$lire,$lang);
336        }
337        else if ($unbound){
338                include_spip('traduction/unbound');
339                $url = generer_url_passage_unbound($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$unbound,$lang);
340        }       
341        else if ($wissen){
342                $isaie == true ? $livre = str_replace('Es','Is',$livre) : $passage = $passage;
343                include_spip('traduction/wissen');
344                $url = generer_url_passage_wissen($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$wissen,$lang);
345               
346                }
347       
348        else if ($gateway){
349                include_spip('traduction/gateway');
350                $url = generer_url_passage_gateway($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$gateway,$lang);     
351        }
352        else{
353                include_spip('traduction/'.$traduction);
354                $fonction= 'generer_url_passage_'.$traduction;
355                $url = $fonction($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$lang);
356        }
357
358    return $url;
359}
360function traduction_longue($i){
361       
362        $tableau_traduction = bible_tableau('traduction');
363        return $tableau_traduction[$i]['traduction'];
364        }
365       
366function traduction_defaut($lang){
367        $normal =  lire_config('bible/traduction_'.$lang);
368        //pour compatibilite
369        $normal ='' ? $lire_config =lire_config('bible/traduction') : $normal = $normal;
370        return $normal;
371}
372
373
374
375?>
Note: See TracBrowser for help on using the repository browser.