<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.org.wikimedia.mediawiki.cvs">
    <title>gmane.org.wikimedia.mediawiki.cvs</title>
    <link>http://blog.gmane.org/gmane.org.wikimedia.mediawiki.cvs</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172882"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172879"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172878"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172877"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172875"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172874"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172873"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172871"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172869"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172868"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172867"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172866"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172865"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172862"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172861"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172858"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172857"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172856"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172855"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172853"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172882">
    <title>[MediaWiki-commits] [Gerrit] Restore window overlays - change(mediawiki...VisualEditor)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172882</link>
    <description>&lt;pre&gt;Trevor Parscal has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65452


Change subject: Restore window overlays
......................................................................

Restore window overlays

And use them for the category widget for it's popup.

Change-Id: I43db14c749400efa6a770343afbdfa16dd6bff30
---
M modules/ve/ui/dialogs/ve.ui.MWMetaDialog.js
M modules/ve/ui/styles/ve.ui.Window.css
M modules/ve/ui/ve.ui.Window.js
3 files changed, 14 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/52/65452/1

diff --git a/modules/ve/ui/dialogs/ve.ui.MWMetaDialog.js b/modules/ve/ui/dialogs/ve.ui.MWMetaDialog.js
index 5dfa2eb..24a967b 100644
--- a/modules/ve/ui/dialogs/ve.ui.MWMetaDialog.js
+++ b/modules/ve/ui/dialogs/ve.ui.MWMetaDialog.js
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -62,7 +62,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 '$$': this.frame.$$, 'label': ve.msg( 'visualeditor-dialog-meta-categories-settings-label' ), 'icon': 'settings'
 } );
 this.categoryWidget = new ve.ui.MWCategoryWidget( {
-'$$': this.frame.$$, '$overlay': this.surface.$globalOverlay
+'$$': this.frame.$$, '$overlay': this.$overlay
 } );
 this.defaultSortInput = new ve.ui.TextInputWidget( {
 '$$': this.frame.$$, 'placeholder': this.fallbackDefaultSortKey
diff --git a/modules/ve/ui/styles/ve.ui.Window.css b/modules/ve/ui/styles/ve.ui.Window.css
index 0142ff5..fb7a1fc 100644
--- a/modules/ve/ui/styles/ve.ui.Window.css
+++ b/modules/ve/ui/styles/ve.ui.Window.css
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -38,3 +38,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 white-space: nowrap;
 cursor: default;
 }
+
+.ve-ui-window-overlay {
+font-family: sans-serif;
+line-height: 1.5em;
+font-size: 1em;
+position: absolute;
+top: 0;
+left: 0;
+z-index: 1000;
+}
diff --git a/modules/ve/ui/ve.ui.Window.js b/modules/ve/ui/ve.ui.Window.js
index 85a6591..62d45fa 100644
--- a/modules/ve/ui/ve.ui.Window.js
+++ b/modules/ve/ui/ve.ui.Window.js
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -171,12 +171,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 this.$head = this.$$( '&amp;lt;div class="ve-ui-window-head"&amp;gt;&amp;lt;/div&amp;gt;' );
 this.$body = this.$$( '&amp;lt;div class="ve-ui-window-body"&amp;gt;&amp;lt;/div&amp;gt;' );
 this.$foot = this.$$( '&amp;lt;div class="ve-ui-window-foot"&amp;gt;&amp;lt;/div&amp;gt;' );
+this.$overlay = this.$$( '&amp;lt;div class="ve-ui-window-overlay"&amp;gt;&amp;lt;/div&amp;gt;' );
 
 // Initialization
 this.frame.$content.append(
 this.$head.append( this.$icon, this.$title ),
 this.$body,
-this.$foot
+this.$foot,
+this.$overlay
 );
 };
 

