Valider 9652f772 rédigé par Fil's avatar Fil
Parcourir les fichiers

extraire sous forme de _dist surchargeable la fonction qui calcule les URLs...

extraire sous forme de _dist surchargeable la fonction qui calcule les URLs des objets distants ; on peut ainsi passer de l'affreux {{{spip.php?page=article&id_article=3&connect=distant}}} a un merveilleux {{{http://site-distant/url-propre}}}

code de la fonction alternative :
{{{

function urls_connect($i, &$entite, $args='', $ancre='', $connect='') {
	static $sites = array();

	if (is_numeric($i)) {
		// * on va commencer par essayer une url propre distante, hein
		if ($s = spip_query("SELECT url FROM spip_urls WHERE type=".sql_quote($entite, $connect)." AND id_objet=".sql_quote($i, $connect)." ORDER BY date DESC LIMIT 1", $connect)
		AND $t = sql_fetch($s)) {
			$url = $t['url'];
		} else if ($entite == 'article') {

			$url = "$i";  // on emploie la redirection url courte
		} else
			$url = ''; // echec, on envoie sur la home

		if (!isset($sites[$connect]))
			$sites[$connect] = sql_fetch(spip_query("SELECT valeur as url FROM spip_meta WHERE nom='adresse_site'", $connect));

		return url_absolue($url, $sites[$connect]['url']);
	}
}


}}}

parent b8705d0c
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+33 −23
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1020,14 +1020,6 @@ function generer_url_entite($id='', $entite='', $args='', $ancre='', $public=NUL
		if (!$entite) return '';
		include_spip('inc/urls');
		$res = generer_url_ecrire_objet($entite,$id, $args, $ancre, false);
	} else {
		if (is_string($public) AND !is_numeric($public)) {
			include_spip('base/connect_sql');
			$id_type = id_table_objet($entite,$public);
			return _DIR_RACINE . get_spip_script('./')
			  . "?"._SPIP_PAGE."=$entite&$id_type=$id&connect=$public"
			  . (!$args ? '' : "&$args")
			  . (!$ancre ? '' : "#$ancre");
	} else {
		if ($type === NULL) {
			$type = ($GLOBALS['type_urls'] === 'page'
@@ -1037,14 +1029,21 @@ function generer_url_entite($id='', $entite='', $args='', $ancre='', $public=NUL
		}

		$f = charger_fonction($type, 'urls', true);
			// se rabatre sur les urls page si les urls perso non dispo
			if (!$f)
				$f = charger_fonction('page', 'urls', true);
		// se rabattre sur les urls page si les urls perso non dispo
		if (!$f) $f = charger_fonction('page', 'urls', true);

		// si $entite='', on veut la fonction de passage URL ==> id
			if (!$entite) return $f;
		// sinon on veut effectuer le passage id ==> URL
			$res = !$f ? '' : $f(intval($id), $entite, $args, $ancre);
		}
		if (!$entite) return $f;

		// mais d'abord il faut tester le cas des urls sur une
		// base distante
		if (is_string($public)
		AND $g = charger_fonction('connect', 'urls', true))
			$f = $g;

		$res = $f(intval($id), $entite, $args, $ancre, $public);

	}
	if ($res) return $res;
	// Sinon c'est un raccourci ou compat SPIP < 2
@@ -1077,6 +1076,17 @@ function generer_url_ecrire_entite_edit($id, $entite, $args='', $ancre=''){
	return $url;
}

// http://doc.spip.org/@urls_connect_dist
function urls_connect_dist($i, &$entite, $args='', $ancre='', $public=null) {
	include_spip('base/connect_sql');
	$id_type = id_table_objet($entite,$public);
	return _DIR_RACINE . get_spip_script('./')
	  . "?"._SPIP_PAGE."=$entite&$id_type=$i&connect=$public"
	  . (!$args ? '' : "&$args")
	  . (!$ancre ? '' : "#$ancre");
}


// Transformer les caracteres utf8 d'une URL (farsi par ex) selon la RFC 1738
function urlencode_1738($url) {
	$uri = '';