* Use PLURAL for 'search-result-size'
[lhc/web/wiklou.git] / includes / LinkFilter.php
index 85bafca..ced76d7 100644 (file)
@@ -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';
@@ -50,7 +50,8 @@ class LinkFilter {
         * @param $filterEntry String: domainparts
         * @param $prot        String: protocol
         */
-        function makeLike( $filterEntry , $prot = 'http://' ) {
+        public static function makeLike( $filterEntry , $prot = 'http://' ) {
+               $db = wfGetDB( DB_MASTER );
                if ( substr( $filterEntry, 0, 2 ) == '*.' ) {
                        $subdomains = true;
                        $filterEntry = substr( $filterEntry, 2 );
@@ -83,26 +84,26 @@ class LinkFilter {
                        $mailparts = explode( '@', $host );
                        $domainpart = strtolower( implode( '.', array_reverse( explode( '.', $mailparts[1] ) ) ) );
                        $host = $domainpart . '@' . $mailparts[0];
-                       $like = "$prot$host%";
+                       $like = $db->escapeLike( "$prot$host" ) . "%";
                } elseif ( $prot == 'mailto:' ) {
                        // domainpart of email adress only. do not add '.'
                        $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) );   
-                       $like = "$prot$host%";                  
+                       $like = $db->escapeLike( "$prot$host" ) . "%";                  
                } else {
                        $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) );   
                        if ( substr( $host, -1, 1 ) !== '.' ) {
                                $host .= '.';
                        }
-                       $like = "$prot$host";
+                       $like = $db->escapeLike( "$prot$host" );
 
                        if ( $subdomains ) {
                                $like .= '%';
                        }
                        if ( !$subdomains || $path !== '/' ) {
-                               $like .= $path . '%';
+                               $like .= $db->escapeLike( $path ) . '%';
                        }
                }
                return $like;
        }
 }
-?>
+