Skip to content
Extraits de code Groupes Projets
Valider 7e13417f rédigé par esj's avatar esj
Parcourir les fichiers

{{{nettoyer_raccourcis_typo}}} n'a pas besoin de calculer l'URL puisqu'elle ne...

{{{nettoyer_raccourcis_typo}}} n'a pas besoin de calculer l'URL puisqu'elle ne veut que le titre. Et comme elle fait la même analyse que {{{expanser_liens}}}, on partage la même Regexp entre les deux fonctions, ça clarifie ce code si opaque. Mais ce boulot dans {{{nettoyer_raccourcis_typo}}} est-il finalement vraiment utile ? Elle n'est appelée que par {{{couper}}} qui a déjà expansé les raccourcis à ce stade.
parent 6483b79a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -28,32 +28,63 @@ include_spip('base/abstract_sql'); ...@@ -28,32 +28,63 @@ include_spip('base/abstract_sql');
define('_RACCOURCI_LIEN', ",\[([^][]*?([[]\w*[]][^][]*)*)->(>?)([^]]*)\],msS"); define('_RACCOURCI_LIEN', ",\[([^][]*?([[]\w*[]][^][]*)*)->(>?)([^]]*)\],msS");
// http://doc.spip.org/@expanser_liens // http://doc.spip.org/@expanser_liens
function expanser_liens($letexte, $connect='') function expanser_liens($texte, $connect='')
{ {
$letexte = pipeline('pre_liens', $letexte); $texte = pipeline('pre_liens', $texte);
$inserts = array(); $inserts = array();
if (preg_match_all(_RACCOURCI_LIEN, $letexte, $matches, PREG_SET_ORDER)) { if (preg_match_all(_RACCOURCI_LIEN, $texte, $regs, PREG_SET_ORDER)) {
$i = 0; $i = 0;
foreach ($matches as $regs) { foreach ($regs as $reg) {
$n = count($regs); list($titre, $bulle, $hlang) = traiter_raccourci_lien_atts($reg[1]);
list($texte, $bulle, $hlang) = traiter_raccourci_lien_atts($regs[1]); list ($lien, $class, $titre, $lang) =
list ($lien, $class, $texte, $lang) = calculer_url($reg[count($reg)-1], $titre, 'tout', $connect);
calculer_url($regs[$n-1], $texte, 'tout', $connect); $inserts[++$i] = traiter_raccourci_lien_lang($lien, $class, $titre, $hlang, $lang, $bulle, $connect);
$inserts[++$i] = traiter_raccourci_lien_lang($lien, $class, $texte, $hlang, $lang, $bulle, $connect);
$texte = str_replace($reg[0], "@@SPIP_ECHAPPE_LIEN_$i@@",
$letexte = str_replace($regs[0], "@@SPIP_ECHAPPE_LIEN_$i@@", $texte);
$letexte);
} }
} }
$letexte = corriger_typo(traiter_modeles($letexte, false, false, $connect)); $texte = corriger_typo(traiter_modeles($texte, false, false, $connect));
foreach ($inserts as $i => $insert) { foreach ($inserts as $i => $insert) {
$letexte = str_replace("@@SPIP_ECHAPPE_LIEN_$i@@", $insert, $letexte); $texte = str_replace("@@SPIP_ECHAPPE_LIEN_$i@@", $insert, $texte);
} }
return $letexte; return $texte;
} }
// Meme analyse mais pour eliminer les liens
// et ne laisser que leur titre, a expliciter si ce n'est fait
// http://doc.spip.org/@nettoyer_raccourcis_typo
function nettoyer_raccourcis_typo($texte, $connect='')
{
$texte = pipeline('nettoyer_raccourcis_typo',$texte);
if (preg_match_all(_RACCOURCI_LIEN, $texte, $regs, PREG_SET_ORDER))
foreach ($regs as $reg) {
list ($titre,,)= traiter_raccourci_lien_atts($reg[1]);
if (!$titre) {
$match = typer_raccourci($reg[count($reg)-1]);
@list($type,,$id,,,,) = $match;
$titre = traiter_raccourci_titre($type, $id, '', '', 'titre', $connect);
}
$titre = corriger_typo(supprimer_tags($titre));
$texte = str_replace($reg[0], $titre, $texte);
}
// supprimer les notes
$texte = preg_replace(",[[][[]([^]]|[]][^]])*[]][]],UimsS","",$texte);
// supprimer les codes typos
$texte = str_replace(array('}','{'), '', $texte);
// supprimer les tableaux
$texte = preg_replace(",(^|\r)\|.*\|\r,s", "\r", $texte);
return $texte;
}
// http://doc.spip.org/@traiter_raccourci_lien_lang // http://doc.spip.org/@traiter_raccourci_lien_lang
function traiter_raccourci_lien_lang($lien, $class, $texte, $hlang, $lang, $bulle, $connect='') function traiter_raccourci_lien_lang($lien, $class, $texte, $hlang, $lang, $bulle, $connect='')
{ {
...@@ -152,29 +183,6 @@ function traiter_raccourci_liens($texte) { ...@@ -152,29 +183,6 @@ function traiter_raccourci_liens($texte) {
return $texte; return $texte;
} }
// http://doc.spip.org/@nettoyer_raccourcis_typo
function nettoyer_raccourcis_typo($texte, $connect=''){
$texte = pipeline('nettoyer_raccourcis_typo',$texte);
// remplacer les liens
if (preg_match_all(',[[]([^][]*)->(>?)([^][]*)[]],S', $texte, $regs, PREG_SET_ORDER))
foreach ($regs as $reg) {
list ($titre,,)= traiter_raccourci_lien_atts($reg[1]);
$titre = calculer_url($reg[3], $titre, 'titre', $connect);
$titre = corriger_typo(supprimer_tags($titre));
$texte = str_replace($reg[0], $titre, $texte);
}
// supprimer les notes
$texte = preg_replace(",[[][[]([^]]|[]][^]])*[]][]],UimsS","",$texte);
// supprimer les codes typos
$texte = str_replace(array('}','{'), '', $texte);
// supprimer les tableaux
$texte = preg_replace(",(^|\r)\|.*\|\r,s", "\r", $texte);
return $texte;
}
// Fonction pour les champs chapo commencant par =, redirection qui peut etre: // Fonction pour les champs chapo commencant par =, redirection qui peut etre:
// 1. un raccourci Spip habituel (premier If) [texte->TYPEnnn] // 1. un raccourci Spip habituel (premier If) [texte->TYPEnnn]
// 2. un ultra raccourci TYPEnnn voire nnn (article) (deuxieme If) // 2. un ultra raccourci TYPEnnn voire nnn (article) (deuxieme If)
...@@ -230,7 +238,7 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='') ...@@ -230,7 +238,7 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='')
if ($url) if ($url)
return ($pour === 'url') return ($pour === 'url')
? $url ? $url
: calculer_url_lien($type, $id, $url, $texte, $pour, $connect); : traiter_raccourci_titre($type, $id, $url, $texte, $pour, $connect);
} }
return false; return false;
} }
...@@ -292,8 +300,7 @@ function typer_raccourci ($lien) { ...@@ -292,8 +300,7 @@ function typer_raccourci ($lien) {
return $match; return $match;
} }
// http://doc.spip.org/@calculer_url_lien function traiter_raccourci_titre($type, $id, $url, $texte, $pour, $connect)
function calculer_url_lien($type, $id, $url, $texte, $pour, $connect)
{ {
$trouver_table = charger_fonction('trouver_table', 'base'); $trouver_table = charger_fonction('trouver_table', 'base');
$desc = $trouver_table(table_objet($type)); $desc = $trouver_table(table_objet($type));
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter