(fixes for r54590 & bug 20103) Use now only one query and add number to messages...
authorJan Luca Naumann <jan@users.mediawiki.org>
Sat, 8 Aug 2009 10:37:34 +0000 (10:37 +0000)
committerJan Luca Naumann <jan@users.mediawiki.org>
Sat, 8 Aug 2009 10:37:34 +0000 (10:37 +0000)
includes/SkinTemplate.php
includes/User.php
languages/messages/MessagesEn.php

index 85bf079..a4e5eff 100644 (file)
@@ -319,11 +319,14 @@ class SkinTemplate extends Skin {
                                        array( 'diff' => 'cur' ),
                                        array( 'known', 'noclasses' )
                                );
+                               
+                               $newmessagesnumber = $wgUser->getNewtalkNumber();
 
                                $ntl = wfMsg(
                                        'youhavenewmessages',
                                        $newmessageslink,
-                                       $newmessagesdifflink
+                                       $newmessagesdifflink,
+                                       $newmessagesnumber
                                );
                                # Disable Cache
                                $out->setSquidMaxage( 0 );
@@ -532,31 +535,24 @@ class SkinTemplate extends Skin {
                        );
                        $usertalkUrlDetails = $this->makeTalkUrlDetails( $this->userpage );
                        if ( $wgUser->getNewtalk() ) {
-                               # do not show "(!)" text when we are viewing our
+                               # do not show text when we are viewing our
                                # own talk page
-                               if( !$title->equals( $wgUser->getTalkPage() ) ) {
-                                       $field = ( $wgUser->getID() == 0 )? 'user_ip' : 'user_id';
-                                       $id = ( $wgUser->getID() == 0 )? $wgUser->getName() : $wgUser->getID();
-                                       
-                                       $db = wfGetDB( DB_SLAVE );
-                                       $query = $db->select( 'user_newtalk', $field, array( $field => $id ) );
-                                       $num = $db->numRows( $query );
-                                       
-                                       $text = '('.$wgLang->formatNum( $num ).')';
+                               if( !$title->equals( $wgUser->getTalkPage() ) ) {                                       
+                                       $newtalk = $wgUser->getNewtalkNumber();
                                        
                                        # disable caching
                                        $wgOut->setSquidMaxage( 0 );
                                        $wgOut->enableClientCache( false );
                                }
                                else {
-                                       $text = '';
+                                       $newtalk = 0;
                                }
                        }
                        else {
-                               $text = '';
+                               $newtalk = 0;
                        }
                        $personal_urls['mytalk'] = array(
-                               'text' => wfMsg( 'mytalk' ).$text,
+                               'text' => wfMsg( 'mytalk', $newtalk ),
                                'href' => &$usertalkUrlDetails['href'],
                                'class' => $usertalkUrlDetails['exists'] ? false : 'new',
                                'active' => ( $usertalkUrlDetails['href'] == $pageurl )
index a1ef09c..ca11fdc 100644 (file)
@@ -216,6 +216,8 @@ class User {
        //@}
        
        static $idCacheByName = array();
+       
+       var $mNewtalknumber;
 
        /**
         * Lightweight constructor for an anonymous user.
@@ -1546,9 +1548,10 @@ class User {
                } else {
                        $db = wfGetDB( DB_SLAVE );
                }
-               $ok = $db->selectField( 'user_newtalk', $field,
+               $query = $db->select( 'user_newtalk', $field,
                        array( $field => $id ), __METHOD__ );
-               return $ok !== false;
+               $this->mNewtalknumber = $ok = $db->numRows( $query );
+               return $ok !== 0;
        }
 
        /**
@@ -1631,6 +1634,15 @@ class User {
                        $this->invalidateCache();
                }
        }
+       
+       /**
+        * Return the number of new messages
+        * @return \int The number of new messages
+        */
+        public function getNewtalkNumber() {
+               global $wgLang;
+               return $wgLang->formatNum( $this->mNewtalknumber );
+        }
 
        /**
         * Generate a current or new-future timestamp to be stored in the
index afbb1fa..af8a701 100644 (file)
@@ -751,7 +751,7 @@ XHTML id names.
 'cancel'        => 'Cancel',
 'moredotdotdot' => 'More...',
 'mypage'        => 'My page',
-'mytalk'        => 'My talk',
+'mytalk'        => 'My talk ($1)',
 'anontalk'      => 'Talk for this IP',
 'navigation'    => 'Navigation',
 'and'           => '&#32;and',
@@ -894,7 +894,7 @@ See [[Special:Version|version page]].',
 'pagetitle'                    => '$1 - {{SITENAME}}', # only translate this message to other languages if you have to change it
 'pagetitle-view-mainpage'      => '{{SITENAME}}', # only translate this message to other languages if you have to change it
 'retrievedfrom'                => 'Retrieved from "$1"',
-'youhavenewmessages'           => 'You have $1 ($2).',
+'youhavenewmessages'           => 'You have $3 $1 ($2).',
 'newmessageslink'              => 'new messages',
 'newmessagesdifflink'          => 'last change',
 'youhavenewmessagesmulti'      => 'You have new messages on $1',