From 19edd6767cc20edd52118a5a130b64246685f6ba Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 7 Dec 2006 12:19:33 +0000 Subject: [PATCH] =?UTF-8?q?T=C3=A2che=20#685,=20compl=C3=A9ment=20de=20[80?= =?UTF-8?q?04]:=20les=20mod=C3=A8les=20<embNNN...>=20<imgNNN...>=20etc=20s?= =?UTF-8?q?ont=20eux=20aussi=20renum=C3=A9rot=C3=A9s.=20Un=20manque=20n?= =?UTF-8?q?=C3=A9anmoins:=20le=20script=20de=20fusion=20applique=20bien=20?= =?UTF-8?q?la=20Regexp=20g=C3=A9n=C3=A9rale=20des=20mod=C3=A8les,=20mais?= =?UTF-8?q?=20consid=C3=A8re=20=20toute=20r=C3=A9f=C3=A9rence=20NNN=20dans?= =?UTF-8?q?=20un=20mod=C3=A8le=20comme=20d=C3=A9signant=20un=20id=5Fdocume?= =?UTF-8?q?nt=20de=20la=20table=20des=20documents.=20Messieurs=20les=20mod?= =?UTF-8?q?eleurs,=20trouver=20une=20structure=20de=20donn=C3=A9es=20indiq?= =?UTF-8?q?uant=20=C3=A0=20quel=20table=20fait=20r=C3=A9f=C3=A9rence=20ce?= =?UTF-8?q?=20num=C3=A9ro,=20et=20sus=20=C3=A0=20la=20ligne=20232=20de=20i?= =?UTF-8?q?mport=5Finsere=20pour=20finaliser=20compl=C3=A9tement=20la=20ch?= =?UTF-8?q?ose.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Au passage, mise sous forme de constante de la Regexp des modèles afin d'etre réutilisée ici. De toutes façons c'était pas super de la construire dynamiquement dans une boucle, située dans une fonction elle-meme souvent appelée. Et le paramètre S est déconseillé dans les Regexp dont le premier caractère est fixe. --- ecrire/inc/import_insere.php | 13 +++++++++++++ ecrire/inc/texte.php | 23 +++++++++++++---------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/ecrire/inc/import_insere.php b/ecrire/inc/import_insere.php index cbd6c45d4c..412a39b297 100644 --- a/ecrire/inc/import_insere.php +++ b/ecrire/inc/import_insere.php @@ -204,9 +204,12 @@ function importe_translate_maj($k, $v) return $g; } +define('_RACCOURCI_MODELE_ALL', '/' . _RACCOURCI_MODELE .'/isS'); + // http://doc.spip.org/@importe_raccourci function importe_raccourci($k, $v) { + if (preg_match_all(_RACCOURCI_LIEN, $v, $m, PREG_SET_ORDER)) { foreach ($m as $regs) { // supprimer 'http://' ou 'mailto:' @@ -223,6 +226,16 @@ function importe_raccourci($k, $v) } } } + + if (preg_match_all(_RACCOURCI_MODELE_ALL, $v, $m, PREG_SET_ORDER)) { + foreach ($m as $regs) { + $g = importe_translate_maj('id_document', $regs[3]); + if ($g != $regs[3]) { + $rac = '<' . $regs[2] . $g . $regs[4] . '>' . $regs[5]; + $v = str_replace($regs[0], $rac, $v); + } + } + } return $v; } diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php index 3d19aa953a..58afad357a 100644 --- a/ecrire/inc/texte.php +++ b/ecrire/inc/texte.php @@ -1011,7 +1011,7 @@ function traiter_listes ($texte) { // http://doc.spip.org/@supprime_img function supprime_img($letexte) { $message = _T('img_indisponible'); - return preg_replace(',<(img|doc|emb)([0-9]+)(\|([^>]*))?'.'>,iS', + return preg_replace(',<(img|doc|emb)([0-9]+)(\|([^>]*))?'.'>,i', "($message)", $letexte); } @@ -1022,6 +1022,17 @@ function supprime_img($letexte) { // Si $doublons==true, on repere les documents sans calculer les modeles // mais on renvoie les params (pour l'indexation par le moteur de recherche) // http://doc.spip.org/@traiter_modeles + +define('_RACCOURCI_MODELE', + '(<([a-z_-]{3,})' # <modele + .'\s*([0-9]*)\s*' # id + .'([|](?:<[^<>]*>|[^>])*)?' # |arguments (y compris des tags <...>) + .'>)' # fin du modele > + .'\s*(<\/a>)?' # eventuel </a> + ); + +define('_RACCOURCI_MODELE_DEBUT', '/^' . _RACCOURCI_MODELE .'/is'); + function traiter_modeles($texte, $doublons=false, $echap='') { // detecter les modeles (rapide) if (preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS', @@ -1031,15 +1042,7 @@ function traiter_modeles($texte, $doublons=false, $echap='') { // Recuperer l'appel complet (y compris un eventuel lien) // $regs : 1 => modele, 2 => type, 3 => id, 4 => params, 5 => a $a = strpos($texte,$match[0]); - preg_match( - '/^' #debut - .'(<([a-z_-]{3,})' # <modele - .'\s*([0-9]*)\s*' # id - .'([|](?:<[^<>]*>|[^>])*)?' # |arguments (y compris des tags <...>) - .'>)' # fin du modele > - .'\s*(<\/a>)?' # eventuel </a> - .'/isS', - substr($texte, $a), $regs); + preg_match(_RACCOURCI_MODELE_DEBUT, substr($texte, $a), $regs); if ($regs[5] AND preg_match( ',<a\s[^<>]*>\s*$,i', substr($texte, 0, $a), $r)) { -- GitLab