[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / urls / page.php
diff --git a/www/ecrire/urls/page.php b/www/ecrire/urls/page.php
new file mode 100644 (file)
index 0000000..3cadac0
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2011                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+define('URLS_PAGE_EXEMPLE', 'spip.php?article12');
+
+####### modifications possibles dans ecrire/mes_options
+# on peut indiquer '.html' pour faire joli
+define ('_terminaison_urls_page', '');
+# ci-dessous, ce qu'on veut ou presque (de preference pas de '/')
+# attention toutefois seuls '' et '=' figurent dans les modes de compatibilite
+define ('_separateur_urls_page', '');
+# on peut indiquer '' si on a installe le .htaccess
+define ('_debut_urls_page', get_spip_script('./').'?');
+#######
+
+
+// http://doc.spip.org/@_generer_url_page
+function _generer_url_page($type,$id, $args='', $ancre='') {
+
+       if ($generer_url_externe = charger_fonction("generer_url_$type",'urls',true)) {
+               $url = $generer_url_externe($id, $args, $ancre);
+               if (NULL != $url) return $url;
+       }
+
+       if ($type == 'document') {
+               include_spip('inc/documents');
+               return generer_url_document_dist($id, $args, $ancre);
+       }
+
+       $url = _debut_urls_page . $type . _separateur_urls_page
+         . $id . _terminaison_urls_page;
+
+       if ($args) $args = strpos($url,'?') ? "&$args" : "?$args";
+       return _DIR_RACINE . $url . $args . ($ancre ? "#$ancre" : '');
+}
+
+// retrouve le fond et les parametres d'une URL abregee
+// le contexte deja existant est fourni dans args sous forme de tableau ou query string
+// http://doc.spip.org/@urls_page_dist
+function urls_page_dist($i, &$entite, $args='', $ancre='')
+{
+       if (is_numeric($i))
+               return _generer_url_page($entite, $i, $args, $ancre);
+
+       // traiter les injections du type domaine.org/spip.php/cestnimportequoi/ou/encore/plus/rubrique23
+       if ($GLOBALS['profondeur_url']>0 AND $entite=='sommaire'){
+               return array(array(),'404');
+       }
+
+       // voir s'il faut recuperer le id_* implicite et les &debut_xx;
+       if (is_array($args))
+               $contexte = $args;
+       else
+               parse_str($args,$contexte);
+       include_spip('inc/urls');
+       $r = nettoyer_url_page($i, $contexte);
+       if ($r) {
+               array_pop($r); // nettoyer_url_page renvoie un argument de plus inutile ici
+               return $r;
+       }
+
+       /*
+        * Le bloc qui suit sert a faciliter les transitions depuis
+        * le mode 'urls-propres' vers les modes 'urls-standard' et 'url-html'
+        * Il est inutile de le recopier si vous personnalisez vos URLs
+        * et votre .htaccess
+        */
+       // Si on est revenu en mode html, mais c'est une ancienne url_propre
+       // on ne redirige pas, on assume le nouveau contexte (si possible)
+       $url = $i;
+       $url_propre = isset($url)
+               ? $url
+               : (isset($_SERVER['REDIRECT_url_propre'])
+                       ? $_SERVER['REDIRECT_url_propre']
+                       : (isset($_ENV['url_propre'])
+                               ? $_ENV['url_propre']
+                               : ''
+                               ));
+       if ($url_propre) {
+               if ($GLOBALS['profondeur_url']<=0)
+                       $urls_anciennes = charger_fonction('propres','urls',true);
+               else
+                       $urls_anciennes = charger_fonction('arbo','urls',true);
+               return $urls_anciennes?$urls_anciennes($url_propre, $entite, $contexte):'';
+       }
+       /* Fin du bloc compatibilite url-propres */
+}
+
+?>