source: spip-zone/_plugins_/saisies/saisies_options.php @ 75189

Last change on this file since 75189 was 69899, checked in by marcimat@…, 7 years ago

En complément de r54888 et suite à http://contrib.spip.net/Champs-Extras-3#forum460749 (jérome, marc hirt), s'arranger pour que les sérializations de tableau de type (cle|valeur) rendent possible les traductions des valeurs en utilisant _T_ou_typo sur chaque valeur de ces tableaux. On ne le fait que pour les clés 'datas' des saisies.

File size: 1.5 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6/*
7 * une fonction qui regarde si $texte est une chaine de langue
8 * de la forme <:qqch:>
9 * si oui applique _T()
10 * si non applique typo() suivant le mode choisi
11 *
12 * @param mixed $valeur
13 *     Une valeur à tester. Si c'est un tableau, la fonction s'appliquera récursivement dessus.
14 * @param string $mode_typo
15 *     Le mode d'application de la fonction typo(), avec trois valeurs possibles "toujours", "jamais" ou "multi".
16 * @return mixed
17 *     Retourne la valeur éventuellement modifiée.
18 */
19if (!function_exists('_T_ou_typo')){
20        function _T_ou_typo($valeur, $mode_typo='toujours') {
21                // Si la valeur est bien une chaine (et pas non plus un entier déguisé)
22                if (is_string($valeur) and !intval($valeur)){
23                        // Si la chaine est du type <:truc:> on passe à _T()
24                        if (preg_match('/^\<:(.*?):\>$/', $valeur, $match)) 
25                                $valeur = _T($match[1]);
26                        // Sinon on la passe a typo()
27                        else {
28                                if (!in_array($mode_typo, array('toujours', 'multi', 'jamais')))
29                                        $mode_typo = 'toujours';
30                       
31                                if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)){
32                                        include_spip('inc/texte');
33                                        $valeur = typo($valeur);
34                                }
35                        }
36                }
37                // Si c'est un tableau, on reapplique la fonction récursivement
38                elseif (is_array($valeur)){
39                        foreach ($valeur as $cle => $valeur2){
40                                $valeur[$cle] = _T_ou_typo($valeur2, $mode_typo);
41                        }
42                }
43
44                return $valeur;
45        }
46}
47
48?>
Note: See TracBrowser for help on using the repository browser.