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

Last change on this file since 65521 was 65521, checked in by maieul@…, 9 years ago

pour les traductions autre que wissen/bible/unbound, on met en suffixe de la fonction la traduction

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