diff --git a/ecrire/inc/import_insere.php b/ecrire/inc/import_insere.php index cbd6c45d4c0e76c38f39d26285df85f569da4f4e..412a39b2974cf106af128ab0cc1e2442d0ef6981 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 3d19aa953a3de3936989612d66c76018d2d4bca8..58afad357af25dda3b5fa3dfaf760ea23972bafe 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)) {