Valider 920f4115 rédigé par esj's avatar esj
Parcourir les fichiers

[12429] a tellement généralisé la production d'URL à travers la fonction...

[12429] a tellement généralisé la production d'URL à travers la fonction {{{generer_url_entite}}} que celle-ci inclut à présent sans mal le cas d'une production pour site distant assurée seulement par {{{calculer_url}}} auparavant. On évacue donc la fonction surchargeable méconnue {{{inc_lien}}} en généralisant le 5e argument de {{{generer_url_entite}}} que [12429] avait décrit sommairement:

- s'il vaut explicitement {{{false}}}, on utilise la fonction {{{generer_url_ecrire_}}}{{entite}} (autrement dit on produit une URL vers l'espace privé), quel que soit l'espace où on se trouve;

- s'il n'est pas fourni à l'appel (ou s'il n'est pas une chaîne), on produit comme ci-dessus si on est dans l'espace privé, sinon on utilise la fonction {{{generer_url_}}}{{entite}} indiquée par le type d'URLs (6e argument ou meta {{{type_urls}}});

- si c'est une chaîne, c'est l'argument {{{connect}}} indiquant un site distant, on produit une URL publique vers ce site.

Le fichier inc/lien.php ne sert plus qu'à calculer le libellé du lien (le champ NOM pour les auteurs, le champ TITRE autrement etc). Il y aurait peut-être aussi une unification à faire avec le code des URLs propres, qui fait à peu près la même chose sur ce point.
parent 47d12b63
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −27
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -12,33 +12,7 @@

if (!defined("_ECRIRE_INC_VERSION")) return;

// Calcul des raccourcis
// Idealement generer_url_entite delegue au jeu 'type_urls' qui les gere
// Par souci de compatibilite on teste toujours l'existence des fonctions
// generer_url_<RACCOURCI> et generer_url_<RACCOURCI>_dist

// http://doc.spip.org/@inc_lien_dist
function inc_lien_dist($type,$id,$args,$ancre,$texte='',$pour='url',$connect='') {
	if ($connect) {
		$id_type = ($type != 'site') ? "id_$type" : 'id_syndic';
		$res = get_spip_script('./')
		. "?"._SPIP_PAGE."=$type&$id_type=$id&connect=$connect"
		. (!$args ? '' : "&$args");
	} else {
		$g = 'generer_url_' . $type;
		if (function_exists($g) OR function_exists($g .= '_dist')) 
			$g = $g($id, $args, $ancre);
		else $g = false;
		if (!$g) $g = generer_url_entite($id, $type, $args, $ancre);
		if (!$g) return false;
		$res = $g;
	}
	if ($pour == 'url') return array($res);
	$g = 'calculer_url_' . $type;
	if (!(function_exists($g) OR function_exists($g .= '_dist')))
		return array($res);
	return $g($id, $texte, $res, $connect);
}
include_spip('base/abstract_sql');

