Valider 5e93fb1e rédigé par esj's avatar esj
Parcourir les fichiers

Prise en compte du raccourci des raccourcis dans le champ chapo lors d'une...

Prise en compte du raccourci des raccourcis dans le champ chapo lors d'une fusion de sauvegarde (Pyrat). En prime, un raccourci non raccourci dans le champ chapo  aura son titre utilisé comme corps du 302 fabriqué. Regroupement et nommage des Regep autour de ça pour partage et eviter un nouvel oubli lors de ce genre d'opérations.
parent 57b5cea4
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+6 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -141,13 +141,13 @@ function import_translate_std($values, $table, $desc, $request) {
	$vals = '';

	foreach ($values as $k => $v) {
		if (($k=='chapo') AND preg_match(',^=(\d+)(.*)$,', $v, $m))
			$v = '=' . importe_translate_maj('id_article',$m[1]).$m[2];
		else {
		if ($k=='id_parent' OR $k=='id_secteur')
				$k = 'id_rubrique';
		else  if (($k=='chapo') AND ($v[0]=='=') AND preg_match(_RACCOURCI_CHAPO, substr($v,1), $m))
			$v = '=[->' . substr($v,1) . ']';

		$v = importe_raccourci($k,importe_translate_maj($k, $v));
		}

		$vals .= "," . _q($v);
	}
	import_inserer_translate($values, $table, $desc, $request, $vals);
+17 −13
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -10,8 +10,6 @@
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/


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

include_spip('inc/filtres');
@@ -624,17 +622,6 @@ function typo($letexte, $echapper=true) {
	return $letexte;
}

// obsolete, utiliser calculer_url

// http://doc.spip.org/@extraire_lien
function extraire_lien ($regs) {
	list($lien, $class, $texte) = calculer_url($regs[3], $regs[1],'tout');
	// Preparer le texte du lien ; attention s'il contient un <div>
	// (ex: [<docXX|right>->lien]), il faut etre smart
	$ref = "<a href=\"$lien\" class=\"$class\">$texte</a>";
	return array($ref, $lien, $texte);
}

// traitement des raccourcis issus de [TITRE->RACCOURCInnn] et connexes

define('_RACCOURCI_URL', ',^(\S*?)\s*(\d+)(\?.*?)?(#[^\s]*)?$,S');
@@ -1198,6 +1185,23 @@ function traiter_raccourci_lien($regs) {
		. "</a>");
}

// Fonction pour les champs chapo commencant par =,  redirection qui peut etre:
// 1. un raccourci Spip habituel (premier If) [texte->TYPEnnn]
// 2. un ultra raccourci TYPEnnn voire nnn (article) (deuxieme If)
// 3. une URL std
// renvoie une tableau structure comme ci-dessus mais sans calcul d'URL
// (cf fusion de sauvegardes)

define('_RACCOURCI_CHAPO', ',^(\W*)(\W*)(\w*\d+([?#].*)?)$,');

function chapo_redirige($chapo)
{
	if (!preg_match(_RACCOURCI_LIEN, $chapo, $m))
		if (!preg_match(_RACCOURCI_CHAPO, $chapo, $m))
			$m = array('','','',$chapo);
	return $m;
}

// Regexp des raccouris, aussi utilisee pour la fusion de sauvegarde Spip
define('_RACCOURCI_LIEN', ",\[([^][]*)->(>?)([^]]*)\],msS");

+10 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -151,4 +151,14 @@ function debut_page($titre = "", $rubrique = "accueil", $sous_rubrique = "accuei
	if ($onLoad) spip_log("parametre obsolete onLoad=$onLoad");
}

// obsolete, utiliser calculer_url

// http://doc.spip.org/@extraire_lien
function extraire_lien ($regs) {
	list($lien, $class, $texte) = calculer_url($regs[3], $regs[1],'tout');
	// Preparer le texte du lien ; attention s'il contient un <div>
	// (ex: [<docXX|right>->lien]), il faut etre smart
	$ref = "<a href=\"$lien\" class=\"$class\">$texte</a>";
	return array($ref, $lien, $texte);
}
?>
 No newline at end of file
+15 −11
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -261,22 +261,26 @@ function public_parametrer_dist($fond, $local='', $cache='') {
		$local = $contexte;

		// si le champ chapo commence par '=' c'est une redirection.
		// avec un eventuel raccourci Spip
		// si le raccourci a un titre il sera pris comme corps du 302
		if ($fond == 'article'
		AND $id_article = intval($local['id_article'])) {
			if ($chapo = sql_chapo($id_article)) {
				if (preg_match(',^=(\[->)?(.*?)[]]?$,', $chapo, $url)){
			$m = sql_chapo($id_article);
			if ($m[0]=='=') {
				include_spip('inc/texte');
					$url = calculer_url($url[2]);
					if ($url) { // sinon les navigateurs pataugent
						$url = texte_script(str_replace('&amp;', '&', $url));
						return array('texte' => "<".
						"?php header('Location: $url'); ?" . ">",
				// les navigateurs pataugent si l'URL est vide
				if ($m = chapo_redirige(substr($m,1)))
					if ($url = calculer_url($m[3]))
					return array('texte' => "<"
				. "?php header('Location: "
				. texte_script(str_replace('&amp;', '&', $url))
				. "'); echo '"
				.  addslashes($m[1])
				. "'?" . ">",
					'process_ins' => 'php');
			}
		}
	}
		}
	}

	// Choisir entre $fond-dist.html, $fond=7.html, etc?
	$id_rubrique_fond = 0;