Merge "API: Allow generators to return data"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 26 Nov 2014 18:17:18 +0000 (18:17 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 26 Nov 2014 18:17:18 +0000 (18:17 +0000)
44 files changed:
HISTORY
includes/api/ApiUpload.php
includes/api/i18n/be-tarask.json
includes/api/i18n/fr.json
includes/api/i18n/zh-hans.json
includes/api/i18n/zh-hant.json
includes/db/Database.php
includes/debug/logger/Logger.php
includes/debug/logger/NullSpi.php
includes/debug/logger/Spi.php
includes/debug/logger/legacy/Logger.php
includes/debug/logger/legacy/Spi.php
includes/debug/logger/monolog/Handler.php
includes/debug/logger/monolog/LegacyFormatter.php
includes/debug/logger/monolog/Processor.php
includes/debug/logger/monolog/Spi.php
includes/libs/IPSet.php
includes/libs/ObjectFactory.php
includes/libs/Xhprof.php
includes/profiler/Profiler.php
includes/profiler/ProfilerStandard.php
includes/profiler/ProfilerStub.php
includes/profiler/ProfilerXhprof.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialFilepath.php
includes/specials/SpecialRedirect.php
languages/Names.php
languages/i18n/be-tarask.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/kk-cyrl.json
languages/i18n/ksh.json
languages/i18n/qqq.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
maintenance/purgeChangedFiles.php
maintenance/purgeChangedPages.php
tests/phpunit/includes/db/DatabaseMysqlBaseTest.php
tests/phpunit/includes/db/LBFactoryTest.php
tests/phpunit/includes/debug/logging/legacy/LoggerTest.php
tests/phpunit/includes/libs/ObjectFactoryTest.php
tests/phpunit/includes/libs/XhprofTest.php
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js

diff --git a/HISTORY b/HISTORY
index 8ba1a4b..7477942 100644 (file)
--- a/HISTORY
+++ b/HISTORY
@@ -471,6 +471,122 @@ changes to languages because of Bugzilla reports.
 
 == MediaWiki 1.22 ==
 
+
+== MediaWiki 1.22.13 ==
+This is a maintenance release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.12 ===
+* (bug 67440) Allow classes to be registered properly from installer
+
+== MediaWiki 1.22.12 ==
+This is a security release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.11 ===
+* (bug 70672) SECURITY: OutputPage: Remove separation of css and js module allowance.
+
+== MediaWiki 1.22.11 ==
+This is a security release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.10 ===
+* (bug 69008) SECURITY: Enhance CSS filtering in SVG files. Filter <style> elements; normalize style elements and attributes before filtering; add checks for attributes that contain css; add unit tests for html5sec and reported bugs.
+
+== MediaWiki 1.22.10 ==
+This is a maintenance release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.9 ===
+* (bug 64970) Fix support for blobs on DatabaseOracle::update
+* (bug 60719) In MediaWiki 1.22, the job queue execution on each page request was changed (Gerrit change 59797) so, instead of executing the job inside the same PHP process that's rendering the page, a new PHP cli command is spawned to execute runJobs.php in the background. It will only work if $wgPhpCli is set to an actual path or safe mode is off, otherwise, the old method will be used. https://www.mediawiki.org/wiki/Manual:Job_queue#Changes_introduced_in_MediaWiki_1.22 for more infomation. This change was in earlier releases of 1.22 but was not noted here until now.
+
+== MediaWiki 1.22.9 ==
+This is a security and maintenance release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.8 ===
+* (bug 68187) SECURITY: Prepend jsonp callback with comment.
+* (bug 66608) SECURITY: Fix for XSS issue in bug 66608: Generate the URL used for loading a new page in Javascript,instead of relying on the URL in the link that has been clicked.
+* (bug 65778) SECURITY: Copy prevent-clickjacking between OutputPage and ParserOutput.
+* (bug 59147) The img_metadata field was not being decoded from bytea into text.
+
+== MediaWiki 1.22.8 ==
+This is a security and maintenance release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.7 ===
+* (bug 65839) SECURITY: Prevent external resources in SVG files.
+* (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects like only extracting the tail of the file partially or not at all.
+
+== MediaWiki 1.22.7 ==
+This is a security and maintenance release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.6 ===
+* (bug 65501) SECURITY: Don't parse usernames as wikitext on Special:PasswordReset.
+* (bug 36356) Add space between two feed links.
+* (bug 63269) Email notifications were not correctly handling the MediaWiki:Helppage message being set to a full URL. This is a regression from the 1.22.5 point release, which made the default value for it a URL. If you customized MediaWiki:Enotif body (the text of email notifications), you'll need to edit it locally to include the URL via the new variable $HELPPAGE instead of the parser functions fullurl and canonicalurl; otherwise you don't have to do anything.
+Add missing uploadstash.us_props for PostgreSQL.
+* (bug 56047) Fixed stream wrapper in PhpHttpRequest.
+
+== MediaWiki 1.22.6 ==
+This is a security release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.5 ===
+* (bug 63251) SECURITY: Escape sortKey in pageInfo.
+
+== MediaWiki 1.22.5 ==
+This is a security and maintenance release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.4 ===
+* (bug 62497) SECURITY: Add CSRF token on Special:ChangePassword.
+* (bug 62467) Set a title for the context during import on the cli.
+* Fix custom local MediaWiki:Helppage values.
+* mediawiki.js: Fix documentation breakage.
+* (bug 58153) Make MySQLi work with non standard port.
+* (bug 53887) Reintroduced a link to help pages in the default sidebar, that any sysop can customize by editing MediaWiki:Sidebar locally. The link now points to a mediawiki.org page which is guaranteed to exist. Nothing needs to be done on your end, but remember to adjust MediaWiki:Sidebar for the needs of your wikis. Everyone can help with the shared documentation by translating: https://www.mediawiki.org/wiki/Special:Translate/agg-Help_pages .
+* (bug 53888) Corrected a regression in 1.22 which introduced red links on the login page. If you previously installed 1.22.x and have created a local page to make the red link blue, write its title as in MediaWiki:helplogin-url if you didn't already. Otherwise, you don't need to do anything, but you can translate the help page at https://www.mediawiki.org/wiki/Help:Logging_in .
+
+== MediaWiki 1.22.4 ==
+This is a maintenance release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.3 ===
+* Use the correct branch of the extensions' git repositories.
+
+== MediaWiki 1.22.3 ==
+This is a security and bugfix release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.2 ===
+* (bug 60771) SECURITY: Disallow uploading SVG files using non-whitelisted namespaces. Also disallow iframe elements. * User will get an error including the namespace name if they use a non- whitelisted namespace.
+* (bug 61346) SECURITY: Make token comparison use constant time. It seems like our token comparison would be vulnerable to timing attacks. This will take constant time.
+* (bug 61362) SECURITY: API: Don't find links in the middle of api.php links.
+* (bug 53710) Add sequence support for upsert in DatabaseOracle in the same way as in selectInsert
+* (bug 60231, bug 58719) Various fixes to job running code in Wiki.php: Make it async on Windows. Fixed possible "invalid filename" errors on Windows. Redirect output to dev/null to avoid hanging PHP.
+* (bug 60083) Correct sequence name for fresh Postgres installation. Spotted by gebhkla
+* (bug 60531) Avoid variable naming conflicts in DatabasePostgres::selectSQLText. Spotted by gebhkla
+* (bug 60094) Fix rebuildall.php fatal error with PostgreSQL.
+* (bug 43817) Add error handling if descriptionmsg isn't defined for extension.
+* (bug 60543) Special:PrefixIndex omits stripprefix=1 for "Next page" link.
+
+== MediaWiki 1.22.2 ==
+This is a security and bugfix release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.1 ===
+* (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media formats
+* (bug 58253) Check for very old PCRE versions in installer and updater
+* (bug 60054) Make WikiPage::$mPreparedEdit public
+
+== MediaWiki 1.22.1 ==
+This is a security and maintenance release of the MediaWiki 1.22 branch.
+
+=== Changes since 1.22.0 ===
+* (bug 57550) SECURITY: Disallow stylesheets in SVG Uploads
+* (bug 58088) SECURITY: Don't normalize U+FF3C to \ in CSS Checks
+* (bug 58472) SECURITY: Disallow -o-link in styles
+* (bug 58553) SECURITY: Return error on invalid XML for SVG Uploads
+* (bug 58699) SECURITY: Fix RevDel log entry information leaks
+* (bug 58178) Restore compatibility with curl < 7.16.2.
+* (bug 56931) Updated the plural rules to CLDR 24. They are in new format which is detailed in UTS 35 Rev 33. The PHP parser and evaluator as well as the JavaScript evaluator were updated to support the new format. Plural rules for some languages have changed, most notably Russian. Affected software messages have been updated and marked for review at translatewiki.net. This change is backported from the development branch of MediaWiki 1.23.
+* (bug 58434) The broken installer for database backend Oracle was fixed.
+* (bug 58167) The web installer no longer throws an exception when PHP is compiled without support for MySQL yet with support for another DBMS.
+* (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages to appear blank or with missing text.
+* (bug 47055) Changed FOR UPDATE handling in Postgresql
+* (bug 57026) Avoid extra parsing in prepareContentForEdit()
+
 === Configuration changes in 1.22 ===
 * $wgRedirectScript was removed. It was unused.
 * Removed $wgLocalMessageCacheSerialized, it is now always true.
@@ -1000,6 +1116,92 @@ changes to languages because of Bugzilla reports.
 
 == MediaWiki 1.21 ==
 
+== MediaWiki 1.21.11 ==
+This is a security and maintenance release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.10 ===
+* (bug 65839) SECURITY: Prevent external resources in SVG files.
+* (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects like only extracting the tail of the file partially or not at all.
+
+== MediaWiki 1.21.10 ==
+This is a security and maintenance release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.9 ===
+* (bug 65501) SECURITY: Don't parse usernames as wikitext on Special:PasswordReset.
+* (bug 36356) Add space between two feed links.
+
+== MediaWiki 1.21.9 ==
+This is a security and maintenance release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.8 ===
+* (bug 63251) SECURITY: Escape sortKey in pageInfo.
+* (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages to appear blank or with missing text.
+
+== MediaWiki 1.21.8 ==
+This is a security and maintenance release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.7 ===
+* (bug 62497) SECURITY: Add CSRF token on Special:ChangePassword.
+* (bug 62467) Set a title for the context during import on the cli.
+
+== MediaWiki 1.21.7 ==
+This is a maintenance release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.6 ===
+* Use the correct branch of the extensions' git repositories.
+
+== MediaWiki 1.21.6 ==
+This is a security release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.5 ===
+* (bug 60771) SECURITY: Disallow uploading SVG files using non-whitelisted namespaces. Also disallow iframe elements. * User will get an error including the namespace name if they use a non- whitelisted namespace.
+* (bug 61346) SECURITY: Make token comparison use constant time. It seems like our token comparison would be vulnerable to timing attacks. This will take constant time.
+* (bug 61362) SECURITY: API: Don't find links in the middle of api.php links.
+
+== MediaWiki 1.21.5 ==
+This is a security release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.4 ===
+* (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media formats
+
+== MediaWiki 1.21.4 ==
+This is a security release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.3 ===
+* (bug 57550) SECURITY: Disallow stylesheets in SVG Uploads
+* (bug 58088) SECURITY: Don't normalize U+FF3C to \ in CSS Checks
+* (bug 58472) SECURITY: Disallow -o-link in styles
+* (bug 58553) SECURITY: Return error on invalid XML for SVG Uploads
+* (bug 58699) SECURITY: Fix RevDel log entry information leaks
+
+== MediaWiki 1.21.3 ==
+This is a security and maintenance release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.2 ===
+* (bug 53032) SECURITY: Don't cache when a call could autocreate
+* (bug 55332) SECURITY: Improve css javascript detection
+* (bug 49717) Fix behaviour $wgVerifyMimeType = false; in Upload
+* Fix comma errors in various js files
+* Translations
+
+== MediaWiki 1.21.2 ==
+This is a security and maintenance release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.1 ===
+* SECURITY: Fix extension detection with 2 .'s
+* SECURITY: Support for the 'gettoken' parameter to action=block and action=unblock, deprecated since 1.20, has been removed.
+* SECURITY: Sanitize ResourceLoader exception messages
+* Purge upstream caches when deleting file assets.
+* Unit test suite now runs the AutoLoader tests. Also fixed the autoloading entry for the PageORMTableForTesting class though it had no impact.
+
+== MediaWiki 1.21.1 ==
+This is a maintenance release of the MediaWiki 1.21 branch.
+
+=== Changes since 1.21.0 ===
+* An incorrect version number was used for 1.21.0. 1.21.1 has the correct number.
+* A problem with the Oracle SQL table creation was fixed.
+* (PdfHandler extension) Fix warning if pdfinfo fails but pdftext succeeds.
+
 === Configuration changes in 1.21 ===
 * (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
 * Deprecated $wgAllowRealName is removed. Use $wgHiddenPrefs[] = 'realname'
@@ -1328,6 +1530,90 @@ changes to languages because of Bugzilla reports.
 * BREAKING CHANGE: (bug 38244) Removed the mediawiki.api.titleblacklist module
   and moved it to the TitleBlacklist extension.
 
+== MediaWiki 1.20 ==
+
+== MediaWiki 1.20.8 ==
+This is a security release of the MediaWiki 1.20 branch.
+
+=== Changes since 1.20.7 ===
+* (bug 53032) SECURITY: Don't cache when a call could autocreate
+* (bug 55332) SECURITY: Improve css javascript detection
+* (bug 49717) Fix behaviour $wgVerifyMimeType = false; in Upload
+* Fix comma errors in various js files
+* Translations
+
+== MediaWiki 1.20.7 ==
+This is a security release of the MediaWiki 1.20 branch.
+
+=== Changes since 1.20.6 ===
+* SECURITY: Fix extension detection with 2 .'s
+* SECURITY: Token-getting functions will fail when using jsonp callbacks.
+* SECURITY: Sanitize ResourceLoader exception messages
+* Purge upstream caches when deleting file assets.
+
+== MediaWiki 1.20.6 ==
+This is a security and maintenance release of the MediaWiki 1.20 branch.
+
+=== Changes since 1.20.5 ===
+* (bug 48306) SECURITY: Run file validation checks on chunked uploads, and chunks of upload, during the upload process.
+* (bug 44327) mediawiki.user: Use session ID instead of 1-year cross-session cookies
+* (bug 47202) wikibits: FF2Fixes.css should not be loaded in Firefox 20.
+* (bug 31044) Make ResourceLoader behave in read-only mode
+
+== MediaWiki 1.20.5 ==
+This is a security and maintenance release of the MediaWiki 1.20 branch.
+
+=== Changes since 1.20.4 ===
+* (bug 46590) Add hook AbortChangePassword to Special:ChangePassword
+* (bug 47304) SECURITY: Check SVG xml encoding against whitelist
+* Localisation updates from http://translatewiki.net.
+* mwdocgen.php: Implement --version option.
+* Remove svnstat stuff used in Doxygen generation
+* (bug 43594) Correctly supress warnings that were missed after the upstream
+* PHP change to E_STRICT being included in E_ALL.
+
+== MediaWiki 1.20.4 ==
+This is a security release of the MediaWiki 1.20 branch.
+
+=== Changes since 1.20.3 ===
+* (bug 47251) SECURITY: Disable external entities in Import
+* (bug 46859) SECURITY: Disable external entities in XMLReader
+* (bug 46084) SECURITY: Sanitize $limitReport before outputting
+
+== MediaWiki 1.20.3 ==
+This is a security and maintenance release of the MediaWiki 1.20 branch.
+
+== MediaWiki 1.20.2 ==
+* New preference type - 'api'. Preferences of this type are not shown on Special:Preferences, but are still available via the action=options API. (Unbreaks MLEB.)
+* (bug 44010) Context is passed to UserGetLanguageObject.
+* The recursion guard on RequestContext::getLanguage() was weakened.
+* (bug 40585) Don't drop 'step="any"' in HTML input fields.
+* (bug 44024) Fixed problems in ObjectCache when using XCache.
+* (bug 44010) FauxRequest leaked cookie data from primary request.
+* (bug 44135/bug 42441) Pass '2' instead of 'true' to CURLOPT_SSL_VERIFYHOST
+* (bug 43518) API action=unblock should return the user name, not the full user object
+* (bug 45355) Prevent read of arbitrary files through mwdoc-filter.php
+
+== MediaWiki 1.20.2 ==
+This is a maintenance release of the MediaWiki 1.20 branch
+
+== MediaWiki 1.20.1 ==
+* (bug 42638) Fix API action=options&reset=1 & unit tests.
+* (bug 42370) Fixed backport of 60cc060 to use mDoneWrites — caused * (bug 42592) User rights, preferences and other things are not saving in 1.20.1.
+
+== MediaWiki 1.20.1 ==
+This is a security release of the MediaWiki 1.20 branch
+
+Changes since 1.20
+* (bug 42202) Validate options to prevent html injection
+* (bug 40995) Prevent session fixation in Special:UserLogin (CVE-2012-5391)
+* (bug 41400) Prevent linker regex from exceeding PCRE backtrack limit
+* Javscript Lint fixes
+* (bug 40632) Remove CleanupPresentationalAttributes feature
+* [Database] Fixed case where trx idle callbacks might be lost.
+
+
+
 == MediaWiki 1.20 ==
 
 === PHP 5.3 now required ===
@@ -1692,6 +1978,168 @@ changes to languages because of Bugzilla reports.
 
 == MediaWiki 1.19 ==
 
+== MediaWiki 1.19.21 ==
+This is a maintenance release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.20===
+* (bug 67440) Allow classes to be registered properly from installer.
+* (bug 47281) Fixed a dumpBackup.php error with --uploads --include-filesoptions: Unable to find the wrapper "mwstore". * System administrators are encouraged to upgrade to this release or 1.22+ and produce a full data dump. https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Backing_up_a_wiki
+* (bug 63049) Removed anonymous functions from ApiFormatBase, added in1.19.13 as part of the fix for bug 61362, for PHP 5.2 compatibility.
+
+== MediaWiki 1.19.20 ==
+This is a security release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.19===
+* (bug 70672) SECURITY: OutputPage: Remove separation of css and js module allowance.
+
+== MediaWiki 1.19.19 ==
+This is a security release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.18===
+* (bug 69008) SECURITY: Enhance CSS filtering in SVG files. Filter <style> elements; normalize style elements and attributes before filtering; add checks for attributes that contain css; add unit tests for html5sec and reported bugs.
+
+== MediaWiki 1.19.18 ==
+This is a security release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.17===
+* (bug 68187) SECURITY: Prepend jsonp callback with comment.
+* (bug 65778) SECURITY: Copy prevent-clickjacking between OutputPage and ParserOutput.
+
+== MediaWiki 1.19.17 ==
+This is a security and maintenance release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.16===
+* (bug 65839) SECURITY: Prevent external resources in SVG files.
+* (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects like only extracting the tail of the file partially or not at all.
+
+== MediaWiki 1.19.16 ==
+This is a security release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.15===
+* (bug 65501) SECURITY: Don't parse usernames as wikitext on Special:PasswordReset.
+
+== MediaWiki 1.19.15 ==
+This is a security and maintenance release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.14===
+Fixed resetting passwords.
+* (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages to appear blank or with missing text.
+
+== MediaWiki 1.19.14 ==
+This is a security and maintenance release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.13===
+* (bug 62497) SECURITY: Add CSRF token on Special:ChangePassword.
+* (bug 62467) Set a title for the context during import on the cli.
+
+== MediaWiki 1.19.13 ==
+This is a security and maintenance release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.12===
+* (bug 61362) SECURITY: API: Don't find links in the middle of api.php links.
+* Use the correct branch of the extensions' git repositories.
+
+== MediaWiki 1.19.12 ==
+This is a security release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.11===
+* (bug 60771) SECURITY: Disallow uploading SVG files using non-whitelisted namespaces. Also disallow iframe elements. * User will get an error including the namespace name if they use a non- whitelisted namespace.
+* (bug 61346) SECURITY: Make token comparison use constant time. It seems like our token comparison would be vulnerable to timing attacks. This will take constant time.
+
+== MediaWiki 1.19.11 ==
+This is a security release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.10===
+* (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media formats
+
+== MediaWiki 1.19.10 ==
+This is a security release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.9===
+* (bug 57550) SECURITY: Disallow stylesheets in SVG Uploads
+* (bug 58088) SECURITY: Don't normalize U+FF3C to \ in CSS Checks
+* (bug 58472) SECURITY: Disallow -o-link in styles
+* (bug 58553) SECURITY: Return error on invalid XML for SVG Uploads
+* (bug 58699) SECURITY: Fix RevDel log entry information leaks
+
+== MediaWiki 1.19.9 ==
+This is a security and maintenance release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.8===
+* (bug 53032) SECURITY: Don't cache when a call could autocreate
+* (bug 55332) SECURITY: Improve css javascript detection
+* (bug 49717) Fix behaviour $wgVerifyMimeType = false; in Upload
+* Translations
+
+== MediaWiki 1.19.8 ==
+2013-09-03
+
+This is a security and maintenance release of the MediaWiki 1.19 branch.
+
+=== Changes since 1.19.7===
+* SECURITY: Sanitize ResourceLoader exception messages
+* SECURITY: Token-getting functions will fail when using jsonp callbacks.
+* SECURITY: Fix extension detection with 2 .'s
+* Allow a string other than '*' as condition for DatabaseBase::delete()
+* Purge upstream caches when deleting file assets.
+* jquery.tablesorter: Add missing dependency on jquery.mwExtension
+
+== MediaWiki 1.19.7 ==
+2013-05-21
+
+This is a security release of the MediaWiki 1.19 branch
+
+=== Changes since 1.19.6===
+* (bug 48306) SECURITY: Run file validation checks on chunked uploads, and chunks of upload, during the upload process.
+
+== MediaWiki 1.19.6 ==
+2013-04-30
+
+This is a security and maintenance release of the MediaWiki 1.19 branch
+
+=== Changes since 1.19.5===
+* (bug 47304) SECURITY: Check SVG xml encoding against whitelist
+* (bug 46590) Added AbortChangePassword hook to allow extensions to abort password changes from Special:ChangePassword
+* Localisation updates from http://translatewiki.net.
+* mwdocgen.php: Implement --version option.
+* Remove svnstat stuff used in Doxygen generation
+* E_USER_DEPRECATED undefined prior to php 5.3
+
+== MediaWiki 1.19.5 ==
+2013-04-15
+
+This is a security and maintenance release of the MediaWiki 1.19 branch
+
+=== Changes since 1.19.4===
+* (bug 47251) SECURITY: Disable external entities in Import
+* (bug 46859) SECURITY: Disable external entities in XMLReader
+* (bug 46084) SECURITY: Sanitize $limitReport before outputting
+* (bug 43594) Fix notices displayed on PHP 5.4
+* (bug 40585) Don't drop 'step="any"' in HTML input fields.
+
+== MediaWiki 1.19.4 ==
+2013-03-04
+
+This is a security release of the MediaWiki 1.19 branch
+
+=== Changes since 1.19.3===
+* New preference type - 'api'. Preferences of this type are not shown on Special:Preferences, but are still available via the action=options API.
+* (bug 44010) Context is passed to UserGetLanguageObject.
+* The recursion guard on RequestContext::getLanguage() was weakened.
+* (bug 44135/bug 42441) Pass '2' instead of 'true' to CURLOPT_SSL_VERIFYHOST
+* (bug 43518) API action=unblock should return the user name, not the full user object
+
+== MediaWiki 1.19.3 ==
+2012-11-30
+
+This is a security release of the MediaWiki 1.19 branch
+
+=== Changes since 1.19.2===
+* (bug 40995) Prevent session fixation in Special:UserLogin (CVE-2012-5391)
+* (bug 41400) Prevent linker regex from exceeding PCRE backtrack limit
+* Increase permitted runtime for testParserTest (only used for continuous integration).
+* Updated messages translations from http://translatewiki.net/
+
 == MediaWiki 1.19.2 ==
 
 This is a security release of the MediaWiki 1.19 branch
index 9ddadcb..43e4c61 100644 (file)
@@ -182,8 +182,6 @@ class ApiUpload extends ApiBase {
                try {
                        $result['filekey'] = $this->performStash();
                        $result['sessionkey'] = $result['filekey']; // backwards compatibility
-               } catch ( UploadStashException $e ) {
-                       $this->handleStashException( $e );
                } catch ( MWException $e ) {
                        $result['warnings']['stashfailed'] = $e->getMessage();
                }
index bcfe90e..cfc644b 100644 (file)
@@ -16,5 +16,6 @@
        "apihelp-main-param-curtimestamp": "Уключае ў вынік пазнаку актуальнага часу.",
        "apihelp-main-param-origin": "Пры звароце да API з дапамогай міждамэннага AJAX-запыту (CORS), выстаўце парамэтру значэньне зыходнага дамэну. Ён мусіць быць уключаны ў кожны папярэдні запыт і такім чынам мусіць быць часткай URI-запыту (ня цела POST). Ён мусіць супадаць з адной з крыніц у загалоўку Origin, павінна быць зададзена нешта кшталту http://en.wikipedia.org або https://meta.wikimedia.org. Калі парамэтар не супадае з загалоўкам Origin, будзе вернуты адказ з кодам памылкі 403. Калі парамэтар супадае з загалоўкам Origin і крыніца знаходзіцца ў белым сьпісе, будзе выстаўлены загаловак Access-Control-Allow-Origin.",
        "apihelp-main-param-uselang": "Мова для выкарыстаньня ў перакладах паведамленьняў. Сьпіс кодаў можа быць атрыманы з [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] з siprop=languages, або трэба вызначыць «user», каб ужываць наладкі мовы цяперашняга карыстальніка, або вызначыць «content», каб ужываць мову зьместу гэтай вікі.",
-       "apihelp-block-description": "Блякаваньне ўдзельніка."
+       "apihelp-block-description": "Блякаваньне ўдзельніка.",
+       "apihelp-block-param-user": "Імя ўдзельніка, IP-адрас або IP-дыяпазон, якія вы хочаце заблякаваць."
 }
index f42465e..4b1cf12 100644 (file)
        "apihelp-query+stashimageinfo-example-params": "Renvoie les vignettes pour deux fichiers mis en réserve",
        "apihelp-query+tags-description": "Lister les balises de modification.",
        "apihelp-query+tags-param-limit": "Le nombre maximal de balises à lister.",
+       "apihelp-query+tags-param-prop": "Quelles propriétés récupérer :\n;name:Ajoute le nom de la balise.\n;displayname:Ajoute le message système pour la balise.\n;description:Ajoute la description de la balise.\n;hitcount:Ajoute le nombre de révisions qui ont cette balise.",
+       "apihelp-query+tags-example-simple": "Lister les balises disponibles",
+       "apihelp-query+templates-description": "Renvoie toutes les pages incluses dans les pages fournies.",
+       "apihelp-query+templates-param-namespace": "Afficher les modèles uniquement dans ces espaces de nom.",
+       "apihelp-query+templates-param-limit": "Combien de modèles renvoyer.",
+       "apihelp-query+templates-param-templates": "Lister uniquement ces modèles. Utile pour vérifier si une certaine page utilise un modèle donné.",
+       "apihelp-query+templates-param-dir": "La direction dans laquelle lister.",
+       "apihelp-query+templates-example-simple": "Obtenir les modèles de [[Main Page]]",
+       "apihelp-query+templates-example-generator": "Obtenir des informations sur les pages modèle de [[Main Page]]",
+       "apihelp-query+templates-example-namespaces": "Obtenir les modèles de [[Main Page]] dans les espaces de nom Utilisateur et Modèle",
+       "apihelp-query+tokens-description": "Récupère les jetons pour les actions de modification de données.",
+       "apihelp-query+tokens-param-type": "Types de jeton à demander.",
+       "apihelp-query+tokens-example-simple": "Récupérer un jeton csrf (par défaut)",
+       "apihelp-query+tokens-example-types": "Récupérer un jeton de suivi et un de patrouille",
+       "apihelp-query+transcludedin-description": "Trouver toutes les pages qui incluent les pages données.",
+       "apihelp-query+transcludedin-param-prop": "Quelles propriétés obtenir :\n;pageid:ID de page de chaque page.\n;title:Titre de chaque page.\n;redirect:Marque si cette page est une redirection.",
+       "apihelp-query+transcludedin-param-namespace": "Inclure uniquement les pages dans ces espaces de nom.",
+       "apihelp-query+transcludedin-param-limit": "Combien en renvoyer.",
+       "apihelp-query+transcludedin-param-show": "Afficher uniquement les éléments qui correspondent à ces critères:\n;redirect:Afficher uniquement les redirections.\n;!redirects:Afficher uniquement les non-redirections.",
+       "apihelp-query+transcludedin-example-simple": "Obtenir une liste des pages incluant [[Main Page]]",
+       "apihelp-query+transcludedin-example-generator": "Obtenir des informations sur les pages incluant [[Main Page]]",
+       "apihelp-query+usercontribs-description": "Obtenir toutes les modifications par un utilisateur.",
+       "apihelp-query+usercontribs-param-limit": "Le nombre maximal de contributions à renvoyer.",
+       "apihelp-query+usercontribs-param-start": "L’horodatage auquel démarrer le retour.",
+       "apihelp-query+usercontribs-param-end": "L’horodatage auquel arrêter le retour.",
+       "apihelp-query+usercontribs-param-user": "Les utilisateurs pour lesquels récupérer les contributions.",
+       "apihelp-query+usercontribs-param-userprefix": "Récupérer les contributions pour tous les utilisateurs dont les noms commencent par cette valeur. Écrase $1user.",
+       "apihelp-query+usercontribs-param-namespace": "Lister uniquement les contributions dans ces espaces de nom.",
+       "apihelp-query+usercontribs-param-prop": "Inclure des informations supplémentaires:\n;ids:Ajoute l’ID de page et l’ID de révision.\n;title:Ajoute le titre et l’ID d’espace de noms de la page.\n;timestamp:Ajoute l’horodatage de la modification.\n;comment:Ajoute le commentaire de la modification.\n;parsedcomment:Ajoute le commentaire analysé de la modification.\n;size:Ajoute la nouvelle taille de la modification.\n;sizediff:Ajoute le delta de taille de la modification par rapport à son parent.\n;flags:Ajoute les marques de la modification.\n;patrolled:Marque les modifications patrouillées.\n;tags:Liste les balises de la modification.",
+       "apihelp-query+usercontribs-param-show": "Afficher uniquement les éléments correspondant à ces critères, par ex. les modifications non mineures uniquement : $2show=!minor.\n\nSi $2show=patrolled ou $2show=!patrolled est positionné, les révisions plus anciennes que [https://www.mediawiki.org/wiki/Manual:$wgRCMaxAge $wgRCMaxAge] ($1 {{PLURAL:$1|seconde|secondes}}) ne seront pas affichées.",
+       "apihelp-query+usercontribs-param-tag": "Lister uniquement les révisions marquées avec cette balise.",
+       "apihelp-query+usercontribs-param-toponly": "Lister uniquement les modifications qui sont la dernière révision.",
+       "apihelp-query+usercontribs-example-user": "Afficher les contributions de [[User:Exemple]]",
+       "apihelp-query+usercontribs-example-ipprefix": "Afficher les contributions de toutes les adresses IP avec le préfixe « 192.0.2. »",
+       "apihelp-query+userinfo-description": "Obtenir de l’information sur l’utilisateur courant.",
+       "apihelp-query+userinfo-param-prop": "Quelles informations inclure :\n;blockinfo:Marque si l’utilisateur actuel est bloqué, par qui, et pour quelle raison.\n;hasmsg:Ajoute une balise « message » si l’utilisateur actuel a des messages en cours.\n;groups:Liste tous les groupes auxquels appartient l’utilisateur actuel.\n;implicitgroups:Liste tous les groupes dont l’utilisateur actuel est automatiquement membre.\n;rights:Liste tous les droits qu’a l’utilisateur actuel.\n;changeablegroups:Liste les groupes pour lesquels l’utilisateur actuel peut ajouter ou supprimer.\n;options:Liste toutes les préférences qu’a défini l’utilisateur actuel.\n;preferencestoken:OBSOLETE ! Obtient un jeton pour modifier les préférences de l’utilisateur actuel.\n;editcount:Ajoute le compteur de modifications de l’utilisateur actuel.\n;ratelimits:Liste toutes les limites de débit s’appliquant à l’utilisateur actuel.\n;realname:Ajoute le vrai nom de l’utilisateur actuel.\n;email:Ajoute l’adresse de courriel de l’utilisateur et sa date d’authentification.\n;acceptlang:Renvoie en écho l’entête Accept-Language envoyé par le client dans un format structuré.\n;registrationdate:Ajoute la date d’inscription de l’utilisateur.\n;unreadcount:Ajoute le compteur de pages non lues de la liste de suivi de l’utilisateur (au maximum $1 ; renvoie « $2 » s’il y en a plus).",
        "apihelp-format-example-generic": "Mettre en forme le résultat de la requête dans le format $1",
        "apihelp-dbg-description": "Extraire les données au format de var_export() de PHP.",
        "apihelp-dbgfm-description": "Extraire les données au format de var_export() de PHP (affiché proprement en HTML).",
index 281c1b2..4fe99be 100644 (file)
        "apihelp-query+blocks-param-ids": "要列出的封禁ID列表(可选)。",
        "apihelp-query+blocks-param-users": "要搜索的用户列表(可选)。",
        "apihelp-query+blocks-example-simple": "封禁列表",
+       "apihelp-query+blocks-example-users": "列出用户Alice和Bob的封禁",
        "apihelp-query+categories-param-show": "显示何种分类。",
        "apihelp-query+categories-param-limit": "返回多少分类。",
        "apihelp-query+categories-example-simple": "获取属于[[阿尔伯特·爱因斯坦]]的分类列表",
        "apihelp-query+iwbacklinks-param-prop": "要获取的属性:\n;iwprefix:加入跨wiki前缀。\n;iwtitle:加入跨wiki标题。",
        "apihelp-query+iwbacklinks-example-simple": "获取链接至[[wikibooks:Test]]的页面",
        "apihelp-query+iwbacklinks-example-generator": "获取有关链接至[[wikibooks:Test]]的页面的信息",
+       "apihelp-query+iwlinks-param-url": "是否获取完整URL(不能与$1prop一起使用)。",
        "apihelp-query+iwlinks-param-limit": "返回多少跨wiki链接。",
        "apihelp-query+iwlinks-param-prefix": "只返回此前缀的跨wiki链接。",
        "apihelp-query+iwlinks-param-title": "用于搜索的跨wiki链接。必须与$1prefix一起使用。",
        "apihelp-query+links-param-limit": "返回多少链接。",
        "apihelp-query+links-example-simple": "从[[首页]]获取链接",
        "apihelp-query+links-example-generator": "获取有关[[首页]]链接页面的信息",
+       "apihelp-query+links-example-namespaces": "获取用户和模板名字空间中来自[[首页]]的链接",
        "apihelp-query+linkshere-param-limit": "返回多少。",
        "apihelp-query+linkshere-example-simple": "获取链接至[[首页]]的页面列表",
        "apihelp-query+linkshere-example-generator": "获取有关链接至[[首页]]的页面的信息",
        "apihelp-query+revisions-example-last5": "获取“首页”的最近5次修订",
        "apihelp-query+revisions-example-first5": "获取“首页”的前5次修订版本",
        "apihelp-query+revisions-example-first5-after": "获取“首页”于2006年05月01日之后做出的前5次修订版本",
+       "apihelp-query+search-param-search": "搜索所有拥有此值的页面标题(或内容)。",
+       "apihelp-query+search-param-namespace": "只在这些名字空间搜索。",
        "apihelp-query+search-param-info": "要返回的元数据。",
        "apihelp-query+search-param-interwiki": "搜索结果中包含跨wiki结果,如果可用。",
        "apihelp-query+search-example-simple": "搜索“意义”",
        "apihelp-upload-param-stash": "如果设置,服务器将临时藏匿文件而不是加入存储库。",
        "apihelp-upload-param-chunk": "大块内容。",
        "apihelp-upload-example-url": "从URL上传",
+       "apihelp-userrights-description": "更改一位用户的组成员。",
        "apihelp-userrights-param-user": "用户名。",
        "apihelp-userrights-param-userid": "用户ID。",
        "apihelp-userrights-param-add": "将用户加入至这些组中。",
index 1038f71..7af61ae 100644 (file)
@@ -7,8 +7,73 @@
        },
        "apihelp-main-param-action": "要執行的動作。",
        "apihelp-main-param-format": "輸出的格式。",
+       "apihelp-block-description": "封鎖使用者。",
+       "apihelp-block-param-user": "您要封鎖的使用者名稱、IP 位址或 IP 範圍。",
+       "apihelp-block-param-reason": "封鎖原因。",
+       "apihelp-block-param-anononly": "僅封鎖匿名使用者 (禁止這個 IP 的匿名使用者編輯)。",
+       "apihelp-block-param-nocreate": "禁止建立帳號。",
+       "apihelp-block-param-autoblock": "自動封鎖最後使用的 IP 位址,以及在這之後嘗試登入的 IP 位址。",
+       "apihelp-block-param-noemail": "禁止使用者透過 Wiki 寄送電子郵件。 (需要 \"blockemail\" 權限)。",
+       "apihelp-block-param-hidename": "隱藏封鎖日誌的使用者名稱。 (需要 \"hideuser\" 權限)。",
+       "apihelp-block-param-allowusertalk": "允許使用者編輯自己的對話頁面 (依據 $wgBlockAllowsUTEdit 的設定)。",
+       "apihelp-block-param-reblock": "若使用者已被封鎖,覆寫既有的封鎖設定值。",
+       "apihelp-block-param-watchuser": "監視使用者或 IP 的使用者頁面與對話頁面。",
+       "apihelp-compare-param-fromtitle": "要比對的第一個標題。",
+       "apihelp-compare-param-fromid": "要比對的第一個頁面 ID。",
+       "apihelp-compare-param-fromrev": "要比對的第一個修訂。",
+       "apihelp-compare-param-totitle": "要比對的第二個標題。",
+       "apihelp-compare-param-toid": "要比對的第二個頁面 ID。",
+       "apihelp-compare-param-torev": "要比對的第二個修訂。",
+       "apihelp-compare-example-1": "建立修訂 1 與 1 的差異檔",
+       "apihelp-createaccount-description": "建立新使用者帳號。",
+       "apihelp-createaccount-param-name": "使用者名稱。",
+       "apihelp-createaccount-param-password": "密碼 (若有設定 $1mailpassword 則可略過)。",
+       "apihelp-createaccount-param-domain": "外部認証使用的網域 (選填)。",
+       "apihelp-createaccount-param-token": "已取得帳號建立密鑰於第一次請求。",
+       "apihelp-createaccount-param-email": "使用者的電子郵件位址 (選填)。",
+       "apihelp-createaccount-param-realname": "使用者的真實姓名 (選填)。",
+       "apihelp-createaccount-param-mailpassword": "若設為其他值,將會以電子郵件寄送隨機密碼給使用者。",
+       "apihelp-createaccount-param-reason": "建立帳號時選填的原因,會被記錄到日誌當中。",
+       "apihelp-createaccount-param-language": "要設定的使用者預設語言代碼 (選填,預設依據內容語言)。",
+       "apihelp-createaccount-example-pass": "建立使用者 \"testuser\" 使用密碼 \"test123\"",
+       "apihelp-createaccount-example-mail": "建立使用者 \"testmailuser\" 並且電子郵件通知隨機產生的密碼",
+       "apihelp-delete-description": "刪除頁面。",
+       "apihelp-delete-param-title": "您欲刪除的頁面標題。 無法與 $1pageid 同時使用。",
+       "apihelp-delete-param-pageid": "您欲刪除頁面的頁面 ID。 無法與 $1title 同時使用。",
+       "apihelp-delete-param-reason": "刪除的原因。 若未設定,將會使用自動產生的原因。",
+       "apihelp-delete-param-watch": "加入頁面至您的監視清單。",
+       "apihelp-delete-param-unwatch": "從您的監視清單中移除頁面。",
+       "apihelp-delete-example-simple": "刪除主頁面",
+       "apihelp-delete-example-reason": "刪除主頁面使用原因 \"準備移至它處\"",
+       "apihelp-disabled-description": "已停用此模組。",
+       "apihelp-edit-description": "建立與編輯頁面。",
+       "apihelp-edit-param-title": "您欲編輯的頁面標題。 無法與 $1pageid 同時使用。",
+       "apihelp-edit-param-pageid": "您欲編輯頁面的頁面 ID。 無法與 $1title 同時使用。",
+       "apihelp-edit-param-section": "章節編號。 0 代表最上層章節,\"new\" 代表新章節。",
+       "apihelp-edit-param-sectiontitle": "新章節的標題。",
+       "apihelp-edit-param-text": "頁面內容。",
+       "apihelp-edit-param-summary": "編輯摘要。 當未設定 $1section=new 與 $1sectiontitle 時也會當做章節標題。",
+       "apihelp-edit-param-createonly": "若頁面已存在,則不編輯頁面。",
+       "apihelp-edit-param-nocreate": "若頁面不存在,則產生錯誤。",
+       "apihelp-edit-param-watch": "加入頁面至您的監視清單。",
+       "apihelp-edit-param-unwatch": "從您的監視清單中移除頁面。",
+       "apihelp-edit-example-edit": "編輯頁面",
+       "apihelp-emailuser-description": "寄送電子郵件給使用者。",
+       "apihelp-emailuser-param-target": "電子郵件的收件使用者。",
+       "apihelp-emailuser-param-subject": "郵件主旨。",
+       "apihelp-emailuser-param-text": "郵件內容。",
+       "apihelp-emailuser-param-ccme": "寄送一份此郵件的複本給我。",
+       "apihelp-emailuser-example-email": "寄送電子郵件給使用者 \"WikiSysop\" 使用內容 \"Content\"",
+       "apihelp-expandtemplates-description": "展開所有於 wikitext 中的樣板。",
+       "apihelp-expandtemplates-param-title": "頁面標題。",
+       "apihelp-expandtemplates-param-text": "要轉換的 Wikitext。",
        "apihelp-login-param-name": "使用者名稱。",
+       "apihelp-login-example-login": "登入",
+       "apihelp-move-description": "移動頁面。",
+       "apihelp-opensearch-param-search": "搜尋字串。",
+       "apihelp-options-example-reset": "重設所有偏好設定",
        "apihelp-userrights-param-user": "使用者名稱。",
+       "apihelp-userrights-param-userid": "使用者 ID。",
        "apihelp-format-example-generic": "格式化查詢結果為 $1 格式",
        "apihelp-dbg-description": "使用 PHP 的 var_export() 格式輸出資料。",
        "apihelp-dbgfm-description": "使用 PHP 的 var_export() 格式輸出資料 (使用 HTML 格式顯示)。",
index fc2451e..fc13eeb 100644 (file)
@@ -962,7 +962,8 @@ abstract class DatabaseBase implements IDatabase {
                $totalProf = '';
                $isMaster = !is_null( $this->getLBInfo( 'master' ) );
 
-               if ( !Profiler::instance()->isStub() ) {
+               $profiler = Profiler::instance();
+               if ( !$profiler->isStub() ) {
                        # generalizeSQL will probably cut down the query to reasonable
                        # logging size most of the time. The substr is really just a sanity check.
                        if ( $isMaster ) {
@@ -975,8 +976,8 @@ abstract class DatabaseBase implements IDatabase {
                        # Include query transaction state
                        $queryProf .= $this->mTrxShortId ? " [TRX#{$this->mTrxShortId}]" : "";
 
-                       wfProfileIn( $totalProf );
-                       wfProfileIn( $queryProf );
+                       $totalProfSection = $profiler->scopedProfileIn( $totalProf );
+                       $queryProfSection = $profiler->scopedProfileIn( $queryProf );
                }
 
                if ( $this->debug() ) {
@@ -1059,11 +1060,6 @@ abstract class DatabaseBase implements IDatabase {
                        $this->reportQueryError( $this->lastError(), $this->lastErrno(), $sql, $fname, $tempIgnore );
                }
 
-               if ( !Profiler::instance()->isStub() ) {
-                       wfProfileOut( $queryProf );
-                       wfProfileOut( $totalProf );
-               }
-
                return $this->resultObject( $ret );
        }
 
index f5d2445..7417c6b 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 33304fc..f725b64 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 7139856..cd4af9c 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index c67bd7b..e7c69b8 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index a3d34fa..b8813aa 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index b2e3012..42ab797 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 11dbc82..c9545fa 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -19,7 +18,6 @@
  * @file
  */
 
-
 /**
  * Log message formatter that mimics the legacy log message formatting of
  * `wfDebug`, `wfDebugLog`, `wfLogDBError` and `wfErrorLog` global functions by
index a9f72c8..4aa07f1 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -19,7 +18,6 @@
  * @file
  */
 
-
 /**
  * Injects `wfHostname()` and `wfWikiID()` in all records.
  *
index e514715..c43e3d6 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index ae59378..3b9f1a8 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 73e76f7..96e195c 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 1ad01cc..990e2c3 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 2b3b616..9650ff5 100644 (file)
@@ -139,6 +139,23 @@ abstract class Profiler {
         */
        abstract public function profileOut( $functionname );
 
+       /**
+        * Mark the start of a custom profiling frame (e.g. DB queries).
+        * The frame ends when the result of this method falls out of scope.
+        *
+        * @param string $section
+        * @return ScopedCallback|null
+        * @since 1.25
+        */
+       abstract public function scopedProfileIn( $section );
+
+       /**
+        * @param ScopedCallback $section
+        */
+       public function scopedProfileOut( ScopedCallback &$section ) {
+               $section = null;
+       }
+
        /**
         * @return TransactionProfiler
         * @since 1.25
index 15c5cdd..ab5e3ab 100644 (file)
@@ -227,6 +227,15 @@ class ProfilerStandard extends Profiler {
                }
        }
 
+       public function scopedProfileIn( $section ) {
+               $this->profileIn( $section );
+
+               $that = $this;
+               return new ScopedCallback( function() use ( $that, $section ) {
+                       $that->profileOut( $section );
+               } );
+       }
+
        /**
         * Close opened profiling sections
         */
index 510a0a0..6fc74ef 100644 (file)
@@ -37,6 +37,10 @@ class ProfilerStub extends Profiler {
        public function profileOut( $fn ) {
        }
 
+       public function scopedProfileIn( $section ) {
+               return null;
+       }
+
        public function getFunctionStats() {
        }
 
index d67806b..00209e2 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -122,6 +121,23 @@ class ProfilerXhprof extends Profiler {
        public function profileOut( $functionname ) {
        }
 
+       public function scopedProfileIn( $section ) {
+               static $exists = null;
+               // Only HHVM supports this, not the standard PECL extension
+               if ( $exists === null ) {
+                       $exists = function_exists( 'xhprof_frame_begin' );
+               }
+
+               if ( $exists ) {
+                       xhprof_frame_begin( $section );
+                       return new ScopedCallback( function() use ( $section ) {
+                               xhprof_frame_end( $section );
+                       } );
+               }
+
+               return null;
+       }
+
        /**
         * No-op for xhprof profiling.
         */
index bc63e99..9007603 100644 (file)
@@ -705,6 +705,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                $form->setWrapperLegendMsg( 'watchlistedit-clear-legend' );
                $form->addHeaderText( $this->msg( 'watchlistedit-clear-explain' )->parse() );
                $form->setSubmitCallback( array( $this, 'submitClear' ) );
+               $form->setSubmitDestructive();
 
                return $form;
        }
index 5860f63..9323211 100644 (file)
@@ -2,7 +2,6 @@
 /**
  * Implements Special:Filepath
  *
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 2022d74..a2683e5 100644 (file)
@@ -2,7 +2,6 @@
 /**
  * Implements Special:Redirect
  *
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -263,6 +262,26 @@ class SpecialRedirect extends FormSpecialPage {
                $form->setMethod( 'get' );
        }
 
+       /**
+        * Return an array of subpages beginning with $search that this special page will accept.
+        *
+        * @param string $search Prefix to search for
+        * @param int $limit Maximum number of results to return
+        * @return string[] Matching subpages
+        */
+       public function prefixSearchSubpages( $search, $limit = 10 ) {
+               return self::prefixSearchArray(
+                       $search,
+                       $limit,
+                       array(
+                               "file",
+                               "page",
+                               "revision",
+                               "user",
+                       )
+               );
+       }
+
        protected function getGroupName() {
                return 'redirects';
        }
index 4a41b42..4e4d103 100644 (file)
@@ -41,7 +41,7 @@
        'aa' => 'Qafár af',    # Afar
        'ab' => 'Аҧсшәа', # Abkhaz
        'ace' => 'Acèh',       # Aceh
-       'aeb' => 'زÙ\8eÙ\88Ù\8fÙ\86',  # Tunisian Arabic
+       'aeb' => 'تÙ\88Ù\86سÙ\8a',  # Tunisian Arabic
        'af' => 'Afrikaans',    # Afrikaans
        'ak' => 'Akan',         # Akan
        'aln' => 'Gegë',       # Gheg Albanian
index c3bce9a..0adc350 100644 (file)
        "databaseerror-query": "Запыт: $1",
        "databaseerror-function": "Функцыя: $1",
        "databaseerror-error": "Памылка: $1",
-       "laggedslavemode": "'''Увага:''' старонка можа ня ўтрымліваць апошніх зьменаў.",
+       "laggedslavemode": "<strong>Увага:</strong> старонка можа ня ўтрымліваць апошнія зьмены.",
        "readonly": "База зьвестак заблякаваная",
        "enterlockreason": "Пазначце прычыну блякаваньня і заплянаваны час разблякаваньня",
        "readonlytext": "База зьвестак заблякаваная для дадаваньня новых старонак і іншых зьменаў, верагодна з прычыны тэхнічнага абслугоўваньня, пасьля якога будзе адноўлена звычайная праца.\n\nАдміністратар, які заблякаваў базу зьвестак, пакінуў наступнае тлумачэньне: $1",
index 45c7105..a6b20b5 100644 (file)
        "specialpages-group-wiki": "Data and tools",
        "specialpages-group-redirects": "Redirecting special pages",
        "specialpages-group-spam": "Spam tools",
+       "specialpages-group-developer": "Developer tools",
        "blankpage": "Blank page",
        "intentionallyblankpage": "This page is intentionally left blank.",
        "external_image_whitelist": " #Leave this line exactly as it is<pre>\n#Put regular expression fragments (just the part that goes between the //) below\n#These will be matched with the URLs of external (hotlinked) images\n#Those that match will be displayed as images, otherwise only a link to the image will be shown\n#Lines beginning with # are treated as comments\n#This is case-insensitive\n\n#Put all regex fragments above this line. Leave this line exactly as it is</pre>",
index b6ae7c3..9aaf950 100644 (file)
        "tooltip-pt-mycontris": "Lista de tus contribuciones",
        "tooltip-pt-login": "Te recomendamos iniciar sesión, sin embargo no es obligatorio",
        "tooltip-pt-logout": "Salir de la sesión",
-       "tooltip-pt-createaccount": "Te recomendamos crear una cuenta e iniciar una sesión; sin embargo, no es obligatorio",
+       "tooltip-pt-createaccount": "Te recomendamos crear una cuenta e iniciar sesión; sin embargo, no es obligatorio",
        "tooltip-ca-talk": "Discusión acerca del artículo",
        "tooltip-ca-edit": "Puedes editar esta página. Utiliza el botón de previsualización antes de guardar",
        "tooltip-ca-addsection": "Iniciar una sección nueva",
index a8e7b87..6a49891 100644 (file)
        "viewyourtext": "Осы беттен <strong>өңдемелеріңіздің</strong> қайнарын қарай және көшіре аласыз.",
        "protectedinterface": "Бұл бет осы уикидің бағдарламалық жасақтамасы үшін интерфейс мәтінін қамтамасыз етеді және қиянаттауды болдырмау үшін қорғалған. Барлық уикилер үшін аудармаларды қосу немесе өзгерту үшін [//translatewiki.net/ translatewiki.net] MediaWiki жерсіндіру жобасын қолданыңыз.",
        "editinginterface": "<strong>Ескерту:</strong> Бағдарламалық жасақтаманың тілдесу мәтінін жетістіретін бетін өңдеп жатырсыз.\nБұл беттің өзгертілуі басқа қатысушыларға пайдаланушылық интерфейсін қалай көрінетіне әсер етеді.\nБарлық уикилер үшін аудармаларды өзгерту немесе қосу үшін [//translatewiki.net/ translatewiki.net] МедиаУики жерсіндіру жобасын пайдаланыңыз.",
+       "translateinterface": "Барлық уикилерге аудармаларды қосу немесе өзгерту үшін [//translatewiki.net/ translatewiki.net] МедиаУики жерсіндіру жобасын қолданыңыз.",
        "cascadeprotected": "Бұл бет өңдеуден қорғалған, себебі бұл келесі «баулы қорғауы» қосылған {{PLURAL:$1|бетке|беттерге}} кірістірілген:\n$2",
        "namespaceprotected": "<strong>$1</strong> есім кеңістігіндегі беттерді өңдеу рұқсатыңыз жоқ.",
        "customcssprotected": "Сіздің бұл CSS бетін өңдеуге рұқсатыңыз жоқ, себебі мұнда өзге қатысушының жеке баптауларынан тұрады.",
index 27d0d11..66599ff 100644 (file)
        "allmessages-filter-all": "ejaal",
        "allmessages-filter-modified": "heh em Wiki jeändert",
        "allmessages-prefix": "Name fängk aan met:",
-       "allmessages-language": "Schprooch:",
+       "allmessages-language": "Schprohch:",
        "allmessages-filter-submit": "Lohß Jonn!",
        "allmessages-filter-translate": "Övversäze!",
        "thumbnail-more": "Jrößer aanzeije",
        "exif-objectcycle": "De Daachszick, för wann dat Denge zom Verdeile jedaach es",
        "exif-contact": "Kuntak",
        "exif-writer": "Schriiver",
-       "exif-languagecode": "Schprooch",
+       "exif-languagecode": "Schprohch",
        "exif-iimversion": "Dem <i lang=\"en\">IIM</i> sing Version",
        "exif-iimcategory": "Saachjrupp udder Zoot",
        "exif-iimsupplementalcategory": "Extra Saachjroppe udder Zoote",
index 9ca2f88..5a181c7 100644 (file)
        "specialpages-group-wiki": "{{doc-special-group|like=[[Special:Version]], [[Special:Statistics]], [[Special:LockDB]], etc}}",
        "specialpages-group-redirects": "{{doc-special-group|that=redirect to another location|like=[[Special:Randompage]], [[Special:Mypage]], [[Special:Mytalk]], etc}}",
        "specialpages-group-spam": "{{doc-special-group}}",
+       "specialpages-group-developer": "{{doc-special-group|that=are related to tools for developers}}",
        "blankpage": "{{doc-special|BlankPage|unlisted=1}}\nSee also:\n* {{msg-mw|Intentionallyblankpage|text}}",
        "intentionallyblankpage": "Text displayed in [[Special:BlankPage]].\n\nSee also:\n* {{msg-mw|Intentionallyblankpage|page title}}",
        "external_image_whitelist": "As usual please leave all the wiki markup, including the spaces, as they are. You can translate the text, including 'Leave this line exactly as it is'. The first line of this messages has one (1) leading space.\n\nSee definition of [[w:Regular_expression|regular expression]] on Wikipedia.",
index b0c2824..fbff85d 100644 (file)
        "autosumm-replace": "פֿאַרבײַט דעם בלאַט מיט '$1'",
        "autoredircomment": "ווייטערפירן צו [[$1]]",
        "autosumm-new": "געשאַפֿן בלאַט מיט '$1'",
+       "autosumm-newblank": "ליידיגן בלאט געשאפן",
        "watchlistedit-normal-title": "רעדאַקטירן די אויפֿפאַסונג ליסטע",
        "watchlistedit-normal-legend": "אַראָפנעמען בלעטער פון דער אויפֿפאסן ליסטע",
        "watchlistedit-normal-submit": "אַראָפנעמען בלעטער",
index 4cb1ff4..25de8f7 100644 (file)
        "nosuchaction": "无此操作",
        "nosuchactiontext": "URL所指定的操作无效。你所输入的URL地址可能有误,或是使用了错误的链接。这也可能表示{{SITENAME}}所使用软件之中存在漏洞。",
        "nosuchspecialpage": "此特殊页面不存在",
-       "nospecialpagetext": "<strong>您请求了一个无效的特殊页面。</strong>\n\n在[[Special:SpecialPages|{{int:specialpages}}]可以]找到有效的特殊页面的列表。",
+       "nospecialpagetext": "<strong>您请求了一个无效的特殊页面。</strong>\n\n在[[Special:SpecialPages|{{int:specialpages}}]]可以找到有效的特殊页面的列表。",
        "error": "错误",
        "databaseerror": "数据库错误",
        "databaseerror-text": "出现数据库查询错误。这可能表示软件中存在漏洞。",
index 1e702de..d21a296 100644 (file)
@@ -2,7 +2,6 @@
 /**
  * Scan the logging table and purge affected files within a timeframe.
  *
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 6702209..56e22c4 100644 (file)
@@ -2,7 +2,6 @@
 /**
  * Send purge requests for pages edited in date range to squid/varnish.
  *
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 55e48d1..b4292a6 100644 (file)
@@ -2,7 +2,6 @@
 /**
  * Holds tests for DatabaseMysqlBase MediaWiki class.
  *
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 4c59f47..81d6840 100644 (file)
@@ -2,7 +2,6 @@
 /**
  * Holds tests for LBFactory abstract MediaWiki class.
  *
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index bad8d8d..22d3270 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 8c2f12c..9220732 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index cc81aba..2440fc0 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * @section LICENSE
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 96a88f0..b800bc2 100644 (file)
                                },
 
                                teardown: function () {
+                                       var timers;
                                        log( 'MwEnvironment> TEARDOWN for "' + QUnit.config.current.module
                                                + ': ' + QUnit.config.current.testName + '"' );
 
                                        // Check for incomplete animations/requests/etc and throw
                                        // error if there are any.
                                        if ( $.timers && $.timers.length !== 0 ) {
-                                               // Test may need to use fake timers, wait for animations or
-                                               // call $.fx.stop().
-                                               throw new Error( 'Unfinished animations: ' + $.timers.length );
+                                               timers = $.timers.length;
+                                               // Tests shoulld use fake timers or wait for animations to complete
+                                               $.each( $.timers, function ( i, timer ) {
+                                                       var node = timer.elem;
+                                                       mw.log.warn( 'Unfinished animation #' + i + ' in ' + timer.queue + ' queue on ' +
+                                                               mw.html.element( node.nodeName.toLowerCase(), $(node).getAttrs() )
+                                                       );
+                                               } );
+                                               // Force animations to stop to give the next test a clean start
+                                               $.fx.stop();
+
+                                               throw new Error( 'Unfinished animations: ' + timers );
                                        }
                                        if ( $.active !== undefined && $.active !== 0 ) {
                                                // Test may need to use fake XHR, wait for requests or
index 9b620de..7aa9133 100644 (file)
                assert.equal( tbRLDMemptyjquery, $( '#p-test-tb li:last' )[0], 'Fallback to adding at the end (nextnode as empty jQuery object)' );
        } );
 
-       QUnit.test( 'jsMessage', 1, function ( assert ) {
-               this.suppressWarnings();
-               var a = mw.util.jsMessage( 'MediaWiki is <b>Awesome</b>.' );
-               this.restoreWarnings();
-               assert.ok( a, 'Basic checking of return value' );
-       } );
-
        QUnit.test( 'validateEmail', 6, function ( assert ) {
                assert.strictEqual( mw.util.validateEmail( '' ), null, 'Should return null for empty string ' );
                assert.strictEqual( mw.util.validateEmail( 'user@localhost' ), true, 'Return true for a valid e-mail address' );