source: spip-zone/_plugins_/metaplus/trunk/metasplus_trouver_contexte_fonctions.php @ 108717

Last change on this file since 108717 was 108717, checked in by tcharlss@…, 2 years ago

Optimisations d'après les conseils de Cedric et RastaPopoulos? (sous réserve d'avoir bien tout pigé :p). On retrouve le contexte au moyen d'un squelette pour bénéficier de la mise en cache. Ensuite on utilise le pipeline affichage_final au lieu de insert_head, ce qui évite d'avoir besoin d'un fichier d'options (moins de fonctions dispersées et un truc en moins à inclure). Petites optimisations du code du pipeline également.

File size: 1.5 KB
Line 
1<?php
2/**
3 * Fonctions utiles à ce squelette
4 */
5
6/**
7 * Retrouver le contexte d'après l'URL : type de page, objet éventuel
8 *
9 * @Note
10 * Il n'est pas recommandé d'utiliser $GLOBALS['contexte], donc on utilise la fonction qui décode l'URL et retourne les bonnes infos :
11 * [0]            => page (le fond)
12 * [1][id_patate] => id si page d'un objet
13 * [1][erreur]    => erreur éventuelle (404)
14 *
15 * @param string $url
16 * @return array En gros on reformate le tableau retourné par decoder_url
17 * [type-page]
18 * [objet]
19 * [id_objet]
20 * [id_patate]
21 * [erreur] true si page en erreur
22 */
23function metasplus_trouver_contexte($url) {
24
25        $res              = array();
26        $decoder_url      = charger_fonction('decoder_url', 'urls');
27        $decodage         = $decoder_url($url);
28        $res['type-page'] = $decodage[0];
29        $res['erreur']    = isset($decodage[1]['erreur']) ? true : false;
30
31        // 1) Si la page est identifiée et pas en erreur, on regarde s'il s'agit d'un objet
32        if ($res['type-page']
33                and !$res['erreur']
34        ) {
35                include_spip('base/objets');
36                $id_table_objet = id_table_objet($res['type-page']);
37                $id_objet = isset($decodage[1][$id_table_objet]) ? $decodage[1][$id_table_objet] : null;
38                if ($id_objet) {
39                        $res['objet'] = $res['type-page'];
40                        $res['id_objet'] = $id_objet;
41                        $res[$id_table_objet] = $id_objet; // ça peut servir
42                }
43
44        // 2) Sinon c'est en principe une page lambda avec 'page' en query string
45        } elseif (!$res['type-page']) {
46                $res['type-page'] = _request('page');
47        }
48
49        return $res;
50}
Note: See TracBrowser for help on using the repository browser.