source: spip-zone/_plugins_/boussole/trunk/boussole_fonctions.php @ 62034

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

Premier lot d'optimisation de la boussole en SPIP 3

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3
4// ----------------------- Balises propres a Boussole ---------------------------------
5
6/**
7 * La balise #BOUSSOLE_INFOS renvoie :
8 * - soit le tableau des infos contenues dans la meta boussole_infos_<alias> si l'alias est fourni
9 * - soit la liste de tous les tableaux d'infos des meta boussole_infos_xxxx sinon
10 *
11 * @param string $p     alias de la boussole ou vide
12 * @return array        tableau des informations demandees (une boussole ou toutes les boussoles)
13 */
14function balise_BOUSSOLE_INFOS($p) {
15       
16        $alias = interprete_argument_balise(1,$p);
17        $alias = isset($alias) ? str_replace('\'', '"', $alias) : '""';
18
19        $p->code = 'calcul_boussole_infos('.$alias.')';
20
21        return $p;
22}
23
24function calcul_boussole_infos($alias) {
25
26        $infos = array();
27       
28        $where = array();
29        $group_by = array();
30        if ($alias)
31                $where[] = 'aka_boussole=' . sql_quote($alias);
32        else
33                $group_by[] = 'aka_boussole';
34
35        $akas_boussole = sql_allfetsel('aka_boussole', 'spip_boussoles', $where, $group_by);
36        if ($akas_boussole) {
37                foreach (array_map('reset', $akas_boussole) as $_aka_boussole) {
38                        $meta = sql_fetsel('valeur, maj', 'spip_meta', 'nom=' . sql_quote('boussole_infos_' . $_aka_boussole));
39                        if ($meta) {
40                                if ($alias)
41                                        $infos = array_merge(unserialize($meta['valeur']), array('maj' => $meta['maj']));
42                                else
43                                        $infos[] = array_merge(unserialize($meta['valeur']), array('maj' => $meta['maj']));
44                        }
45                }
46        }
47
48        return $infos;
49}
50
51
52// ----------------------- Filtres propres a Boussole ---------------------------------
53
54/**
55 * Renvoie la traduction d'un champ d'une boussole, d'un groupe ou d'un site
56 *
57 * @param string $aka_boussole  alias de la boussole
58 * @param string $champ                 champ a traduire
59 * @param string $alias                 alias du groupe ou du site
60 * @return string                               champ traduit
61 */
62function boussole_traduire($aka_boussole, $champ, $alias='') {
63        if ($champ == 'non')
64                return false;
65        $champs_boussole = array('nom_boussole', 'slogan_boussole','descriptif_boussole', 'titre_actualite');
66        $champs_groupe_site = array('nom_groupe', 'nom_site', 'slogan_site', 'nom_slogan_site', 'descriptif_site');
67
68        $traduction = '';
69        if ($aka_boussole) {
70                if (in_array($champ, $champs_boussole))
71                        $traduction = _T('boussole:' . $champ . '_' . $aka_boussole);
72                elseif (in_array($champ, $champs_groupe_site))
73                        if ($champ != 'nom_slogan_site')
74                                $traduction = _T('boussole:' . $champ . '_' . $aka_boussole . '_' . $alias);
75                        else
76                                $traduction = _T('boussole:nom_site_' . $aka_boussole . '_' . $alias) . ' - ' .
77                                                          _T('boussole:slogan_site_' . $aka_boussole . '_' . $alias);
78        }
79
80        return $traduction;
81}
82
83?>
Note: See TracBrowser for help on using the repository browser.