Commit graph

3561 commits

Author SHA1 Message Date
addshore
05ab20fcc6 Remove Atomic methods from ConnectionManagers
Change-Id: I697f63f45975b13af52bc22fced6e4d07e35115f
Depends-On: I4341a1b4ff6a67e4c1770faae38e9b126f1bf0bf
2016-12-02 04:50:29 +00:00
jenkins-bot
6bb1170e2f Merge "Rank aliases in search in order they appear in the messages file." 2016-12-01 09:54:21 +00:00
jenkins-bot
ebc1345990 Merge "Clean up http classes a bit" 2016-12-01 03:32:47 +00:00
Gergő Tisza
1531659d25 Clean up http classes a bit
* added integration tests. We probably don't want automated tests
  to make external requests but these make manual testing more
  convenient. Documented some oddities discovered by testing.
* made ::$status, ::proxySetup() and ::getHeaderList()
  protected; they were not referenced in any gerrit-hosted extension
  and they provide no useful functionality to external callers.
  Similarly, marked ::read() and ::errorHandler() as internal
  (these are used as callbacks so can't be protected)
* removed inheritance abuse in ::execute()
* documented ::execute() as returning a StatusValue (but
  keep returning a Status for now)
* changed setCookie argument defaults to ones that make sense
* replaced MWException
* moved unit tests to the correct location
* fixed some code style issues

Change-Id: I5852fc75badc5d475ae30ec2c9376bde7024bd95
2016-11-30 19:00:44 -08:00
jenkins-bot
476e48d689 Merge "ExtensionRegistryTest: Illustrate priority in array_replace_recursive test case" 2016-12-01 00:41:10 +00:00
Roan Kattouw
a8e20be5f3 ExtensionRegistryTest: Illustrate priority in array_replace_recursive test case
When two keys have conflicting values, the value from extension.json wins
when using this merge strategy.

Change-Id: I0222682f3b3fb08f80afc7dda677da7bbfe8e5d1
2016-12-01 00:27:33 +00:00
addshore
a4bd573142 Fix SessionConsistentConnectionManagerTest class and file name
Change-Id: If60f081946b8f3bb564f2bb17fd1261af0cb7e3a
2016-12-01 00:15:57 +00:00
jenkins-bot
685f129b86 Merge "DatabaseUpdater: Stop inserting junk into 'updatelog' every time the updater runs" 2016-11-30 20:26:49 +00:00
Bartosz Dziewoński
b225a84ff9 DatabaseUpdater: Stop inserting junk into 'updatelog' every time the updater runs
Nothing ever looks at these rows, and if you have update.php in a Cron
job or a Git hook or something, they can accumulate in huge numbers.

Also remove a test which verified that the rows get inserted.

If you reached this place while trying to find out what the weird
"updatelist-1.28.0-14628929450" rows in your database are, rest
assured they are useless. If they're causing disk space problems,
you can delete them:

  DELETE FROM updatelog WHERE ul_key LIKE 'updatelist-%';

Change-Id: If94f243810e82ea3724cbd47b301bb96ba9a49d9
2016-11-30 20:13:30 +00:00
jenkins-bot
add4dcc1c0 Merge "Add DB ConnectionManagers" 2016-11-30 18:43:21 +00:00
jenkins-bot
6124d71e25 Merge "Prevent login-only local password provider from removing passwords" 2016-11-30 16:39:12 +00:00
Brad Jorsch
3041b5c038 Add Message::listParam()
This allows for passing a list of values that will be turned into a list
in the context of the language for which the Message is being processed.

For example, currently you'd have to do

 $msg = new Message( 'something', [ $language->commaList( $list ) ] );

which isn't going to give correct results if the message is later
changed to a different language with a different value for
'comma-separator'.

Now, you can do this instead

 $msg = new Message( 'something', [ Message::listParam( $list, 'comma' ) ] );

and it will be listified properly no matter what language is later used to
parse $msg.

Change-Id: I66868c61832260870449998fef14c842f17753ee
2016-11-30 15:54:17 +00:00
addshore
c3c3cf9696 Add DB ConnectionManagers
This moves and refactors the ConsistentReadConnectionManager
from Wikibase into the core rdbms lib.
The refactoring also creates a generic ConnectionManager.

This relates to Iff20a22f9f2bc7ceefd6defc0ed9a494a6fe62c0
which introduced a DB factory / connection manager in
an extension revealing the need for this in multiple places.

Change-Id: I0c58e15aed5bed88323d18cb95e5008f8d3381c5
2016-11-30 11:43:22 +00:00
Stanislav Malyshev
e421158b1a Rank aliases in search in order they appear in the messages file.
This will ensure the local page name (which is the first alias) is prioritized.

Bug: T151660
Change-Id: I3cc266024f5e052d20ff55c4b2c6cbd2945e3dd3
2016-11-29 15:15:42 -08:00
jenkins-bot
82dff2f46c Merge "Rewrite logstash key conflict warning from I6677dbf6" 2016-11-29 22:53:10 +00:00
Gergő Tisza
98f143e0f4 Rewrite logstash key conflict warning from I6677dbf6
* do not warn if something is overwritten with an identical value
  (happens a lot with 'ip')
* move to LogstashFormatter so we can check for the value
* instead of spamming errors, just add a flag to the logstash data

Bug: T145133
Change-Id: I31caee865cd60c785126478ac75c9aefce78eaaf
2016-11-29 11:14:08 +00:00
jenkins-bot
9964ca1a39 Merge "Don't fallback from uk to ru" 2016-11-29 08:00:43 +00:00
jenkins-bot
ff70e103de Merge "HTMLForm: Allow returning Message objects from HTMLFormField::validate()" 2016-11-25 09:11:07 +00:00
jenkins-bot
8f0a0ce085 Merge "Better handling of Message objects as Message parameters" 2016-11-25 09:01:13 +00:00
jenkins-bot
2c0db8f5e8 Merge "OutputPage::getCategories(): Add a possibility to distinguish "normal" and "hidden" categories" 2016-11-25 00:17:04 +00:00
Florian
f4b8549f5f OutputPage::getCategories(): Add a possibility to distinguish "normal" and "hidden" categories
There's currently no way to get, e.g., all categories except the
hidden ones just as text. The OutputPage::getCategories() method
always returns all categories as an array of strings (titles) and
the getCategoryLinks() method returns the result of Linker::link
but with the distinction between "normal" and "hidden" categories.

This change adds a new parameter to OutputPage::getCategories(),
$type, which can be used to define, what categories should be
returned. The default value is "all", which means, that all categories
are returned (the current result of the method). With the value
"normal" and "hidden", the method will return the respective values.

This could be used in I97d7de723fe72da26c7dbde0a559a13704c7099a to
remove the stupid Linker::link() and isset workaround.

Change-Id: Iadda9ae362a21fbee770240234b8f55326219932
2016-11-25 00:02:28 +00:00
jenkins-bot
d6dcf23a8f Merge "Get ConfigFactory & MainConfig from MediaWikiServices" 2016-11-24 18:08:36 +00:00
jenkins-bot
81ea14a7cb Merge "RC filter: hidebyothers" 2016-11-24 00:26:04 +00:00
Adam Roses Wight
98585221d6 Don't fallback from uk to ru
Bug: T39314
Change-Id: I7c72702524bb75bb939a30b6c8e451ae8f89e906
2016-11-23 19:24:54 +02:00
jenkins-bot
f24ae3e206 Merge "Remove passwordreset capture feature" 2016-11-23 01:17:38 +00:00
addshore
b12086b618 Get ConfigFactory & MainConfig from MediaWikiServices
Change-Id: Iafdd7e00747060572463ffb05aae4543f3a06163
2016-11-23 00:12:38 +00:00
Brian Wolff
f12a3edff7 Remove passwordreset capture feature
If anyone wants such a thing, they can make their own extension.

I asked stewards, and they said they don't use this.

See also T32636 / 9de2bfd1fe

Bug: T150930
Change-Id: I3ab5962dba668e5d628e55ad0c0feae471d82b5e
2016-11-23 00:02:33 +00:00
addshore
7dd1600e9c Get GenderCache from MediaWikiServices
Change-Id: I752a65d93ec49ea6c44306eb18a6641ef86f7b5c
2016-11-22 23:14:43 +00:00
jenkins-bot
5111bd2def Merge "Add 'autocomplete' option to HTMLTextField" 2016-11-18 18:41:16 +00:00
Gergő Tisza
8f17b09a9f Add 'autocomplete' option to HTMLTextField
Adds support for the 'autocomplete' HTML attribute to HTMLTextField
(mainly for turning it off, but other values are supported as well).
Renames 'autocomplete' to 'autocomplete-data' (with temporary B/C)
in HTMLAutoCompleteSelectField to make space.

Change-Id: Ic0539d5a61d9862e670d10686adc1e41f65d908e
2016-11-17 19:50:38 +00:00
jenkins-bot
b90fa4201a Merge "resourceloader: Remove top/bottom queue distinction" 2016-11-17 14:27:07 +00:00
jenkins-bot
bcea7fcb1c Merge "resourceloader: Add tests to verify empty string works" 2016-11-17 01:46:03 +00:00
Timo Tijhof
6f5cb7d42b resourceloader: Add tests to verify empty string works
It's not explicitly supported anywhere, but I don't see a point in explicitly
disallowing it. Add unit tests to verify that this works.

Bug: T28804
Change-Id: I876ac43885bb27da54ef6e59b6416868ff636b84
2016-11-16 17:15:04 -08:00
Aaron Schulz
a1e5fd85a0 Fix UserTest case that was missing a cache purge
The process cache is based on blind-TTL, so purge it to
test the persistent cache properly.

Change-Id: I8ee78a1e73bf5164e74b1e8a23559c2e91bba6dd
2016-11-16 16:38:09 -08:00
Timo Tijhof
bc374082fa resourceloader: Remove top/bottom queue distinction
* The styles queue has always been top-only
  (except for a few months in 2015).
* The top queue loads asynchronous since mid-2015. (T107399)
  And LocalStorage eval, previously the last remaining non-async part
  of module loading, is also async as of October 2016. (T142129)

* This change merges the bottom 'mw.loader.load()' queue with the top queue.
  It also moves any other snippets potentially in the bottom queue still:
  - embed: I couldn't find any private modules with position=bottom
     (doesn't make sense due to their blocking nature). If any do exist,
     (third-party extensions?), they'll now be embedded in the <head>.
  - scripts: Any legacy 'only=scripts' requests will now initiate
     from the <head>.

Bug: T109837
Change-Id: I6c21e3e47c23df33a04c42ce94bd4c1964599c7f
2016-11-16 19:29:16 +00:00
Tyler Anthony Romeo
1cc3a57296 Send a cookie with autoblocks to prevent vandalism.
Send a cookie with blocks that have autoblock turned on so that
the user will be identified to MediaWiki and any IP they try
to edit anonymously from will be blocked, even without logging
in to the originally blocked account. Additionally, the block
info is stored in local storage as well as an even stronger
deterrence.

Note: this is meant to deter normal vandals, i.e., not attackers
who know what cookies and local storage are and will be actively
removing the cookie.

This feature is disabled by default, and can be enabled with the
new $wgCookieSetOnAutoblock configuration variable (by setting
it to true);

The cookie will expire at the same time as the block or after
$wgCookieExpiration (whichever is sooner).

Bug: T5233
Bug: T147610
Change-Id: Ic3383af56c555c1592d272490ff4da683b9d7b1b
2016-11-16 10:29:46 -08:00
Bryan Davis
a263b8d915 Throttler: improve log message compatibility with Monolog logger
The `type` log event attribute is used in Wikimedia production logging
to categorize log events by source (e.g. 'mediawiki', 'restbase', etc).
Adding a `type` key to the logging context overwrites the default value
of 'mediawiki'. Rename the key to `throttle` in the context and the
message template.

Change-Id: Ic274159774e43a8749f83c850fff7897956cf377
2016-11-15 22:37:04 +00:00
Gergő Tisza
6dbe9b2397 Prevent login-only local password provider from removing passwords
When the local password provider is in login-only mode, it should
disable itself as soon as some other primary provider is enabled.
It's impossible to tell whether that is the case though, so err in
the safer direction.

Change-Id: Ie77a9cc6d8f06aa52a893e753d9971e30b0f55e5
2016-11-15 07:27:57 +00:00
Brad Jorsch
7fdbe15fb6 HTMLForm: Allow returning Message objects from HTMLFormField::validate()
It mostly already worked. HTMLForm::trySubmit() needed a little
adjustment to handle things properly.

Change-Id: Ibb17bb61ac0b2d41953249980bc2f23b8a3ae5b6
2016-11-14 13:25:14 -05:00
Brad Jorsch
79274e1f44 Better handling of Message objects as Message parameters
If a Message object is a parameter of another Message object, it should
use the same language, use-database flag, and so on as the outer Message
when it's being stringified.

Change-Id: I92762a1a63c90a16e8581edc96bd1da699880157
2016-11-14 13:25:14 -05:00
Stephane Bisson
fabe7d12a3 RC filter: hidebyothers
Allows hiding edits by other users on
Special:RecentChanges.

It is not available in the current UI but
will be used by the ERI project.

Bug: T149859
Change-Id: I8c1e2238a41d6f5e5ac44cc12cb02a6b4271c237
2016-11-14 10:40:02 -05:00
Thiemo Mättig
ae72e3577f More robust, cleaned up MessageTest
This is a direct follow up to my comments in Ia6ec10d.

Relevant for T146416 are the two messages I added. They explain why these
assertions are duplicated.

assertEquals behaves bogus when used with strings, especially when used
with formatters and parsers, which is the case here. For example,
assertEquals( '9a', 9 ) succeeds. assertEquals is useful when comparing
objects.

Bug: T146416
Change-Id: Ie8df41b3ce6678f3add55bab6701b56b66447a2e
2016-11-11 16:48:14 +00:00
jenkins-bot
c99b37bdc0 Merge "Deprecate Message::$format (mostly)" 2016-11-10 18:47:45 +00:00
jenkins-bot
97c2bc99ea Merge "Add Message test for implicit formatting" 2016-11-10 18:45:12 +00:00
Gergő Tisza
b0784a8e96 Deprecate Message::$format (mostly)
Message::__toString() used the same formatting mode that the last
explicit transformation used:

    $msg = new Message( 'foo' );
    echo $msg; // escaped
    echo $msg->plain();
    echo $msg; // not escaped

This is not particularly useful and makes code review hard, so let's
get rid of it.

The same behavior with $msg->toString() is left intact (and logged)
for now.

Bug: T146416
Change-Id: Ia9b2a1dcf09d52348b2c6d8299fd849b809f6e74
2016-11-10 09:06:26 +00:00
jenkins-bot
1dd2e07276 Merge "Revert "Don't construct SpecialPages twice"" 2016-11-10 06:00:17 +00:00
Legoktm
d82eec166f Revert "Don't construct SpecialPages twice"
This causes issues with transcluded special pages.

This reverts commit ba40a63c0e.

Bug: T132545
Change-Id: I14d5300d6b90766532924f9d1e52c4230e2d9772
2016-11-10 05:48:33 +00:00
Gergő Tisza
4ea621e236 Add Message test for implicit formatting
Change-Id: Ia6ec10d0d6da8c2b323054642e206c722d17f0b0
2016-11-09 04:00:44 +00:00
jenkins-bot
84851a43f3 Merge "Revert "MediaWiki.php: Redirect non-standard title urls to canonical"" 2016-11-09 01:27:38 +00:00
jenkins-bot
69ae945e8d Merge "Update weblinks in comments from HTTP to HTTPS" 2016-11-08 21:32:00 +00:00