* (bug 6201) Treat spaces as underscores in parameters to {{ns:}}
[lhc/web/wiklou.git] / includes / Parser.php
index e6ebb46..c6098d5 100644 (file)
@@ -2673,7 +2673,8 @@ class Parser
                                        $text = $linestart . $wgContLang->getNsText( intval( $part1 ) );
                                        $found = true;
                                } else {
-                                       $index = Namespace::getCanonicalIndex( strtolower( $part1 ) );
+                                       $param = str_replace( ' ', '_', strtolower( $part1 ) );
+                                       $index = Namespace::getCanonicalIndex( strtolower( $param ) );
                                        if ( !is_null( $index ) ) {
                                                $text = $linestart . $wgContLang->getNsText( $index );
                                                $found = true;
@@ -2845,6 +2846,17 @@ class Parser
                        $colonPos = strpos( $part1, ':' );
                        if ( $colonPos !== false ) {
                                $function = strtolower( substr( $part1, 1, $colonPos - 1 ) );
+                               if ( !isset( $this->mFunctionHooks[$function] ) ) {
+                                       foreach ($this->mFunctionHooks as $key => $value) {
+                                               if( is_int( $key ) ) {
+                                                       $mwExtension =& MagicWord::get( $key );
+                                                       if( $mwExtension->matchVariableStartToEnd( $function ) ) {
+                                                               $function = $key;
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
                                if ( isset( $this->mFunctionHooks[$function] ) ) {
                                        $funcArgs = array_map( 'trim', $args );
                                        $funcArgs = array_merge( array( &$this, trim( substr( $part1, $colonPos + 1 ) ) ), $funcArgs );
@@ -3883,15 +3895,17 @@ class Parser
         *
         * @public
         *
-        * @param string $name The function name. Function names are case-insensitive.
+        * @param mixed $id The magic word ID, or (deprecated) the function name. Function names are case-insensitive.
         * @param mixed $callback The callback function (and object) to use
         *
         * @return The old callback function for this name, if any
         */
-       function setFunctionHook( $name, $callback ) {
-               $name = strtolower( $name );
-               $oldVal = @$this->mFunctionHooks[$name];
-               $this->mFunctionHooks[$name] = $callback;
+       function setFunctionHook( $id, $callback ) {
+               if( is_string( $id ) ) {
+                       $id = strtolower( $id );
+               }
+               $oldVal = @$this->mFunctionHooks[$id];
+               $this->mFunctionHooks[$id] = $callback;
                return $oldVal;
        }