7 years agoAllow users with 'viewsuppressed' to view when limitTitle()d
Glaisher [Thu, 11 Jun 2015 12:59:33 +0000 (17:59 +0500)]
Allow users with 'viewsuppressed' to view when limitTitle()d

This was probably missed when 'suppressrevision' was split into
'suppressrevision' and 'viewsuppressed'.

It was properly separated in limitPerformer() but not in limitTitle().

Bug: T101982
Change-Id: I9c62599124cbb74d2004b416f6e490c231dbd7b2

7 years agoMerge "Revert "Implement MalformedTitleException for JS and use in constructor""
jenkins-bot [Tue, 9 Jun 2015 17:07:27 +0000 (17:07 +0000)]
Merge "Revert "Implement MalformedTitleException for JS and use in constructor""

7 years agoMerge "Consistent spacing after colon in apihelp"
jenkins-bot [Tue, 9 Jun 2015 14:07:13 +0000 (14:07 +0000)]
Merge "Consistent spacing after colon in apihelp"

7 years agoapi/i18n: Fix a couple typos
Kevin Israel [Tue, 9 Jun 2015 12:28:56 +0000 (08:28 -0400)]
api/i18n: Fix a couple typos

Change-Id: I5990bd9e92b0ffb592ec7c3eb80280a2d3e2f19f

7 years agoMerge "Improve the srsearch API param doc"
jenkins-bot [Tue, 9 Jun 2015 12:14:25 +0000 (12:14 +0000)]
Merge "Improve the srsearch API param doc"

7 years agoMerge "Fixed race condition in MessageCache::replace"
jenkins-bot [Tue, 9 Jun 2015 09:25:55 +0000 (09:25 +0000)]
Merge "Fixed race condition in MessageCache::replace"

7 years agoMerge "resourceloader: Move packaging to a new getModuleContent() method"
jenkins-bot [Tue, 9 Jun 2015 09:13:49 +0000 (09:13 +0000)]
Merge "resourceloader: Move packaging to a new getModuleContent() method"

7 years agoConsistent spacing after colon in apihelp
Amir E. Aharoni [Tue, 9 Jun 2015 06:17:54 +0000 (09:17 +0300)]
Consistent spacing after colon in apihelp

Change-Id: Ic85554b29f78f1d26878879b9a408bbcbc702d8c

7 years agoMerge "resourceloader: Add context param to ResourceLoaderModule::getDependencies"
jenkins-bot [Tue, 9 Jun 2015 02:20:31 +0000 (02:20 +0000)]
Merge "resourceloader: Add context param to ResourceLoaderModule::getDependencies"

7 years agoMerge "Use assertSame in LogFormatterTestCase"
jenkins-bot [Tue, 9 Jun 2015 02:15:42 +0000 (02:15 +0000)]
Merge "Use assertSame in LogFormatterTestCase"

7 years agoresourceloader: Add context param to ResourceLoaderModule::getDependencies
Andrew Green [Wed, 8 Apr 2015 21:34:08 +0000 (17:34 -0400)]
resourceloader: Add context param to ResourceLoaderModule::getDependencies

By providing context as a parameter in getDependencies, we allow
modules to dyanamically determine dependencies based on context.
Note: To ease rollout, the parameter is optional in this patch. It is expected
that it will be made non-optional in the near future.

The use case is for CentralNotice campaigns to be able to add special
modules ahead of deciding which banner to show a user. The dynamically
chosen RL modules would replace ad-hoc JS currently sent with some banners.
A list of possible campaigns and banners is already sent as a PHP-
implemented RL module; that's the module that will dynamically choose other
modules as dependencies when appropriate. This approach will save a round
trip as compared to dynamically loading the modules client-side.

For compatibility, extensions that override
ResourceLoaderModule::getDependencies() should be updated with the new
method signature. Here are changes for extensions currently deployed on
Wikimedia wikis:

* CentralNotice: I816bffa3815e2eab7e88cb04d1b345070e6aa15f
* Gadgets: I0a10fb0cbf17d095ece493e744296caf13dcee02
* EventLogging: I67e957f74d6ca48cfb9a41fb5144bcc78f885e50
* PageTriage: Ica3ba32aa2fc76d11a44f391b6edfc871e7fbe0d
* UniversalLanguageSelector: Ic63e617f51702c27104e123d4bed91983a726b7f
* VisualEditor: I0ac775ca286e64825e31a9213b94648e41a5bc30

For more on the CentralNotice use case, please see I9f80edcbcacca2.

Bug: T98924
Change-Id: Iee61e5b527321d01287baa03ad9b4d4f526ff3ef

7 years agoImprove the srsearch API param doc
S Page [Tue, 9 Jun 2015 01:21:03 +0000 (18:21 -0700)]
Improve the srsearch API param doc

Mention that it may be a way to invoke fancy search features.
Message-only change.

Change-Id: I6df02b53612f7c55f69a6bcad407a3a28a07bd2b