&lt;/pre&gt;</description>
    <dc:creator>Trevor Parscal (Code Review</dc:creator>
    <dc:date>2013-05-25T13:45:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172879">
    <title>[MediaWiki-commits] [Gerrit] Forgot to update release notes -change (mediawiki/core)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172879</link>
    <description>&lt;pre&gt;MarkAHershberger has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65451


Change subject: Forgot to update release notes
......................................................................

Forgot to update release notes

Change-Id: Ic0c3934b3aa86297a33918ff1b31406909ad68a2
---
M RELEASE-NOTES-1.21
1 file changed, 12 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/51/65451/1

diff --git a/RELEASE-NOTES-1.21 b/RELEASE-NOTES-1.21
index be41ca0..db79956 100644
--- a/RELEASE-NOTES-1.21
+++ b/RELEASE-NOTES-1.21
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3,12 +3,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 == MediaWiki 1.21 ==
 
-THIS IS NOT A RELEASE YET
-
-MediaWiki 1.21 is an alpha-quality branch and is not recommended for use in
-production.
+MediaWiki 1.21 is an stable branch and is recommended for use in production.
 
 === Configuration changes in 1.21 ===
+* (bug 48306) $wgAllowChunkedUploads has been added and is false by default.
 * (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
 * Deprecated $wgAllowRealName is removed. Use $wgHiddenPrefs[] = 'realname'
   instead.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -223,6 +221,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 === API changes in 1.21 ===
 * BREAKING CHANGE: Chunked uploads are now disabled by default.  You can re-enable
   them by setting $wgAllowChunkedUploads=true
+* BREAKING CHANGE: list=logevents output format changed for details of some log
+  types. Specifically, details that were formerly reported under a key like
+  "4::foo" will now be reported under a key of simply "foo".
+* BREAKING CHANGE: '??_badcontinue' error code was changed to '??badcontinue'
+  for all query modules.
 * prop=revisions can now report the contentmodel and contentformat.
   See docs/contenthandler.txt.
 * action=edit and action=parse now support contentmodel and contentformat
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -241,11 +244,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
   the same query. When both are present, 'from' is simply ignored.
 * list=alllinks &amp;amp; alltransclusions now allow 'unique' in generators, to yield
   a list of all link/template target pages instead of source pages.
-* BREAKING CHANGE: list=logevents output format changed for details of some log
-  types. Specifically, details that were formerly reported under a key like
-  "4::foo" will now be reported under a key of simply "foo".
-* BREAKING CHANGE: '??_badcontinue' error code was changed to '??badcontinue'
-  for all query modules.
 * ApiQueryBase adds 'badcontinue' error code if module has 'continue' parameter.
 * (bug 35885) Removed version parameter and all getVersion() methods.
 * action=options now takes a "resetkinds" option, which allows only resetting
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -288,18 +286,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 * (bug 33304) list=allpages will now find really old indefinite protections.
 * (bug 45937) meta=allmessages will report a syntactically invalid lang as a
   proper error instead of as an uncaught exception.
-* (bug 48542) SpecialStatistics::getOtherStats() now uses the user language
+* (bug 48542) SpecialStatistics::getOtherStats() now uses the user language.
 
 === API internal changes in 1.21 ===
+* BREAKING CHANGE: ApiPageSet constructor now has two params instead of three, with only the
+  first one keeping its meaning. ApiPageSet is now derived from ApiBase.
+* BREAKING CHANGE: ApiQuery::newGenerator() and executeGeneratorModule() were deleted.
 * For debugging only, a new global $wgDebugAPI removes many API restrictions when true.
   Never use on the production servers, as this flag introduces security holes.
   Whenever enabled, a warning will also be added to all output.
 * ApiModuleManager now handles all submodules (actions,props,lists) and instantiation
 * Query stores prop/list/meta as submodules
 * ApiPageSet can now be used in any action to process titles/pageids/revids or any generator.
-* BREAKING CHANGE: ApiPageSet constructor now has two params instead of three, with only the
-  first one keeping its meaning. ApiPageSet is now derived from ApiBase.
-* BREAKING CHANGE: ApiQuery::newGenerator() and executeGeneratorModule() were deleted.
 * ApiQueryGeneratorBase::setGeneratorMode() now requires a pageset param.
 * $wgAPIGeneratorModules is now obsolete and will be ignored.
 * Added flags ApiResult::OVERRIDE and ADD_ON_TOP to setElement() and addValue()
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -327,7 +325,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
   were using it, you have to either copy it to your extension, or install the
   Vector extension (and possibly disable its features using config settings if
   you don't want them).
-* Experimental IBM DB2 support was removed due to lack of interest and maintainership.
 * BREAKING CHANGE: Filenames of maintenance scripts were standardized into
   lowerCamelCase format, and made more explicit:
   - clear_stats.php -&amp;gt; clearCacheStats.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -343,6 +340,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
   - ShowStats -&amp;gt; ShowSiteStats.
 * BREAKING CHANGE: (bug 38244) Removed the mediawiki.api.titleblacklist module
   and moved it to the TitleBlacklist extension.
+* Experimental IBM DB2 support was removed due to lack of interest and maintainership.
 
 == Compatibility ==
 

&lt;/pre&gt;</description>
    <dc:creator>MarkAHershberger (Code Review</dc:creator>
    <dc:date>2013-05-25T13:34:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172878">
    <title>[MediaWiki-commits] [Gerrit] Update formatting - change(mediawiki...Translate)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172878</link>
    <description>&lt;pre&gt;Siebrand has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65450


Change subject: Update formatting
......................................................................

Update formatting

Reduces PHP CodeSniffer warnings.

Change-Id: If42cef712e5242f39cec3f907934dfd7f6ea1109
---
M MessageChecks.php
M api/ApiAggregateGroups.php
M api/ApiGroupReview.php
M ffs/MediaWikiComplexMessages.php
M scripts/sync-group.php
M utils/StatsTable.php
6 files changed, 73 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate refs/changes/50/65450/1

diff --git a/MessageChecks.php b/MessageChecks.php
index 27a2c97..58ad1f7 100644
--- a/MessageChecks.php
+++ b/MessageChecks.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -297,7 +297,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;param array $warnings Array where warnings are appended to.
  */
 protected function pythonInterpolationCheck( $messages, $code, array &amp;amp;$warnings ) {
-$this-&amp;gt;parameterCheck( $messages, $code, $warnings, '/\%\([a-zA-Z0-9]*?\)[diouxXeEfFgGcrs]/U' );
+$pattern = '/\%\([a-zA-Z0-9]*?\)[diouxXeEfFgGcrs]/U';
+$this-&amp;gt;parameterCheck( $messages, $code, $warnings, $pattern );
 }
 
 /**
diff --git a/api/ApiAggregateGroups.php b/api/ApiAggregateGroups.php
index ed85c68..f5e8475 100644
--- a/api/ApiAggregateGroups.php
+++ b/api/ApiAggregateGroups.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -75,7 +75,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * aggregate message groups, the message group object $group
  * might not always be available. In this case we need to fake
  * some title. */
-$title = $group ? $group-&amp;gt;getTitle() : Title::newFromText( "Special:Translate/$subgroupId" );
+$title = $group ?
+$group-&amp;gt;getTitle() :
+Title::newFromText( "Special:Translate/$subgroupId" );
 
 $entry = new ManualLogEntry( 'pagetranslation', $action );
 $entry-&amp;gt;setPerformer( $this-&amp;gt;getUser() );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -121,7 +123,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $output['groups'] = self::getAllPages();
 $output['aggregategroupId'] = $aggregateGroupId;
 // &amp;lt; at &amp;gt;todo Logging
-
 }
 
 // If we got this far, nothing has failed
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -137,7 +138,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if ( strlen( $aggregateGroupName ) + strlen( $prefix ) &amp;gt;= 200 ) {
 return $prefix . substr( sha1( $aggregateGroupName ), 0, 5 );
 } else {
-return $prefix . preg_replace( '/[\x00-\x1f\x23\x27\x2c\x2e\x3c\x3e\x5b\x5d\x7b\x7c\x7d\x7f\s]+/i', '_', $aggregateGroupName );
+$pattern = '/[\x00-\x1f\x23\x27\x2c\x2e\x3c\x3e\x5b\x5d\x7b\x7c\x7d\x7f\s]+/i';
+return $prefix . preg_replace( $pattern, '_', $aggregateGroupName );
 }
 }
 
diff --git a/api/ApiGroupReview.php b/api/ApiGroupReview.php
index d447517..0a9ca75 100644
--- a/api/ApiGroupReview.php
+++ b/api/ApiGroupReview.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -169,9 +169,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 return array_merge( parent::getPossibleErrors(), array(
 array( 'code' =&amp;gt; 'permissiondenied', 'info' =&amp;gt; "You must have $right right" ),
-array( 'code' =&amp;gt; 'disabled', 'info' =&amp;gt; "Message group workflows are not in use" ),
-array( 'code' =&amp;gt; 'sameworkflowstate', 'info' =&amp;gt; "The requested state is identical to the current state" ),
-array( 'code' =&amp;gt; 'invalidstate', 'info' =&amp;gt; "The requested state is invalid" ),
+array( 'code' =&amp;gt; 'disabled', 'info' =&amp;gt; 'Message group workflows are not in use' ),
+array(
+'code' =&amp;gt; 'sameworkflowstate',
+'info' =&amp;gt; 'The requested state is identical to the current state'
+),
+array( 'code' =&amp;gt; 'invalidstate', 'info' =&amp;gt; 'The requested state is invalid' ),
 ) );
 }
 
diff --git a/ffs/MediaWikiComplexMessages.php b/ffs/MediaWikiComplexMessages.php
index d3ba150..2fede42 100644
--- a/ffs/MediaWikiComplexMessages.php
+++ b/ffs/MediaWikiComplexMessages.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -296,7 +296,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $rowContents .= '&amp;lt;td&amp;gt;' . $this-&amp;gt;formatElement( $value ) . '&amp;lt;/td&amp;gt;';
 
 $value = $this-&amp;gt;val( $group, self::LANG_CURRENT, $key );
-$rowContents .= '&amp;lt;td&amp;gt;' . $this-&amp;gt;editElement( $key, $this-&amp;gt;formatElement( $value ) ) . '&amp;lt;/td&amp;gt;';
+$rowContents .= '&amp;lt;td&amp;gt;';
+$rowContents .= $this-&amp;gt;editElement( $key, $this-&amp;gt;formatElement( $value ) );
+$rowContents .= '&amp;lt;/td&amp;gt;';
 
 $s .= Xml::tags( 'tr', array( 'id' =&amp;gt; "mw-sp-magic-$key" ), $rowContents );
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -321,9 +323,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public function getButtons() {
-return
-Xml::inputLabel( wfMessage( 'translate-magic-cm-comment' )-&amp;gt;text(), 'comment', 'sp-translate-magic-comment' ) .
-Xml::submitButton( wfMessage( 'translate-magic-cm-save' )-&amp;gt;text(), array( 'name' =&amp;gt; 'savetodb' ) );
+return Xml::inputLabel(
+wfMessage( 'translate-magic-cm-comment' )-&amp;gt;text(),
+'comment',
+'sp-translate-magic-comment'
+) .
+Xml::submitButton(
+wfMessage( 'translate-magic-cm-save' )-&amp;gt;text(),
+array( 'name' =&amp;gt; 'savetodb' )
+);
 }
 
 public function formatElement( $element ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -398,9 +406,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $title = Title::newFromText( 'MediaWiki:' . $this-&amp;gt;getKeyForSave() );
 $article = new Article( $title );
 
-$data = "# DO NOT EDIT THIS PAGE DIRECTLY! Use [[Special:AdvancedTranslate]].\n&amp;lt;pre&amp;gt;\n" . $this-&amp;gt;formatForSave( $request ) . "\n&amp;lt;/pre&amp;gt;";
+$data = "# DO NOT EDIT THIS PAGE DIRECTLY! Use [[Special:AdvancedTranslate]].\n&amp;lt;pre&amp;gt;\n" .
+$this-&amp;gt;formatForSave( $request ) . "\n&amp;lt;/pre&amp;gt;";
 
-$comment = $request-&amp;gt;getText( 'comment', wfMessage( 'translate-magic-cm-updatedusing' )-&amp;gt;inContentLanguage()-&amp;gt;text() );
+$comment = $request-&amp;gt;getText(
+'comment',
+wfMessage( 'translate-magic-cm-updatedusing' )-&amp;gt;inContentLanguage()-&amp;gt;text()
+);
 $status = $article-&amp;gt;doEdit( $data, $comment, 0 );
 
 if ( $status === false || ( is_object( $status ) &amp;amp;&amp;amp; !$status-&amp;gt;isOK() ) ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -441,8 +453,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 foreach ( $values as $v ) {
 if ( isset( $used[$v] ) ) {
 $otherkey = $used[$v];
-$first = Xml::element( 'a', array( 'href' =&amp;gt; "#mw-sp-magic-$otherkey" ), $otherkey );
-$errors[] = "Translation &amp;lt;strong&amp;gt;$v&amp;lt;/strong&amp;gt; is used more than once for $first and $link.";
+$first = Xml::element(
+'a',
+array( 'href' =&amp;gt; "#mw-sp-magic-$otherkey" ),
+$otherkey
+);
+$errors[] = "Translation &amp;lt;strong&amp;gt;$v&amp;lt;/strong&amp;gt; is used more than once " .
+"for $first and $link.";
 } else {
 $used[$v] = $key;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -477,7 +494,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 $indexKeys = array();
 foreach ( array_keys( $items[self::LANG_MASTER] ) as $key ) {
-$indexKeys[$key] = isset( $this-&amp;gt;constants[$key] ) ? $this-&amp;gt;constants[$key] : "'$key'";
+$indexKeys[$key] = isset( $this-&amp;gt;constants[$key] ) ?
+$this-&amp;gt;constants[$key] :
+"'$key'";
 }
 
 $padTo = max( array_map( 'strlen', $indexKeys ) ) + 3;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -608,7 +627,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 public function highlight( $key, $values ) {
 if ( count( $values ) ) {
 if ( !isset( $values[0] ) ) {
-throw new MWException( "Something missing from values: " . print_r( $values, true ) );
+throw new MWException( "Something missing from values: " .
+print_r( $values, true ) );
 }
 
 $values[0] = "&amp;lt;strong&amp;gt;$values[0]&amp;lt;/strong&amp;gt;";
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -636,7 +656,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $text = $title-&amp;gt;getText();
 $dbkey = $title-&amp;gt;getDBkey();
 if ( $text !== $_ &amp;amp;&amp;amp; $dbkey !== $_ ) {
-$errors[] = "Translation &amp;lt;strong&amp;gt;$_&amp;lt;/strong&amp;gt; for $link is not in normalised form, which is &amp;lt;strong&amp;gt;$text&amp;lt;/strong&amp;gt;";
+$errors[] = "Translation &amp;lt;strong&amp;gt;$_&amp;lt;/strong&amp;gt; for $link is not in " .
+"normalised form, which is &amp;lt;strong&amp;gt;$text&amp;lt;/strong&amp;gt;";
 }
 }
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -743,7 +764,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 if ( count( $values ) &amp;gt; 1 ) {
 $link = Xml::element( 'a', array( 'href' =&amp;gt; "#mw-sp-magic-$key" ), $key );
-$errors[] = "Namespace $link can have only one translation. Replace the translation with a new one, and notify staff about the change.";
+$errors[] = "Namespace $link can have only one translation. Replace the " .
+"translation with a new one, and notify staff about the change.";
 }
 }
 }
diff --git a/scripts/sync-group.php b/scripts/sync-group.php
index 1bce00e..6ec9b53 100644
--- a/scripts/sync-group.php
+++ b/scripts/sync-group.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 &amp;lt;?php
 /**
- * Command line script to import/update source messages and translations into the wiki database.
+ * Command line script to import/update source messages and translations into
+ * the wiki database.
  *
  * &amp;lt; at &amp;gt;author Niklas Laxström
  * &amp;lt; at &amp;gt;author Siebrand Mazeland
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -63,7 +64,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $start = isset( $options['start'] ) ? strtotime( $options['start'] ) : false;
 $end = isset( $options['end'] ) ? strtotime( $options['end'] ) : false;
 
-STDOUT( "Conflict times: " . wfTimestamp( TS_ISO_8601, $start ) . " - " . wfTimestamp( TS_ISO_8601, $end ) );
+STDOUT( "Conflict times: " . wfTimestamp( TS_ISO_8601, $start ) . " - " .
+wfTimestamp( TS_ISO_8601, $end ) );
 
 $codes = array_filter( array_map( 'trim', explode( ',', $options['lang'] ) ) );
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -223,8 +225,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /**
  * Do some conflict resolution for translations.
  * &amp;lt; at &amp;gt;param string $code Language code.
- * &amp;lt; at &amp;gt;param bool|int $startTs Time of the last export (changes in wiki after this will conflict)
- * &amp;lt; at &amp;gt;param bool|int $endTs Time of the last export (changes in source before this wont conflict)
+ * &amp;lt; at &amp;gt;param bool|int $startTs Time of the last export (changes in wiki after
+ * this will conflict)
+ * &amp;lt; at &amp;gt;param bool|int $endTs Time of the last export (changes in source before
+ * this won't conflict)
  * &amp;lt; at &amp;gt;param bool|int $changeTs When change happened in the source.
  */
 public function checkConflicts( $code, $startTs = false, $endTs = false, $changeTs = false ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -300,7 +304,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 continue;
 } elseif ( !$wikiTs || ( $changeTs &amp;gt; $endTs &amp;amp;&amp;amp; $wikiTs &amp;lt; $startTs ) ) {
 STDOUT( " →Changed in source after export: IMPORT", $page );
-$this-&amp;gt;import( $title, $translation, 'Updating translation from external source' );
+$this-&amp;gt;import(
+$title,
+$translation,
+'Updating translation from external source'
+);
 continue;
 }
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -325,12 +333,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 if ( $action === 'I' ) {
-$this-&amp;gt;import( $title, $translation, 'Updating translation from external source' );
+$this-&amp;gt;import(
+$title,
+$translation,
+'Updating translation from external source'
+);
 break;
 }
 
 if ( $action === 'C' ) {
-$this-&amp;gt;import( $title, TRANSLATE_FUZZY . $translation, 'Edit conflict between wiki and source' );
+$this-&amp;gt;import(
+$title,
+TRANSLATE_FUZZY . $translation,
+'Edit conflict between wiki and source'
+);
 break;
 }
 } while ( true );
diff --git a/utils/StatsTable.php b/utils/StatsTable.php
index 065bff3..d28176b 100644
--- a/utils/StatsTable.php
+++ b/utils/StatsTable.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -61,7 +61,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public function getBackgroundColor( $subset, $total, $fuzzy = false ) {
-$v = &amp;lt; at &amp;gt;round( 255 * $subset / $total );
+wfSuppressWarnings();
+$v = round( 255 * $subset / $total );
+wfRestoreWarnings();
 
 if ( $fuzzy ) {
 // Weigh fuzzy with factor 20.

&lt;/pre&gt;</description>
    <dc:creator>Siebrand (Code Review</dc:creator>
    <dc:date>2013-05-25T13:34:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172877">
    <title>[MediaWiki-commits] [Gerrit] (bug 48798) Customise linktrail forGujarati (gu) - change (mediawiki/core)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172877</link>
    <description>&lt;pre&gt;Nemo bis has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65449


Change subject: (bug 48798) Customise linktrail for Gujarati (gu)
......................................................................

(bug 48798) Customise linktrail for Gujarati (gu)

Release notes will follow with another commit when this is merged.

Change-Id: I872a9f141f64a664bc3743fcff5f036634445ba0
---
M languages/messages/MessagesGu.php
1 file changed, 2 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/49/65449/1

diff --git a/languages/messages/MessagesGu.php b/languages/messages/MessagesGu.php
index 5932cd0..6cf767c 100644
--- a/languages/messages/MessagesGu.php
+++ b/languages/messages/MessagesGu.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -148,6 +148,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 $digitGroupingPattern = "##,##,###";
 
+$linkTrail = '/^((?:[a-z]|ક્|ખ્|ગ્|ઘ્|ચ્|છ્|જ્|ઝ્|ટ્|ઠ્|ડ્|ઢ્|ણ્|ત્|થ્|દ્|ધ્|ન્|પ્|ફ્|બ્|ભ્|મ્|ય્|ર્|લ્|વ્|સ્|શ્|ષ્|હ્|ળ્|ક્ષ્|જ્ઞ્|અ|આ|ઇ|ઈ|ઉ|ઊ|એ|ઐ|ઓ|ઔ|અં|અઃ|અઁ|ઍ|ઑ|ઋ|ઁ|઼|।)+)(.*)$/sDu';
+
 $messages = array(
 # User preference toggles
 'tog-underline' =&amp;gt; 'કડીઓની નીચે લીટી (અંડરલાઇન) ઉમેરો:',

&lt;/pre&gt;</description>
    <dc:creator>Nemo bis (Code Review</dc:creator>
    <dc:date>2013-05-25T13:32:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172875">
    <title>[MediaWiki-commits] [Gerrit] Allow VirtualBox to manage permissionsof shared files - change (mediawiki/vagrant)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172875</link>
    <description>&lt;pre&gt;Ori.livneh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65448


Change subject: Allow VirtualBox to manage permissions of shared files
......................................................................

Allow VirtualBox to manage permissions of shared files

Specifying fmode/dmode parameters to VirtualBox makes it more difficult to use
NFS as the implementation for folder-sharing, and makes it too easy to write
Puppet code that causes an endless file permission back-and-forth between
Puppet and VirtualBox.

Change-Id: I1d4a184e627ef072126ed19d505de4c53efbe141
---
M Vagrantfile
M puppet/modules/mediawiki/manifests/extension.pp
2 files changed, 1 insertion(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant refs/changes/48/65448/1

diff --git a/Vagrantfile b/Vagrantfile
index b0a7c0b..ba72218 100644
--- a/Vagrantfile
+++ b/Vagrantfile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -67,8 +67,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
     config.vm.synced_folder '.', '/vagrant',
         id: 'vagrant-root',
         owner: 'vagrant',
-        group: 'www-data',
-        extra: 'dmode=775,fmode=775'
+        group: 'www-data'
 
     config.vm.provider :virtualbox do |vb|
         # See http://www.virtualbox.org/manual/ch08.html for additional options.
diff --git a/puppet/modules/mediawiki/manifests/extension.pp b/puppet/modules/mediawiki/manifests/extension.pp
index 4cb62e8..6f66613 100644
--- a/puppet/modules/mediawiki/manifests/extension.pp
+++ b/puppet/modules/mediawiki/manifests/extension.pp
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -96,7 +96,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # over the file.
 owner   =&amp;gt; 'vagrant',
 group   =&amp;gt; 'www-data',
-mode    =&amp;gt; '0770',
 require =&amp;gt; Git::Clone["mediawiki/extensions/${extension}"],
 }
 

&lt;/pre&gt;</description>
    <dc:creator>Ori.livneh (Code Review</dc:creator>
    <dc:date>2013-05-25T13:24:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172874">
    <title>[MediaWiki-commits] [Gerrit] More degloblization - change(mediawiki...Translate)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172874</link>
    <description>&lt;pre&gt;Siebrand has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65447


Change subject: More degloblization
......................................................................

More degloblization

Change-Id: If57556243b428faf987ba320d6438528746904e0
---
M MediaWikiMessageChecker.php
M MessageChecks.php
M api/ApiAggregateGroups.php
M api/ApiGroupReview.php
M api/ApiHardMessages.php
M api/ApiTranslateSandbox.php
M api/ApiTranslationReview.php
M ffs/MediaWikiComplexMessages.php
M scripts/createCheckIndex.php
M scripts/fuzzy.php
M scripts/sync-group.php
M specials/SpecialTranslate.php
M tag/PageTranslationHooks.php
M tag/TranslateDeleteJob.php
M tag/TranslateMoveJob.php
M tests/api/ApiTokensTest.php
M utils/JsSelectToInput.php
M utils/MessageTable.php
M utils/MessageWebImporter.php
M utils/RcFilter.php
M utils/StatsTable.php
M utils/TranslationEditPage.php
M utils/TranslationHelpers.php
M utils/UserToggles.php
24 files changed, 188 insertions(+), 182 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate refs/changes/47/65447/1

diff --git a/MediaWikiMessageChecker.php b/MediaWikiMessageChecker.php
index c83891a..7002b29 100644
--- a/MediaWikiMessageChecker.php
+++ b/MediaWikiMessageChecker.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -338,17 +338,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $defCount = count( $defArray );
 $traCount = count( $traArray );
 if ( $defCount !== $traCount ) {
-global $wgLang;
-
 $warnings[$key][] = array(
 array( 'miscmw', $subcheck, $key, $code ),
 'translate-checks-format',
-wfMessage(
-'translate-checks-parametersnotequal',
-$wgLang-&amp;gt;formatNum( $traCount ),
-$wgLang-&amp;gt;formatNum( $defCount )
-)-&amp;gt;text()
+wfMessage( 'translate-checks-parametersnotequal' )
+-&amp;gt;numParams( $traCount, $defCount )-&amp;gt;text()
 );
+
 continue;
 }
 
diff --git a/MessageChecks.php b/MessageChecks.php
index 8ae1362..27a2c97 100644
--- a/MessageChecks.php
+++ b/MessageChecks.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -223,7 +223,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;return array List of warning messages with parameters.
  */
 protected function fixMessageParams( $warnings ) {
-global $wgLang;
+$lang = RequestContext::getMain()-&amp;gt;getLanguage();
 
 foreach ( $warnings as $wkey =&amp;gt; $warning ) {
 array_shift( $warning );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -235,9 +235,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 } else {
 list( $type, $value ) = $param;
 if ( $type === 'COUNT' ) {
-$message[] = $wgLang-&amp;gt;formatNum( $value );
+$message[] = $lang-&amp;gt;formatNum( $value );
 } elseif ( $type === 'PARAMS' ) {
-$message[] = $wgLang-&amp;gt;commaList( $value );
+$message[] = $lang-&amp;gt;commaList( $value );
 } else {
 throw new MWException( "Unknown type $type" );
 }
diff --git a/api/ApiAggregateGroups.php b/api/ApiAggregateGroups.php
index 5f20f25..ed85c68 100644
--- a/api/ApiAggregateGroups.php
+++ b/api/ApiAggregateGroups.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -20,9 +20,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 protected static $salt = 'translate-manage';
 
 public function execute() {
-global $wgUser;
-
-if ( !$wgUser-&amp;gt;isallowed( self::$right ) ) {
+if ( !$this-&amp;gt;getUser()-&amp;gt;isallowed( self::$right ) ) {
 $this-&amp;gt;dieUsage( 'Permission denied', 'permissiondenied' );
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -68,7 +66,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 TranslateMetadata::setSubgroups( $aggregateGroup, $subgroups );
 
-$logparams = array(
+$logParams = array(
 'aggregategroup' =&amp;gt; TranslateMetadata::get( $aggregateGroup, 'name' ),
 'aggregategroup-id' =&amp;gt; $aggregateGroup,
 );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -80,11 +78,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $title = $group ? $group-&amp;gt;getTitle() : Title::newFromText( "Special:Translate/$subgroupId" );
 
 $entry = new ManualLogEntry( 'pagetranslation', $action );
-$entry-&amp;gt;setPerformer( $wgUser );
+$entry-&amp;gt;setPerformer( $this-&amp;gt;getUser() );
 $entry-&amp;gt;setTarget( $title );
 // &amp;lt; at &amp;gt;todo
 // $entry-&amp;gt;setComment( $comment );
-$entry-&amp;gt;setParameters( $logparams );
+$entry-&amp;gt;setParameters( $logParams );
 
 $logid = $entry-&amp;gt;insert();
 $entry-&amp;gt;publish( $logid );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -230,12 +228,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public static function getToken() {
-global $wgUser;
-if ( !$wgUser-&amp;gt;isAllowed( self::$right ) ) {
+$user = RequestContext::getMain()-&amp;gt;getUser();
+if ( !$user-&amp;gt;isAllowed( self::$right ) ) {
 return false;
 }
 
-return $wgUser-&amp;gt;getEditToken( self::$salt );
+return $user-&amp;gt;getEditToken( self::$salt );
 }
 
 public static function injectTokenFunction( &amp;amp;$list ) {
diff --git a/api/ApiGroupReview.php b/api/ApiGroupReview.php
index ffd8a56..d447517 100644
--- a/api/ApiGroupReview.php
+++ b/api/ApiGroupReview.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -190,12 +190,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public static function getToken() {
-global $wgUser;
-if ( !$wgUser-&amp;gt;isAllowed( self::$right ) ) {
+$user = RequestContext::getMain()-&amp;gt;getUser();
+if ( !$user-&amp;gt;isAllowed( self::$right ) ) {
 return false;
 }
 
-return $wgUser-&amp;gt;getEditToken( self::$salt );
+return $user-&amp;gt;getEditToken( self::$salt );
 }
 
 public static function injectTokenFunction( &amp;amp;$list ) {
diff --git a/api/ApiHardMessages.php b/api/ApiHardMessages.php
index db7b4eb..20b2ea6 100644
--- a/api/ApiHardMessages.php
+++ b/api/ApiHardMessages.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -162,12 +162,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public static function getToken() {
-global $wgUser;
-if ( !$wgUser-&amp;gt;isAllowed( self::$right ) ) {
+$user = RequestContext::getMain()-&amp;gt;getUser();
+if ( !$user-&amp;gt;isAllowed( self::$right ) ) {
 return false;
 }
 
-return $wgUser-&amp;gt;getEditToken();
+return $user-&amp;gt;getEditToken();
 }
 
 public static function injectTokenFunction( &amp;amp;$list ) {
diff --git a/api/ApiTranslateSandbox.php b/api/ApiTranslateSandbox.php
index 995e6e6..833b0fa 100644
--- a/api/ApiTranslateSandbox.php
+++ b/api/ApiTranslateSandbox.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -138,10 +138,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public static function getToken() {
-global $wgUser;
-
 // Who designed this?!?!?!
-return $wgUser-&amp;gt;getEditToken( 'sandbox' );
+$user = RequestContext::getMain()-&amp;gt;getUser();
+return $user-&amp;gt;getEditToken( 'sandbox' );
 }
 
 public function getAllowedParams() {
diff --git a/api/ApiTranslationReview.php b/api/ApiTranslationReview.php
index 62be3d7..226b018 100644
--- a/api/ApiTranslationReview.php
+++ b/api/ApiTranslationReview.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -194,12 +194,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public static function getToken() {
-global $wgUser;
-if ( !$wgUser-&amp;gt;isAllowed( self::$right ) ) {
+$user = RequestContext::getMain()-&amp;gt;getUser();
+if ( !$user-&amp;gt;isAllowed( self::$right ) ) {
 return false;
 }
 
-return $wgUser-&amp;gt;getEditToken( self::$salt );
+return $user-&amp;gt;getEditToken( self::$salt );
 }
 
 public static function injectTokenFunction( &amp;amp;$list ) {
diff --git a/ffs/MediaWikiComplexMessages.php b/ffs/MediaWikiComplexMessages.php
index 741de68..d3ba150 100644
--- a/ffs/MediaWikiComplexMessages.php
+++ b/ffs/MediaWikiComplexMessages.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -262,8 +262,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public function output() {
-global $wgRequest;
-
 $colspan = array( 'colspan' =&amp;gt; 3 );
 
 $s = Xml::openElement( 'table', $this-&amp;gt;tableAttributes );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -304,8 +302,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 }
 
-global $wgUser;
-if ( $wgUser-&amp;gt;isAllowed( 'translate' ) ) {
+$context = RequestContext::getMain();
+
+if ( $context-&amp;gt;getUser()-&amp;gt;isAllowed( 'translate' ) ) {
 $s .= '&amp;lt;tr&amp;gt;' . Xml::tags( 'td', $colspan, $this-&amp;gt;getButtons() ) . '&amp;lt;tr&amp;gt;';
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -313,7 +312,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 return Xml::tags(
 'form',
-array( 'method' =&amp;gt; 'post', 'action' =&amp;gt; $wgRequest-&amp;gt;getRequestURL() ),
+array(
+'method' =&amp;gt; 'post',
+'action' =&amp;gt; $context-&amp;gt;getRequest()-&amp;gt;getRequestURL()
+),
 $s
 );
 }
diff --git a/scripts/createCheckIndex.php b/scripts/createCheckIndex.php
index f4dc6c4..cec5813 100644
--- a/scripts/createCheckIndex.php
+++ b/scripts/createCheckIndex.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -68,6 +68,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $collection-&amp;gt;resetForNewLanguage( $code );
 $collection-&amp;gt;loadTranslations();
 
+global $wgContLang;
+
 foreach ( $collection as $key =&amp;gt; $message ) {
 $prob = $checker-&amp;gt;checkMessageFast( $message, $code );
 if ( $prob ) {
diff --git a/scripts/fuzzy.php b/scripts/fuzzy.php
index c42563b..e267148 100644
--- a/scripts/fuzzy.php
+++ b/scripts/fuzzy.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -171,10 +171,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;param string $comment Edit summary.
  */
 private function updateMessage( $title, $text, $dryrun, $comment = null ) {
-global $wgTranslateDocumentationLanguageCode, $wgUser;
+global $wgTranslateDocumentationLanguageCode;
 
-$oldUser = $wgUser;
-$wgUser = FuzzyBot::getUser();
+$context = RequestContext::getMain();
+$oldUser = $context-&amp;gt;getUser();
+$context-&amp;gt;setUser( FuzzyBot::getUser() );
 
 STDOUT( "Updating {$title-&amp;gt;getPrefixedText()}... ", $title );
 if ( !$title instanceof Title ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -203,6 +204,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $success = $status === true || ( is_object( $status ) &amp;amp;&amp;amp; $status-&amp;gt;isOK() );
 STDOUT( $success ? 'OK' : 'FAILED', $title );
 
-$wgUser = $oldUser;
+$context-&amp;gt;setUser( $oldUser );
 }
 }
diff --git a/scripts/sync-group.php b/scripts/sync-group.php
index 26becf7..1bce00e 100644
--- a/scripts/sync-group.php
+++ b/scripts/sync-group.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -267,15 +267,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 STDOUT( "Conflict in " . $this-&amp;gt;color( 'bold', $page ) . "!", $page );
 
-global $wgLang;
 $iso = 'xnY-xnm-xnd"T"xnH:xni:xns';
+$lang = RequestContext::getMain()-&amp;gt;getLanguage();
 
 // Finally all is ok, now lets start comparing timestamps
 // Make sure we are comparing timestamps in same format
 $wikiTs = $this-&amp;gt;getLastGoodChange( $title, $startTs );
 if ( $wikiTs ) {
 $wikiTs = wfTimestamp( TS_UNIX, $wikiTs );
-$wikiDate = $wgLang-&amp;gt;sprintfDate( $iso, wfTimestamp( TS_MW, $wikiTs ) );
+$wikiDate = $lang-&amp;gt;sprintfDate( $iso, wfTimestamp( TS_MW, $wikiTs ) );
 } else {
 $wikiDate = 'Unknown';
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -289,7 +289,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 if ( $changeTs ) {
 $changeTs = wfTimestamp( TS_UNIX, $changeTs );
-$changeDate = $wgLang-&amp;gt;sprintfDate( $iso, wfTimestamp( TS_MW, $changeTs ) );
+$changeDate = $lang-&amp;gt;sprintfDate( $iso, wfTimestamp( TS_MW, $changeTs ) );
 } else {
 $changeDate = 'Unknown';
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -392,10 +392,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;param $comment \string Edit summary.
  */
 public function import( $title, $translation, $comment ) {
-global $wgUser;
-
-$old = $wgUser;
-$wgUser = FuzzyBot::getUser();
+$context = RequestContext::getMain();
+$oldUser = $context-&amp;gt;getUser();
+$context-&amp;gt;setUser( FuzzyBot::getUser() );
 
 $flags = EDIT_FORCE_BOT;
 if ( $this-&amp;gt;norc ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -408,7 +407,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $success = $status === true || ( is_object( $status ) &amp;amp;&amp;amp; $status-&amp;gt;isOK() );
 STDOUT( $success ? 'OK' : 'FAILED', $title );
 
-$wgUser = $old;
+$context-&amp;gt;setUser( $oldUser );
 }
 }
 
diff --git a/specials/SpecialTranslate.php b/specials/SpecialTranslate.php
index 871a23a..0440eca 100644
--- a/specials/SpecialTranslate.php
+++ b/specials/SpecialTranslate.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -559,13 +559,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 protected function tuxLanguageSelector() {
 // Changes here must also be reflected when the language
 // changes on the client side
-global $wgLang, $wgTranslateDocumentationLanguageCode;
+global $wgTranslateDocumentationLanguageCode;
 
 if ( $this-&amp;gt;options['language'] === $wgTranslateDocumentationLanguageCode ) {
 // The name will be displayed in the UI language,
 // so use for lang and dir
-$targetLangCode = $wgLang-&amp;gt;getCode();
-$targetLangDir = $wgLang-&amp;gt;getDir();
+$lang = RequestContext::getMain()-&amp;gt;getLanguage();
+$targetLangCode = $lang-&amp;gt;getCode();
+$targetLangDir = $lang-&amp;gt;getDir();
 $targetLangName = $this-&amp;gt;msg( 'translate-documentation-language' )-&amp;gt;text();
 } else {
 $targetLangCode = $this-&amp;gt;options['language'];
diff --git a/tag/PageTranslationHooks.php b/tag/PageTranslationHooks.php
index 13c5567..506525d 100644
--- a/tag/PageTranslationHooks.php
+++ b/tag/PageTranslationHooks.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -660,7 +660,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 protected static function sourcePageHeader( Title $title ) {
-global $wgUser, $wgLang;
+$context = RequestContext::getMain();
 
 $page = TranslatablePage::newFromTitle( $title );
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -674,15 +674,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 $actions = array();
 
-if ( $marked &amp;amp;&amp;amp; $wgUser-&amp;gt;isAllowed( 'translate' ) ) {
+if ( $marked &amp;amp;&amp;amp; $context-&amp;gt;getUser()-&amp;gt;isAllowed( 'translate' ) ) {
 $par = array(
 'group' =&amp;gt; $page-&amp;gt;getMessageGroupId(),
-'language' =&amp;gt; $wgLang-&amp;gt;getCode(),
+'language' =&amp;gt; $context-&amp;gt;getLanguage()-&amp;gt;getCode(),
 'task' =&amp;gt; 'view'
 );
 
 $translate = SpecialPage::getTitleFor( 'Translate' );
-$linkDesc = wfMessage( 'translate-tag-translate-link-desc' )-&amp;gt;escaped();
+$linkDesc = $context-&amp;gt;msg( 'translate-tag-translate-link-desc' )-&amp;gt;escaped();
 $actions[] = Linker::link( $translate, $linkDesc, array(), $par );
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -691,18 +691,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $par = array( 'target' =&amp;gt; $title-&amp;gt;getPrefixedText() );
 $translate = SpecialPage::getTitleFor( 'PageTranslation' );
 
-if ( $wgUser-&amp;gt;isAllowed( 'pagetranslation' ) ) {
+if ( $context-&amp;gt;getUser()-&amp;gt;isAllowed( 'pagetranslation' ) ) {
 // This page has never been marked
 if ( $marked === false ) {
-$linkDesc = wfMessage( 'translate-tag-markthis' )-&amp;gt;escaped();
+$linkDesc = $context-&amp;gt;msg( 'translate-tag-markthis' )-&amp;gt;escaped();
 $actions[] = Linker::link( $translate, $linkDesc, array(), $par );
 } else {
 $markUrl = $translate-&amp;gt;getFullUrl( $par );
-$actions[] = wfMessage( 'translate-tag-markthisagain', $diffUrl, $markUrl )
+$actions[] = $context-&amp;gt;msg( 'translate-tag-markthisagain', $diffUrl, $markUrl )
 -&amp;gt;parse();
 }
 } else {
-$actions[] = wfMessage( 'translate-tag-hasnew', $diffUrl )-&amp;gt;parse();
+$actions[] = $context-&amp;gt;msg( 'translate-tag-hasnew', $diffUrl )-&amp;gt;parse();
 }
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -713,17 +713,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $legend = Html::rawElement(
 'div',
 array( 'class' =&amp;gt; 'mw-pt-translate-header noprint nomobile' ),
-$wgLang-&amp;gt;semicolonList( $actions )
+$context-&amp;gt;getLanguage()-&amp;gt;semicolonList( $actions )
 ) . Html::element( 'hr' );
 
-global $wgOut;
-
-$wgOut-&amp;gt;addHTML( $legend );
+$context-&amp;gt;getOutput()-&amp;gt;addHTML( $legend );
 }
 
 protected static function translationPageHeader( Title $title ) {
-global $wgOut;
-
 if ( !$title-&amp;gt;exists() ) {
 return;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -747,9 +743,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 // Output
 $wrap = '&amp;lt;div class="mw-translate-page-info"&amp;gt;$1&amp;lt;/div&amp;gt;';
-$wgOut-&amp;gt;wrapWikiMsg( $wrap, array( 'tpt-translation-intro', $url, $titleText, $per ) );
+$out = RequestContext::getMain()-&amp;gt;getOutput();
 
-$wgOut-&amp;gt;addHTML( '&amp;lt;hr /&amp;gt;' );
+$out-&amp;gt;wrapWikiMsg( $wrap, array( 'tpt-translation-intro', $url, $titleText, $per ) );
+$out-&amp;gt;addHTML( '&amp;lt;hr /&amp;gt;' );
 }
 
 /// Hook: SpecialPage_initList
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -780,10 +777,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 /// Hook: SkinSubPageSubtitle
 public static function replaceSubtitle( &amp;amp;$subpages, $skin = null, $out = null ) {
-global $wgOut;
 // $out was only added in some MW version
 if ( $out === null ) {
-$out = $wgOut;
+$out = RequestContext::getMain()-&amp;gt;getOutput();
 }
 
 if ( !TranslatablePage::isTranslationPage( $out-&amp;gt;getTitle() )
diff --git a/tag/TranslateDeleteJob.php b/tag/TranslateDeleteJob.php
index 5659ae7..4383b57 100644
--- a/tag/TranslateDeleteJob.php
+++ b/tag/TranslateDeleteJob.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -39,9 +39,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 function run() {
-global $wgUser;
-
 // Initialization
+$context = RequestContext::getMain();
 $title = $this-&amp;gt;title;
 // Other stuff
 $user = $this-&amp;gt;getUser();
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -50,8 +49,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $doer = User::newFromName( $this-&amp;gt;getPerformer() );
 
 PageTranslationHooks::$allowTargetEdit = true;
-$oldUser = $wgUser;
-$wgUser = $user;
+$oldUser = $context-&amp;gt;getUser();
+$context-&amp;gt;setUser( $user );
 
 $error = '';
 $article = new Article( $title, 0 );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -94,7 +93,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $title-&amp;gt;invalidateCache();
 }
 
-$wgUser = $oldUser;
+$context-&amp;gt;setUser( $oldUser );
 
 return true;
 }
diff --git a/tag/TranslateMoveJob.php b/tag/TranslateMoveJob.php
index 18b80c6..55d027c 100644
--- a/tag/TranslateMoveJob.php
+++ b/tag/TranslateMoveJob.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,9 +43,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 function run() {
-global $wgUser;
-
 // Initialization
+$context = RequestContext::getMain();
 $title = $this-&amp;gt;title;
 // Other stuff
 $user = $this-&amp;gt;getUser();
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -55,8 +54,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $doer = User::newFromName( $this-&amp;gt;getPerformer() );
 
 PageTranslationHooks::$allowTargetEdit = true;
-$oldUser = $wgUser;
-$wgUser = $user;
+$oldUser = $context-&amp;gt;getUser();
+$context-&amp;gt;setUser( $user );
 self::forceRedirects( false );
 
 // Don't check perms, don't leave a redirect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -101,7 +100,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $entry-&amp;gt;publish( $logid );
 }
 
-$wgUser = $oldUser;
+$context-&amp;gt;setUser( $oldUser );
 
 return true;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -181,7 +180,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 static $originalLevel = null;
 
 global $wgGroupPermissions;
-global $wgUser;
 
 if ( $end ) {
 if ( $suppressCount ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -203,6 +201,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 ++$suppressCount;
 }
-$wgUser-&amp;gt;clearInstanceCache();
+
+RequestContext::getMain()-&amp;gt;getUser()-&amp;gt;clearInstanceCache();
 }
 }
diff --git a/tests/api/ApiTokensTest.php b/tests/api/ApiTokensTest.php
index fc1b32e..74688fa 100644
--- a/tests/api/ApiTokensTest.php
+++ b/tests/api/ApiTokensTest.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -15,9 +15,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /** &amp;lt; at &amp;gt;dataProvider provideTokenClasses */
 public function testTokenRetrieval( $id, $class ) {
 // Make sure we have the right to get the token
-global $wgGroupPermissions, $wgUser;
+global $wgGroupPermissions;
 $wgGroupPermissions['*'][$class::getRight()] = true;
-$wgUser-&amp;gt;clearInstanceCache(); // Reread above global
+RequestContext::getMain()-&amp;gt;getUser()-&amp;gt;clearInstanceCache(); // Reread above global
 
 // We should be getting anonymous user token
 $expected = $class::getToken();
diff --git a/utils/JsSelectToInput.php b/utils/JsSelectToInput.php
index 0267cd8..fda586b 100644
--- a/utils/JsSelectToInput.php
+++ b/utils/JsSelectToInput.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -123,7 +123,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 return;
 }
 
-global $wgOut;
-$wgOut-&amp;gt;addModules( 'ext.translate.selecttoinput' );
+RequestContext::getMain()-&amp;gt;getOutput()-&amp;gt;addModules( 'ext.translate.selecttoinput' );
 }
 }
diff --git a/utils/MessageTable.php b/utils/MessageTable.php
index 52ef86b..324c9bb 100644
--- a/utils/MessageTable.php
+++ b/utils/MessageTable.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -108,9 +108,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public function includeAssets() {
-global $wgOut;
+$out = RequestContext::getMain()-&amp;gt;getOutput();
 
-TranslationHelpers::addModules( $wgOut );
+TranslationHelpers::addModules( $out );
 $pages = array();
 
 foreach ( $this-&amp;gt;collection-&amp;gt;getTitles() as $title ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -118,7 +118,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 $vars = array( 'trlKeys' =&amp;gt; $pages );
-$wgOut-&amp;gt;addScript( Skin::makeVariablesScript( $vars ) );
+$out-&amp;gt;addScript( Skin::makeVariablesScript( $vars ) );
 }
 
 public function header() {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -149,7 +149,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public function contents() {
-$optional = wfMessage( 'translate-optional' )-&amp;gt;escaped();
+$context = RequestContext::getMain();
+$optional = $context-&amp;gt;msg( 'translate-optional' )-&amp;gt;escaped();
 
 $this-&amp;gt;doLinkBatch();
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -192,8 +193,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 // Using Html::element( a ) because Linker::link is memory hog.
 // It takes about 20 KiB per call, and that times 5000 is quite
 // a lot of memory.
-global $wgLang;
-$niceTitle = htmlspecialchars( $wgLang-&amp;gt;truncate( $title-&amp;gt;getPrefixedText(), -35 ) );
+$niceTitle = htmlspecialchars( $context-&amp;gt;getLanguage()-&amp;gt;truncate(
+$title-&amp;gt;getPrefixedText(),
+-35
+) );
 $linkAttribs = array(
 'href' =&amp;gt; $title-&amp;gt;getLocalUrl( array( 'action' =&amp;gt; 'edit' ) + $this-&amp;gt;editLinkParams ),
 );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -289,11 +292,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 protected function getReviewButton( TMessage $message ) {
-global $wgUser;
-
 $revision = $message-&amp;gt;getProperty( 'revision' );
+$user = RequestContext::getMain()-&amp;gt;getUser();
 
-if ( !$this-&amp;gt;reviewMode || !$wgUser-&amp;gt;isAllowed( 'translate-messagereview' ) || !$revision ) {
+if ( !$this-&amp;gt;reviewMode || !$user-&amp;gt;isAllowed( 'translate-messagereview' ) || !$revision ) {
 return '';
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -306,7 +308,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 );
 
 $reviewers = (array)$message-&amp;gt;getProperty( 'reviewers' );
-if ( in_array( $wgUser-&amp;gt;getId(), $reviewers ) ) {
+if ( in_array( $user-&amp;gt;getId(), $reviewers ) ) {
 $attribs['value'] = wfMessage( 'translate-messagereview-done' )-&amp;gt;text();
 $attribs['disabled'] = 'disabled';
 $attribs['title'] = wfMessage( 'translate-messagereview-doit' )-&amp;gt;text();
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -314,7 +316,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $attribs['value'] = wfMessage( 'translate-messagereview-submit' )-&amp;gt;text();
 $attribs['disabled'] = 'disabled';
 $attribs['title'] = wfMessage( 'translate-messagereview-no-fuzzy' )-&amp;gt;text();
-} elseif ( $wgUser-&amp;gt;getName() === $message-&amp;gt;getProperty( 'last-translator-text' ) ) {
+} elseif ( $user-&amp;gt;getName() === $message-&amp;gt;getProperty( 'last-translator-text' ) ) {
 $attribs['value'] = wfMessage( 'translate-messagereview-submit' )-&amp;gt;text();
 $attribs['disabled'] = 'disabled';
 $attribs['title'] = wfMessage( 'translate-messagereview-no-own' )-&amp;gt;text();
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -331,8 +333,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 protected $reviewStatusCache = array();
 
 protected function getReviewStatus( TMessage $message ) {
-global $wgUser;
-
 if ( !$this-&amp;gt;reviewMode ) {
 return '';
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -344,7 +344,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 return '';
 }
 
-$you = in_array( $wgUser-&amp;gt;getId(), $reviewers );
+$userId = RequestContext::getMain()-&amp;gt;getUser()-&amp;gt;getId();
+$you = in_array( $userId, $reviewers );
 $key = $you ? "y$count" : "n$count";
 
 // -&amp;gt;text() (and -&amp;gt;parse()) invokes the parser. Each call takes
diff --git a/utils/MessageWebImporter.php b/utils/MessageWebImporter.php
index da80029..8b35f02 100644
--- a/utils/MessageWebImporter.php
+++ b/utils/MessageWebImporter.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -61,10 +61,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $this-&amp;gt;title = $title;
 }
 
+/**
+ * &amp;lt; at &amp;gt;return User
+ */
 public function getUser() {
-global $wgUser;
-
-return $this-&amp;gt;user ? $this-&amp;gt;user : $wgUser;
+return $this-&amp;gt;user ? $this-&amp;gt;user : RequestContext::getMain()-&amp;gt;getUser();
 }
 
 public function setUser( User $user ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -133,11 +134,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;return bool
  */
 protected function allowProcess() {
-global $wgRequest;
+$request = RequestContext::getMain()-&amp;gt;getRequest();
 
-if ( $wgRequest-&amp;gt;wasPosted() &amp;amp;&amp;amp;
-$wgRequest-&amp;gt;getBool( 'process', false ) &amp;amp;&amp;amp;
-$this-&amp;gt;getUser()-&amp;gt;matchEditToken( $wgRequest-&amp;gt;getVal( 'token' ) )
+if ( $request-&amp;gt;wasPosted() &amp;amp;&amp;amp;
+$request-&amp;gt;getBool( 'process', false ) &amp;amp;&amp;amp;
+$this-&amp;gt;getUser()-&amp;gt;matchEditToken( $request-&amp;gt;getVal( 'token' ) )
 ) {
 
 return true;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -171,9 +172,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public function execute( $messages ) {
-global $wgOut, $wgLang;
-
-$this-&amp;gt;out = $wgOut;
+$context = RequestContext::getMain();
+$this-&amp;gt;out = $context-&amp;gt;getOutput();
 
 // Set up diff engine
 $diff = new DifferenceEngine;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -209,7 +209,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 if ( $old === false ) {
 $para = '&amp;lt;code class="mw-tmi-new"&amp;gt;' . htmlspecialchars( $key ) . '&amp;lt;/code&amp;gt;';
-$name = wfMessage( 'translate-manage-import-new' )-&amp;gt;rawParams( $para )-&amp;gt;escaped();
+$name = $context-&amp;gt;msg( 'translate-manage-import-new' )-&amp;gt;rawParams( $para )
+-&amp;gt;escaped();
 $text = TranslateUtils::convertWhiteSpaceToHTML( $value );
 $changed[] = self::makeSectionElement( $name, 'new', $text );
 } else {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -217,8 +218,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $text = $diff-&amp;gt;getDiff( '', '' );
 $type = 'changed';
 
-global $wgRequest;
-$action = $wgRequest-&amp;gt;getVal( self::escapeNameForPHP( "action-$type-$key" ) );
+$action = $context-&amp;gt;getRequest()
+-&amp;gt;getVal( self::escapeNameForPHP( "action-$type-$key" ) );
 
 if ( $process ) {
 if ( !count( $changed ) ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -226,9 +227,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 if ( $action === null ) {
-$message = wfMessage(
+$message = $context-&amp;gt;msg(
 'translate-manage-inconsistent',
-wfEscapeWikiText( "action-$type-$key" ) )-&amp;gt;parse();
+wfEscapeWikiText( "action-$type-$key" )
+)-&amp;gt;parse();
 $changed[] = "&amp;lt;li&amp;gt;$message&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;";
 $process = false;
 } else {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -247,13 +249,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 $key = array_shift( $message );
 $params = $message;
-$message = wfMessage( $key, $params )-&amp;gt;parse();
+$message = $context-&amp;gt;msg( $key, $params )-&amp;gt;parse();
 $changed[] = "&amp;lt;li&amp;gt;$message&amp;lt;/li&amp;gt;";
 
 if ( $this-&amp;gt;checkProcessTime() ) {
 $process = false;
-$message = wfMessage(
-'translate-manage-toolong' )-&amp;gt;numParams( $this-&amp;gt;processingTime )-&amp;gt;parse();
+$message = $context-&amp;gt;msg( 'translate-manage-toolong' )
+-&amp;gt;numParams( $this-&amp;gt;processingTime )-&amp;gt;parse();
 $changed[] = "&amp;lt;li&amp;gt;$message&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;";
 }
 continue;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -271,14 +273,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 // translate-manage-action-import, translate-manage-action-conflict,
 // translate-manage-action-ignore, translate-manage-action-fuzzy
 foreach ( $actions as $action ) {
-$label = wfMessage( "translate-manage-action-$action" )-&amp;gt;text();
+$label = $context-&amp;gt;msg( "translate-manage-action-$action" )-&amp;gt;text();
 $name = self::escapeNameForPHP( "action-$type-$key" );
 $id = Sanitizer::escapeId( "action-$key-$action" );
 $act[] = Xml::radioLabel( $label, $name, $action, $id, $action === $defaction );
 }
 
 $param = '&amp;lt;code class="mw-tmi-diff"&amp;gt;' . htmlspecialchars( $key ) . '&amp;lt;/code&amp;gt;';
-$name = wfMessage( 'translate-manage-import-diff', $param,
+$name = $context-&amp;gt;msg( 'translate-manage-import-diff', $param,
 implode( ' ', $act )
 )-&amp;gt;text();
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -294,7 +296,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 foreach ( $diff as $s ) {
 $para = '&amp;lt;code class="mw-tmi-deleted"&amp;gt;' . htmlspecialchars( $s ) . '&amp;lt;/code&amp;gt;';
-$name = wfMessage( 'translate-manage-import-deleted' )-&amp;gt;rawParams( $para )-&amp;gt;escaped();
+$name = $context-&amp;gt;msg( 'translate-manage-import-deleted' )-&amp;gt;rawParams( $para )-&amp;gt;escaped();
 $text = TranslateUtils::convertWhiteSpaceToHTML( $collection[$s]-&amp;gt;translation() );
 $changed[] = self::makeSectionElement( $name, 'deleted', $text );
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -309,7 +311,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $changed[] = '&amp;lt;ul&amp;gt;';
 }
 
-$message = wfMessage( 'translate-manage-import-done' )-&amp;gt;parse();
+$message = $context-&amp;gt;msg( 'translate-manage-import-done' )-&amp;gt;parse();
 $changed[] = "&amp;lt;li&amp;gt;$message&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;";
 $this-&amp;gt;out-&amp;gt;addHTML( implode( "\n", $changed ) );
 } else {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -318,12 +320,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if ( $code === 'en' ) {
 $this-&amp;gt;out-&amp;gt;addWikiMsg( 'translate-manage-intro-en' );
 } else {
-$lang = TranslateUtils::getLanguageName( $code, $wgLang-&amp;gt;getCode() );
+$lang = TranslateUtils::getLanguageName(
+$code,
+$context-&amp;gt;getLanguage()-&amp;gt;getCode()
+);
 $this-&amp;gt;out-&amp;gt;addWikiMsg( 'translate-manage-intro-other', $lang );
 }
 $this-&amp;gt;out-&amp;gt;addHTML( Html::hidden( 'language', $code ) );
 $this-&amp;gt;out-&amp;gt;addHTML( implode( "\n", $changed ) );
-$this-&amp;gt;out-&amp;gt;addHTML( Xml::submitButton( wfMessage( 'translate-manage-submit' )-&amp;gt;text() ) );
+$this-&amp;gt;out-&amp;gt;addHTML( Xml::submitButton( $context-&amp;gt;msg( 'translate-manage-submit' )-&amp;gt;text() ) );
 } else {
 $this-&amp;gt;out-&amp;gt;addWikiMsg( 'translate-manage-nochanges' );
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -343,7 +348,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;param string $code Language code
  * &amp;lt; at &amp;gt;param string $message Contents for the $key/code combination
  * &amp;lt; at &amp;gt;param string $comment Edit summary (default: empty) - see Article::doEdit
- * &amp;lt; at &amp;gt;param User $user User that will make the edit (default: null - $wgUser).
+ * &amp;lt; at &amp;gt;param User $user User that will make the edit (default: null - RequestContext user).
  *        See Article::doEdit.
  * &amp;lt; at &amp;gt;param int $editFlags Integer bitfield: see Article::doEdit
  * &amp;lt; at &amp;gt;throws MWException
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -420,10 +425,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;return array|String
  */
 public static function doFuzzy( $title, $message, $comment, $user, $editFlags = 0 ) {
-global $wgUser;
+$context = RequestContext::getMain();
 
-if ( !$wgUser-&amp;gt;isAllowed( 'translate-manage' ) ) {
-return wfMessage( 'badaccess-group0' )-&amp;gt;text();
+if ( !$context-&amp;gt;getUser()-&amp;gt;isAllowed( 'translate-manage' ) ) {
+return $context-&amp;gt;msg( 'badaccess-group0' )-&amp;gt;text();
 }
 
 $dbw = wfGetDB( DB_MASTER );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -483,7 +488,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $text = '';
 foreach ( $changed as $c ) {
 $key = array_shift( $c );
-$text .= "* " . wfMessage( $key, $c )-&amp;gt;plain() . "\n";
+$text .= "* " . $context-&amp;gt;msg( $key, $c )-&amp;gt;plain() . "\n";
 }
 
 return array( 'translate-manage-import-fuzzy', "\n" . $text );
diff --git a/utils/RcFilter.php b/utils/RcFilter.php
index 6998e65..67889fb 100644
--- a/utils/RcFilter.php
+++ b/utils/RcFilter.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -26,9 +26,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;return bool true
  */
 public static function translationFilter( &amp;amp;$conds, &amp;amp;$tables, &amp;amp;$join_conds, $opts ) {
-global $wgRequest, $wgTranslateMessageNamespaces, $wgTranslateRcFilterDefault;
+global $wgTranslateMessageNamespaces, $wgTranslateRcFilterDefault;
 
-$translations = $wgRequest-&amp;gt;getVal( 'translations', $wgTranslateRcFilterDefault );
+$request = RequestContext::getMain()-&amp;gt;getRequest();
+$translations = $request-&amp;gt;getVal( 'translations', $wgTranslateRcFilterDefault );
 $opts-&amp;gt;add( 'translations', $wgTranslateRcFilterDefault );
 $opts-&amp;gt;setValue( 'translations', $translations );
 
diff --git a/utils/StatsTable.php b/utils/StatsTable.php
index 30fdd6c..065bff3 100644
--- a/utils/StatsTable.php
+++ b/utils/StatsTable.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -31,9 +31,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 protected $extraColumns = array();
 
 public function __construct() {
-global $wgLang;
-
-$this-&amp;gt;lang = $wgLang;
+$this-&amp;gt;lang = RequestContext::getMain()-&amp;gt;getLanguage();
 $this-&amp;gt;translate = SpecialPage::getTitleFor( 'Translate' );
 }
 
diff --git a/utils/TranslationEditPage.php b/utils/TranslationEditPage.php
index c8d0b58..7b10e32 100644
--- a/utils/TranslationEditPage.php
+++ b/utils/TranslationEditPage.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -66,12 +66,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * disabled all other output.
  */
 public function execute() {
-global $wgOut, $wgServer, $wgScriptPath, $wgUser, $wgRequest;
+global $wgServer, $wgScriptPath;
 
-$wgOut-&amp;gt;disable();
+$context = RequestContext::getMain();
+
+$context-&amp;gt;getOutput()-&amp;gt;disable();
 
 $data = $this-&amp;gt;getEditInfo();
-$groupId = $wgRequest-&amp;gt;getText( 'loadgroup', '' );
+$groupId = $context-&amp;gt;getRequest()-&amp;gt;getText( 'loadgroup', '' );
 $helpers = new TranslationHelpers( $this-&amp;gt;getTitle(), $groupId );
 
 $id = "tm-target-{$helpers-&amp;gt;dialogID()}";
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -108,7 +110,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 'dir' =&amp;gt; $targetLang-&amp;gt;getDir(),
 );
 
-if ( !$groupId || !$wgUser-&amp;gt;isAllowed( 'translate' ) ) {
+if ( !$groupId || !$context-&amp;gt;getUser()-&amp;gt;isAllowed( 'translate' ) ) {
 $textareaParams['readonly'] = 'readonly';
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -132,23 +134,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $hidden[] = Html::hidden( 'action', 'edit' );
 
 $summary = Xml::inputLabel(
-wfMessage( 'translate-js-summary' )-&amp;gt;text(),
+$context-&amp;gt;msg( 'translate-js-summary' )-&amp;gt;text(),
 'summary',
 'summary',
 40
 );
 $save = Xml::submitButton(
-wfMessage( 'translate-js-save' )-&amp;gt;text(),
+$context-&amp;gt;msg( 'translate-js-save' )-&amp;gt;text(),
 array( 'class' =&amp;gt; 'mw-translate-save' )
 );
 $saveAndNext = Xml::submitButton(
-wfMessage( 'translate-js-next' )-&amp;gt;text(),
+$context-&amp;gt;msg( 'translate-js-next' )-&amp;gt;text(),
 array( 'class' =&amp;gt; 'mw-translate-next' )
 );
 $skip = Html::element( 'input', array(
 'class' =&amp;gt; 'mw-translate-skip',
 'type' =&amp;gt; 'button',
-'value' =&amp;gt; wfMessage( 'translate-js-skip' )-&amp;gt;text()
+'value' =&amp;gt; $context-&amp;gt;msg( 'translate-js-skip' )-&amp;gt;text()
 ) );
 
 if ( $this-&amp;gt;getTitle()-&amp;gt;exists() ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -157,7 +159,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 array(
 'class' =&amp;gt; 'mw-translate-history',
 'type' =&amp;gt; 'button',
-'value' =&amp;gt; wfMessage( 'translate-js-history' )-&amp;gt;text()
+'value' =&amp;gt; $context-&amp;gt;msg( 'translate-js-history' )-&amp;gt;text()
 )
 );
 } else {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -166,10 +168,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 $support = $this-&amp;gt;getSupportButton( $this-&amp;gt;getTitle() );
 
-if ( $wgUser-&amp;gt;isAllowed( 'translate' ) ) {
+if ( $context-&amp;gt;getUser()-&amp;gt;isAllowed( 'translate' ) ) {
 $bottom = "$summary$save$saveAndNext$skip$history$support";
 } else {
-$text = wfMessage( 'translate-edit-nopermission' )-&amp;gt;escaped();
+$text = $context-&amp;gt;msg( 'translate-edit-nopermission' )-&amp;gt;escaped();
 $button = $this-&amp;gt;getPermissionPageButton();
 $bottom = "$text $button$skip$history$support";
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -234,9 +236,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;return \array
  */
 public static function jsEdit( Title $title, $group = "", $type = 'default' ) {
-global $wgUser;
+$context = RequestContext::getMain();
 
-if ( !$wgUser-&amp;gt;getOption( 'translate-jsedit' ) ) {
+if ( !$context-&amp;gt;getUser()-&amp;gt;getOption( 'translate-jsedit' ) ) {
 return array();
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -251,7 +253,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 return array(
 'onclick' =&amp;gt; $onclick,
-'title' =&amp;gt; wfMessage( 'translate-edit-title', $title-&amp;gt;getPrefixedText() )-&amp;gt;text()
+'title' =&amp;gt; $context-&amp;gt;msg( 'translate-edit-title', $title-&amp;gt;getPrefixedText() )-&amp;gt;text()
 );
 }
 
diff --git a/utils/TranslationHelpers.php b/utils/TranslationHelpers.php
index bb69cf0..002da3a 100644
--- a/utils/TranslationHelpers.php
+++ b/utils/TranslationHelpers.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -187,8 +187,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 array( 'lazy' )
 );
 } elseif ( $suggestions === 'checks' ) {
-global $wgRequest;
-$this-&amp;gt;translation = $wgRequest-&amp;gt;getText( 'translation' );
+$request = RequestContext::getMain()-&amp;gt;getRequest();
+$this-&amp;gt;translation = $request-&amp;gt;getText( 'translation' );
 
 return (string)$this-&amp;gt;callBox( 'check', $all['check'] );
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -477,9 +477,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 protected static function makeGoogleQueryParams( $definition, $pair, $config ) {
-global $wgSitename, $wgVersion, $wgProxyKey, $wgUser;
+global $wgSitename, $wgVersion, $wgProxyKey;
 
 $app = "$wgSitename (MediaWiki $wgVersion; Translate " . TRANSLATE_VERSION . ")";
+$context = RequestContext::getMain();
 $options = array();
 $options['timeout'] = $config['timeout'];
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -488,7 +489,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 'v' =&amp;gt; '1.0',
 'langpair' =&amp;gt; $pair,
 // Unique but not identifiable
-'userip' =&amp;gt; sha1( $wgProxyKey . $wgUser-&amp;gt;getName() ),
+'userip' =&amp;gt; sha1( $wgProxyKey . $context-&amp;gt;getUser()-&amp;gt;getName() ),
 'x-application' =&amp;gt; $app,
 );
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -843,12 +844,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 public function getCheckBox() {
 $this-&amp;gt;mustBeKnownMessage();
 
-global $wgTranslateDocumentationLanguageCode, $wgRequest, $wgOut;
+global $wgTranslateDocumentationLanguageCode;
 
-$title = $wgOut-&amp;gt;getTitle();
+$context = RequestContext::getMain();
+$title = $context-&amp;gt;getOutput()-&amp;gt;getTitle();
 list( $alias, ) = SpecialPageFactory::resolveAlias( $title-&amp;gt;getText() );
 
-$tux = SpecialTranslate::isBeta( $wgRequest )
+$tux = SpecialTranslate::isBeta( $context-&amp;gt;getRequest() )
 &amp;amp;&amp;amp; $title-&amp;gt;isSpecialPage()
 &amp;amp;&amp;amp; ( $alias === 'Translate' );
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -887,25 +889,27 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 foreach ( $checks as $checkParams ) {
 $key = array_shift( $checkParams );
-$checkMessages[] = wfMessage( $key, $checkParams )-&amp;gt;parse();
+$checkMessages[] = $context-&amp;gt;msg( $key, $checkParams )-&amp;gt;parse();
 }
 
 if ( $tux ) {
 $formattedChecks = FormatJson::encode( $checkMessages );
 } else {
-$formattedChecks = Html::rawElement( 'div', array( 'class' =&amp;gt; 'mw-translate-messagechecks' ),
+$formattedChecks = Html::rawElement(
+'div',
+array( 'class' =&amp;gt; 'mw-translate-messagechecks' ),
 TranslateUtils::fieldset(
-wfMessage( 'translate-edit-warnings' )-&amp;gt;escaped(), implode( '&amp;lt;hr /&amp;gt;', $checkMessages ),
+$context-&amp;gt;msg( 'translate-edit-warnings' )-&amp;gt;escaped(),
+implode( '&amp;lt;hr /&amp;gt;', $checkMessages ),
 array( 'class' =&amp;gt; 'mw-sp-translate-edit-warnings' )
-) );
+)
+);
 }
 
 return $formattedChecks;
 }
 
 public function getOtherLanguagesBox() {
-global $wgLang;
-
 $code = $this-&amp;gt;handle-&amp;gt;getCode();
 $page = $this-&amp;gt;handle-&amp;gt;getKey();
 $ns = $this-&amp;gt;handle-&amp;gt;getTitle()-&amp;gt;getNamespace();
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -917,10 +921,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 continue;
 }
 
-$label =
-TranslateUtils::getLanguageName( $fbcode, $wgLang-&amp;gt;getCode() ) .
-wfMessage( 'word-separator' )-&amp;gt;text() .
-wfMessage( 'parentheses', wfBCP47( $fbcode ) )-&amp;gt;text();
+$context = RequestContext::getMain();
+$label = TranslateUtils::getLanguageName( $fbcode, $context-&amp;gt;getLanguage()-&amp;gt;getCode() ) .
+$context-&amp;gt;msg( 'word-separator' )-&amp;gt;text() .
+$context-&amp;gt;msg( 'parentheses', wfBCP47( $fbcode ) )-&amp;gt;text();
 
 $target = Title::makeTitleSafe( $ns, "$page/$fbcode" );
 if ( $target ) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -967,17 +971,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 
 public function getDocumentationBox() {
-global $wgTranslateDocumentationLanguageCode, $wgOut;
+global $wgTranslateDocumentationLanguageCode;
 
 if ( !$wgTranslateDocumentationLanguageCode ) {
 throw new TranslationHelperException( 'Message documentation language code is not defined' );
 }
 
+$context = RequestContext::getMain();
 $page = $this-&amp;gt;handle-&amp;gt;getKey();
 $ns = $this-&amp;gt;handle-&amp;gt;getTitle()-&amp;gt;getNamespace();
 
 $title = Title::makeTitle( $ns, $page . '/' . $wgTranslateDocumentationLanguageCode );
-$edit = self::ajaxEditLink( $title, wfMessage( 'translate-edit-contribute' )-&amp;gt;escaped() );
+$edit = self::ajaxEditLink(
+$title,
+$context-&amp;gt;msg( 'translate-edit-contribute' )-&amp;gt;escaped()
+);
 $info = TranslateUtils::getMessageContent( $page, $wgTranslateDocumentationLanguageCode, $ns );
 
 $class = 'mw-sp-translate-edit-info';
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -992,20 +1000,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $divAttribs = array( 'dir' =&amp;gt; 'ltr', 'lang' =&amp;gt; 'en', 'class' =&amp;gt; 'mw-content-ltr' );
 
 if ( strval( $info ) === '' ) {
-global $wgLang;
-$info = wfMessage( 'translate-edit-no-information' )-&amp;gt;text();
+$info = $context-&amp;gt;msg( 'translate-edit-no-information' )-&amp;gt;text();
 $class = 'mw-sp-translate-edit-noinfo';
+$lang = $context-&amp;gt;getLanguage();
 // The message saying that there's no info, should be translated
-$divAttribs = array( 'dir' =&amp;gt; $wgLang-&amp;gt;getDir(), 'lang' =&amp;gt; $wgLang-&amp;gt;getCode() );
+$divAttribs = array( 'dir' =&amp;gt; $lang-&amp;gt;getDir(), 'lang' =&amp;gt; $lang-&amp;gt;getCode() );
 }
 $class .= ' mw-sp-translate-message-documentation';
 
-$contents = $wgOut-&amp;gt;parse( $info );
+$contents = $context-&amp;gt;getOutput()-&amp;gt;parse( $info );
 // Remove whatever block element wrapup the parser likes to add
 $contents = preg_replace( '~^&amp;lt;([a-z]+)&amp;gt;(.*)&amp;lt;/\1&amp;gt;$~us', '\2', $contents );
 
 return TranslateUtils::fieldset(
-wfMessage( 'translate-edit-information' )-&amp;gt;rawParams( $edit )-&amp;gt;escaped(),
+$context-&amp;gt;msg( 'translate-edit-information' )-&amp;gt;rawParams( $edit )-&amp;gt;escaped(),
 Html::rawElement( 'div', $divAttribs, $contents ), array( 'class' =&amp;gt; $class )
 );
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1146,21 +1154,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 return null;
 }
 
-global $wgUser;
-$user = $latestRev-&amp;gt;getUserText( Revision::FOR_THIS_USER, $wgUser );
+$context = RequestContext::getMain();
+$user = $latestRev-&amp;gt;getUserText( Revision::FOR_THIS_USER, $context-&amp;gt;getUser() );
 $comment = $latestRev-&amp;gt;getComment();
 
 if ( $diffText === '' ) {
 if ( strval( $comment ) !== '' ) {
-$text = wfMessage( 'translate-dynagroup-byc', $user, $comment )-&amp;gt;escaped();
+$text = $context-&amp;gt;msg( 'translate-dynagroup-byc', $user, $comment )-&amp;gt;escaped();
 } else {
-$text = wfMessage( 'translate-dynagroup-by', $user )-&amp;gt;escaped();
+$text = $context-&amp;gt;msg( 'translate-dynagroup-by', $user )-&amp;gt;escaped();
 }
 } else {
 if ( strval( $comment ) !== '' ) {
-$text = wfMessage( 'translate-dynagroup-lastc', $user, $comment )-&amp;gt;escaped();
+$text = $context-&amp;gt;msg( 'translate-dynagroup-lastc', $user, $comment )-&amp;gt;escaped();
 } else {
-$text = wfMessage( 'translate-dynagroup-last', $user )-&amp;gt;escaped();
+$text = $context-&amp;gt;msg( 'translate-dynagroup-last', $user )-&amp;gt;escaped();
 }
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1192,10 +1200,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;return array
  */
 protected static function getFallbacks( $code ) {
-global $wgUser, $wgTranslateLanguageFallbacks;
+global $wgTranslateLanguageFallbacks;
 
 // User preference has the final say
-$preference = $wgUser-&amp;gt;getOption( 'translate-editlangs' );
+$user = RequestContext::getMain()-&amp;gt;getUser();
+$preference = $user-&amp;gt;getOption( 'translate-editlangs' );
 if ( $preference !== 'default' ) {
 $fallbacks = array_map( 'trim', explode( ',', $preference ) );
 foreach ( $fallbacks as $k =&amp;gt; $v ) {
diff --git a/utils/UserToggles.php b/utils/UserToggles.php
index 4ffc2ba..434d1ff 100644
--- a/utils/UserToggles.php
+++ b/utils/UserToggles.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -103,10 +103,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * &amp;lt; at &amp;gt;return JsSelectToInput
  */
 protected static function languageSelector() {
-global $wgLang;
-
 if ( is_callable( array( 'LanguageNames', 'getNames' ) ) ) {
-$languages = LanguageNames::getNames( $wgLang-&amp;gt;getCode(),
+$lang = RequestContext::getMain()-&amp;gt;getLanguage();
+$languages = LanguageNames::getNames( $lang-&amp;gt;getCode(),
 LanguageNames::FALLBACK_NORMAL
 );
 } else {

&lt;/pre&gt;</description>
    <dc:creator>Siebrand (Code Review</dc:creator>
    <dc:date>2013-05-25T13:14:37</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172873">
    <title>[MediaWiki-commits] [Gerrit] Rename Skin::getUsableSkins() toSkin::getAllowedSkins() - change (mediawiki/core)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172873</link>
    <description>&lt;pre&gt;Waldir has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65446


Change subject: Rename Skin::getUsableSkins() to Skin::getAllowedSkins()
......................................................................

Rename Skin::getUsableSkins() to Skin::getAllowedSkins()

Follow-up to change 65426 (commit a3c7a8b8f)

Change-Id: I0b0fdfb5615c22aa876882c3ca344ebb1f10c4bd
---
M includes/Preferences.php
M includes/Skin.php
M includes/api/ApiQuerySiteinfo.php
3 files changed, 5 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/46/65446/1

diff --git a/includes/Preferences.php b/includes/Preferences.php
index a6d530f..df80894 100644
--- a/includes/Preferences.php
+++ b/includes/Preferences.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1074,9 +1074,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $mptitle = Title::newMainPage();
 $previewtext = $context-&amp;gt;msg( 'skin-preview' )-&amp;gt;text();
 
-# Only show members of Skin::getSkinNames() rather than
-# $skinNames (skins is all skin names from Language.php)
-$validSkinNames = Skin::getUsableSkins();
+# Only show skins that aren't disabled in $wgSkipSkins
+$validSkinNames = Skin::getAllowedSkins();
 
 # Sort by UI skin name. First though need to update validSkinNames as sometimes
 # the skinkey &amp;amp; UI skinname differ (e.g. "standard" skinkey is "Classic" in the UI).
diff --git a/includes/Skin.php b/includes/Skin.php
index 15b8545..0bc7c3e 100644
--- a/includes/Skin.php
+++ b/includes/Skin.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -93,7 +93,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * only want to show skins users _can_ use.
  * &amp;lt; at &amp;gt;return array of strings
  */
-public static function getUsableSkins() {
+public static function getAllowedSkins() {
 global $wgSkipSkins;
 
 $allowedSkins = self::getSkinNames();
diff --git a/includes/api/ApiQuerySiteinfo.php b/includes/api/ApiQuerySiteinfo.php
index 09a0f3d..30d2425 100644
--- a/includes/api/ApiQuerySiteinfo.php
+++ b/includes/api/ApiQuerySiteinfo.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -544,12 +544,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 public function appendSkins( $property ) {
 $data = array();
-$usable = Skin::getUsableSkins();
+$allowed = Skin::getAllowedSkins();
 $default = Skin::normalizeKey( 'default' );
 foreach ( Skin::getSkinNames() as $name =&amp;gt; $displayName ) {
 $skin = array( 'code' =&amp;gt; $name );
 ApiResult::setContent( $skin, $displayName );
-if ( !isset( $usable[$name] ) ) {
+if ( !isset( $allowed[$name] ) ) {
 $skin['unusable'] = '';
 }
 if ( $name === $default ) {

&lt;/pre&gt;</description>
    <dc:creator>Waldir (Code Review</dc:creator>
    <dc:date>2013-05-25T13:12:59</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172871">
    <title>[MediaWiki-commits] [Gerrit] Point php to 1.22wmf4 - change(operations/mediawiki-config)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172871</link>
    <description>&lt;pre&gt;Reedy has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65445


Change subject: Point php to 1.22wmf4
......................................................................

Point php to 1.22wmf4

Change-Id: I1a8cbfefabf27d54eac1c361e4c00ac02d7e72ae
---
M php
1 file changed, 1 insertion(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/mediawiki-config refs/changes/45/65445/1

diff --git a/php b/php
index 94453d1..82a4545 120000
--- a/php
+++ b/php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-php-1.22wmf3
\ No newline at end of file
+php-1.22wmf4
\ No newline at end of file

&lt;/pre&gt;</description>
    <dc:creator>Reedy (Code Review</dc:creator>
    <dc:date>2013-05-25T13:10:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172869">
    <title>[MediaWiki-commits] [Gerrit] Fix misspelled event handler - change(mediawiki...VisualEditor)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172869</link>
    <description>&lt;pre&gt;Catrope has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65444


Change subject: Fix misspelled event handler
......................................................................

Fix misspelled event handler

Change-Id: I3f3091aad24d4bfdea08fbce1c331e8767866bbc
---
M modules/ve/ui/widgets/ve.ui.MWCategoryWidget.js
1 file changed, 2 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/44/65444/1

diff --git a/modules/ve/ui/widgets/ve.ui.MWCategoryWidget.js b/modules/ve/ui/widgets/ve.ui.MWCategoryWidget.js
index 319ca9f..b83ca6d 100644
--- a/modules/ve/ui/widgets/ve.ui.MWCategoryWidget.js
+++ b/modules/ve/ui/widgets/ve.ui.MWCategoryWidget.js
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -140,7 +140,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * Toggles popup menu per category item
  * &amp;lt; at &amp;gt;param {Object} item
  */
-ve.ui.MWCategoryWidget.prototype.onTogglePoupupMenu = function ( item ) {
+ve.ui.MWCategoryWidget.prototype.onTogglePopupMenu = function ( item ) {
 // Close open popup.
 if ( this.savedPopupState === false || item.value !== this.popup.category ) {
 this.popup.openPopup( item );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -184,7 +184,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 categoryItem = new ve.ui.MWCategoryItemWidget( { '$$': this.$$, 'item': item } );
 categoryItem.connect( this, {
 'savePopupState': 'onSavePopupState',
-'togglePopupMenu': 'onTogglePoupupMenu'
+'togglePopupMenu': 'onTogglePopupMenu'
 } );
 // Auto-remove existing items by value
 if ( item.value in this.categories ) {

&lt;/pre&gt;</description>
    <dc:creator>Catrope (Code Review</dc:creator>
    <dc:date>2013-05-25T12:53:52</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172868">
    <title>[MediaWiki-commits] [Gerrit] add virtual language subdomainredirects for wikidata - change (operations/apache-config)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172868</link>
    <description>&lt;pre&gt;Dzahn has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65443


Change subject: add virtual language subdomain redirects for wikidata
......................................................................

add virtual language subdomain redirects for wikidata

redirect anything NOT www to redirector.php and pass the path

Change-Id: I1cda5c2544bb06d960a1ebef9398cd106ccb4144
---
M main.conf
1 file changed, 4 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/apache-config refs/changes/43/65443/1

diff --git a/main.conf b/main.conf
index 3d27ded..ed5faa0 100644
--- a/main.conf
+++ b/main.conf
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -72,6 +72,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
     RewriteRule ^/$ /w/index.php
     RewriteRule ^/w/$ /w/index.php
 
+    # redirects for wikidata language subdomains
+    RewriteCond %{HTTP_HOST} !(^www\.wikidata\.org$)
+    RewriteRule ^(.*)$ /usr/local/apache/common/docroot/wikidata/w/redirector.php?path=$1 [L]
+
     # Configurable favicon
     RewriteRule ^/favicon\.ico$ /w/favicon.php [L]
 

&lt;/pre&gt;</description>
    <dc:creator>Dzahn (Code Review</dc:creator>
    <dc:date>2013-05-25T12:50:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172867">
    <title>[MediaWiki-commits] [Gerrit] Fix undefined i18n message in categorypopout - change (mediawiki...VisualEditor)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172867</link>
    <description>&lt;pre&gt;Catrope has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65442


Change subject: Fix undefined i18n message in category popout
......................................................................

Fix undefined i18n message in category popout

Message was renamed earlier but this caller wasn't updated

Change-Id: I7ec37c6e0fd6fbbe766166704ea797c9ffd6684b
---
M modules/ve/ui/widgets/ve.ui.MWCategoryPopupWidget.js
1 file changed, 1 insertion(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/42/65442/1

diff --git a/modules/ve/ui/widgets/ve.ui.MWCategoryPopupWidget.js b/modules/ve/ui/widgets/ve.ui.MWCategoryPopupWidget.js
index e0350d5..144e086 100644
--- a/modules/ve/ui/widgets/ve.ui.MWCategoryPopupWidget.js
+++ b/modules/ve/ui/widgets/ve.ui.MWCategoryPopupWidget.js
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,7 +43,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 this.$.addClass( 've-ui-mwCategoryPopupMenu' ).hide();
 this.$title
 .addClass( 've-ui-mwCategoryPopupTitle ve-ui-icon-tag' )
-.text( ve.msg( 'visualeditor-category-settings-label' ) );
+.text( ve.msg( 'visualeditor-dialog-meta-categories-settings-label' ) );
 this.$menu.append(
 this.$title,
 this.removeButton.$.addClass( 've-ui-mwCategoryRemoveButton' ),

&lt;/pre&gt;</description>
    <dc:creator>Catrope (Code Review</dc:creator>
    <dc:date>2013-05-25T12:50:07</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172866">
    <title>[MediaWiki-commits] [Gerrit] Make reference editing work - change(mediawiki...VisualEditor)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172866</link>
    <description>&lt;pre&gt;Catrope has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65441


Change subject: Make reference editing work
......................................................................

Make reference editing work

The only reason it doesn't save correctly right now is because Parsoid
doesn't serialize reference edits correctly.

Change-Id: Ia0f272c07cc28ee829372eb848f23aec99eb92f0
---
M modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
M modules/ve/dm/ve.dm.InternalList.js
2 files changed, 6 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/41/65441/1

diff --git a/modules/ve/dm/nodes/ve.dm.MWReferenceNode.js b/modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
index 9855603..7ebe962 100644
--- a/modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
+++ b/modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -36,12 +36,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 ve.dm.MWReferenceNode.static.toDataElement = function ( domElements, converter ) {
 var dataElement, listIndex,
 about = domElements[0].getAttribute( 'about' ),
-// TODO: this is always-present in the new spec, so "|| '{}'" can be removed later
 mw = JSON.parse( domElements[0].getAttribute( 'data-mw' ) || '{}' ),
-// TODO: this will be stored in mw.body.html in the new spec
-body = JSON.parse( domElements[0].getAttribute( 'data-parsoid' ) ).src,
-// TODO: this will be stored in mw.name in the new spec
-name = $( body ).attr( 'name' ),
+body = mw.body.html,
+// TODO: this should be in mw.name but that's always set to 'ref'
+name = $( domElements[0] ).children( 'a' ).attr( 'href' ),
 key = name !== null ? name : ve.getHash( body );
 
 listIndex = converter.internalList.addItem( key, body );
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -73,9 +71,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 ),
 itemNodeHtml = $( itemNodeWrapper ).html();
 
-// TODO: store internalNodeHtml in data.mw:
-// dataElement.attributes.mw.body.html = itemNodeHtml;
-// span.setAttribute( 'data-mw', JSON.stringify( dataElement.attributes.mw ) );
+dataElement.attributes.mw.body.html = itemNodeHtml;
+span.setAttribute( 'data-mw', JSON.stringify( dataElement.attributes.mw ) );
 
 return [ span ];
 };
diff --git a/modules/ve/dm/ve.dm.InternalList.js b/modules/ve/dm/ve.dm.InternalList.js
index db5cb82..db39eaa 100644
--- a/modules/ve/dm/ve.dm.InternalList.js
+++ b/modules/ve/dm/ve.dm.InternalList.js
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -118,7 +118,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if ( itemsHtml.length ) {
 list.push( { 'type': 'internalList' } );
 for ( i = 0, length = itemsHtml.length; i &amp;lt; length; i++ ) {
-itemData = converter.getDataFromDomRecursion( $( itemsHtml[i] )[0] );
+itemData = converter.getDataFromDomRecursion( $( '&amp;lt;div&amp;gt;' ).html( itemsHtml[i] )[0] );
 list = list.concat(
 [{ 'type': 'internalItem' }],
 itemData,

&lt;/pre&gt;</description>
    <dc:creator>Catrope (Code Review</dc:creator>
    <dc:date>2013-05-25T12:45:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172865">
    <title>[MediaWiki-commits] [Gerrit] Remove the id "anonlogin" - change(mediawiki/core)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172865</link>
    <description>&lt;pre&gt;Waldir has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65440


Change subject: Remove the id "anonlogin"
......................................................................

Remove the id "anonlogin"

This was used as an alternative id for the login link
in the personal tools at the top right.

This seems to have been inherited since the days of the PHPTal-based skins
(at least git blame shows their presence back in Brion's rewrite of the skin
in november 2004).

I've asked several people about this (Brion, Tyler, Roan, Timo, Bartosz)
And nobody could figure out why it is needed.
After all, whenever the user sees the login link it means they are
using the wiki as an anonymous user.

My best guess is that this is meant to allow the ability
to style the login differently when the user has already made an edit
anonymously (which is, if I'm not mistaken, when the anon userlinks are shown,
i.e. the links to the IP userpage and talkpage are visible),
but I see no evidence of this, and in any case it would be better to change
the class of the whole personal tools div instead of changing the link IDs.

Change-Id: Ib3445934853db5361c3c6fecfe75623b0b921400
---
M includes/SkinTemplate.php
M languages/messages/MessagesEn.php
M languages/messages/MessagesQqq.php
M maintenance/dictionary/mediawiki.dic
M maintenance/language/messageTypes.inc
M maintenance/language/messages.inc
M skins/CologneBlue.php
7 files changed, 5 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/40/65440/1

diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php
index e3a6ccf..fd4abeb 100644
--- a/includes/SkinTemplate.php
+++ b/includes/SkinTemplate.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -659,10 +659,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 : 'login';
 $is_signup = $request-&amp;gt;getText( 'type' ) == 'signup';
 
-# anonlogin &amp;amp; login are the same
 $proto = $wgSecureLogin ? PROTO_HTTPS : null;
 
-$login_id = $this-&amp;gt;showIPinHeader() ? 'anonlogin' : 'login';
 $login_url = array(
 'text' =&amp;gt; $this-&amp;gt;msg( $loginlink )-&amp;gt;text(),
 'href' =&amp;gt; self::makeSpecialUrl( 'Userlogin', $returnto, $proto ),
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -698,7 +696,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $personal_urls['createaccount'] = $createaccount_url;
 }
 
-$personal_urls[$login_id] = $login_url;
+$personal_urls['login'] = $login_url;
 }
 
 wfRunHooks( 'PersonalUrls', array( &amp;amp;$personal_urls, &amp;amp;$title ) );
diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php
index bc3a381..81a3855 100644
--- a/languages/messages/MessagesEn.php
+++ b/languages/messages/MessagesEn.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3623,7 +3623,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 'accesskey-pt-watchlist'                =&amp;gt; 'l', # do not translate or duplicate this message to other languages
 'accesskey-pt-mycontris'                =&amp;gt; 'y', # do not translate or duplicate this message to other languages
 'accesskey-pt-login'                    =&amp;gt; 'o', # do not translate or duplicate this message to other languages
-'accesskey-pt-anonlogin'                =&amp;gt; 'o', # do not translate or duplicate this message to other languages
 'accesskey-pt-logout'                   =&amp;gt; '', # do not translate or duplicate this message to other languages
 'accesskey-ca-talk'                     =&amp;gt; 't', # do not translate or duplicate this message to other languages
 'accesskey-ca-edit'                     =&amp;gt; 'e', # do not translate or duplicate this message to other languages
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3693,7 +3692,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 'tooltip-pt-watchlist'                =&amp;gt; 'A list of pages you are monitoring for changes',
 'tooltip-pt-mycontris'                =&amp;gt; 'A list of your contributions',
 'tooltip-pt-login'                    =&amp;gt; 'You are encouraged to log in; however, it is not mandatory',
-'tooltip-pt-anonlogin'                =&amp;gt; 'You are encouraged to log in; however, it is not mandatory',
 'tooltip-pt-logout'                   =&amp;gt; 'Log out',
 'tooltip-ca-talk'                     =&amp;gt; 'Discussion about the content page',
 'tooltip-ca-edit'                     =&amp;gt; 'You can edit this page. Please use the preview button before saving',
diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php
index 9d5bacb..542d075 100644
--- a/languages/messages/MessagesQqq.php
+++ b/languages/messages/MessagesQqq.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1102,8 +1102,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 See also:
 * {{msg-mw|Login}}
-* {{msg-mw|Accesskey-pt-anonlogin}}
-* {{msg-mw|Tooltip-pt-anonlogin}}
+* {{msg-mw|Accesskey-pt-login}}
+* {{msg-mw|Tooltip-pt-login}}
 {{Identical|Log in}}",
 'nav-login-createaccount' =&amp;gt; "Shown to anonymous users in the upper right corner of the page. When you can't create an account, the message {{msg-mw|login}} is shown.
 {{Identical|Log in / create account}}",
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6378,12 +6378,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 * {{msg-mw|Accesskey-pt-mycontris}}
 * {{msg-mw|Tooltip-pt-mycontris}}',
 'tooltip-pt-login' =&amp;gt; "Tooltip shown when hovering over the link 'Log in / create account' in the upper right corner show on all pages while not logged in.",
-'tooltip-pt-anonlogin' =&amp;gt; 'Used as tooltip for link {{msg-mw|Login}} in your personal toolbox (upper right side).
-
-See also:
-* {{msg-mw|Login}}
-* {{msg-mw|Accesskey-pt-anonlogin}}
-* {{msg-mw|Tooltip-pt-anonlogin}}',
 'tooltip-pt-logout' =&amp;gt; 'Tooltip shown when hovering over the {{msg-mw|Logout}} link in your personal toolbox (upper right side).
 
 See also:
diff --git a/maintenance/dictionary/mediawiki.dic b/maintenance/dictionary/mediawiki.dic
index 59ea18f..0f38827 100644
--- a/maintenance/dictionary/mediawiki.dic
+++ b/maintenance/dictionary/mediawiki.dic
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -480,7 +480,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 andtitle
 anon
 anoneditwarning
-anonlogin
 anonnotice
 anononly
 anonpreviewwarning
diff --git a/maintenance/language/messageTypes.inc b/maintenance/language/messageTypes.inc
index 17feaf9..5a3dea9 100644
--- a/maintenance/language/messageTypes.inc
+++ b/maintenance/language/messageTypes.inc
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -32,7 +32,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 'accesskey-pt-watchlist',
 'accesskey-pt-mycontris',
 'accesskey-pt-login',
-'accesskey-pt-anonlogin',
 'accesskey-pt-logout',
 'accesskey-ca-talk',
 'accesskey-ca-edit',
diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc
index fdd37e6..b9fa854 100644
--- a/maintenance/language/messages.inc
+++ b/maintenance/language/messages.inc
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2546,7 +2546,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 'accesskey-pt-watchlist',
 'accesskey-pt-mycontris',
 'accesskey-pt-login',
-'accesskey-pt-anonlogin',
 'accesskey-pt-logout',
 'accesskey-ca-talk',
 'accesskey-ca-edit',
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2617,7 +2616,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 'tooltip-pt-watchlist',
 'tooltip-pt-mycontris',
 'tooltip-pt-login',
-'tooltip-pt-anonlogin',
 'tooltip-pt-logout',
 'tooltip-ca-talk',
 'tooltip-ca-edit',
diff --git a/skins/CologneBlue.php b/skins/CologneBlue.php
index d766b64..d8bb4ae 100644
--- a/skins/CologneBlue.php
+++ b/skins/CologneBlue.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -380,7 +380,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 );
 
 $personalUrls = $this-&amp;gt;getPersonalTools();
-foreach ( array( 'logout', 'createaccount', 'login', 'anonlogin' ) as $key ) {
+foreach ( array( 'logout', 'createaccount', 'login' ) as $key ) {
 if ( $personalUrls[$key] ) {
 $s[] = $this-&amp;gt;makeListItem( $key, $personalUrls[$key], array( 'tag' =&amp;gt; 'span' ) );
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -421,7 +421,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 // Personal tools ("My pages")
 $qbmyoptions = $this-&amp;gt;getPersonalTools();
-foreach ( array( 'logout', 'createaccount', 'login', 'anonlogin' ) as $key ) {
+foreach ( array( 'logout', 'createaccount', 'login', ) as $key ) {
 $qbmyoptions[$key] = null;
 }
 

&lt;/pre&gt;</description>
    <dc:creator>Waldir (Code Review</dc:creator>
    <dc:date>2013-05-25T12:45:25</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172862">
    <title>[MediaWiki-commits] [Gerrit] Update CentralAuth to master - change(mediawiki/core)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172862</link>
    <description>&lt;pre&gt;Reedy has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65439


Change subject: Update CentralAuth to master
......................................................................

Update CentralAuth to master

Change-Id: I8fb3118911e916a8560a20d2a6c8c87dded35d2c
---
M extensions/CentralAuth
1 file changed, 0 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/39/65439/1

diff --git a/extensions/CentralAuth b/extensions/CentralAuth
index ce28f8c..65e2633 160000
--- a/extensions/CentralAuth
+++ b/extensions/CentralAuth
-Subproject commit ce28f8ccfd0d48e8c5cae06a7d789710abebd8b8
+Subproject commit 65e263389f10911860ffc60a8de72f0bc8a2733f

&lt;/pre&gt;</description>
    <dc:creator>Reedy (Code Review</dc:creator>
    <dc:date>2013-05-25T12:39:06</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172861">
    <title>[MediaWiki-commits] [Gerrit] Only log creations done via themaintenance script once - change (mediawiki...CentralAuth)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172861</link>
    <description>&lt;pre&gt;Hoo man has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65438


Change subject: Only log creations done via the maintenance script once
......................................................................

Only log creations done via the maintenance script once

Like Ia84da7840c3487b874426461d3347827bbc2a57a

Change-Id: I0237f1753d3238ab11769e72250589a35e805b72
---
M maintenance/createLocalAccount.php
1 file changed, 0 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CentralAuth refs/changes/38/65438/1

diff --git a/maintenance/createLocalAccount.php b/maintenance/createLocalAccount.php
index 09dd85a..661ab88 100644
--- a/maintenance/createLocalAccount.php
+++ b/maintenance/createLocalAccount.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -34,7 +34,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 $user-&amp;gt;loadDefaults( $username );
 $user-&amp;gt;addToDatabase();
-$user-&amp;gt;addNewUserLogEntryAutoCreate();
 
 $wgAuth-&amp;gt;initUser( $user, true );
 $wgAuth-&amp;gt;updateUser( $user );

&lt;/pre&gt;</description>
    <dc:creator>Hoo man (Code Review</dc:creator>
    <dc:date>2013-05-25T12:35:28</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172858">
    <title>[MediaWiki-commits] [Gerrit] Don't log autocreations twice - change(mediawiki...CentralAuth)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172858</link>
    <description>&lt;pre&gt;Hoo man has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65437


Change subject: Don't log autocreations twice
......................................................................

Don't log autocreations twice

We already log them in the AuthPlugin, no need to have this
logic in the hooks file.

Change-Id: Ia84da7840c3487b874426461d3347827bbc2a57a
---
M CentralAuthHooks.php
1 file changed, 0 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CentralAuth refs/changes/37/65437/1

diff --git a/CentralAuthHooks.php b/CentralAuthHooks.php
index 36cbd03..1833c84 100644
--- a/CentralAuthHooks.php
+++ b/CentralAuthHooks.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -676,7 +676,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 wfDebug( __METHOD__.": failed with message " . $status-&amp;gt;getWikiText() . "\n" );
 return false;
 }
-$user-&amp;gt;addNewUserLogEntryAutoCreate();
 
 $wgAuth-&amp;gt;initUser( $user, true );
 

&lt;/pre&gt;</description>
    <dc:creator>Hoo man (Code Review</dc:creator>
    <dc:date>2013-05-25T12:28:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172857">
    <title>[MediaWiki-commits] [Gerrit] Echo notification for new projectmembership - change (mediawiki...OpenStackManager)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172857</link>
    <description>&lt;pre&gt;Alex Monk has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65436


Change subject: Echo notification for new project membership
......................................................................

Echo notification for new project membership

Bug: 48766
Change-Id: Ic114d2bef0bd46d439d369ff6942d079b818d00c
---
M OpenStackManager.i18n.php
M OpenStackManager.php
M special/SpecialNovaProject.php
3 files changed, 26 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/OpenStackManager refs/changes/36/65436/1

diff --git a/OpenStackManager.i18n.php b/OpenStackManager.i18n.php
index 1e2f14e..30e064c 100644
--- a/OpenStackManager.i18n.php
+++ b/OpenStackManager.i18n.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -423,9 +423,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 'notification-osm-instance-deleted' =&amp;gt; '$1 deleted instance \'$3\' in project [[$2]]',
 'notification-osm-instance-build-completed' =&amp;gt; '$1 built instance \'$3\' in project [[$2]]',
 'notification-osm-instance-reboot-completed' =&amp;gt; '$1 rebooted instance \'$3\' in project [[$2]]',
+'notification-osm-projectmember-added' =&amp;gt; '$1 added you to project [[$2]]',
 'echo-category-title-osm-instance-deleted' =&amp;gt; 'Deletes an instance from a project I\'m an admin on.',
 'echo-category-title-osm-instance-build-completed' =&amp;gt; 'Builds an instance on a project I\'m an admin on.',
 'echo-category-title-osm-instance-reboot-completed' =&amp;gt; 'Reboots an instance.',
+'echo-category-title-osm-instance-deleted' =&amp;gt; 'Project membership addition',
 
 'prefs-openstack' =&amp;gt; 'OpenStack',
 'prefs-openstack-keys' =&amp;gt; 'Key list',
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1424,6 +1426,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 * $1 - agent
 * $2 - project
 * $3 - instance',
+'notification-osm-projectmember-added' =&amp;gt; 'Title for the new project membership notification.
+* $1 - agent
+* $2 - project',
 'echo-category-title-osm-instance-deleted' =&amp;gt; 'Used by the Echo extension in the Preferences -&amp;gt; Notifications tab as a label to enable email notification for the osm-instance-deleted event.
 
 Preceded by {{msg-mw|Prefs-emailsubscriptions}}.',
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1431,6 +1436,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 Preceded by {{msg-mw|Prefs-emailsubscriptions}}.',
 'echo-category-title-osm-instance-reboot-completed' =&amp;gt; 'Used by the Echo extension in the Preferences -&amp;gt; Notifications tab as a label to enable email notification for the osm-instance-reboot-completed event.',
+'echo-category-title-osm-instance-deleted' =&amp;gt; 'Used by the Echo extension in the Preferences -&amp;gt; Notifications tab as a label to enable email notification for the osm-projectmember-add event.',
 'prefs-openstack' =&amp;gt; 'Title for a tab in Preferences for OpenStack related items',
 'prefs-openstack-keys' =&amp;gt; 'Subheading used in the Preferences -&amp;gt; OpenStack for a the public SSH key list',
 );
diff --git a/OpenStackManager.php b/OpenStackManager.php
index a4c668b..f23ac0c 100644
--- a/OpenStackManager.php
+++ b/OpenStackManager.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -250,6 +250,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }
 } elseif ( $event-&amp;gt;getType() == 'osm-instance-reboot-completed' ) {
 $users[$event-&amp;gt;getAgent()-&amp;gt;getId()] = $event-&amp;gt;getAgent(); // Only notify the person who did it to say the reboot was completed.
+} elseif ( $event-&amp;gt;getType() == 'osm-projectmembers-add' ) {
+$extra = $event-&amp;gt;getExtra(); // PHP 5.3 back-compat...
+$users[$extra['userAdded']] = User::newFromId( $extra['userAdded'] );
 }
 unset( $users[0] );
 return true;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -296,6 +299,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $wgDefaultUserOptions["echo-subscriptions-web-osm-instance-deleted"] = true;
 $wgDefaultUserOptions["echo-subscriptions-email-osm-instance-deleted"] = true;
 
+$wgEchoNotifications['osm-projectmembers-add'] = array(
+'formatter-class' =&amp;gt; 'EchoBasicFormatter',
+'category' =&amp;gt; 'osm-projectmembers-add',
+'title-message' =&amp;gt; 'notification-osm-projectmember-added',
+'title-params' =&amp;gt; array( 'agent', 'title' ),
+'icon' =&amp;gt; 'placeholder',
+'payload' =&amp;gt; array( 'summary' )
+);
+
 /**
  * &amp;lt; at &amp;gt;param $updater DatabaseUpdater
  * &amp;lt; at &amp;gt;return bool
diff --git a/special/SpecialNovaProject.php b/special/SpecialNovaProject.php
index b13cfe4..18be30d 100644
--- a/special/SpecialNovaProject.php
+++ b/special/SpecialNovaProject.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -654,6 +654,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 $success = $project-&amp;gt;addMember( $member );
 if ( $success ) {
 $this-&amp;gt;getOutput()-&amp;gt;addWikiMsg( 'openstackmanager-addedto', $formData['member'], $formData['projectname'] );
+if ( class_exists( 'EchoEvent' ) ) {
+EchoEvent::create( array(
+'type' =&amp;gt; 'osm-projectmembers-add',
+'title' =&amp;gt; Title::newFromText( $formData['projectname'], NS_NOVA_RESOURCE ),
+'agent' =&amp;gt; $this-&amp;gt;getUser(),
+'extra' =&amp;gt; array( 'userAdded' =&amp;gt; $user-&amp;gt;getId() ),
+) );
+}
 } else {
 $this-&amp;gt;getOutput()-&amp;gt;addWikiMsg( 'openstackmanager-failedtoadd', $formData['member'], $formData['projectname'] );
 }

&lt;/pre&gt;</description>
    <dc:creator>Alex Monk (Code Review</dc:creator>
    <dc:date>2013-05-25T12:26:37</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172856">
    <title>[MediaWiki-commits] [Gerrit] Remove duplicated code breaking thetemplate dialog - change (mediawiki...VisualEditor)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172856</link>
    <description>&lt;pre&gt;Catrope has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65435


Change subject: Remove duplicated code breaking the template dialog
......................................................................

Remove duplicated code breaking the template dialog

Change-Id: Ied5dc71106601ab354441c2d81507b616553c0d9
---
M modules/ve/ui/dialogs/ve.ui.MWTemplateDialog.js
1 file changed, 0 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/35/65435/1

diff --git a/modules/ve/ui/dialogs/ve.ui.MWTemplateDialog.js b/modules/ve/ui/dialogs/ve.ui.MWTemplateDialog.js
index dd764d7..081ceaf 100644
--- a/modules/ve/ui/dialogs/ve.ui.MWTemplateDialog.js
+++ b/modules/ve/ui/dialogs/ve.ui.MWTemplateDialog.js
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -113,9 +113,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 // TODO: Use paramData.deprecation
 // TODO: Use paramData.default
 // TODO: Use paramData.type
-fieldset = new ve.ui.FieldsetLayout( { '$$': this.frame.$$, 'label': label, 'icon': 'parameter' } );
-textInput = new ve.ui.TextInputWidget( { '$$': this.frame.$$, 'multiline': true } );
-textInput.$input.css('height', 100);
 
 if ( description  ) {
 inputLabel = new ve.ui.InputLabelWidget( {

&lt;/pre&gt;</description>
    <dc:creator>Catrope (Code Review</dc:creator>
    <dc:date>2013-05-25T12:23:56</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172855">
    <title>[MediaWiki-commits] [Gerrit] Renaming files to follow nameconventions - change (mediawiki/core)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172855</link>
    <description>&lt;pre&gt;DMaggot has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65434


Change subject: Renaming files to follow name conventions
......................................................................

Renaming files to follow name conventions

Change-Id: I2ed94a61214439d5c70d04bd1dbddd68754b595e
---
R tests/phpunit/includes/upload/UploadBaseTest.php
1 file changed, 0 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/34/65434/1

diff --git a/tests/phpunit/includes/upload/UploadTest.php b/tests/phpunit/includes/upload/UploadBaseTest.php
similarity index 100%
rename from tests/phpunit/includes/upload/UploadTest.php
rename to tests/phpunit/includes/upload/UploadBaseTest.php

&lt;/pre&gt;</description>
    <dc:creator>DMaggot (Code Review</dc:creator>
    <dc:date>2013-05-25T12:18:34</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172853">
    <title>[MediaWiki-commits] [Gerrit] whitelist Tyler Romeo - change(integration/zuul-config)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172853</link>
    <description>&lt;pre&gt;Hashar has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65433


Change subject: whitelist Tyler Romeo
......................................................................

whitelist Tyler Romeo

Parent5446 got +2 on core, might as well adds in him :-)

Change-Id: I6571c51d3b4a23614df8d5274d0788d463400966
---
M layout.yaml
1 file changed, 2 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/integration/zuul-config refs/changes/33/65433/1

diff --git a/layout.yaml b/layout.yaml
index 904018d..47aef0b 100644
--- a/layout.yaml
+++ b/layout.yaml
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -36,7 +36,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
         # TODO: Figure out a way to not have to repeat this from pipeline 'test'.
         # This email_filter and the one for 'test' can be removed once we have fixed bug 45499.
         email_filter:
-         - ^(?!(.*?&amp;lt; at &amp;gt;wikimedia\.org|.*?&amp;lt; at &amp;gt;wikimedia\.de|anomie\.wikipedia&amp;lt; at &amp;gt;gmail\.com|amir\.aharoni&amp;lt; at &amp;gt;mail\.huji\.ac\.il|hashar&amp;lt; at &amp;gt;free\.fr|jeroendedauw&amp;lt; at &amp;gt;gmail\.com|maxsem\.wiki&amp;lt; at &amp;gt;gmail\.com|mtraceur&amp;lt; at &amp;gt;member\.fsf\.org|niklas\.laxstrom&amp;lt; at &amp;gt;gmail\.com|s\.mazeland&amp;lt; at &amp;gt;xs4all\.nl|stefan\.petrea&amp;lt; at &amp;gt;gmail\.com|stefan&amp;lt; at &amp;gt;garage-coding\.com|roan\.kattouw&amp;lt; at &amp;gt;gmail\.com|krinklemail&amp;lt; at &amp;gt;gmail\.com|trevorparscal&amp;lt; at &amp;gt;gmail\.com|inez&amp;lt; at &amp;gt;wikia-inc\.com|orbit&amp;lt; at &amp;gt;framezero\.com|aude\.wiki&amp;lt; at &amp;gt;gmail\.com|bawolff\+wn&amp;lt; at &amp;gt;gmail\.com|bryan\.tongminh&amp;lt; at &amp;gt;gmail\.com|dereckson&amp;lt; at &amp;gt;espace-win\.org|hartman\.wiki&amp;lt; at &amp;gt;gmail\.com|hoo&amp;lt; at &amp;gt;online\.de|codereview&amp;lt; at &amp;gt;emsenhuber\.ch|daniel&amp;lt; at &amp;gt;nadir-seen-fire\.com|jamesin\.hongkong\.1&amp;lt; at &amp;gt;gmail\.com|krenair&amp;lt; at &amp;gt;gmail\.com|liangent&amp;lt; at &amp;gt;gmail\.com|mah&amp;lt; at &amp;gt;everybody\.org|matma\.rex&amp;lt; at &amp;gt;gmail\.com|raimond\.spekking&amp;lt; at &amp;gt;gmail\.com|robinp\.1273&amp;lt; at &amp;gt;gmail\.com|tim&amp;lt; at &amp;gt;tim-landscheidt\.de|umherirrender_de\.wp&amp;lt; at &amp;gt;web\.de|yuriastrakhan&amp;lt; at &amp;gt;gmail\.com|yaron57&amp;lt; at &amp;gt;gmail\.com|markus&amp;lt; at &amp;gt;semantic-mediawiki\.org|s7eph4n&amp;lt; at &amp;gt;gmail\.org|wiki&amp;lt; at &amp;gt;physikerwelt\.de)).*$
+         - ^(?!(.*?&amp;lt; at &amp;gt;wikimedia\.org|.*?&amp;lt; at &amp;gt;wikimedia\.de|anomie\.wikipedia&amp;lt; at &amp;gt;gmail\.com|amir\.aharoni&amp;lt; at &amp;gt;mail\.huji\.ac\.il|hashar&amp;lt; at &amp;gt;free\.fr|jeroendedauw&amp;lt; at &amp;gt;gmail\.com|maxsem\.wiki&amp;lt; at &amp;gt;gmail\.com|mtraceur&amp;lt; at &amp;gt;member\.fsf\.org|niklas\.laxstrom&amp;lt; at &amp;gt;gmail\.com|s\.mazeland&amp;lt; at &amp;gt;xs4all\.nl|stefan\.petrea&amp;lt; at &amp;gt;gmail\.com|stefan&amp;lt; at &amp;gt;garage-coding\.com|roan\.kattouw&amp;lt; at &amp;gt;gmail\.com|krinklemail&amp;lt; at &amp;gt;gmail\.com|trevorparscal&amp;lt; at &amp;gt;gmail\.com|inez&amp;lt; at &amp;gt;wikia-inc\.com|orbit&amp;lt; at &amp;gt;framezero\.com|aude\.wiki&amp;lt; at &amp;gt;gmail\.com|bawolff\+wn&amp;lt; at &amp;gt;gmail\.com|bryan\.tongminh&amp;lt; at &amp;gt;gmail\.com|dereckson&amp;lt; at &amp;gt;espace-win\.org|hartman\.wiki&amp;lt; at &amp;gt;gmail\.com|hoo&amp;lt; at &amp;gt;online\.de|codereview&amp;lt; at &amp;gt;emsenhuber\.ch|daniel&amp;lt; at &amp;gt;nadir-seen-fire\.com|jamesin\.hongkong\.1&amp;lt; at &amp;gt;gmail\.com|krenair&amp;lt; at &amp;gt;gmail\.com|liangent&amp;lt; at &amp;gt;gmail\.com|mah&amp;lt; at &amp;gt;everybody\.org|matma\.rex&amp;lt; at &amp;gt;gmail\.com|raimond\.spekking&amp;lt; at &amp;gt;gmail\.com|robinp\.1273&amp;lt; at &amp;gt;gmail\.com|tim&amp;lt; at &amp;gt;tim-landscheidt\.de|tylerromeo&amp;lt; at &amp;gt;gmail\.com|umherirrender_de\.wp&amp;lt; at &amp;gt;web\.de|yuriastrakhan&amp;lt; at &amp;gt;gmail\.com|yaron57&amp;lt; at &amp;gt;gmail\.com|markus&amp;lt; at &amp;gt;semantic-mediawiki\.org|s7eph4n&amp;lt; at &amp;gt;gmail\.org|wiki&amp;lt; at &amp;gt;physikerwelt\.de)).*$
       - event: comment-added
         comment_filter: (?im)^Patch Set \d+:\n\n\s*recheck\.?\s*$
     success:
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -127,6 +127,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
          - ^raimond\.spekking&amp;lt; at &amp;gt;gmail\.com$
          - ^robinp\.1273&amp;lt; at &amp;gt;gmail\.com$
          - ^tim&amp;lt; at &amp;gt;tim-landscheidt\.de$
+         - ^tylerromeo&amp;lt; at &amp;gt;gmail\.com$
          - ^umherirrender_de\.wp&amp;lt; at &amp;gt;web\.de$
          - ^yuriastrakhan&amp;lt; at &amp;gt;gmail\.com$
          - ^yaron57&amp;lt; at &amp;gt;gmail\.com$

&lt;/pre&gt;</description>
    <dc:creator>Hashar (Code Review</dc:creator>
    <dc:date>2013-05-25T12:10:58</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172852">
    <title>[MediaWiki-commits] [Gerrit] Add a quantum function! - change(test...examples)</title>
    <link>http://comments.gmane.org/gmane.org.wikimedia.mediawiki.cvs/172852</link>
    <description>&lt;pre&gt;Psychoslave has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65431


Change subject: Add a quantum function!
......................................................................

Add a quantum function!

Change-Id: I5dc1e834a843995ae6690a2df2207a60a9c2c876
---
M Example/Example.body.php
1 file changed, 4 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/test/mediawiki/extensions/examples refs/changes/31/65431/1

diff --git a/Example/Example.body.php b/Example/Example.body.php
index a4a7826..21eaf8f 100644
--- a/Example/Example.body.php
+++ b/Example/Example.body.php
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -20,4 +20,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 function getVersion() {
  return '0.043';
 }
+
+    function generateEntropy(){
+        return 'miaou! I'm undead';
+    }
 }

&lt;/pre&gt;</description>
    <dc:creator>Psychoslave (Code Review</dc:creator>
    <dc:date>2013-05-25T11:57:41</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.org.wikimedia.mediawiki.cvs">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.org.wikimedia.mediawiki.cvs</link>
  </textinput>
</rdf:RDF>
