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

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

fix : spip_version() pas tjr dispo + perf

File size: 2.2 KB
Line 
1<?php
2
3/**
4 * Déclaration systématiquement chargées
5 *
6 * @package SPIP\Saisies
7**/
8
9// Sécurité
10if (!defined('_ECRIRE_INC_VERSION')) {
11        return;
12}
13include_spip('plugins/installer');
14if (!function_exists('_T_ou_typo')) {
15        /**
16         * une fonction qui regarde si $texte est une chaine de langue
17         * de la forme <:qqch:>
18         * si oui applique _T()
19         * si non applique typo() suivant le mode choisi
20         *
21         * @param mixed $valeur
22         *     Une valeur à tester. Si c'est un tableau, la fonction s'appliquera récursivement dessus.
23         * @param string $mode_typo
24         *     Le mode d'application de la fonction typo(), avec trois valeurs possibles "toujours", "jamais" ou "multi".
25         * @return mixed
26         *     Retourne la valeur éventuellement modifiée.
27         */
28        function _T_ou_typo($valeur, $mode_typo = 'toujours') {
29                if (!in_array($mode_typo, array('toujours', 'multi', 'jamais'))) {
30                        $mode_typo = 'toujours';
31                }
32
33                // Si la valeur est bien une chaine (et pas non plus un entier déguisé)
34                if (is_string($valeur) and !intval($valeur)) {
35                        // Si on a dépassé 3.2, on peut uniquement utilser typo() car ça extrait les <:chaine:>
36                        $version = explode('.',$GLOBALS['spip_version_branche']);
37                        if ($version[0] > 3 or ($version[1] >= 2 and $version[0] == 3)) {
38                                if (
39                                        $mode_typo == 'toujours'
40                                        or (
41                                                $mode_typo == 'multi'
42                                                and include_spip('inc/filtres')
43                                                and (preg_match(_EXTRAIRE_IDIOME, $valeur) or strpos($valeur, '<multi>') !== false)
44                                        )
45                                ) {
46                                        include_spip('inc/texte');
47                                        $valeur = typo($valeur);
48                                }
49                        }
50                        // Si on est avant 3.2, on fait comme avant
51                        else {
52                                // Si la chaine est du type <:truc:> on passe à _T()
53                                if (preg_match('/^\<:(.*?):\>$/', $valeur, $match)) {
54                                        $valeur = _T($match[1]);
55                                } else {
56                                        // Sinon on la passe a typo()
57                                        if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)) {
58                                                include_spip('inc/texte');
59                                                $valeur = typo($valeur);
60                                        }
61                                }
62                        }
63                }
64                // Si c'est un tableau, on réapplique la fonction récursivement
65                elseif (is_array($valeur)) {
66                        foreach ($valeur as $cle => $valeur2) {
67                                $valeur[$cle] = _T_ou_typo($valeur2, $mode_typo);
68                        }
69                }
70
71                return $valeur;
72        }
73}
Note: See TracBrowser for help on using the repository browser.