/** * Crée une URL vers une page publique de SPIP * * @example * ``` * generer_url_public("rubrique","id_rubrique=$id_rubrique") * ``` * * @param string $script * Nom de la page * @param string|array $args * Arguments à transmettre a l'URL, * soit sous la forme d'un string tel que `arg1=yy&arg2=zz` * soit sous la forme d'un array tel que array( `arg1` => `yy`, `arg2` => `zz` ) * @param bool $no_entities * Si false : transforme les `&` en `&` * @param bool $rel * URL relative ? * * - false : l’URL sera complète et contiendra l’URL du site * - true : l’URL sera relavive. * @param string $action * - Fichier d'exécution public (spip.php par défaut) * @return string URL **/ function generer_url_public($script = '', $args = "", $no_entities = false, $rel = true, $action = '') { // si le script est une action (spip_pass, spip_inscription), // standardiser vers la nouvelle API if (!$action) { $action = get_spip_script(); } if ($script) { $action = parametre_url($action, _SPIP_PAGE, $script, '&'); } if ($args) { if (is_array($args)) { $r = ''; foreach ($args as $k => $v) { $r .= '&' . $k . '=' . $v; } $args = substr($r, 1); } $action .= (strpos($action, '?') !== false ? '&' : '?') . $args; } if (!$no_entities) { $action = quote_amp($action); } // ne pas generer une url avec /./?page= en cas d'url absolue et de _SPIP_SCRIPT vide return $rel ? _DIR_RACINE . $action : rtrim(url_de_base(), '/') . preg_replace(",^/[.]/,", "/", "/{$action}"); }
function _generer_url_propre($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; } } // Mode compatibilite pour conserver la distinction -Rubrique- if (_MARQUEUR_URL) { $marqueur = unserialize(_MARQUEUR_URL); $marqueur1 = isset($marqueur[$type . '1']) ? $marqueur[$type . '1'] : ''; // debut '+-' $marqueur2 = isset($marqueur[$type . '2']) ? $marqueur[$type . '2'] : ''; // fin '-+' } else { $marqueur1 = $marqueur2 = ''; } // fin // Mode propre $propre = declarer_url_propre($type, $id); if ($propre === false) { return ''; } // objet inconnu. raccourci ? if ($propre) { $url = _debut_urls_propres . $marqueur1 . $propre . $marqueur2 . _terminaison_urls_propres; // les urls de type /1234 sont interpretees comme urls courte vers article 1234 // on les encadre d'un - : /-1234- if (is_numeric($url)) { $url = "-" . $url . "-"; } if (!defined('_SET_HTML_BASE') or !_SET_HTML_BASE) { $url = str_repeat('../', $GLOBALS['profondeur_url']) . $url; } else { $url = _DIR_RACINE . $url; } } else { // objet connu mais sans possibilite d'URL lisible, revenir au defaut include_spip('base/connect_sql'); $id_type = id_table_objet($type); $url = _DIR_RACINE . get_spip_script('./') . "?" . _SPIP_PAGE . "={$type}&{$id_type}={$id}"; } // Ajouter les args if ($args) { $url .= (strpos($url, '?') === false ? '?' : '&') . $args; } // Ajouter l'ancre if ($ancre) { $url .= "#{$ancre}"; } return $url; }
* * * Copyright (c) 2001-2014 * * 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; } # donner un exemple d'url pour le formulaire de choix define('URLS_SIMPLE_EXEMPLE', 'spip.php?page=article&id_article=12'); ####### modifications possibles dans ecrire/mes_options # on peut indiquer '.html' pour faire joli define('_terminaison_urls_simple', ''); define('_debut_urls_simple', get_spip_script('./') . '?' . _SPIP_PAGE . '='); ####### function _generer_url_simple($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; } } $url = _debut_urls_simple . $type . "&" . id_table_objet($type) . "=" . $id . _terminaison_urls_simple; if ($args) { $args = strpos($url, '?') ? "&{$args}" : "?{$args}"; } return _DIR_RACINE . $url . $args . ($ancre ? "#{$ancre}" : ''); }
/** * Generer l'url arbo complete constituee des segments + debut + fin * * http://doc.spip.org/@_generer_url_arbo * * @param string $type * @param int $id * @param string $args * @param string $ancre * @return string */ function _generer_url_arbo($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; } } // Mode propre $propre = declarer_url_arbo($type, $id); if ($propre === false) { return ''; } // objet inconnu. raccourci ? if ($propre) { $url = _debut_urls_arbo . rtrim($propre, '/') . url_arbo_terminaison($type); } else { // objet connu mais sans possibilite d'URL lisible, revenir au defaut include_spip('base/connect_sql'); $id_type = id_table_objet($type); $url = get_spip_script('./') . "?" . _SPIP_PAGE . "={$type}&{$id_type}={$id}"; } // Ajouter les args if ($args) { $url .= (strpos($url, '?') === false ? '?' : '&') . $args; } // Ajouter l'ancre if ($ancre) { $url .= "#{$ancre}"; } return _DIR_RACINE . $url; }
* * * 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://code.spip.net/@_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; } } $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}" : '');
function _generer_url_propre($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); } // Mode compatibilite pour conserver la distinction -Rubrique- if (_MARQUEUR_URL) { $marqueur = unserialize(_MARQUEUR_URL); $marqueur1 = $marqueur[$type.'1']; // debut '+-' $marqueur2 = $marqueur[$type.'2']; // fin '-+' } else $marqueur1 = $marqueur2 = ''; // fin // Mode propre $propre = declarer_url_propre($type, $id); if ($propre === false) return ''; // objet inconnu. raccourci ? if ($propre) { $url = _debut_urls_propres . $marqueur1 . $propre . $marqueur2 . _terminaison_urls_propres; // Repositionne l'URL par rapport a la racine du site (#GLOBALS) $url = str_repeat('../', $GLOBALS['profondeur_url']).$url; } else { // objet connu mais sans possibilite d'URL lisible, revenir au defaut include_spip('base/connect_sql'); $id_type = id_table_objet($type); $url = _DIR_RACINE . get_spip_script('./')."?"._SPIP_PAGE."=$type&$id_type=$id"; } // Ajouter les args if ($args) $url .= ((strpos($url, '?')===false) ? '?' : '&') . $args; // Ajouter l'ancre if ($ancre) $url .= "#$ancre"; return $url; }