7 years agoresourceloader: Move packaging to a new getModuleContent() method
Timo Tijhof [Thu, 14 May 2015 19:05:47 +0000 (20:05 +0100)]
resourceloader: Move packaging to a new getModuleContent() method

Centralise the building of module packages into this method so
that it can be easily re-used.

This is in preparation for providing the option for modules to use
content-based hashing (instead of based on meta-data) in the version
string of modules. Having a getModuleContent method allows that to
be implemented in a way that is well-cached (as we'll be calling it
from multiple multiple code paths) and without duplicating this logic.

Bug: T98087
Change-Id: I376233caaabe44b6101565b70a50904abdf8ab4f

7 years agoAvoid parser cache miss that often occurs post-save
Aaron Schulz [Mon, 8 Jun 2015 23:05:54 +0000 (16:05 -0700)]
Avoid parser cache miss that often occurs post-save

* This should not happen as doEditContent() saves the parser cache,
  so only the rare casing if incompatible options should have misses
* The bug could also cause post-save misses with edit stashing
* Avoid the second page parse post-redirect by making sure cache
  timestamps match up instead of calling time() at several points
* Likewise for null edits, which used a different code path
* Removed redundant purge in onArticleCreate() as the new row sets _touched
* Removed pointless purge in onArticleDelete() as there is no row to update
  (the method no-ops in that case to avoid contention already)

Change-Id: I178fe334a3f8691ffd9452bec30561a0c5d37c6c

7 years agoUpdate sinon from 1.10.3 to 1.15.0
paladox [Sat, 6 Jun 2015 19:25:55 +0000 (21:25 +0200)]
Update sinon from 1.10.3 to 1.15.0

* http://sinonjs.org/
* https://github.com/cjohansen/Sinon.JS

Source code
* http://sinonjs.org/releases/sinon-1.15.0.js

* https://github.com/cjohansen/Sinon.JS/blob/v1.15.0/Changelog.txt

Notable changes:
* 1.15.0: Deprecate sinon.mock()
* 1.12.0: Fake timers are now extracted as lolex: http://github.com/sinonjs/lolex

