From aca7cbdebe313537aa10a218a978c13d40992bdb Mon Sep 17 00:00:00 2001 From: Jan Luca Naumann Date: Sat, 8 Aug 2009 10:37:34 +0000 Subject: [PATCH] (fixes for r54590 & bug 20103) Use now only one query and add number to messages "youhavenewmessages" and "mytalk" --- includes/SkinTemplate.php | 24 ++++++++++-------------- includes/User.php | 16 ++++++++++++++-- languages/messages/MessagesEn.php | 4 ++-- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 85bf079806..a4e5eff3cf 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -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 ) diff --git a/includes/User.php b/includes/User.php index a1ef09ccbf..ca11fdca5f 100644 --- a/includes/User.php +++ b/includes/User.php @@ -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 diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index afbb1fa5ac..af8a701d13 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -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' => ' 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', -- 2.20.1