Fix log type and name in revdeleted messages: suppressions are stored in the suppress...
[lhc/web/wiklou.git] / includes / MessageCache.php
index 7554df2..b831f33 100644 (file)
@@ -407,6 +407,8 @@ class MessageCache {
                $sidebarKey = wfMemcKey( 'sidebar', $code );
                $parserMemc->delete( $sidebarKey );
 
+               wfRunHooks( "MessageCacheReplace", array( $title, $text ) );
+
                wfProfileOut( __METHOD__ );
        }
 
@@ -498,7 +500,7 @@ class MessageCache {
         *                         functionality), or if it is a true boolean then
         *                         use the wikis content language (also as a
         *                         fallback).
-        * @param bool $isFullKey Specifies whether $key is a two part key "lang/msg".
+        * @param bool $isFullKey Specifies whether $key is a two part key "msg/lang".
         */
        function get( $key, $useDB = true, $langcode = true, $isFullKey = false ) {
                global $wgContLanguageCode, $wgContLang;
@@ -520,11 +522,13 @@ class MessageCache {
                # Try the MediaWiki namespace
                if( !$this->mDisable && $useDB ) {
                        $title = $wgContLang->ucfirst( $lckey );
-                       if(!$isFullKey && ($langcode != $wgContLanguageCode) ) {
+                       if(!$isFullKey && ( $langcode != $wgContLanguageCode ) ) {
                                $title .= '/' . $langcode;
                        }
                        $message = $this->getMsgFromNamespace( $title, $langcode );
                }
+               if( $message === false )
+                       wfRunHooks( 'MessageNotInMwNs', array( &$message, $lckey, $langcode, $isFullKey ) );
 
                # Try the extension array
                if ( $message === false && isset( $this->mExtensionMessages[$langcode][$lckey] ) ) {
@@ -571,6 +575,16 @@ class MessageCache {
                if( $message === false ) {
                        return '<' . htmlspecialchars($key) . '>';
                }
+
+               # Fix whitespace
+               $message = strtr( $message, 
+                       array(
+                               # Fix for trailing whitespace, removed by textarea
+                               ' ' => ' ',
+                               # Fix for NBSP, converted to space by firefox
+                               ' ' => "\xc2\xa0",
+                       ) );
+
                return $message;
        }
 
@@ -702,7 +716,10 @@ class MessageCache {
         * @param string $lang The messages language, English by default
         */
        function addMessage( $key, $value, $lang = 'en' ) {
-               $this->mExtensionMessages[$lang][$key] = $value;
+               global $wgContLang;
+               # Normalise title-case input
+               $lckey = str_replace( ' ', '_', $wgContLang->lcfirst( $key ) );
+               $this->mExtensionMessages[$lang][$lckey] = $value;
        }
 
        /**
@@ -782,7 +799,7 @@ class MessageCache {
                # Some extensions will load their messages when you load their class file
                wfLoadAllExtensions();
                # Others will respond to this hook
-               wfRunHooks( 'LoadAllMessages' );
+               wfRunHooks( 'LoadAllMessages', array( $this ) );
                # Some register their messages in $wgExtensionMessagesFiles
                foreach ( $wgExtensionMessagesFiles as $name => $file ) {
                        wfLoadExtensionMessages( $name, $lang );