[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / couteau_suisse / couteau_suisse / outils / liens_en_clair_fonctions.php
diff --git a/www/plugins/auto/couteau_suisse/couteau_suisse/outils/liens_en_clair_fonctions.php b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/liens_en_clair_fonctions.php
new file mode 100644 (file)
index 0000000..a82043a
--- /dev/null
@@ -0,0 +1,28 @@
+<?php\r
+\r
+function liens_en_clair_callback($matches) {\r
+       if (preg_match(',^(mailto:|news:)(.*)$,', $lien = $matches[2], $matches2)) $lien = $matches2[2];\r
+       // si mailcrypt est actif, on decode le lien cache dans "title"\r
+       if (defined('_mailcrypt_AROBASE_JS') && preg_match(',title="([^"]+)'.preg_quote(_mailcrypt_AROBASE_JS).'([^"]+)",', $matches[0], $matches2)) \r
+               $lien = $matches2[1]._mailcrypt_AROBASE.$matches2[2];\r
+       // doit-on afficher le lien en clair ?\r
+       $ajouter_lien = \r
+               $lien!=$matches[3]\r
+                       // ni les ancres, ni les blocs\r
+                       && $lien[0]!='#'\r
+                       && strpos($lien, 'javascript:')===false\r
+                       // ni les liens internes, ni le glossaire SPIP...\r
+                       && !preg_match(',(["\'])spip_(in|glossaire)\1,', $matches[0]);\r
+       if ($ajouter_lien) return $matches[0] . " [$lien]";\r
+       return $matches[0];\r
+}\r
+\r
+// filtre utilisable sur les balises SPIP\r
+function liens_en_clair($texte) {\r
+       if (strpos($texte, 'href')===false) return $texte;\r
+       // recherche de tous les liens : <a href="??">\r
+       $texte = preg_replace_callback(',<a.* href=(["\'])(.*)\1.*>(.*)</a>,Umsi', 'liens_en_clair_callback', $texte);\r
+       return $texte;\r
+}\r
+\r
+?>
\ No newline at end of file