source: spip-zone/_plugins_/spip_proprietaire/spip_3/spip_proprio_fonctions.php @ 93035

Last change on this file since 93035 was 93035, checked in by teddy.spip@…, 4 years ago

Sur la zone, on est en tabulation et non en espace pour l'indentation (nicod_)

  • Property svn:executable set to *
File size: 11.4 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7// ---------------------------------------
8// FONCTIONS
9// ---------------------------------------
10
11function make_google_map_proprietaire($conf, $who = 'proprietaire')
12{
13        $str = $google_str = '';
14        if (isset($conf[$who.'_adresse_rue']) and strlen($conf[$who.'_adresse_rue'])) {
15                $str .= str_replace(array(',', ';', '.', ':', '/'), '', strip_tags($conf[$who.'_adresse_rue']));
16        }
17        if (isset($conf[$who.'_adresse_code_postal']) and strlen($conf[$who.'_adresse_code_postal'])) {
18                $str .= ' '.str_replace(array(',', ';', '.', ':', '/'), '', strip_tags($conf[$who.'_adresse_code_postal']));
19        }
20        if (isset($conf[$who.'_adresse_ville']) and strlen($conf[$who.'_adresse_ville'])) {
21                $str .= ' '.str_replace(array(',', ';', '.', ':', '/'), '', strip_tags($conf[$who.'_adresse_ville']));
22        }
23        if (strlen($str)) {
24                $entries = explode(' ', $str);
25                foreach ($entries as $entry) {
26                        if (strlen($entry)) {
27                                $google_str .= urlencode($entry).'+';
28                        }
29                }
30                $google_str = trim($google_str, '+');
31
32                return $google_str;
33        }
34
35        return false;
36}
37
38// ---------------------------------------
39// CONFIG
40// ---------------------------------------
41
42function spip_proprio_enregistrer_config($args)
43{
44        if (!is_array($args)) {
45                return;
46        }
47        $mess = array();
48        $_conf = spip_proprio_recuperer_config();
49        $conf = $_conf ? array_merge($_conf, $args) : $args;
50        include_spip('inc/meta');
51        ecrire_meta(_META_SPIP_PROPRIO, serialize($conf), 'non');
52        ecrire_metas();
53
54        return true;
55}
56
57function spip_proprio_recuperer_config($str = '')
58{
59        if (!isset($GLOBALS['meta'][_META_SPIP_PROPRIO])) {
60                return;
61        }
62        $_conf = unserialize($GLOBALS['meta'][_META_SPIP_PROPRIO]);
63        if (strlen($str)) {
64                if (isset($_conf[$str])) {
65                        return $_conf[$str];
66                }
67
68                return false;
69        }
70
71        return $_conf;
72}
73
74/**
75 * Choix par defaut des options de presentation pour les formulaires.
76 */
77function spip_proprio_form_config()
78{
79        global $spip_ecran, $spip_lang, $spip_display;
80        $config = $GLOBALS['meta'];
81        $config['lignes'] = ($spip_ecran == 'large') ? 8 : 5;
82        $config['lignes_longues'] = $config['lignes'] + 15;
83        $config['afficher_barre'] = $spip_display != 4;
84        $config['langue'] = $spip_lang;
85        $config['_browser_caret'] = isset($GLOBALS['browser_caret']) ? $GLOBALS['browser_caret'] : '';
86
87        return $config;
88}
89
90// ---------------------------------------
91// TEXTES PROPRIETAIRE
92// ---------------------------------------
93
94/**
95 * Fonction de gestion des textes proprietaire.
96 */
97function spip_proprio_proprietaire_texte($str = '', $args = array(), $langdef = 'fr')
98{
99        $souvenir = $GLOBALS['spip_lang'];
100        $GLOBALS['spip_lang'] = $langdef;
101
102        // Verification que la langue existe
103//      $test = _T('proprietaire:exemple');
104        // Ne fonctionne pas correctement avec '_T', on reprend la traduction pure de SPIP
105        static $traduire = false;
106        if (!$traduire) {
107                $traduire = charger_fonction('traduire', 'inc');
108                include_spip('inc/lang');
109        }
110        $text = $traduire('proprietaire:test_fichier_langue', $GLOBALS['spip_lang']);
111
112        if (!isset($GLOBALS['i18n_proprietaire_'.$langdef])) {
113                $test = _T('texteslegaux:exemple');
114                creer_fichier_textes_proprietaire($GLOBALS['i18n_texteslegaux_'.$langdef], $langdef);
115                $GLOBALS['i18n_proprietaire_'.$langdef] = $GLOBALS['i18n_texteslegaux_'.$langdef];
116        }
117        $GLOBALS['spip_lang'] = $souvenir;
118
119        return _T('proprietaire:'.$str, $args);
120}
121
122/**
123 * Creation de tous les fichiers de langue 'proprietaire_XX'
124 * pour toutes les langues utilisees en partie publique.
125 */
126function spip_proprio_charger_toutes_les_langues()
127{
128        // on force le chargement de proprietaire_XX si present
129        // pour toutes les langues utilisees en partie publique
130        $langues_du_site = array('fr');
131        foreach (array('langues_utilisees', 'langues_multilingue', 'langue_site') as $ln_meta) {
132                if (isset($GLOBALS['meta'][$ln_meta])) {
133                        $langues_du_site = array_merge($langues_du_site, explode(',', $GLOBALS['meta'][$ln_meta]));
134                }
135        }
136        $langues_du_site = array_unique($langues_du_site);
137        foreach ($langues_du_site as $ln) {
138                spip_proprio_proprietaire_texte('', '', $ln);
139        }
140
141        return;
142}
143
144function textes_proprietaire($array = false, $lang = null)
145{
146        if (is_null($lang)) {
147                $lang = $GLOBALS['spip_lang'];
148        }
149        $globale = 'i18n_proprietaire_'.$lang;
150
151        $ok1 = spip_proprio_proprietaire_texte();
152        if ($lang != 'fr') {
153                $ok2 = spip_proprio_proprietaire_texte('', '', $lang);
154        }
155        if (isset($GLOBALS["$globale"])) {
156                $GLOBALS["$globale"] = array_merge($GLOBALS['i18n_proprietaire_fr'], $GLOBALS["$globale"]);
157        } else {
158                $GLOBALS["$globale"] = $GLOBALS['i18n_proprietaire_fr'];
159        }
160        if ($array) {
161                return $GLOBALS["$globale"];
162        }
163
164        return false;
165}
166
167function charger_textes_proprietaire($bloc = true)
168{
169        include_spip('inc/presentation');
170        include_spip('inc/texte');
171        $div = '';
172
173        $valeurs = array();
174        $tableau = textes_proprietaire(true);
175        if (isset($tableau) and is_array($tableau)) {
176                ksort($tableau);
177                if ($bloc) {
178                        $div .= debut_cadre_relief('', true, '', '', 'raccourcis');
179                }
180                $div .= "\n<table class='spip' style='border:0;'>";
181                $div .= "\n<tr class='titrem'><th class='verdana1'>"._T('module_raccourci')."</th>\n<th class='verdana2'>"._T('module_texte_affiche')."</th></tr>\n";
182                $i = 0;
183                foreach ($tableau as $raccourci => $val) {
184                        $bgcolor = alterner(++$i, 'row_even', 'row_odd');
185                        $div .= "\n<tr class='$bgcolor'><td class='verdana2' style='min-width:150px;'>"
186                                ."<a href='".generer_url_ecrire('spip_proprio_textes', 'raccourci='.$raccourci)."' title='"._T('spipproprio:ptexte_cliquez_pour_editer')."'><b>$raccourci</b></td>\n"
187                                ."<td id='$raccourci' class='arial2 editable' style='min-width:300px;'>".propre($val).'</td></tr>';
188                }
189                $div .= '</table>';
190                if ($bloc) {
191                        $div .= fin_cadre_relief(true);
192                }
193        }
194
195        return $div;
196}
197
198function traiter_textes_proprietaire($raccourci, $lang = 'fr')
199{
200        include_spip('inc/texte');
201        $valeur = _request('value');
202        $array_langue = textes_proprietaire(true);
203//      $valeur = propre( $valeur );
204        if (strlen($valeur)) {
205                $array_langue[$raccourci] = $valeur;
206        } elseif (isset($array_langue[$raccourci])) {
207                unset($array_langue[$raccourci]);
208        }
209        if ($ok = creer_fichier_textes_proprietaire($array_langue, $lang)) {
210                return $valeur;
211        }
212
213        return false;
214}
215
216function creer_fichier_textes_proprietaire($array_langue, $lang = 'fr')
217{
218        $file = 'proprietaire_'.$lang;
219        $globale = 'i18n_proprietaire_'.$lang;
220        if (!file_exists(find_in_path('lang/'.$file))) {
221                include_spip('inc/flock');
222                $contenu = var_export($array_langue, true);
223                $contenu_final = '<'."?php\n\$GLOBALS['$globale'] = $contenu;\n?".'>';
224                $dir = _DIR_PLUGIN_SPIP_PROPRIO;
225                $a = ecrire_fichier(
226                        ($dir[strlen($dir) - 1] == '/' ? substr($dir, 0, -1) : $dir).'/lang/'.$file.'.php', $contenu_final
227                );
228
229                return $a;
230        }
231}
232
233function transformer_raccourci($str)
234{
235        include_spip('spip_proprio_fonctions');
236
237        return spip_proprio_formater_nom_fichier($str);
238}
239
240// ----------------------
241// FILTRE CHAINES
242// ----------------------
243
244/*
245 * Délimiteurs pour découpage, notamment des contacts
246 */
247global $spip_proprio_usual_delimiters;
248$spip_proprio_usual_delimiters = array(' ', '-', '_', '/', '.','#','\\','@');
249
250/**
251 * @param string $str La chaîne à analyser
252 *
253 * @return boolean/string Le délimiteur trouvé (en plus grand nombre), FALSE sinon
254 */
255function spip_proprio_usual_delimiters($str)
256{
257        global $spip_proprio_usual_delimiters;
258        $delim = false;
259        foreach ($spip_proprio_usual_delimiters as $delimiter) {
260                if (strpos($str, $delimiter)) {
261                        $delim = $delimiter;
262                }
263        }
264
265        return $delim;
266}
267
268/**
269 * fonction qui transforme les noms de fichiers.
270 *
271 * @todo decouper le nom du fichier pour enlever l'extension avant traitement, puis la remettre avant retour
272 */
273function spip_proprio_formater_nom_fichier($string, $spacer = '_')
274{
275        $search = array('@[éèêëÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i','@[ç]@i','@[^a-zA-Z0-9]@');
276        $replace = array('e','a','i','u','o','c',' ');
277        $string = preg_replace($search, $replace, $string);
278        $string = strtolower($string);
279        $string = str_replace(' ', $spacer, $string);
280        $string = preg_replace('#\-+#', $spacer, $string);
281        $string = preg_replace('#([-]+)#', $spacer, $string);
282        trim($string, $spacer);
283
284        return $string;
285}
286
287function spip_proprio_recuperer_extension($str)
288{
289        return substr(strrchr($str, '.'), 1);
290}
291
292/**
293 * Revue pour autoriser les numéros avec la mention "appel surtaxé"
294 * Basiquement, on ne re-formate que les chiffres, et on laisse '(+33)' le cas échéant.
295 */
296function spip_proprio_formater_telephone($str)
297{
298
299//echo "entrée dans la fct avec '$str'<br />";
300
301        // on isole ce qu'on considère comme la partie numéro
302        $numstr = spip_proprio_isoler_telephone($str, false);
303//echo "numéro isolé '$numstr'<br />";
304
305        // on recupère le numéro formaté
306        $numstr_formated = spip_proprio_isoler_telephone($str);
307//echo "numéro formaté '$numstr_formated'<br />";
308
309        $str = str_replace(trim($numstr), $numstr_formated, $str);
310//      $str = preg_replace('/[^0-9]/', '', $str);
311//      $str = str_replace(array('(+33)',' ','.'), '', $str);
312//      $str = str_replace(array(' ','.'), '', $str);
313//      $str = str_replace('(+33)', '(+33) ', $str);
314
315
316        return $str;
317}
318
319/**
320 * Ne renvoie que le numéro de tel, sans le +33.
321 *
322 * @param bool $strip_spaces Doit-on retirer les espaces (non pour la fonction 'spip_proprio_formater_telephone' | oui par defaut)
323 */
324function spip_proprio_isoler_telephone($str, $strip_spaces = true)
325{
326        $str = str_replace(array('(33)', '(+33)', '+33'), ' ', $str);
327        // isoler les chiffres en laissant les espaces internes
328        $str = trim($str, ' ');
329        $str = preg_replace('/[^0-9 \-\.\/]/', '', $str);
330        if ($strip_spaces) {
331                $str = str_replace(array(' ', '.'), '', $str);
332        }
333
334        return $str;
335}
336
337/*
338echo "<pre>";
339
340//echo "chaine de travail : ".$entry."<br />";
341//echo spip_proprio_isoler_telephone($entry, false)."<br />";
342//echo spip_proprio_isoler_telephone($entry)."<br />";
343
344echo spip_proprio_formater_telephone("(+33) 6 01 02 03 04 05 (appel surtaxé)")."<br />";
345echo "<br />";
346echo spip_proprio_formater_telephone("+33 6 01 02 03 04 05 (appel surtaxé)")."<br />";
347echo "<br />";
348echo spip_proprio_formater_telephone("(33) 6 01 02 03 04 05 (appel surtaxé)")."<br />";
349echo "<br />";
350echo spip_proprio_formater_telephone("08 01-02030405")."<br />";
351echo "<br />";
352echo spip_proprio_formater_telephone("06.69.04.52.34")."<br />";
353echo "<br />";
354echo spip_proprio_formater_telephone("06 69 04 52 34")."<br />";
355
356exit;
357*/
358/**
359 * Fonction mettant une apostrophe si nécessaire
360 * Cette fonction ne traite pas les cas particuliers (nombreux ...) ni les 'h' muet.
361 */
362function apostrophe($str = '', $article = '', $exception = false)
363{
364        // On retourne direct si non FR
365        if ($GLOBALS['spip_ang'] != 'fr') {
366                return $article.' '.$str;
367        }
368
369        $voyelles = array('a', 'e', 'i', 'o', 'u');
370        $article = trim($article);
371
372        $str_deb = substr(spip_proprio_formater_nom_fichier($str), 0, 1);
373        $article_fin = substr($article, -1, 1);
374
375        if (in_array($str_deb, $voyelles) or $exception) {
376                return substr($article, 0, strlen($article) - 1)."'".$str;
377        }
378
379        return $article.' '.$str;
380}
381
382function modifier_guillemets($str)
383{
384        return str_replace("'", '"', $str);
385}
386
387// ----------------------
388// FILTRE GENERATEUR D'IMAGE
389// ----------------------
390
391// Avec l'aide inestimable de Paris-Bayrouth (http://www.paris-beyrouth.org/)
392function spip_proprio_image_alpha($img, $alpha = '', $src = false)
393{
394        if (!$alpha or !strlen($alpha) or $alpha == '0') {
395                return $img;
396        }
397        include_spip('inc/filtres_images');
398        $image = _image_valeurs_trans($img, 'one', 'png');
399//var_export($image);
400        $img = image_alpha($img, $alpha);
401        if ($src) {
402                return(extraire_attribut($img, 'src'));
403        }
404
405        return $img;
406}
Note: See TracBrowser for help on using the repository browser.