Change-Id: Icca3eb7ef42c0a456fd309eb0ebc09a0518517bd

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 8 Jun 2015 19:23:10 +0000 (21:23 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ib07fd19243eb0bca5bd7cb9553f20853d05135ac

7 years agoMerge "LanguageConverter fix of empty and numeric strings"
jenkins-bot [Mon, 8 Jun 2015 16:52:18 +0000 (16:52 +0000)]
Merge "LanguageConverter fix of empty and numeric strings"

7 years agoresourceloader: Audit debug log channels and messages
Timo Tijhof [Thu, 4 Jun 2015 03:53:23 +0000 (04:53 +0100)]
resourceloader: Audit debug log channels and messages

* Change "private module denied" level to 'debug'.
  This is quite unimportant and occupies over 90% of the logstash
  entries for resourceloader.

* Changes all failure signals to 'warning' and using context data.
  Left out method in most case since the messages are unambiguous.

Change-Id: Ibb2faaa54020ab0fd9685551689d9a89161e1ce7

7 years agoLanguageConverter fix of empty and numeric strings
Liangent [Tue, 6 May 2014 16:16:12 +0000 (16:16 +0000)]
LanguageConverter fix of empty and numeric strings

Bug: T51072
Bug: T48634
Bug: T53551
Change-Id: I2c88f1cf7c0014bebf5c798916b660b334a0b78b

7 years agoMerge "Run generateLocalAutoload.php to sort entries in autoload.php"
jenkins-bot [Mon, 8 Jun 2015 10:08:23 +0000 (10:08 +0000)]
Merge "Run generateLocalAutoload.php to sort entries in autoload.php"

7 years agobuild: Updating development dependencies
Kunal Mehta [Mon, 8 Jun 2015 05:41:11 +0000 (22:41 -0700)]
build: Updating development dependencies

* grunt-banana-checker: 0.2.1 → 0.2.2
* grunt-karma: 0.10.1 → 0.11.0
* karma: 0.12.31 → 0.12.36
* karma-chrome-launcher: 0.1.8 → 0.1.12
* karma-firefox-launcher: 0.1.4 → 0.1.6

Change-Id: Ic8bd8563c6f3313a7c8fc936c0753b071441c2b0

7 years agoRun generateLocalAutoload.php to sort entries in autoload.php
Kunal Mehta [Mon, 8 Jun 2015 05:27:24 +0000 (22:27 -0700)]
Run generateLocalAutoload.php to sort entries in autoload.php

Will reduce dirty diffs in future changes.

Change-Id: I4f97c1e4f9eaf0dc807435209b6a0e8494b60db1

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sun, 7 Jun 2015 19:41:03 +0000 (21:41 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ie3ce821ae62fad2938416276ed9a92448731eb39

7 years agoUpdate json2 to revision 2015-05-03
paladox [Sat, 6 Jun 2015 19:25:55 +0000 (21:25 +0200)]
Update json2 to revision 2015-05-03

Project link

* https://github.com/douglascrockford/JSON-js

File link

* https://github.com/douglascrockford/JSON-js/blob/c98948ae19/json2.js

Change-Id: Ifeb41140c13718162d1c0bd7a5a815acaf7bfd56

7 years agoUpdate es5-shim to v4.1.5
Timo Tijhof [Sun, 7 Jun 2015 11:09:59 +0000 (12:09 +0100)]
Update es5-shim to v4.1.5

Project site

* https://github.com/es-shims/es5-shim

File source

* https://github.com/es-shims/es5-shim/tree/v4.1.5


* https://github.com/es-shims/es5-shim/blob/v4.1.5/CHANGES

Change-Id: I21ecf04e7ba82d4bd726ce9b5e84eac1046914c0

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sat, 6 Jun 2015 19:25:55 +0000 (21:25 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ia5cb16ef86a58a1a39c0856c0261c3801363563b

7 years agoUse assertSame in LogFormatterTestCase
umherirrender [Sat, 6 Jun 2015 18:55:03 +0000 (20:55 +0200)]
Use assertSame in LogFormatterTestCase

Using assertSame also checks for internal types to be correct.

Needs the following fixes:
- MergeLogFormatterTest: Use correct array key order
- NewUsersLogFormatterTest: Input user id as integer
- PatrolLogFormatter: Ensure in LogFormatter that
  integer is not casted to float

Change-Id: I2cab5335d6654f6cda15fc4e9fbae2c1ca1b27ff

7 years agoPatrolLogFormatter: Tag curid and previd as numbers for API
Brad Jorsch [Sat, 6 Jun 2015 12:16:28 +0000 (08:16 -0400)]
PatrolLogFormatter: Tag curid and previd as numbers for API

In the database the values might be strings, depending on the source of
the RecentChanges object when the log entry was created. In
getParametersForApi(), tag the vars as 'number' so they'll always be
output as actual integers.

Bug: T101603
Change-Id: I6d3e8fd2653ce810eec59b94bf75063e5fb6bcab

7 years agoFix tab in en.json
paladox [Fri, 5 Jun 2015 22:47:58 +0000 (22:47 +0000)]
Fix tab in en.json

Change-Id: I152646a368f4b2f0142907a2fbf876f8d27eb694

7 years agoMerge "ResourceLoaderImageModule: Add missing doc stuffs"
jenkins-bot [Fri, 5 Jun 2015 22:47:58 +0000 (22:47 +0000)]
Merge "ResourceLoaderImageModule: Add missing doc stuffs"

7 years agoMerge "resourceloader: Unbreak ResourceLoaderImageModule's rasterization"
jenkins-bot [Fri, 5 Jun 2015 22:43:46 +0000 (22:43 +0000)]
Merge "resourceloader: Unbreak ResourceLoaderImageModule's rasterization"

7 years agoResourceLoaderImageModule: Add missing doc stuffs
Bartosz Dziewoński [Fri, 5 Jun 2015 22:38:06 +0000 (00:38 +0200)]
ResourceLoaderImageModule: Add missing doc stuffs

Follow-up to 1fc57830e257f47ae0508899dc35b80674475859.

Change-Id: I66985fe2edc4d0e92aebcdb39cd56d212fd3270c

7 years agoresourceloader: Unbreak ResourceLoaderImageModule's rasterization
Bartosz Dziewoński [Fri, 5 Jun 2015 22:26:56 +0000 (00:26 +0200)]
resourceloader: Unbreak ResourceLoaderImageModule's rasterization

Follow-up to 1fc57830e257f47ae0508899dc35b80674475859. Forgot to
update a method call.

Change-Id: I2b3113c853a37f802f781a848b495e036971710c

7 years agoMerge "Automatically deduplicate root jobs on insertion"
jenkins-bot [Fri, 5 Jun 2015 20:15:23 +0000 (20:15 +0000)]
Merge "Automatically deduplicate root jobs on insertion"

7 years agoMerge "Localisation updates from https://translatewiki.net."
Translation updater bot [Fri, 5 Jun 2015 19:32:42 +0000 (19:32 +0000)]
Merge "Localisation updates from https://translatewiki.net."

7 years agoMerge "Various code cleanup to JobRunner"
jenkins-bot [Fri, 5 Jun 2015 18:39:13 +0000 (18:39 +0000)]
Merge "Various code cleanup to JobRunner"

7 years agoVarious code cleanup to JobRunner
Aaron Schulz [Fri, 5 Jun 2015 18:15:57 +0000 (11:15 -0700)]
Various code cleanup to JobRunner

* Made the pickup stats name be similar to other queue stats
* Renamed $jobsRun => $jobPopped
* Simplified some code and comments

Change-Id: I8ab1a68f04fc3ab4c0ba7f6f0b428a5a811a97fb

7 years agoMerge "Make sure job queue partitions use the null aggregator"
jenkins-bot [Fri, 5 Jun 2015 18:11:41 +0000 (18:11 +0000)]
Merge "Make sure job queue partitions use the null aggregator"

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 5 Jun 2015 17:49:22 +0000 (19:49 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ie564be94e20109b4972a5392f843ec3fc75658a5

7 years agoMerge "ApiTestCase: Set correct user for derivate requests"
jenkins-bot [Fri, 5 Jun 2015 17:46:02 +0000 (17:46 +0000)]
Merge "ApiTestCase: Set correct user for derivate requests"

7 years agoApiTestCase: Set correct user for derivate requests
Matthias Mullie [Fri, 5 Jun 2015 09:52:40 +0000 (11:52 +0200)]
ApiTestCase: Set correct user for derivate requests

RequestContext::getMain()->getUser() in a (faux) API request doesn't return the
user the (faux) API call is made with, but the user running the tests.

Bug: T101388
Change-Id: Icbbf14a6433edf5c91162a9d67899d6a2d5c33df

7 years agoMerge "Expose RL modules and js config vars in action=expandtemplates"
jenkins-bot [Fri, 5 Jun 2015 16:16:46 +0000 (16:16 +0000)]
Merge "Expose RL modules and js config vars in action=expandtemplates"

7 years agoExpose RL modules and js config vars in action=expandtemplates
Marc Ordinas i Llopis [Thu, 4 Jun 2015 10:32:23 +0000 (03:32 -0700)]
Expose RL modules and js config vars in action=expandtemplates

Adds the 'modules', 'jsconfigvars', and 'encodedjsconfigvars' props
to action=expandtemplates, that output the modules and Javascript
configuration variables added to ResourceLoader by extensions and
parser functions, in the same way action=parse does.

This is needed by Parsoid to correctly include all modules used by
parser functions.

Based on I5c3ccb25385e57633639bb0c7e6f562eb58b05a2 by @Jackmcbarn.

Bug: T69540
Change-Id: Iaf58c66c987a318c0dd1ee2b81774106c40e7561

7 years agoQA: Upgrade mediawiki_selenium for fix to Raita logging
Dan Duvall [Tue, 2 Jun 2015 21:17:41 +0000 (14:17 -0700)]
QA: Upgrade mediawiki_selenium for fix to Raita logging

Bug: T100904
Change-Id: Ibb92e9e5dfc1dc24250f44a9d291b25dac2da0a6

7 years agoMerge "mw.loader.store: decline to store items > 100 kB"
jenkins-bot [Fri, 5 Jun 2015 01:42:26 +0000 (01:42 +0000)]
Merge "mw.loader.store: decline to store items > 100 kB"

7 years agoMerge "HTMLForm: Break long lines"
jenkins-bot [Fri, 5 Jun 2015 01:21:02 +0000 (01:21 +0000)]
Merge "HTMLForm: Break long lines"

7 years agoHTMLForm: Break long lines
Florian [Fri, 17 Apr 2015 16:56:32 +0000 (18:56 +0200)]
HTMLForm: Break long lines

Change-Id: Ia09a28ccc361d1a54069bd23a412831fe9c20f34

7 years agomw.loader.store: decline to store items > 100 kB
Ori Livneh [Fri, 5 Jun 2015 00:06:49 +0000 (17:06 -0700)]
mw.loader.store: decline to store items > 100 kB

If the length of the string representation of a module exceeds 100,000
characters, decline to store it in localStorage, due to bug T66721.
(While it is true that string length !== byte length, the skew introduced by
counting multi-byte characters as single bytes is not important enough to merit
the use of $.byteLength).

Based on my analysis, the modules that would be ineligible for caching in local
storage under the new schema are:

- ext.visualEditor.core (624 kB)
- oojs-ui (179 kB)
- oojs-ui.styles.icons (132 kB)

To fix this bug, it is not enough to not store new items; we must also ensure
that any old values cached prior to the introduction of a limit are purged. So
update mw.loader.store#prune to do that, too.

Bug: T66721
Change-Id: Ie45467fc0b2db7cc283f30626af7d587da24bd90

7 years agoMerge "resourceloader: Refactor ResourceLoaderWikiModule to reduce database queries"
jenkins-bot [Fri, 5 Jun 2015 00:16:19 +0000 (00:16 +0000)]
Merge "resourceloader: Refactor ResourceLoaderWikiModule to reduce database queries"

7 years agoMake sure job queue partitions use the null aggregator
Aaron Schulz [Thu, 4 Jun 2015 23:53:56 +0000 (16:53 -0700)]
Make sure job queue partitions use the null aggregator

* Fixes problem from 37042262e32e
* The main class already handles the calls.
* Partitions call notifyQueueNonEmpty() on pop() even
  when the other partitions have jobs, so it is also wrong
  in addition to redundant.

Bug: T101427
Change-Id: Ic3235e1f2038053fabf92f97c663479a21d75317

7 years agoresourceloader: Refactor ResourceLoaderWikiModule to reduce database queries
Timo Tijhof [Thu, 4 Jun 2015 01:52:42 +0000 (02:52 +0100)]
resourceloader: Refactor ResourceLoaderWikiModule to reduce database queries

Wiki modules are special due to their isKnownEmpty implementation and support
for foreign databases. MediaWiki doesn't have convenient ways of making
Revision objects for remote wikis. As such, wiki modules will keep using meta
data to generate the hash.

However minimise needless cache invalidation by refining the implementation.

* Remove use of getMsgBlobMtime(). This module doesn't support getMessages().
* In the title info, use the revision content sha1 and size for tracking.
  The page_touched previously used updates too often. It's updated both on edits
  for various types of purges. Using the rev_sha1 means old versions return
  when the content is the same. Regardless of how the content changed via
  revert or actual edits resulting in the same contnet.
* Change in-process cache to be keyed by page list instead of entire
  Because of this, getTitleInfo() was previously performing its batch query
  twice on the same page. Once for only=styles (top) and only=scripts (bottom).
  Both operate on the full getPages() set but had different context keys.

Clean up:
* Better document the support for foreign databases.
* Move Title construction to getContent to reduce duplication.
* Remove use of getDefinitionMtime(). That method is a no-op since the switch
  to version hashing.
* Remove remaining use of mtime in getModifiedTime(). This is now covered by
  hashing the title info in getDefinitionSummary().

Also refactor the code to be more readable. No intended change in behaviour.

Bug: T98087
Change-Id: Id46740db04c0c42bc5ca87d1487230a32feb34df

7 years agoRevert "Implement MalformedTitleException for JS and use in constructor"
Sn1per [Thu, 4 Jun 2015 21:43:37 +0000 (21:43 +0000)]
Revert "Implement MalformedTitleException for JS and use in constructor"

This reverts commit 52bc467b31066d557ce7263b5bd448fb05742d3e.

Change-Id: I4ccd057559251317134da36d75fa8532ede4c51b

7 years agoFixed race condition in MessageCache::replace
Aaron Schulz [Wed, 20 May 2015 02:34:20 +0000 (19:34 -0700)]
Fixed race condition in MessageCache::replace

* The cache has to reload and *after* locking to avoid
  losing any concurrent changes.
* Also fixed incorrect assumption in MessageCacheTest.
  Message overrides for the content language do not use
  the language suffix.

Change-Id: I98ff158a1575330bc59efe6badb27f8de8717951

7 years agoMerge "Use HttpStatus::header instead of manually crafting header()"
jenkins-bot [Thu, 4 Jun 2015 20:25:37 +0000 (20:25 +0000)]
Merge "Use HttpStatus::header instead of manually crafting header()"

7 years agoMerge "WebResponse: Implement statusHeader() using the new HttpStatus::header()"
jenkins-bot [Thu, 4 Jun 2015 20:24:12 +0000 (20:24 +0000)]
Merge "WebResponse: Implement statusHeader() using the new HttpStatus::header()"

7 years agoresourceloader: Make ResourceLoader logger aware
Timo Tijhof [Thu, 4 Jun 2015 03:52:45 +0000 (04:52 +0100)]
resourceloader: Make ResourceLoader logger aware

Change-Id: Ifa197cce1906bc0530dfa873dfde91abbe540637

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 4 Jun 2015 19:14:12 +0000 (21:14 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ia78d394ebff2c701442d32f63c1936d1139200c5

7 years agoMerge "Deprecate $wgEnableParserCache"
jenkins-bot [Thu, 4 Jun 2015 18:33:29 +0000 (18:33 +0000)]
Merge "Deprecate $wgEnableParserCache"

7 years agoMerge "resourceloader: Remove redundant getModifiedTime implementations"
jenkins-bot [Thu, 4 Jun 2015 18:23:03 +0000 (18:23 +0000)]
Merge "resourceloader: Remove redundant getModifiedTime implementations"

7 years agoDeprecate $wgEnableParserCache
Aaron Schulz [Tue, 19 May 2015 21:47:33 +0000 (14:47 -0700)]
Deprecate $wgEnableParserCache

* There is little reason to disable it and one can set $wgParserCacheType
  if truly needed

Change-Id: Iec5fc7729d0f9de67ec2aa6c0e9c2c1e3e0d57ad

7 years agoMerge "resourceloader: Add unit test for validateScriptFile()"
jenkins-bot [Thu, 4 Jun 2015 18:16:09 +0000 (18:16 +0000)]
Merge "resourceloader: Add unit test for validateScriptFile()"

7 years agoMerge "language: Use item 'fallbackSequence' instead of duplicating logic"
jenkins-bot [Thu, 4 Jun 2015 17:58:04 +0000 (17:58 +0000)]
Merge "language: Use item 'fallbackSequence' instead of duplicating logic"

7 years agolanguage: Use item 'fallbackSequence' instead of duplicating logic
Timo Tijhof [Mon, 1 Jun 2015 23:04:26 +0000 (00:04 +0100)]
language: Use item 'fallbackSequence' instead of duplicating logic

The 'fallbackSequence' is exactly generated for this purpose. It
is equal to the value of 'fallback' after splitting, trimming
and ensuring 'en' is present. See LocalisationCache::recache().

Also simplify returning of the first array index by returning it
directly instead of modifying the array first.

Due to an inconsistency between how LocalisationCache and Language classes
treat the fallback sequence differently, we have to manually fallback
to 'en' in case of unknown language codes. This is because otherwise
Language::factory() will throw an exception causing tests to fail.
We should investigate whether this is desirable or not, but keeping
existing behaviour for now and documenting it.

Change-Id: I9c1d51b59aabebf5a31f38205304bb8cc22dcd8c

7 years agoMerge "Use a faster 7z command line by default"
jenkins-bot [Thu, 4 Jun 2015 16:23:04 +0000 (16:23 +0000)]
Merge "Use a faster 7z command line by default"

7 years agoMerge "Revert "Add 'mediawiki.skinning.logo' module""
jenkins-bot [Thu, 4 Jun 2015 16:16:59 +0000 (16:16 +0000)]
Merge "Revert "Add 'mediawiki.skinning.logo' module""

7 years agoAvoid data loss if compression fails
daniel [Thu, 4 Jun 2015 15:02:19 +0000 (17:02 +0200)]
Avoid data loss if compression fails

Change-Id: I0b6de030b101fdc3b2ea2cd0c15913e33e9da98d

7 years agoRevert "Add 'mediawiki.skinning.logo' module"
Krinkle [Thu, 4 Jun 2015 15:00:02 +0000 (15:00 +0000)]
Revert "Add 'mediawiki.skinning.logo' module"

This is redundant and creates more modules than necessary.

The use case of not wanting to load "mediawiki.skinning.interface"
in a custom skin is invalid. For this exact purpose we already created
the ResourceLoaderSkinModule class which is generic and re-usable.

Skins can add that class name to their stylesheet file module to
append the logo styles. This way involves no extra modules. Not in
core, and not in any skin.

This reverts commit 43346e1527dc6f30e33c5acd4f479acc0eab7d0a.

Change-Id: I2b0a1d5ed72f2d5338ad26af6e04227bec45dcc1

7 years agomediawiki.searchSuggest: Add track event on search form submission
Baha Man [Tue, 28 Apr 2015 20:03:52 +0000 (16:03 -0400)]
mediawiki.searchSuggest: Add track event on search form submission

Only fired from the skin-provided search box currently.

Bug: T97310
Change-Id: Iaccacdabca427afe1c1d5c42ae6d18d19a70543b

7 years agoUse HttpStatus::header instead of manually crafting header()
Timo Tijhof [Mon, 1 Jun 2015 14:31:52 +0000 (15:31 +0100)]
Use HttpStatus::header instead of manually crafting header()

* Update wfHttpError() to use uppercase DOCTYPE, to match other code
  such as Html.php, wfThumbError(), HttpError.php, etc.

Change-Id: I4027e7fe1a138b03f78797b6d1bfe7bd1064d360

7 years agoWebResponse: Implement statusHeader() using the new HttpStatus::header()
Timo Tijhof [Sun, 24 May 2015 12:31:11 +0000 (14:31 +0200)]
WebResponse: Implement statusHeader() using the new HttpStatus::header()

* Convert existing use of WebResponse::header() for HTTP status headers
  to use this new statusHeader() method.

* Extend unit test forFauxResponse.

I'm not calling HttpStatus::header directly in code. We keep the abstraction
layer of WebResponse so that responses can continue to be mocked/fauxed without
affecting the outer HTTP response.

Change-Id: I8a536e16659fa88b54cffa1457efb889efa5fcd6

7 years agoHttpStatus: Implement header() method
Timo Tijhof [Sun, 24 May 2015 12:05:13 +0000 (14:05 +0200)]
HttpStatus: Implement header() method

Standardise this. Currently MediaWiki does this in many different ways.

> WebResponse->header( "HTTP/1.0 $code $message" );
> WebResponse->header( "HTTP/1.1 $code $message" );
> WebResponse->header( "HTTP/1.x $code $message" );
> WebResponse->header( "HTTP/1.1 $code " . HttpStatus::getMessage( $code ) );
> WebResponse->header( "HTTP/1.1 $code $message", true, $code );
> header( "Status: $code $message", true, $code );

Change-Id: I1551e89808a1a67310549ec8d9fcb387754c9169

7 years agoMerge "hierarchicalize(!) stat names"
jenkins-bot [Wed, 3 Jun 2015 23:51:47 +0000 (23:51 +0000)]
Merge "hierarchicalize(!) stat names"

7 years agohierarchicalize(!) stat names
Ori Livneh [Wed, 3 Jun 2015 22:38:02 +0000 (15:38 -0700)]
hierarchicalize(!) stat names

Graphite expects name components to be dot-separated, so our habit of using
dashes doesn't really make sense. Change metric names to be more compatible
with Graphite, except the job queue's, since that will require a gdash
dashboard definition migration.

Change-Id: I77d0ff7606a8fc88434e4352d23415a9a8f4725a

7 years agoMerge "Explicitly define module position for mediawiki.htmlform.ooui.styles"
jenkins-bot [Wed, 3 Jun 2015 21:59:15 +0000 (21:59 +0000)]
Merge "Explicitly define module position for mediawiki.htmlform.ooui.styles"

7 years agoMerge "Normalize hooks.txt formatting"
jenkins-bot [Wed, 3 Jun 2015 21:50:32 +0000 (21:50 +0000)]
Merge "Normalize hooks.txt formatting"

7 years agoAutomatically deduplicate root jobs on insertion
Aaron Schulz [Sat, 23 May 2015 17:53:12 +0000 (10:53 -0700)]
Automatically deduplicate root jobs on insertion

* This makes lazyPush() simple to use in more cases

Change-Id: I22e74485eaf3120e5669c5ee55dc7ab7310d7300

7 years agoMerge "Implemented getAllAcquiredJobs in JobQueueDB"
jenkins-bot [Wed, 3 Jun 2015 20:29:41 +0000 (20:29 +0000)]
Merge "Implemented getAllAcquiredJobs in JobQueueDB"

7 years agoMerge "ResourceLoader::filter: use APC when running under HHVM"
jenkins-bot [Wed, 3 Jun 2015 20:24:21 +0000 (20:24 +0000)]
Merge "ResourceLoader::filter: use APC when running under HHVM"

7 years agoImplemented getAllAcquiredJobs in JobQueueDB
Aaron Schulz [Wed, 3 Jun 2015 20:04:42 +0000 (13:04 -0700)]
Implemented getAllAcquiredJobs in JobQueueDB

Change-Id: Ie9f0b9357b365f8bddd1f2fdcac11dec29aec876

7 years agoMerge "Localisation updates from https://translatewiki.net."
Translation updater bot [Wed, 3 Jun 2015 20:17:02 +0000 (20:17 +0000)]
Merge "Localisation updates from https://translatewiki.net."

7 years agoResourceLoader::filter: use APC when running under HHVM
Ori Livneh [Wed, 13 May 2015 03:45:01 +0000 (20:45 -0700)]
ResourceLoader::filter: use APC when running under HHVM

On HHVM, (a) the cost of a ResourceLoader::filter cache miss is smaller, and
(b) APC is faster and more resilient than PHP's. These two things tilt the
scales in favor of using APC rather than Memcached.

Change-Id: I30b490e5bc815849d4b0bb06f2dbbb68825ed225

7 years agoMerge "jobqueue: Record stats on how long it takes before a job is run"
jenkins-bot [Wed, 3 Jun 2015 20:10:01 +0000 (20:10 +0000)]
Merge "jobqueue: Record stats on how long it takes before a job is run"

7 years agojobqueue: Record stats on how long it takes before a job is run
Kunal Mehta [Wed, 3 Jun 2015 19:20:38 +0000 (12:20 -0700)]
jobqueue: Record stats on how long it takes before a job is run

Bug: T101054
Change-Id: I5dc13d79a5ec2e8cb6679e3ff2535b5cb031ca30

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 3 Jun 2015 19:47:14 +0000 (21:47 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I24e09368cdcdb0b0d7517e5219098fb246ad525a

7 years agoNormalize hooks.txt formatting
Bryan Davis [Wed, 3 Jun 2015 05:03:51 +0000 (23:03 -0600)]
Normalize hooks.txt formatting

* Line wrap at 80 columns
* Added missing '$' for pass by reference parameters
* "$param_name: ..." for all params
* Parameter descriptions that wrap have a 2 space hanging indent
* "DEPRECATED! Use ..." immediately follows hook name
* Indent code examples with tabs per MW coding standards
* Move "hanging" information into description headers
* Fix some really out-of-order alphabetizations

Change-Id: Ic5453c90fb9b58e9fc137d8f45dcd255957bf76d

7 years agoMerge "Move Title null check in Special:RevisionDelete"
jenkins-bot [Wed, 3 Jun 2015 19:36:11 +0000 (19:36 +0000)]
Merge "Move Title null check in Special:RevisionDelete"

7 years agoMove Title null check in Special:RevisionDelete
umherirrender [Wed, 3 Jun 2015 19:16:41 +0000 (21:16 +0200)]
Move Title null check in Special:RevisionDelete

The property $this->targetObj was used before null check in

Move up the existing null check to avoid the fatal:

Catchable fatal error: Argument 3 passed to
RevisionDeleter::createList() must be an instance of Title, null given,
called in \includes\specials\SpecialRevisiondelete.php on line 354 and
defined in \includes\revisiondelete\RevisionDeleter.php on line 83

On request with an unknown rev id

Follow-Up: Ic078af5417798db1b2900057dbf7514112e94b46
Bug: T96538
Change-Id: I0c7913ecb11ffce844add7b1f3b810d54c367519

7 years agoExplicitly define module position for mediawiki.htmlform.ooui.styles
Bartosz Dziewoński [Wed, 3 Jun 2015 18:26:06 +0000 (20:26 +0200)]
Explicitly define module position for mediawiki.htmlform.ooui.styles

It was written before the warnings were added, but merged afterwards,
so this got missed, or something like that.

Change-Id: If2d7d3c41568ae7005dc99101dc6ba8fc038d4a8

7 years agoMerge "Let deduplicateRootJob() accept JobSpecification for consistency"
jenkins-bot [Wed, 3 Jun 2015 17:38:35 +0000 (17:38 +0000)]
Merge "Let deduplicateRootJob() accept JobSpecification for consistency"

7 years agoresourceloader: Don't cache minification of user.tokens
Timo Tijhof [Thu, 14 May 2015 01:31:42 +0000 (02:31 +0100)]
resourceloader: Don't cache minification of user.tokens

As of b1e4006b4, the tokens are different on every request.
Caching these is completely useless because the cache entry is
simply unreachable and is extra overhead on every request for
logged-in users to save content to Memcached.

Whether they should be minified at all and whether they perhaps
shouldn't change on every request is a separate matter.

Bug: T84960
Change-Id: I6016e4b01e44e0acbfd6d49f7d99555e2290c9cb

7 years agoMerge "content: Recognise .json as JsonContent in User and MediaWiki namespace"
jenkins-bot [Wed, 3 Jun 2015 16:25:09 +0000 (16:25 +0000)]
Merge "content: Recognise .json as JsonContent in User and MediaWiki namespace"

7 years agoregistration: Don't override boolean false settings
Kunal Mehta [Wed, 3 Jun 2015 15:03:20 +0000 (08:03 -0700)]
registration: Don't override boolean false settings

Our optimization of !$GLOBALS[$key] was affecting settings where a true
setting was being disabled in LocalSettings.php. Now explicitly check it
is an array before overriding it.

Bug: T100767
Change-Id: Id5397e526d66559bfabe6065223b1181a8a9d31e

7 years agoresourceloader: Remove redundant getModifiedTime implementations
Timo Tijhof [Tue, 2 Jun 2015 18:40:55 +0000 (19:40 +0100)]
resourceloader: Remove redundant getModifiedTime implementations

Follows-up f37cee996e which replaced the getHashMtime() and
getDefinitionMtime() methods with dummies that always return 1.

These getModifiedTime() implementations were only tracking the
definition summary or custom hash, which is already tracked
by getVersionHash().

* SpecialCharacterDataModule: This one was odd as it was tracking
  both the mtime *and* the file contents.

* UserCSSPrefsModule/UserOptionsModule: Remove redundant caching.
  Already taken care of by getVersionHash() as of f37cee996e.

Bug: T94074
Change-Id: I6e37c3c2f85ef4599a8643b0efabc18de2f51ec4

7 years agoMerge "wl_notificationtimestamp code comments typo, false statement"
jenkins-bot [Wed, 3 Jun 2015 13:37:33 +0000 (13:37 +0000)]
Merge "wl_notificationtimestamp code comments typo, false statement"

7 years agoMerge "Made User::touch no longer call load()"
jenkins-bot [Wed, 3 Jun 2015 07:47:00 +0000 (07:47 +0000)]
Merge "Made User::touch no longer call load()"

7 years agoAdd a hook for reporting exceptions
Gergő Tisza [Sun, 24 May 2015 11:30:10 +0000 (11:30 +0000)]
Add a hook for reporting exceptions

Bug: T100141
Change-Id: I893f8b93e09f9ef70beef46922d304fdb3600b78

7 years agoMerge "Move XmlSelect to its own file"
jenkins-bot [Wed, 3 Jun 2015 03:34:35 +0000 (03:34 +0000)]
Merge "Move XmlSelect to its own file"

7 years agoMove XmlSelect to its own file
Geoffrey Mon [Tue, 2 Jun 2015 23:43:45 +0000 (19:43 -0400)]
Move XmlSelect to its own file

Move the XmlSelect class to its own file to make it easier to find
and utilize.  Helps prevent the use of unnecessary
Html::openElement, Html::element, etc.

Bug: T93234
Change-Id: I66119a2d0eda15569de06c493a0ee302f21deb3f

7 years agoexception: Use standard message for HTTP status 500
Timo Tijhof [Mon, 1 Jun 2015 14:02:50 +0000 (15:02 +0100)]
exception: Use standard message for HTTP status 500

This is the only case in the MediaWiki code base where a custom
message is used. Supporting in the standard HttpStatus library
would require a $customMessage parameter which seems unnecessary.

Additional information should be communicated using additional
HTTP response headers or inside the body content.

Besides, in current PHP versions and in Apache 2.4, the message is
already being ignored and replaced with the standard message (see T100984).

Bug: T100984
Change-Id: I11b58a2f3ce22568479d36027d15e5c6f428ff15

7 years agomediawiki.template: Mustache should return jQuery object instead of array
jdlrobson [Thu, 30 Apr 2015 00:21:24 +0000 (17:21 -0700)]
mediawiki.template: Mustache should return jQuery object instead of array

This is consistent with Flow and Hogan in Mobile.

Change-Id: If5c9e08ade185ebdb42a292f87d7506a68528c88