diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2007-05-16 20:58:53 +0000 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2007-05-16 20:58:53 +0000 |
commit | cecb985bee3bdd252e1b8dc0bd500b37cd52be01 (patch) | |
tree | 17266aa237742640aabee7856f0202317a45d540 /includes/LinkFilter.php | |
parent | 0bac06c301f2a83edb0236e4c2434da16848d549 (diff) |
Aktualisierung auf MediaWiki 1.10.0
Plugins angepasst und verbessert
kleine Korrekturen am Design
Diffstat (limited to 'includes/LinkFilter.php')
-rw-r--r-- | includes/LinkFilter.php | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/includes/LinkFilter.php b/includes/LinkFilter.php index e03b59dd..39341d5d 100644 --- a/includes/LinkFilter.php +++ b/includes/LinkFilter.php @@ -14,7 +14,7 @@ class LinkFilter { /** * @static */ - function matchEntry( $text, $filterEntry ) { + static function matchEntry( $text, $filterEntry ) { $regex = LinkFilter::makeRegex( $filterEntry ); return preg_match( $regex, $text ); } @@ -22,10 +22,10 @@ class LinkFilter { /** * @static */ - function makeRegex( $filterEntry ) { + private static function makeRegex( $filterEntry ) { $regex = '!http://'; if ( substr( $filterEntry, 0, 2 ) == '*.' ) { - $regex .= '([A-Za-z0-9.-]+\.|)'; + $regex .= '(?:[A-Za-z0-9.-]+\.|)'; $filterEntry = substr( $filterEntry, 2 ); } $regex .= preg_quote( $filterEntry, '!' ) . '!Si'; @@ -47,8 +47,10 @@ class LinkFilter { * Asterisks in any other location are considered invalid. * * @static + * @param $filterEntry String: domainparts + * @param $prot String: protocol */ - function makeLike( $filterEntry ) { + public static function makeLike( $filterEntry , $prot = 'http://' ) { if ( substr( $filterEntry, 0, 2 ) == '*.' ) { $subdomains = true; $filterEntry = substr( $filterEntry, 2 ); @@ -74,17 +76,31 @@ class LinkFilter { $path = '/'; $host = $filterEntry; } - $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) ); - if ( substr( $host, -1, 1 ) !== '.' ) { - $host .= '.'; - } - $like = "http://$host"; - - if ( $subdomains ) { - $like .= '%'; - } - if ( !$subdomains || $path !== '/' ) { - $like .= $path . '%'; + // Reverse the labels in the hostname, convert to lower case + // For emails reverse domainpart only + if ( $prot == 'mailto:' && strpos($host, '@') ) { + // complete email adress + $mailparts = explode( '@', $host ); + $domainpart = strtolower( implode( '.', array_reverse( explode( '.', $mailparts[1] ) ) ) ); + $host = $domainpart . '@' . $mailparts[0]; + $like = "$prot$host%"; + } elseif ( $prot == 'mailto:' ) { + // domainpart of email adress only. do not add '.' + $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) ); + $like = "$prot$host%"; + } else { + $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) ); + if ( substr( $host, -1, 1 ) !== '.' ) { + $host .= '.'; + } + $like = "$prot$host"; + + if ( $subdomains ) { + $like .= '%'; + } + if ( !$subdomains || $path !== '/' ) { + $like .= $path . '%'; + } } return $like; } |