lhc/web/wiklou.git
8 years agoMerge "Special:PageLanguage: Show log extract only when title known"
jenkins-bot [Sat, 23 May 2015 20:57:19 +0000 (20:57 +0000)]
Merge "Special:PageLanguage: Show log extract only when title known"

8 years agoMerge "Update namespace aliases for Luri (lrc) from translatewiki"
jenkins-bot [Sat, 23 May 2015 20:56:32 +0000 (20:56 +0000)]
Merge "Update namespace aliases for Luri (lrc) from translatewiki"

8 years agoMerge "Remove MWLogger and non-namespaced MWLogger* shim classes"
jenkins-bot [Sat, 23 May 2015 20:36:25 +0000 (20:36 +0000)]
Merge "Remove MWLogger and non-namespaced MWLogger* shim classes"

8 years agoRemove MWLogger and non-namespaced MWLogger* shim classes
Bryan Davis [Sat, 23 May 2015 20:10:28 +0000 (22:10 +0200)]
Remove MWLogger and non-namespaced MWLogger* shim classes

These classes were introduced and deprecated during the 1.25 development
cycle.

Bug: 100098
Change-Id: I3a479d194bdf5137f99a7e27fc71c7b438b1e136

8 years agoMerge "Add gender in message 'editinguser'"
jenkins-bot [Sat, 23 May 2015 20:27:11 +0000 (20:27 +0000)]
Merge "Add gender in message 'editinguser'"

8 years agoFix false Namespaceselector value for "all" on Special:LinkSearch
Florian [Thu, 7 May 2015 16:01:38 +0000 (18:01 +0200)]
Fix false Namespaceselector value for "all" on Special:LinkSearch

Added the ability to define the value in HTMLSelectNamespace.

Bug: T98496
Follow-Up: I8503c391a40f1654f8570578a9de9015d86c9845
Change-Id: Ic6a871507a027d28b3aeb1efeb9abbceb5734a9e

8 years agoReplaced spaces with underscores in NS_ consts
Yuri Astrakhan [Tue, 12 May 2015 20:16:47 +0000 (23:16 +0300)]
Replaced spaces with underscores in NS_ consts

* All $namespaceNames and similar messages
that reference NS_* constants seem to use '_' for spaces,
except a few cases. I suspect its a mistake, thus replacing.

