source: spip-zone/_core_/plugins/urls_etendues/urls/simple.php

Last change on this file was 119525, checked in by spip.franck@…, 9 months ago

Bonne année "urls_etendues"

File size: 3.3 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2020                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17# donner un exemple d'url pour le formulaire de choix
18define('URLS_SIMPLE_EXEMPLE', 'spip.php?page=article&id_article=12');
19
20####### modifications possibles dans ecrire/mes_options
21# on peut indiquer '.html' pour faire joli
22define('_terminaison_urls_simple', '');
23define('_debut_urls_simple', get_spip_script('./') . '?' . _SPIP_PAGE . '=');
24#######
25
26
27function _generer_url_simple($type, $id, $args = '', $ancre = '') {
28
29        if ($generer_url_externe = charger_fonction("generer_url_$type", 'urls', true)) {
30                $url = $generer_url_externe($id, $args, $ancre);
31                if (null != $url) {
32                        return $url;
33                }
34        }
35
36        $url = _debut_urls_simple . $type
37                . '&' . id_table_objet($type) . '='
38                . $id . _terminaison_urls_page;
39
40        if ($args) {
41                $args = strpos($url, '?') ? "&$args" : "?$args";
42        } else {
43                $args = '';
44        }
45
46        return _DIR_RACINE . $url . $args . ($ancre ? "#$ancre" : '');
47}
48
49// retrouve le fond et les parametres d'une URL abregee
50// le contexte deja existant est fourni dans args sous forme de tableau ou query string
51// https://code.spip.net/@urls_page_dist
52function urls_simple_dist($i, &$entite, $args = '', $ancre = '') {
53        if (is_numeric($i)) {
54                include_spip('urls/page');
55
56                return _generer_url_simple($entite, $i, $args, $ancre);
57        }
58        // traiter les injections du type domaine.org/spip.php/cestnimportequoi/ou/encore/plus/rubrique23
59        if ($GLOBALS['profondeur_url'] > 0 and $entite == 'sommaire') {
60                return array(array(), '404');
61        }
62
63        // voir s'il faut recuperer le id_* implicite et les &debut_xx;
64        if (is_array($args)) {
65                $contexte = $args;
66        } else {
67                parse_str($args, $contexte);
68        }
69        include_spip('inc/urls');
70        $r = nettoyer_url_page($i, $contexte);
71        if ($r) {
72                array_pop($r); // nettoyer_url_page renvoie un argument de plus inutile ici
73                return $r;
74        }
75
76        if ($type = _request(_SPIP_PAGE)
77                and $_id = id_table_objet($type)
78                and $id = _request($_id)
79        ) {
80                $contexte[$_id] = $id;
81
82                return array($contexte, $type, null, $type);
83        }
84
85        /*
86         * Le bloc qui suit sert a faciliter les transitions depuis
87         * le mode 'urls-propres' vers les modes 'urls-standard' et 'url-html'
88         * Il est inutile de le recopier si vous personnalisez vos URLs
89         * et votre .htaccess
90         */
91        // Si on est revenu en mode html, mais c'est une ancienne url_propre
92        // on ne redirige pas, on assume le nouveau contexte (si possible)
93        $url_propre = $i;
94        if ($url_propre) {
95                if ($GLOBALS['profondeur_url'] <= 0) {
96                        $urls_anciennes = charger_fonction('propres', 'urls', true);
97                } else {
98                        $urls_anciennes = charger_fonction('arbo', 'urls', true);
99                }
100
101                return $urls_anciennes ? $urls_anciennes($url_propre, $entite, $contexte) : '';
102        }
103        /* Fin du bloc compatibilite url-propres */
104}
Note: See TracBrowser for help on using the repository browser.