From cc1dae2ad31e26b4432941020efd762b0bfe938f Mon Sep 17 00:00:00 2001 From: Daniel Kraus Date: Wed, 23 May 2012 17:20:48 +0200 Subject: [PATCH] Stop parsing urls and e-mail addresses. --- LinkTitles.body.php | 14 ++++++++++++-- LinkTitles.php | 2 +- NEWS | 3 +++ release/LinkTitles-1.1.0.tar.gz | Bin 0 -> 9970 bytes 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 release/LinkTitles-1.1.0.tar.gz diff --git a/LinkTitles.body.php b/LinkTitles.body.php index 01c0678..3a84b76 100755 --- a/LinkTitles.body.php +++ b/LinkTitles.body.php @@ -80,8 +80,18 @@ $myTitle = $article->getTitle()->getText(); ( $wgLinkTitlesPreferShortTitles ) ? $sort_order = 'DESC' : $sort_order = ''; + + // Build a regular expression that will capture existing wiki links ("[[...]]"), + // wiki headings ("= ... =", "== ... ==" etc.), + // urls ("http://example.com", "[http://example.com]", "[http://example.com Description]", + // and email addresses ("mail@example.com"). + // Since there is a user option to skip headings, we make this part of the expression + // optional. Note that in order to use preg_split(), it is important to have only one + // capturing subpattern (which precludes the use of conditional subpatterns). ( $wgLinkTitlesParseHeadings ) ? $delimiter = '' : $delimiter = '=+.+?=+|'; - $delimiter = '/(' . $delimiter . '\[\[.*?\]\])/i'; + $urlPattern = '[a-z]+?\:\/\/(?:\S+\.)+\S+(?:\/.*)?'; + $delimiter = '/(' . $delimiter . '\[\[.*?\]\]|\[' . + $urlPattern . '\s.+?\]|'. $urlPattern . '(?=\s|$)|(?<=\b)\S+\@(?:\S+\.)+\S+(?=\b))/i'; // Build an SQL query and fetch all page titles ordered // by length from shortest to longest. @@ -111,7 +121,7 @@ $safeTitle = str_replace( '/', '\/', $title ); for ( $i = 0; $i < count( $arr ); $i+=2 ) { // even indexes will point to text that is not enclosed by brackets - $arr[$i] = preg_replace( '/\b(' . $safeTitle . ')\b/i', '[[$1]]', $arr[$i] ); + $arr[$i] = preg_replace( '/(? 'LinkTitles', 'author' => '[http://www.mediawiki.org/wiki/User:Bovender Daniel Kraus]', 'url' => 'http://www.mediawiki.org/wiki/Extension:LinkTitles', - 'version' => '1.0.0', + 'version' => '1.1.0', 'descriptionmsg' => 'linktitles-desc' ); diff --git a/NEWS b/NEWS index c792833..8ac96ff 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,6 @@ +LinkTitles 1.1.0: 2012-05-24 +* No longer parses urls and email addresses. + LinkTitles 1.0.0: 2012-05-22 * Added new option to parse or not parse headings * Added new option to parse pages on saving edits diff --git a/release/LinkTitles-1.1.0.tar.gz b/release/LinkTitles-1.1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9122f74b1acb5b6b3e19e72256b822ee1c38148c GIT binary patch literal 9970 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