Changeset 31928 in spip-zone


Ignore:
Timestamp:
Oct 4, 2009, 10:22:04 AM (10 years ago)
Author:
patfr@…
Message:

Liens en clair : suivre SPIP 2.0.9
Rappel : ni les liens internes (class="spip_in"), ni le glossaire (class="spip_glossaire") ne sont pris en compte

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/outils/liens_en_clair_fonctions.php

    r15542 r31928  
    22
    33function liens_en_clair_callback($matches) {
    4         if (preg_match(',^(mailto:|news:)(.*)$,', $lien = $matches[1], $matches2)) $lien = $matches2[2];
     4        if (preg_match(',^(mailto:|news:)(.*)$,', $lien = $matches[2], $matches2)) $lien = $matches2[2];
    55        // si mailcrypt est actif, on decode le lien cache dans "title"
    66        if (defined('_mailcrypt_AROBASE_JS') && preg_match(',title="([^"]+)'.preg_quote(_mailcrypt_AROBASE_JS).'([^"]+)",', $matches[0], $matches2))
     
    88        // doit-on afficher le lien en clair ?
    99        $ajouter_lien =
    10                 $lien!=$matches[2]
    11                         // pas les ancres
     10                $lien!=$matches[3]
     11                        // ni les ancres, ni les blocs
    1212                        && $lien[0]!='#'
    13                         // pas les liens internes...
    14                         && strpos($matches[0], '"spip_in"')===false
    15                         // pas le glossaire SPIP...
    16                         && strpos($matches[0], '"spip_glossaire"')===false;
     13                        && strpos($lien, 'javascript:')===false
     14                        // ni les liens internes, ni le glossaire SPIP...
     15                        && !preg_match(',(["\'])spip_(in|glossaire)\1,', $matches[0]);
    1716        if ($ajouter_lien) return $matches[0] . " [$lien]";
    1817        return $matches[0];
     
    2322        if (strpos($texte, 'href')===false) return $texte;
    2423        // recherche de tous les liens : <a href="??">
    25         $texte = preg_replace_callback(',<a[^>]+href="([^"]+)"[^>]*>(.*)</a>,Umsi', 'liens_en_clair_callback', $texte);
     24        $texte = preg_replace_callback(',<a.* href=(["\'])(.*)\1.*>(.*)</a>,Umsi', 'liens_en_clair_callback', $texte);
    2625        return $texte;
    2726}
Note: See TracChangeset for help on using the changeset viewer.