Ejemplo n.º 1
0
/**
 * 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}");
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
 *                                                                         *
 *  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}" : '');
}
Ejemplo n.º 4
0
/**
 * 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;
}
Ejemplo n.º 5
0
 *                                                                         *
 *  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}" : '');
Ejemplo n.º 6
0
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;
}