Valider 0d35090a rédigé par esj's avatar esj
Parcourir les fichiers

Multi-base: les balise #URL_ sur base externe, acceptées par [10138] mais...

Multi-base: les balise #URL_ sur base externe, acceptées par [10138] mais critiquées par [10183] sont finalement implémentées comme les raccourcis correspondants en [10323], ce qui est plus cohérent. On peut donc ainsi simuler complètement la navigation dans un site externe par les squelettes du site local.

Pour implémenter complèteent les spécifications demandées par #716, il reste encore à traiter le problème des logos associés aux objets de la base externe.
parent d2995817
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+18 −12
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -43,7 +43,9 @@ function balise_URL_ARTICLE_dist($p) {
// http://doc.spip.org/@balise_URL_AUTEUR_dist
function balise_URL_AUTEUR_dist($p) {

	$p->code = generer_generer_url('auteur', $p);
	$code = generer_generer_url('auteur', $p);
	if ($code === NULL) return NULL;
	$p->code = $code;
	$p->interdire_scripts = false;
	return $p;
}
@@ -51,7 +53,9 @@ function balise_URL_AUTEUR_dist($p) {
// http://doc.spip.org/@balise_URL_RUBRIQUE_dist
function balise_URL_RUBRIQUE_dist($p) {

	$p->code = generer_generer_url('rubrique', $p);
	$code = generer_generer_url('rubrique', $p);
	if ($code === NULL) return NULL;
	$p->code = $code;
	$p->interdire_scripts = false;
	return $p;
}
@@ -59,7 +63,9 @@ function balise_URL_RUBRIQUE_dist($p) {
// http://doc.spip.org/@balise_URL_BREVE_dist
function balise_URL_BREVE_dist($p) {

	$p->code = generer_generer_url('breve', $p);
	$code = generer_generer_url('breve', $p);
	if ($code === NULL) return NULL;
	$p->code = $code;
	$p->interdire_scripts = false;
	return $p;
}
@@ -67,7 +73,9 @@ function balise_URL_BREVE_dist($p) {
// http://doc.spip.org/@balise_URL_MOT_dist
function balise_URL_MOT_dist($p) {

	$p->code = generer_generer_url('mot', $p);
	$code = generer_generer_url('mot', $p);
	if ($code === NULL) return NULL;
	$p->code = $code;
	$p->interdire_scripts = false;
	return $p;
}
@@ -75,7 +83,9 @@ function balise_URL_MOT_dist($p) {
// http://doc.spip.org/@balise_URL_FORUM_dist
function balise_URL_FORUM_dist($p) {

	$p->code = generer_generer_url('forum', $p);
	$code = generer_generer_url('forum', $p);
	if ($code === NULL) return NULL;
	$p->code = $code;
	$p->interdire_scripts = false;
	return $p;
}
@@ -83,17 +93,13 @@ function balise_URL_FORUM_dist($p) {
// http://doc.spip.org/@balise_URL_DOCUMENT_dist
function balise_URL_DOCUMENT_dist($p) {

	$p->code = generer_generer_url('document', $p);
	$code = generer_generer_url('document', $p);
	if ($code === NULL) return NULL;
	$p->code = $code;
	$p->interdire_scripts = false;
	return $p;
}

# URL_SITE est une donnee "brute" tiree de la base de donnees
# URL_SYNDIC correspond a l'adresse de son backend.
# Il n'existe pas de balise pour afficher generer_url_site($id_syndic),
# a part [(#ID_SYNDIC|generer_url_site)]


//
// #URL_PAGE{backend} -> backend.php3 ou ?page=backend selon les cas
// Pour les pages qui commencent par "spip_", il faut eventuellement
+13 −10
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -244,12 +244,15 @@ function quete_meta($nom, $serveur) {
	return $r['valeur'];
}

// Produit les appels aux fonctions generer_url parametrees par $type_urls
// demandees par les balise #URL_xxx
// Si ces balises sont rencontrees dans une boucle de base distante
// on produit le generer_url std faute de connaitre le $type_urls distant
// et sous reserve que cette base distante est geree par SPIP.
// Autrement cette balise est vue comme un champ normal dans cette base.
// Compilation finale des balise #URL_xxx
// Si ces balises sont utilisees pour la base locale,
// Producttion des appels aux fonctions generer_url parametrees par $type_urls
// Si la base est externe et non geree par SPIP
// on retourne NULL pour provoquer leur interpretation comme champ SQL normal.
// Si la base est externe et sous SPIP,
// on produit l'URL de l'objet si c'est une piece jointe
// ou sinon l'URL du site local applique sur l'objet externe
// ce qui permet de le voir a travers les squelettes du site local

// http://doc.spip.org/@generer_generer_url
function generer_generer_url($type, $p)
@@ -263,13 +266,13 @@ function generer_generer_url($type, $p)
	if (!$s)
		return "generer_url_$type($_id)";
	elseif (!$GLOBALS['connexions'][$s]['spip_connect_version']) {
		erreur_squelette("#URL_" . strtoupper($type). ' ' . _T('zbug_distant_interdit'));
		return "";
		return NULL;
	} else {
		$u = "quete_meta('adresse_site', '$s')";
		$s = addslashes($s);
		if ($type != 'document')
			return "$u . '?page=$type&id_$type=' . " . $_id;
			return "'./?page=$type&id_$type=' . $_id . '&connect=$s'";
		else {
			$u = "quete_meta('adresse_site', '$s')";
			$f = "$_id . '&file=' . quete_fichier($_id,'$s')";
			return "$u . '?action=acceder_document&arg=' .$f";
		}
+5 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -260,7 +260,10 @@ print $p->code."\n<hr/>\n";
// http://doc.spip.org/@calculer_balise_dynamique
function calculer_balise_dynamique($p, $nom, $l) {

	if (!balise_distante_interdite($p)) return $p;
	if (!balise_distante_interdite($p)) {
		$p->code = "''";
		return $p;
	}
	$param = "";
	if ($a = $p->param) {
		$c = array_shift($a);
@@ -307,7 +310,7 @@ function collecter_balise_dynamique($l, &$p, $nom) {
function balise_distante_interdite($p) {
	$nom = $p->id_boucle;
	if ($nom AND $p->boucles[$nom]->sql_serveur) {
		spip__log( $nom .':' . $p->nom_champ .' '._T('zbug_distant_interdit'));
		spip_log( $nom .':' . $p->nom_champ .' '._T('zbug_distant_interdit'));
		return false;
	}
	return true;