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

Last change on this file since 109979 was 109979, checked in by maieul@…, 6 months ago

Charger le fichier qui défini image_alpha
Michu, contrib
https://contrib.spip.net/Mentions-Legales#forum496694sep

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