// http://doc.spip.org/@calculer_url_article_dist
function calculer_url_article_dist($id, $texte='', $lien='', $connect='') {
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1267,7 +1267,7 @@ function voir_en_ligne ($type, $id, $statut=false, $image='racine-24.gif', $af =
	else
		return '';

	$h = url_absolue(_DIR_RACINE . generer_url_entite($id, $type, "var_mode=$en_ligne", '', false));
	$h = url_absolue(_DIR_RACINE . generer_url_entite($id, $type, "var_mode=$en_ligne", '', true));

	return $inline  
	  ? icone_inline($message, $h, $image, "rien.gif", $GLOBALS['spip_lang_left'])
+2 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -36,7 +36,7 @@ function inc_signatures_dist($script, $id, $debut, $pas, $where, $order, $type='
	$request = sql_select('*', 'spip_signatures', $where, '', $order, $limit);

	$res .= "<br />\n";

	include_spip('inc/urls');
 	while($row=sql_fetch($request)){
	  $res .= "<br />\n" . signatures_edit($script, $id, $debut, $row, $type);
	}
@@ -114,7 +114,7 @@ function signatures_edit($script, $id, $debut, $row, $type) {
			$titre_a = $r['titre'];
			$titre_r = supprimer_numero(sql_getfetsel("titre", "spip_rubriques", "id_rubrique=$id_rubrique"));
		        $href = generer_url_ecrire('naviguer', "id_rubrique=" . $id_rubrique);
			$h2 = generer_url_entite($id_article, 'article','','',true);
			$h2 = generer_url_ecrire_article($id_article);
			$res .= "<br class='nettoyeur' /><a title='$id_article' href='"
			  . $h2
			  . "'>"
+14 −11
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -625,7 +625,8 @@ function typer_raccourci ($lien) {
}

// Cherche un lien du type [->raccourci 123]
// associe a une fonction generer_url_raccourci()
// associe a une fonction generer_url_raccourci() definie explicitement 
// ou implicitement par le jeu de type_urls courant.
//
// Valeur retournee selon le parametre $pour:
// 'tout' : tableau [U,C,T,L] (vise <a href="U" class='C' hreflang='L'>T</a>)
@@ -633,18 +634,20 @@ function typer_raccourci ($lien) {
// 'url':   seulement U  (i.e. generer_url_RACCOURCI)

// http://doc.spip.org/@calculer_url
function calculer_url ($ref, $texte='', $pour='url', $connect='') {
	include_spip('base/abstract_sql');
function calculer_url ($ref, $texte='', $pour='url', $connect=NULL) {
	if ($match = typer_raccourci($ref)) {
		@list($f,,$id,,$args,,$ancre) = $match;
		$lien = charger_fonction('lien', 'inc', true);
		if ($lien) {
			$r = $lien($f,$id,$args,$ancre,$texte,$pour,$connect);
			if ($r)
			  return ($pour=='tout') ? $r : 
				(($pour=='url') ? $r[0] :$r[2]);
		}
		spip_log("raccourci indefini $f");
		@list($type,,$id,,$args,,$ancre) = $match;
		$r = generer_url_entite($id,$type,$args,$ancre,$connect);
		if ($r) {
			if ($pour === 'url') return array($r);
			include_spip('inc/lien');
			$g = 'calculer_url_' . $type;
			if (!(function_exists($g) OR function_exists($g .= '_dist')))
			  return array($r);
			$r = $g($id, $texte, $r, $connect);
			return ($pour=='tout') ? $r : $r[2];
		}
		spip_log("raccourci indefini $type");
	}
	if (preg_match(",^\s*(http:?/?/?|mailto:?)\s*$,iS", $ref))
		return ($pour != 'tout') ? '' : array('','','','');
+7 −7
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -23,7 +23,7 @@ function generer_url_ecrire_article($id, $suite='', $ancre='', $statut='', $conn
	}
	if ($suite) $a .= "&$suite";
	if ($statut == 'publie') {
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'article', $suite, $ancre, false));
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'article', $suite, $ancre, true));
	} else	return generer_url_ecrire('articles', $a) . ($ancre ? "#$ancre" : '');
}

@@ -35,7 +35,7 @@ function generer_url_ecrire_rubrique($id, $suite='', $ancre='', $statut='', $con
	}
	if ($suite) $a .= "&$suite";
	if ($statut == 'publie') {
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'rubrique', $suite, $ancre, false));
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'rubrique', $suite, $ancre, true));
	} else	return generer_url_ecrire('naviguer',$a) . ($ancre ? "#$ancre" : '');
}

@@ -47,7 +47,7 @@ function generer_url_ecrire_breve($id, $suite='', $ancre='', $statut='', $connec
	}
	if ($suite) $a .= "&$suite";
	if ($statut == 'publie') {
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'breve', $suite, $ancre, false));
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'breve', $suite, $ancre, true));
	} else	return generer_url_ecrire('breves_voir',$a) . ($ancre ? "#$ancre" : '');
}

@@ -56,7 +56,7 @@ function generer_url_ecrire_mot($id, $suite='', $ancre='', $statut='', $connect=
	$a = "id_mot=" . intval($id);
	if ($suite) $a .= "&$suite";
	if (!$statut) {
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'mot', $suite, $ancre, false));
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'mot', $suite, $ancre, true));
	} else	return generer_url_ecrire('mots_edit',$a) . ($ancre ? "#$ancre" : '');
}

@@ -65,7 +65,7 @@ function generer_url_ecrire_site($id, $suite='', $ancre='', $statut='', $connect
	$a = "id_syndic=" . intval($id);
	if ($suite) $a .= "&$suite";
	if (!$statut) {
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'site', $suite, $ancre, false));
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'site', $suite, $ancre, true));
	} else	return generer_url_ecrire('sites',$a) . ($ancre ? "#$ancre" : '');
}

@@ -74,7 +74,7 @@ function generer_url_ecrire_auteur($id, $suite='', $ancre='', $statut='', $conne
	$a = "id_auteur=" . intval($id);
	if ($suite) $a .= "&$suite";
	if (!$statut) {
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'auteur', $suite, $ancre, false));
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'auteur', $suite, $ancre, true));
	} else	return generer_url_ecrire('auteur_infos',$a) . ($ancre ? "#$ancre" : '');
}

@@ -86,7 +86,7 @@ function generer_url_ecrire_forum($id, $suite='', $ancre='', $statut='', $connec
	}
	if ($suite) $a .= "&$suite";
	if ($statut == 'publie') {
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'forum', $suite, $ancre, false));
		return url_absolue(_DIR_RACINE . generer_url_entite($id, 'forum', $suite, $ancre, true));
	}  else return generer_url_ecrire('controle_forum', "debut_id_forum=$id");
}

Chargement en cours