Regexes used:
 ([^'"\n]*['"][^'"\n]*(['"][^'"\n]*['"])*[^'"\n]*[^A-Za-z0-9]NS_)
contains a space in front, replaced with _\1

[^A-Za-z0-9]NS_([^'"\n]*['"][^'"\n]*['"])*[^'"\n]*['"][^'"\n]*
contains a space at the very end, replaced with \1_

Change-Id: Ibbc201678ee91db2b5bf3de597c1598b86558d77

8 years agoSpecial:PageLanguage: Show log extract only when title known
umherirrender [Sat, 23 May 2015 19:41:01 +0000 (21:41 +0200)]
Special:PageLanguage: Show log extract only when title known

When open Special:PageLanguage without a page, the whole pagelang log is
shown and the notice:
Title::newFromText: $text must be a string. This will throw an
InvalidArgumentException in future. [Called from LogPager::limitTitle]
The whole log is useless at this position, so showing it only when
looking at a specific page.

Change-Id: I2a0b7ccc71789506554617e1d12797e72835a12a

8 years agoCleaned up CAS check in RevDelLogItem::setBits for recentchanges
Aaron Schulz [Fri, 22 May 2015 23:39:05 +0000 (16:39 -0700)]
Cleaned up CAS check in RevDelLogItem::setBits for recentchanges

Change-Id: I6c29653361a0937489c27891739a9dc626c20167

8 years agoCleaned up some Job doc types
Aaron Schulz [Sat, 23 May 2015 18:04:18 +0000 (11:04 -0700)]
Cleaned up some Job doc types

Change-Id: I205345819bc07575995ab9aff54f40d547bd1d6f

8 years agoActually set the $res field via doQuery() in setVisibility
Aaron Schulz [Fri, 22 May 2015 23:31:06 +0000 (16:31 -0700)]
Actually set the $res field via doQuery() in setVisibility

* Otherwise, it is thrown away and redone on a slave

Change-Id: I1252fa5bc98d908cf289f4d93cbdd8d6d33828ea

8 years agoMerge "resources: Add OOjs UI's Apex theme's files"
jenkins-bot [Sat, 23 May 2015 16:53:57 +0000 (16:53 +0000)]
Merge "resources: Add OOjs UI's Apex theme's files"

8 years agoresources: Add OOjs UI's Apex theme's files
Bartosz Dziewoński [Sat, 23 May 2015 15:16:36 +0000 (17:16 +0200)]
resources: Add OOjs UI's Apex theme's files

Currently not used, but there are big plans for them!

Change-Id: Iaa0e82a3ebda4665c5eafac5167c8912e82199d4

8 years agoAdd gender in message 'editinguser'
Seb35 [Sat, 23 May 2015 15:41:07 +0000 (17:41 +0200)]
Add gender in message 'editinguser'

Bug: T99223
Change-Id: Ie8b2a569f9f213c9d2683907c6d17dc637083359

8 years agoMerge "Check for dependencies in entry point and Maintenance.php"
jenkins-bot [Sat, 23 May 2015 15:15:58 +0000 (15:15 +0000)]
Merge "Check for dependencies in entry point and Maintenance.php"

8 years agoMerge "mediawiki.language: Respect $wgTranslateNumerals in convertNumber()"
jenkins-bot [Sat, 23 May 2015 15:15:54 +0000 (15:15 +0000)]
Merge "mediawiki.language: Respect $wgTranslateNumerals in convertNumber()"

8 years agoCheck for dependencies in entry point and Maintenance.php
aude [Sat, 18 Apr 2015 09:37:10 +0000 (05:37 -0400)]
Check for dependencies in entry point and Maintenance.php

This way, if someone tries to install MediaWiki via
either web installer or install.php maintenance script,
after obtaining from git, they get some useful information
on what to do.

Put the checks alongside the php version check, as
stuff installed via composer (mustache / lightncandy)
is used for NoLocalSettings.php and install.php
attempts to use logging stuff.

Also tried to make PHPVersionError look slightly nicer,
with some <h2> elements and more padding for the <p>
elements.

and centralized this code in one place, as much as possible,
for improved ease of maintenance.

Bug: T90438
Bug: T88951
Change-Id: Iae4eb42c4266dbe9213c5de8a96fccfbeaa9acb0

8 years agoMerge "Fix edit link for messages in $wgForceUIMsgAsContentMsg"
jenkins-bot [Sat, 23 May 2015 14:27:19 +0000 (14:27 +0000)]
Merge "Fix edit link for messages in $wgForceUIMsgAsContentMsg"

8 years agoMerge "Format number for message 'title-invalid-too-long'"
jenkins-bot [Sat, 23 May 2015 14:22:04 +0000 (14:22 +0000)]
Merge "Format number for message 'title-invalid-too-long'"

8 years agoMerge "Add explicit plural for number of bytes"
jenkins-bot [Sat, 23 May 2015 14:19:11 +0000 (14:19 +0000)]
Merge "Add explicit plural for number of bytes"

8 years agoAdd explicit plural for number of bytes
Siebrand Mazeland [Sat, 23 May 2015 12:23:14 +0000 (14:23 +0200)]
Add explicit plural for number of bytes

Reported by Purodha at
https://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Title-invalid-too-long/ksh

Change-Id: I5555826ce3f71741696cbb2ef2521fe1ff7e6253

8 years agoMerge "SpecialStatsAddExtra: Format column label with msg"
jenkins-bot [Sat, 23 May 2015 13:23:52 +0000 (13:23 +0000)]
Merge "SpecialStatsAddExtra: Format column label with msg"

8 years agoAdded $res var docs for RevisionListBase
Aaron Schulz [Fri, 22 May 2015 20:49:29 +0000 (13:49 -0700)]
Added $res var docs for RevisionListBase

Change-Id: Ib71b9c662e68b64f1c6ad07c1902ed8ed432f175

8 years agoFormat number for message 'title-invalid-too-long'
umherirrender [Sat, 23 May 2015 13:04:21 +0000 (15:04 +0200)]
Format number for message 'title-invalid-too-long'

Follow-Up: I4da8ecb457a77473e32d745ba48ab8505b35e45f
Change-Id: I30ebf2a21bb09d992140baa2bd8707a674da6d51

8 years agoSpecialStatsAddExtra: Format column label with msg
Mark A. Hershberger [Thu, 30 Apr 2015 02:40:48 +0000 (22:40 -0400)]
SpecialStatsAddExtra: Format column label with msg

This allows the user of the SpecialStatsAddExtra hook to provide
formatting for the row label using an i18n message key.  If given, the
message is given the row key as a parameter.  To maintain backward
compatibility, the key is used as-is as was done previously if a message
key is not provided.

Bug: T97623
Change-Id: I43c522b24372e115ed78adf69848bf50cbab8295

8 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 22 May 2015 22:26:03 +0000 (00:26 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I49999070014b45d52c59ec38c4bd84202e1172c6

8 years agoMade RecentChange defer the save() method via DeferredUpdates
Aaron Schulz [Thu, 21 May 2015 07:21:03 +0000 (00:21 -0700)]
Made RecentChange defer the save() method via DeferredUpdates

* Also made it handle calling PatrolLog::record() itself

Bug: T100042
Change-Id: I58ef060e02b89a5f9dadc0dbc4edba667932beda

8 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 21 May 2015 20:14:53 +0000 (22:14 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I0b708cf7c6301f57aa618284f960b9701157cf15

8 years agoDefer some updates in doEditUpdates()
Aaron Schulz [Thu, 21 May 2015 06:13:28 +0000 (23:13 -0700)]
Defer some updates in doEditUpdates()

* These updates add to editing time and can be done
  after sending the HTTP response for performance
* Also improved the active users job insertion logic

Change-Id: I5b25217c4f08db7fa9a05eac046283f02d45865e

8 years agoProfilerOutputStats: replace single ':' with '.', too
Ori Livneh [Thu, 21 May 2015 19:16:24 +0000 (12:16 -0700)]
ProfilerOutputStats: replace single ':' with '.', too

This maps 'hook: ' and 'query: ' to a metric name segment, instead of just a
metric name prefix.

Change-Id: I41fb71becbc862597b998c73ccfcaca5a3510ffc

8 years agoImprove ProfilerXhprof's blacklist/whitelist capabilities
Ori Livneh [Thu, 21 May 2015 18:36:51 +0000 (11:36 -0700)]
Improve ProfilerXhprof's blacklist/whitelist capabilities

* Apply the blacklist / whitelist to profiled sections, not just function names.
* Allow shell-style wildcard patterns in blacklist / whitelist.
* Prefix all profiled section names with 'section.', to distinguish them from
  functions.

Note that shell-style wildcard patterns are not supported by xhprof natively,
but it won't barf on them either, nor will they match against actual function
names (since shell wildcard characters are not valid for PHP function names),
and the filtering will still be enforced in ProfilerXhprof.

This has the side-effect of working around https://github.com/facebook/hhvm/issues/4385

Bug: T99829
Change-Id: I8354ed922fa7b42857eda03be8f62b89ac78d0d6

8 years agoMerge "API: Add 'wrfromtitle' and 'wrtotitle' to list=watchlistraw"
jenkins-bot [Thu, 21 May 2015 19:05:56 +0000 (19:05 +0000)]
Merge "API: Add 'wrfromtitle' and 'wrtotitle' to list=watchlistraw"

8 years agoMerge "Avoid calling load() in LocalFile::invalidateCache; not needed"
jenkins-bot [Thu, 21 May 2015 18:57:20 +0000 (18:57 +0000)]
Merge "Avoid calling load() in LocalFile::invalidateCache; not needed"

8 years agoMerge "ProfilerOutputStats: allow a key prefix to be specified"
jenkins-bot [Thu, 21 May 2015 18:51:21 +0000 (18:51 +0000)]
Merge "ProfilerOutputStats: allow a key prefix to be specified"

8 years agoAvoid calling load() in LocalFile::invalidateCache; not needed
Aaron Schulz [Thu, 21 May 2015 18:23:19 +0000 (11:23 -0700)]
Avoid calling load() in LocalFile::invalidateCache; not needed

Change-Id: I1e2d61722a18e4046bdf7c375ea9c1dbbea4a157

8 years agoProfilerOutputStats: allow a key prefix to be specified
Ori Livneh [Thu, 21 May 2015 18:07:39 +0000 (11:07 -0700)]
ProfilerOutputStats: allow a key prefix to be specified

If one wants to nest all metrics emitted by the profiler under a metric
namespace, one can now set the 'prefix' param.

Task: T66301
Change-Id: I6c52f20e39017f4c818ca6623bb7f48683fc8abc

8 years agoMerge "Search: Allow searchContainedSyntax to be defined by constructor"
jenkins-bot [Thu, 21 May 2015 17:54:21 +0000 (17:54 +0000)]
Merge "Search: Allow searchContainedSyntax to be defined by constructor"

8 years agoMerge "registration: Don't ignore empty array config settings when converting"
jenkins-bot [Thu, 21 May 2015 17:33:05 +0000 (17:33 +0000)]
Merge "registration: Don't ignore empty array config settings when converting"

8 years agoMerge "registration: Add test case to demonstrate T98347 is invalid"
jenkins-bot [Thu, 21 May 2015 17:27:35 +0000 (17:27 +0000)]
Merge "registration: Add test case to demonstrate T98347 is invalid"

8 years agoregistration: Don't ignore empty array config settings when converting
Kunal Mehta [Tue, 12 May 2015 16:26:24 +0000 (09:26 -0700)]
registration: Don't ignore empty array config settings when converting

Remember which settings we set to an empty array and then only skip
those settings.
The weird variable name "$__settings" is used to avoid any conflicts
similar to what eval.php does.

Bug: T98739
Change-Id: Iefbf8a98fd433cfbe0087aca6821d90c2786b0cb

8 years agoAPI: Add 'wrfromtitle' and 'wrtotitle' to list=watchlistraw
Brad Jorsch [Wed, 13 May 2015 18:42:39 +0000 (14:42 -0400)]
API: Add 'wrfromtitle' and 'wrtotitle' to list=watchlistraw

Naming is "fromtitle" rather than just "from" because "from" parameters
in API query modules generally mean a title without namespace, and this
should make use of the client-supplied namespace.

Bug: T98985
Change-Id: I8370f47f6eed71ea97a44a66eb6be2a8f89fea53

8 years agoMerge "Avoid pointless getNativeData() call in isCountable()"
jenkins-bot [Thu, 21 May 2015 10:23:49 +0000 (10:23 +0000)]
Merge "Avoid pointless getNativeData() call in isCountable()"

8 years agoAvoid pointless getNativeData() call in isCountable()
Aaron Schulz [Thu, 21 May 2015 06:56:25 +0000 (23:56 -0700)]
Avoid pointless getNativeData() call in isCountable()

Change-Id: I40ed1972a8815de645d11217b35c1060d5007e5a

8 years agoMake sure $dbw is an object in DeferredUpdates::addUpdate()
Aaron Schulz [Thu, 21 May 2015 06:06:05 +0000 (23:06 -0700)]
Make sure $dbw is an object in DeferredUpdates::addUpdate()

Change-Id: Ib52574bc7f2e13bf06f595e349a7b3ccea425056

8 years agoMerge "registration: Notify of problems before filemtime, not after"
jenkins-bot [Wed, 20 May 2015 23:56:25 +0000 (23:56 +0000)]
Merge "registration: Notify of problems before filemtime, not after"

8 years agoregistration: Notify of problems before filemtime, not after
Mark A. Hershberger [Wed, 20 May 2015 22:07:15 +0000 (18:07 -0400)]
registration: Notify of problems before filemtime, not after

Without this several lines of warning are emitted before the final error indicating the cause.

Bug: T99846
Change-Id: Ic1b9d9a80ed995273c56c447c8b044285a8843a7

8 years agoFlush lazy jobs in load.php and api.php too
Aaron Schulz [Wed, 20 May 2015 23:01:51 +0000 (16:01 -0700)]
Flush lazy jobs in load.php and api.php too

* A more proper solution will have one method for all this stuff

Bug: T99775
Bug: T99849
Change-Id: I16a32b260386a85504eb85ea58f1156b4e581a83

8 years agoMerge "Bumping lightncandy version from 0.18 to 0.21"
kaldari [Wed, 20 May 2015 21:47:14 +0000 (21:47 +0000)]
Merge "Bumping lightncandy version from 0.18 to 0.21"

8 years agoMerge "Fix Special:Preferences onBeforeUnload handler"
jenkins-bot [Wed, 20 May 2015 20:25:17 +0000 (20:25 +0000)]
Merge "Fix Special:Preferences onBeforeUnload handler"

8 years agoMerge "Pass a message key to MalformedTitleException constructor"
jenkins-bot [Wed, 20 May 2015 20:10:02 +0000 (20:10 +0000)]
Merge "Pass a message key to MalformedTitleException constructor"

8 years agoFix Special:Preferences onBeforeUnload handler
Florian [Wed, 20 May 2015 20:05:24 +0000 (22:05 +0200)]
Fix Special:Preferences onBeforeUnload handler

Bug: T94194
Change-Id: If9e3836c6061cf99dc0859dafb99b9456e6efd0e

8 years agoMerge "Localisation updates from https://translatewiki.net."
Translation updater bot [Wed, 20 May 2015 19:45:18 +0000 (19:45 +0000)]
Merge "Localisation updates from https://translatewiki.net."

8 years agoPass a message key to MalformedTitleException constructor
Brad Jorsch [Wed, 20 May 2015 19:44:01 +0000 (15:44 -0400)]
Pass a message key to MalformedTitleException constructor

'badtitletext' seems to be equivalent to the situation before I4da8ecb4,
so let's go with that.

Bug: T99818
Change-Id: Ifdf66d2806df3ae7d2d378343491dd8976c31981

8 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 20 May 2015 19:39:59 +0000 (21:39 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I606ac1f2237b561daf4bc88426e3b9f5e65a8fc9

8 years agoImprove documentation of maintenance/sql.php
Marius Hoch [Wed, 20 May 2015 19:21:11 +0000 (21:21 +0200)]
Improve documentation of maintenance/sql.php

I found this to be lacking earlier this week...

Change-Id: I409c7451baa71b88cf554af0d82d1bf5904a2c4c

8 years agoKeep jenkins happy by limiting line length.
Mark A. Hershberger [Tue, 19 May 2015 18:00:56 +0000 (14:00 -0400)]
Keep jenkins happy by limiting line length.

Just w/s changes to break up long lines.

Change-Id: I69bf30f6c05813cfa32c8cd194f121cedcc4cb8a

8 years agoMerge "Message text clarified."
jenkins-bot [Wed, 20 May 2015 09:14:00 +0000 (09:14 +0000)]
Merge "Message text clarified."

8 years agoMerge "Make JobRunner flush DeferredUpdates after each job"
jenkins-bot [Wed, 20 May 2015 07:49:07 +0000 (07:49 +0000)]
Merge "Make JobRunner flush DeferredUpdates after each job"

8 years agoMerge "Simplified doEditContent exception handling"
jenkins-bot [Wed, 20 May 2015 07:21:35 +0000 (07:21 +0000)]
Merge "Simplified doEditContent exception handling"

8 years agoMerge "Fixed wrong EnqueueJob comment"
jenkins-bot [Wed, 20 May 2015 07:08:33 +0000 (07:08 +0000)]
Merge "Fixed wrong EnqueueJob comment"

8 years agoMerge "Do not allow setting deprecated $wgSpecialPageGroups over extension.json"
jenkins-bot [Wed, 20 May 2015 04:48:59 +0000 (04:48 +0000)]
Merge "Do not allow setting deprecated $wgSpecialPageGroups over extension.json"

8 years agoFixed wrong EnqueueJob comment
Aaron Schulz [Wed, 20 May 2015 02:26:36 +0000 (19:26 -0700)]
Fixed wrong EnqueueJob comment

Change-Id: I8a84bae9cd4206eb042e5a29c91d8281e296ecd1

8 years agoUser::clearSharedCache: don't load the full user record for just the ID
Ori Livneh [Tue, 19 May 2015 22:45:46 +0000 (15:45 -0700)]
User::clearSharedCache: don't load the full user record for just the ID

Rather than call $this->load() unconditionally, get just the ID via
$this->getId(), potentially saving us a database lookup.

Change-Id: Ifa3b96956a1d66d3e877573ff01970758fad8790

8 years agoresourceloader: Replace timestamp system with version hashing
Timo Tijhof [Wed, 29 Apr 2015 22:53:24 +0000 (23:53 +0100)]
resourceloader: Replace timestamp system with version hashing

Modules now track their version via getVersionHash() instead of getModifiedTime().

== Background ==

While some resources have observeable timestamps (e.g. files stored on disk),
many other resources do not. E.g. config variables, and module definitions.

For static file modules, one can e.g. revert one of more files in a module to a
previous version and not affect the max timestamp.

Wiki modules include pages only if they exist. The user module supports common.js
and skin.js. By default neither exists. If a user has both, and then the
less-recently modified one is deleted, the max-timestamp remains unchanged.

For client-side caching, batch requests use "Math.max" on the relevant timestamps.
Again, if a module changes but another module is more recent (e.g. out-of-order
deployment, or out-of-order discovery), the change would not result in a cache miss.

More scenarios can be found in the associated Phabricator tasks.

== Version hash ==

Previously we virtually mapped these variables to a timestamp by storing the current
time alongside a hash of the value in ObjectCache. Considering the number of
possible request contexts (wikis * modules * users * skins * languages) this doesn't
work well. It results in needless cache invalidation when the first time observation
is purged due to LRU algorithms. It also has other minor bugs leading to fewer
cache hits.

All modules automatically get the benefits of version hashing with this change.
The old getDefinitionMtime() and getHashMtime() have been replaced with dummies
that return 1. These functions are often called from getModifiedTime() in subclasses.

For backward-compatibility, their respective values (definition summary and hash)
are now included in getVersionHash directly.

As examples, the following modules have been updated to use getVersionHash directly.
Other modules still work fine and can be updated later.

* ResourceLoaderFileModule
* ResourceLoaderEditToolbarModule
* ResourceLoaderStartUpModule
* ResourceLoaderWikiModule

The presence of hashes in place of timestamps increases the startup module size on
a default MediaWiki install from 4.4k to 5.8k (after gzip and minification).

== ETag ==

Since timestamps are no longer tracked, we need a different way to implement caching
for cache proxies (e.g. Varnish) and web browsers. Previously we used the
Last-Modified header (in combination with Cache-Control and Expires).

Instead of Last-Modified (and If-Modified-Since), we use ETag (and If-None-Match).

Entity tags (new in HTTP/1.1) are much stricter than Last-Modified by default.
They instruct browsers to allow usage of partial Range requests. Since our responses
are dynamically generated, we need to use the Weak version of ETag.

While this sounds bad, it's no different than Last-Modified. As reassured by
RFC 2616 <http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.3.3> the
specified behaviour behind Last-Modified follows the same "Weak" caching logic as
Entity tags. It's just that entity tags are capable of a stricter mode (whereas
Last-Modified is inherently weak).

== File cache ==

If $wgUseFileCache is enabled, ResourceLoader uses ResourceFileCache to cache
load.php responses. While the blind TTL handling (during the allowed expiry period)
is still maxage/timestamp based, tryRespondNotModified() now requires the caller to
know the expected ETag.

For this to work, the FileCache handling had to be moved from the top of
ResoureLoader::respond() to after the expected ETag is computed.

This also allows us to remove the duplicate tryRespondNotModified() handling since
that's is already handled by ResourceLoader::respond() meanwhile.

== Misc ==

* Remove redundant modifiedTime cache in ResourceLoaderFileModule.

* Change bugzilla references to Phabricator.

* Centralised inclusion of wgCacheEpoch using getDefinitionSummary. Previously this
  logic was duplicated in each place the modified timestamp was used.

* It's easy to forget calling the parent class in getDefinitionSummary().
  Previously this method only tracked 'class' by default. As such, various
  extensions hardcoded that one value instead of calling the parent and extending
  the array. To better prevent this in the future, getVersionHash() now asserts
  that the '_cacheEpoch' property made it through.

* tests: Don't use getDefinitionSummary() as an API.
  Fix ResourceLoaderWikiModuleTest to call getPages properly.

* In tests, the default timestamp used to be 1388534400000 (which is the unix time
  of 20140101000000; the unit tests' CacheEpoch). The new version hash of these
  modules is "XyCC+PSK", which is the base64 encoded prefix of the SHA1 digest of:
  '{"_class":"ResourceLoaderTestModule","_cacheEpoch":"20140101000000"}'

* Add sha1.js library for client-side hash generation.
  Compared various different implementations for code size (after minfication/gzip),
  and speed (when used for short hexidecimal strings).
  https://jsperf.com/sha1-implementations
  - CryptoJS <https://code.google.com/p/crypto-js/#SHA-1> (min+gzip: 2.5k)
    http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha1.js
    Chrome: 45k, Firefox: 89k, Safari: 92k
  - jsSHA <https://github.com/Caligatio/jsSHA>
    https://github.com/Caligatio/jsSHA/blob/3c1d4f2e/src/sha1.js (min+gzip: 1.8k)
    Chrome: 65k, Firefox: 53k, Safari: 69k
  - phpjs-sha1 <https://github.com/kvz/phpjs> (RL min+gzip: 0.8k)
    https://github.com/kvz/phpjs/blob/1eaab15d/functions/strings/sha1.js
    Chrome: 200k, Firefox: 280k, Safari: 78k

  Modern browsers implement the HTML5 Crypto API. However, this API is asynchronous,
  only enabled when on HTTPS in Chromium, and is quite low-level. It requires boilerplate
  code to actually use with TextEncoder, ArrayBuffer and Uint32Array. Due this being
  needed in the module loader, we'd have to load the fallback regardless. Considering
  this is not used in a critical path for performance, it's not worth shipping two
  implementations for this optimisation.

May also resolve:
* T44094
* T90411
* T94810

Bug: T94074
Change-Id: Ibb292d2416839327d1807a66c78fd96dac0637d0

8 years agoSimplified doEditContent exception handling
Aaron Schulz [Tue, 19 May 2015 21:40:50 +0000 (14:40 -0700)]
Simplified doEditContent exception handling

* Callers should not catch errors and fail to rollback
  changes as much here as anywhere else

Change-Id: I65cbeb8d0895223b7ad60c9081d703d14197cb4a

8 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Tue, 19 May 2015 19:47:12 +0000 (21:47 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Idff54a370b7401517d4f2313576773bc765ca3e4

8 years agoMerge "registration: Have cache entries expire after 24 hours"
jenkins-bot [Tue, 19 May 2015 15:23:54 +0000 (15:23 +0000)]
Merge "registration: Have cache entries expire after 24 hours"

8 years agoMerge "registration: Remove implementation of custom processors for now"
jenkins-bot [Tue, 19 May 2015 15:05:53 +0000 (15:05 +0000)]
Merge "registration: Remove implementation of custom processors for now"

8 years agoMerge "registration: Use a static whitelist of keys that are not attributes"
jenkins-bot [Tue, 19 May 2015 15:05:15 +0000 (15:05 +0000)]
Merge "registration: Use a static whitelist of keys that are not attributes"

8 years agoMerge "Added documentation for HTMLFormField's "hide-if""
jenkins-bot [Tue, 19 May 2015 14:27:05 +0000 (14:27 +0000)]
Merge "Added documentation for HTMLFormField's "hide-if""

8 years agoMessage text clarified.
Purodha [Tue, 19 May 2015 13:33:53 +0000 (13:33 +0000)]
Message text clarified.

See also:
https://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Title-invalid-interwiki/en

Change-Id: Id6f4573527415ec5f82fd5a4599480e5c17c84d3

8 years agomediawiki.language: Respect $wgTranslateNumerals in convertNumber()
Amir E. Aharoni [Sat, 4 Oct 2014 13:50:57 +0000 (16:50 +0300)]
mediawiki.language: Respect $wgTranslateNumerals in convertNumber()

This commit exposes the $wgTranslateNumerals variable via mw.config.

Bug: T72109
Change-Id: Id84ecc0a23aa83041f44294f249af28b92a1e629

8 years agoMerge "Added ObjectCache::getMainStashInstance() and $wgMainStash"
jenkins-bot [Tue, 19 May 2015 07:44:44 +0000 (07:44 +0000)]
Merge "Added ObjectCache::getMainStashInstance() and $wgMainStash"

8 years agoMerge "Revert "Remove invalid language code "bh" (alias of "bho")""
jenkins-bot [Tue, 19 May 2015 06:03:35 +0000 (06:03 +0000)]
Merge "Revert "Remove invalid language code "bh" (alias of "bho")""

8 years agoregistration: Don't array_unique() over the queue before loading it
Kunal Mehta [Tue, 19 May 2015 05:30:37 +0000 (22:30 -0700)]
registration: Don't array_unique() over the queue before loading it

array_unique works over values, not keys (you can't have an array with
duplicate keys in PHP) so it would end up removing extensions that
happened to have an identical timestamp with another one.

Bug: T98956
Change-Id: I66e202ea882ae4d5cb1bcafb7882cbd9cd52a1b3

8 years agoregistration: Have cache entries expire after 24 hours
Kunal Mehta [Tue, 19 May 2015 04:49:34 +0000 (21:49 -0700)]
registration: Have cache entries expire after 24 hours

Since our cache invalidation strategy is to just change the key, don't
have old entries stick around forever.

Change-Id: Ib62b69adfc2855a2ecd08558d4054d9b5d3ed571

8 years agoRevert "Remove invalid language code "bh" (alias of "bho")"
Hoo man [Mon, 18 May 2015 22:37:00 +0000 (22:37 +0000)]
Revert "Remove invalid language code "bh" (alias of "bho")"

Still being heavily used for interwiki links.
See eg. https://www.wikidata.org/wiki/Wikidata:Contact_the_development_team#Link_for_bh.wiki

This reverts commit 34a3de0f65609c7ffdaafbf3770001e531a616cf.

Bug: T99059
Change-Id: I6db0c436dc2c7556bbc060584e0a725402238adf

8 years agoMade pushLazyJobs() handle all queue groups
Aaron Schulz [Tue, 19 May 2015 02:06:49 +0000 (19:06 -0700)]
Made pushLazyJobs() handle all queue groups

* This avoids __destruct() warnings
* Also remove push() code in __destruct() that just made
  more warnings since it's too late

Change-Id: I32a3cfabc94e36b9d2808b45d55209f3df46e47d

8 years agoMake JobRunner flush DeferredUpdates after each job
Aaron Schulz [Mon, 18 May 2015 21:20:35 +0000 (14:20 -0700)]
Make JobRunner flush DeferredUpdates after each job

Change-Id: Iff6625ddc04a15751d2bb07dc6558145e7ceb14a

8 years agoSearch: Allow searchContainedSyntax to be defined by constructor
Erik Bernhardson [Mon, 18 May 2015 23:19:12 +0000 (16:19 -0700)]
Search: Allow searchContainedSyntax to be defined by constructor

The SearchResultSet is returned where no query is performed because it
is known ahead of time that no result exists. In cases where that is
known due to the syntax of the query (e.g. the syntax requires
searching a category that does not exist) this searchContainedSyntax
method returns the wrong value. This patch makes it possible for the
instantiating code to properly set the return value of this method.

Change-Id: I7b7be24f5630a48d2a561e4fda9cec696a8cacf9

8 years agoAdded documentation for HTMLFormField's "hide-if"
Daniel A. R. Werner [Mon, 18 May 2015 22:11:59 +0000 (00:11 +0200)]
Added documentation for HTMLFormField's "hide-if"

Change-Id: I410c58dc0586cfe97e39668c9608ce0d9e10a08b

8 years agoReapply f45be1f78b8462a62d77893fd7ac15757b049381
Bartosz Dziewoński [Mon, 18 May 2015 21:56:07 +0000 (23:56 +0200)]
Reapply f45be1f78b8462a62d77893fd7ac15757b049381

Accidentally reverted in 8a157f34c83a69c0b93be1a009f814179f4ff5ab.

Change-Id: I027f71961672936dc8c7d51b5e6313215748c21b

8 years agoMerge "Use getActionName() static"
jenkins-bot [Mon, 18 May 2015 21:02:11 +0000 (21:02 +0000)]
Merge "Use getActionName() static"

8 years agoUse getActionName() static
Federico Leva [Mon, 18 May 2015 20:20:00 +0000 (22:20 +0200)]
Use getActionName() static

Change-Id: I3225ecd2b8e4294c28ea0aa664f0246d0d028b11

8 years agoBetter information about downloading skins via Git
Bartosz Dziewoński [Mon, 18 May 2015 20:14:15 +0000 (22:14 +0200)]
Better information about downloading skins via Git

Rather than futilely try to explain Git in a single sentence, just link to
<https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins>.

Change-Id: Ib4323fa04309b80e3197834bdde48d4022458488

8 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 18 May 2015 19:35:35 +0000 (21:35 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: If429c59c6cc6733a9fc4fa92bb3f18f5f045fd7e

8 years agoMerge "Support changing icon variants on hover"
jenkins-bot [Mon, 18 May 2015 19:24:43 +0000 (19:24 +0000)]
Merge "Support changing icon variants on hover"

8 years agoAdded ObjectCache::getMainStashInstance() and $wgMainStash
Aaron Schulz [Thu, 30 Apr 2015 02:19:23 +0000 (19:19 -0700)]
Added ObjectCache::getMainStashInstance() and $wgMainStash

* This provides factory/config more appropriate for stashes
* Cleaned up some neighboring config comments while at it

Bug: T88493
Bug: T97620
Change-Id: Id370ee50be6e493a4700c858df863a183abc05fd

8 years agoMerge "Better message wording."
jenkins-bot [Mon, 18 May 2015 18:38:27 +0000 (18:38 +0000)]
Merge "Better message wording."

8 years agoUse lazyPush() instead of push() in a few places for jobs
Aaron Schulz [Mon, 18 May 2015 17:26:53 +0000 (10:26 -0700)]
Use lazyPush() instead of push() in a few places for jobs

Change-Id: I56661ea29988e4ee217a63f4c3ffcb78333cc454

8 years agoAdded JobQueueGroup::lazyPush method
Aaron Schulz [Fri, 15 May 2015 23:23:51 +0000 (16:23 -0700)]
Added JobQueueGroup::lazyPush method

* Made use of this in triggerOpportunisticLinksUpdate()
* This will defer and better batch job insertion
* Lazy job insertion and other deferred updates
  make use of register_postsend_function if present
* Also cleaned up some return types and exceptions
  in JobQueueGroup

Bug: T99302
Change-Id: I3a3968d75cb37563f970be08e63f31a090e0e037

8 years agoMerge "API Import: Die when namespace and rootpage is set"
jenkins-bot [Mon, 18 May 2015 14:46:26 +0000 (14:46 +0000)]
Merge "API Import: Die when namespace and rootpage is set"

8 years agoMerge "registration: Remove duplicate "ParserTestFiles" key from schema"
jenkins-bot [Mon, 18 May 2015 10:47:42 +0000 (10:47 +0000)]
Merge "registration: Remove duplicate "ParserTestFiles" key from schema"

8 years agoMerge "Set correct default date format for ce"
jenkins-bot [Mon, 18 May 2015 08:47:31 +0000 (08:47 +0000)]
Merge "Set correct default date format for ce"

8 years agoMerge "Converted FileBackendStore to using the WAN cache"
jenkins-bot [Mon, 18 May 2015 08:34:10 +0000 (08:34 +0000)]
Merge "Converted FileBackendStore to using the WAN cache"

8 years agoChinese Conversion Table Update 2015-3
Chiefwei [Sat, 25 Apr 2015 12:48:58 +0000 (20:48 +0800)]
Chinese Conversion Table Update 2015-3

Update the Chinese conversion table routinely to fix bugs reported from
https://zh.wikipedia.org/wiki/Wikipedia:%E5%AD%97%E8%AF%8D%E8%BD%AC%E6%8D%A2/%E4%BF%AE%E5%A4%8D%E8%AF%B7%E6%B1%82.

It is only data changes and only works for Chinese WikiProjects.

Change-Id: I8c9a52a3c03031330b8be771f3c74e6007efab73

8 years agoMerge "Converted User object cache to the WAN cache"
jenkins-bot [Mon, 18 May 2015 06:38:06 +0000 (06:38 +0000)]
Merge "Converted User object cache to the WAN cache"

8 years agoregistration: Use a static whitelist of keys that are not attributes
Kunal Mehta [Mon, 18 May 2015 06:22:46 +0000 (23:22 -0700)]
registration: Use a static whitelist of keys that are not attributes

Rather than continuously creating an array of keys that were used, just
hardcode a list of keys that aren't attributes. This also handles keys
like "AutoloadClasses" that is handled by the registry.

Bug: T98977
Change-Id: I35088a76ff4c58db71e8c9bc139fa0ccca738e3b

8 years agoMerge "Cleanups to WANObjectCache::getWithSetCallback code"
jenkins-bot [Mon, 18 May 2015 06:08:27 +0000 (06:08 +0000)]
Merge "Cleanups to WANObjectCache::getWithSetCallback code"

8 years agoMerge "Reduced the rate of RecentChangesUpdateJob insertion"
jenkins-bot [Mon, 18 May 2015 06:02:46 +0000 (06:02 +0000)]
Merge "Reduced the rate of RecentChangesUpdateJob insertion"