Commit graph

1233 commits

Author SHA1 Message Date
jenkins-bot
43705de4f9 Merge "Add RefreshSecondaryDataUpdate and use it in DerivedPageDataUpdater" 2020-03-12 17:43:57 +00:00
jenkins-bot
e005e08768 Merge "Add a ContentModelChange helper, and an api module that uses it" 2020-03-11 22:10:01 +00:00
Aaron Schulz
1f4efc6c34 Add RefreshSecondaryDataUpdate and use it in DerivedPageDataUpdater
This class implements EnqueueableDataUpdate and can be pushed as a
job if it fails to run via DeferredUpdates.

Unlike a1f7fd3ada, make RefreshSecondaryDataUpdate skip failing
updates in doUpdate(). Instead of throwing the first exception from
any update, log any exceptions that occur and try all the other
updates. The first error will be re-thrown afterwards.

Also, make sure that each DataUpdate still has outer transaction
scope. This property is documented at mediawiki.org and should not
be changed.

Add integration tests for RefreshSecondaryDataUpdateTest.

Bug: T218456
Bug: T206283
Change-Id: I7c6554a4d4cd76dfe7cd2967afe30b3aa1069fcb
2020-03-11 00:42:48 -07:00
Tim Starling
f81462048a Add PSR-4 mappings for existing namespaces and the top level
This reduces the size of the class map ($wgAutoloadLocalClasses),
and allows new classes and namespaces to be added without modifying
the class or namespace map as long as they conform to PSR-4.

Adding a PSR-4 mapping for the top-level MediaWiki namespace means that
conforming subnamespaces do not need to be listed.

I did not add some odd or broken cases, since I figure it's better to
fix them by moving the files, which can be done in a separate commit.

I removed testPSR4Completeness, since PSR-4 completeness is no longer
required, that's the point.

Bug: T166010
Change-Id: Ie5e50ecb519b99a1197688c046c7be245ce6da1b
2020-03-10 21:08:30 +11:00
jenkins-bot
19e1d9a08d Merge "objectcache: split out StorageAwareness/ExpirationAwareness from IExpiringStore" 2020-03-03 22:55:24 +00:00
jenkins-bot
25a0d01d19 Merge "Revert "Split FakeMaintenance and LoggedUpdateMaintenance to their own files"" 2020-03-03 14:30:58 +00:00
Daimona Eaytoy
7def03fe80 Revert "Split FakeMaintenance and LoggedUpdateMaintenance to their own files"
This reverts commit 2cdeb26d0c.

Reason for revert: broke roughly all scripts extending LoggedUpdateMaintenance.

Bug: T246754
Change-Id: Icfe3da924c364b4b4f9286871aeb0aa9f1bbff1a
2020-03-03 14:14:31 +00:00
Aaron Schulz
69950da666 objectcache: split out StorageAwareness/ExpirationAwareness from IExpiringStore
Add more detailed QOS_* constants while at it

Bug: T236412
Change-Id: Ia862c5111a3daf10a34fc78163301629228efa6b
2020-03-02 20:01:24 +00:00
Reedy
c448337b61 Add a maintenance script to block a list of users
Bug: T246368
Change-Id: I93b7d92023af06adabd7767f30b5179d12223be1
2020-03-02 19:35:03 +00:00
Reedy
2cdeb26d0c Split FakeMaintenance and LoggedUpdateMaintenance to their own files
Change-Id: I4c95f910993fffa060c2860847b8cfff1612ccf5
2020-02-28 21:51:24 +00:00
DannyS712
0789d1568d Add a ContentModelChange helper, and an api module that uses it
Bug: T107174
Change-Id: I6eb38c4aec23619d7ec42ef12092edf9ff25c6fa
2020-02-27 19:02:29 +00:00
Timo Tijhof
007a0620db resourceloader: Convert mediawiki.Uri to package files
This replaces the client-side compiler for 'mediawiki.template.regexp',
with a simple PHP callback.

The regexp temple compiler is not used anywhere after this and will be
removed in a follow-up commit.

Bug: T233676
Change-Id: I1baa1465d88293d03975cadf2efdd57283427722
2020-02-24 17:45:31 +00:00
Tim Starling
44d51cb04e Fix the namespace of SpecialPageFactory
Follows-up d4045035b0.

This class was added to the MediaWiki\Special namespace, contrary to the
plan in T166010 which reserves that namespace for core special pages.
Instead, use MediaWiki\SpecialPage, following the directory in which it
is located.

Also, fix two bugs which prevented the introduction of a namespaced
class alias.

Bug: T166010
Change-Id: I6e31340aaae32a89beb7e45b79d76a7fea9808d2
2020-02-21 13:46:19 +11:00
Aaron Schulz
6b12696452 Move UIDGenerator code to a service and put it under /libs
All MediaWiki dependencies have been removed or injected.

Change-Id: I01c9e96edd6b03496c1595670967ffa5a4069c9d
2020-02-18 00:20:40 +00:00
jenkins-bot
b21453f61d Merge "widgets: Split out SearchWidgets into their own tree" 2020-02-15 00:20:08 +00:00
Aaron Schulz
5282a02961 resourceloader: support tracking indirect module dependency paths via BagOStuff
This can be enabled via a configuration flag. Otherwise, SqlModuleDependencyStore
will be used in order to keep using the module_deps table.

Create a dependency store class, wrapping BagOStuff, that stores known module
dependencies. Inject it into ResourceLoader and inject the path lists into
ResourceLoaderModule directly and via callback.

Bug: T113916
Change-Id: I6da55e78d5554e30e5df6b4bc45d84817f5bea15
2020-02-13 17:26:36 +00:00
jenkins-bot
c3f20ad3f7 Merge "Add SelectQueryBuilder" 2020-02-13 00:04:11 +00:00
James D. Forrester
3a9a542e1d widgets: Split out SearchWidgets into their own tree
Expecting people to magically know that MediaWiki\Widget\SearchInputWidget is
generic and for use on random pages, but MediaWiki\Widget\SearchResultWidget
is super-specialised, based on bespoke technologies, and only for use on
Special:Search, is not great.

None of these are used outside the MediaWiki core codebase and so this change
whilst it would otherwise be technically breaking is fine.

Change-Id: I16d21dd5e1ac3aa9893863df272d1bbb4788066f
2020-02-11 14:37:27 -08:00
Peter Ovchyn
f136c2953c languages: More doc annotations for LanguageConverter related classes
Deprecated LinkHolderArray for public usage

Bug: T244709
Change-Id: Ic5b9e9237044b56cbb64e7c762f5d2de3b1de821
2020-02-11 17:32:12 +02:00
Tim Starling
d06a3e049b Add SelectQueryBuilder
Add a query builder class which encapsulates the parameters to
IDatabase::select() and related functions.

Override useIndexClause() and ignoreIndexClause() in DatabaseTestHelper
so that index hints can be tested.

Bug: T243051
Change-Id: I58eec4eeb23bd7fb05b8b77d0a748f1026afee52
2020-02-07 10:10:17 +11:00
ArtBaltai
30e54b3962 Introduce ContentHandlerFactory
Added:
- ContentHandlerFactory
Tests:
- PHPUnit
Changed
- Calls of changed and deprecated
- DI for some service/api
Deprecated:
- ContentHandler::* then similar to ContentHandlerFactory
- ContentHandler::getForTitle
- ContentHandler::$handlers

Bug: T235165
Change-Id: I59246938c7ad7b3e70e46c9e698708ef9bc672c6
2020-02-07 00:53:51 +03:00
Brad Jorsch
c2b1525908 API: Use ParamValidator library
This brings significant modularization to the Action API's parameter
validation, and allows the Action API and MW REST API to share
validation code.

Note there are several changes in this patch that may affect other code;
see the entries in RELEASE-NOTES-1.35 for details.

Bug: T142080
Bug: T232672
Bug: T21195
Bug: T34675
Bug: T154774
Change-Id: I1462edc1701278760fa695308007006868b249fc
Depends-On: I10011be060fe6d27c7527312ad41218786b3f40d
2020-02-04 13:36:14 -05:00
Peter Ovchyn
863a1d5bdd languages: Move Converter and tests to respective files
Bug: T226833, T243760
Change-Id: I6fc7f267098d663fbefd0e78457726c343c9b3e4
2020-02-03 15:31:08 +02:00
Peter Ovchyn
61e0908fa2 languages: Introduce LanguageConverterFactory
Done:
* Replace LanguageConverter::newConverter by LanguageConverterFactory::getLanguageConverter
* Remove LanguageConverter::newConverter from all subclasses
* Add LanguageConverterFactory integration tests which covers all languages by their code.
* Caching of LanguageConverters in factory
* Make all tests running (hope that's would be enough)
* Uncomment  the deprecated functions.
* Rename FakeConverter to TrivialLanguageConverter
* Create ILanguageConverter to have shared ancestor
* Make the LanguageConverter class abstract.
* Create table with mapping between lang code and converter instead of using name convention
* ILanguageConverter @internal
* Clean up code

Change-Id: I0e4d77de0f44e18c19956a1ffd69d30e63cf51bf
Bug: T226833, T243332
2020-02-03 11:38:03 +02:00
Aaron Schulz
758e980427 objectcache: remove APCBagOStuff class
apcu comes with PHP 5.5+ and the minimum version for MediaWiki is 7.2

Change-Id: I69a988c6c2999766a3c7e56b841cd4f4091b4d95
2020-01-29 17:27:47 +00:00
C. Scott Ananian
5cbb64f56a Remove Preprocessor_DOM, deprecated in 1.34
Remove the deprecated Preprocessor_DOM class, which was hard-deprecated
in 1.34.  This begins to simplify parser configuration and reduce redundant
code paths, but I've left two things for cleanup in a future patch:

1. The `preprocessorClass` configuration option to the parser, exposed
in `$wgParserConf`, ServiceWiring, ParserFactory, etc.  There is no reason
for this to be exposed as configurable, but I've left this clean up to a
future patch.

2. The `$wgMaxGeneratedPPNodeCount` configuration, exposed also in
ParserOptions.  Only Preprocessor_DOM calculated this count, and since
we are only using Preprocessor_Hash now, this configuration has no effect.
But since this value was exposed in ParserOptions and elsewhere, I've
deprecated where needed but left this clean up to a future patch.

Bug: T204945
Change-Id: I727f003f9a42d0c92bcbcce8a8289d5af6cd1298
2020-01-25 11:22:45 -05:00
Bill Pirkle
512b0b08d9 Add core REST API endpoint for media links
Add an endpoint to the core REST API to return the list of
media files embedded in a page, including certain metadata
for each media file.

Bug: T236169
Change-Id: I3188848ee7de365d209dfb7da5b885313e9f705b
2020-01-22 15:10:44 -06:00
Reedy
ec5b793fd0 Remove 1.33 aliases from libs/services
Change-Id: Ib120d58194662c3fa05784736eb5c82d7892777d
2020-01-09 21:37:29 +00:00
mainframe98
297a89069a Add LinkBatchFactory to inject services into LinkBatch
All services required by LinkBatch are now injected by the
LinkBatchFactory. The constructor for LinkBatch has been
soft-deprecated, but the required services are still optional.

Bug: T239855
Depends-On: If49cbb730d4ac48586b891908cf24601efbc5d6a
Change-Id: I93d931ab60305ad49a6e419f8269c77791a3938d
2020-01-06 17:02:31 +01:00
DannyS712
f6417508c2 Remove FileBasedSiteLookup class, deprecated and unused
Bug: T241356
Change-Id: I252904b6b4c31a0ac42cbfbe7875a23c727150c1
2020-01-03 23:59:16 +00:00
jenkins-bot
74aee4ed08 Merge "Use wikimedia/ip-utils 1.0.0 to replace IP class" 2020-01-01 23:55:38 +00:00
James D. Forrester
610954eda6 Use wikimedia/ip-utils 1.0.0 to replace IP class
Adjust use in ApiBase.

Depends-On: I9a172b2bd922c3a62248545906bd9bdfcac03a43
Change-Id: Ie5485b1df9f3886add943ddcf8b0824e87a7f3e4
2020-01-01 02:29:11 -08:00
TheSandDoctor
01b9bfd5ae Remove MWMessagePack
MWMessagePack has been removed.

Bug: T241220
Change-Id: I1e1823c3b42022d6b045b8d33bebb1be7da95631
2019-12-30 00:00:39 -08:00
Timo Tijhof
8373f51cb0 benchmarks: Exclude from PHPUnit test coverage
Also move Benchmarker.php to maintenance/includes/ because
that file is not itself a benchmark, and that base class is
actually covered by tests and should remain included.

Change-Id: I4acd88242dde56a884d319dfc141a3511a8221a3
2019-12-18 01:24:42 +00:00
jenkins-bot
808c737df6 Merge "Create abstract special page SpecialRedirectWithAction, and use it." 2019-12-02 17:59:36 +00:00
Tim Starling
164a3ac1f0 Remove IE 6 security features from server-side code
* Deprecate WebRequest::checkUrlExtension() and have it always return
  true. This reverts the security fixes made for T30235.
* Remove IEUrlExtension. This is a helper for checkUrlExtension() which
  is not used in any extensions.
* Remove CSS sanitization code which is specific to IE6. This reverts
  the changes made to fix T57332, and related followups. I confirmed
  that the relevant test cases do not result in XSS on IE8.
* Remove related tests.

Bug: T232563
Change-Id: I7318ea4a63210252ebc64968691d4f62d79a63e9
2019-11-28 15:11:56 +11:00
DannyS712
f3e2b140c8 Create abstract special page SpecialRedirectWithAction, and use it.
Special:Edit, Special:History, Special:Purge, and Special:Info all
redirect to index.php?title=$1&action=, where the action is edit,
history, purge, or info. Thus, they can each extend a common class.

Bug: T13456
Change-Id: I64aca28075f5d79ec841b6868e1760f2dac4ec90
2019-11-28 01:00:28 +00:00
Max Semenik
ee1af9bc72 Rewrite cdb.php to use Maintenance
Change-Id: Ia3fbfbe2e89401d867f457b89a19bebdced5dd3a
2019-11-11 20:17:40 -08:00
Amir Sarabadani
30c4b22d4e Start of DoctrineSchemaBuilder
This allows us to abstract away schemas into one json file.

Bug: T230419
Change-Id: Ic8a658c97150e4c248bdbc9a5cf5d947b8c71036
2019-11-09 21:32:32 +00:00
jenkins-bot
5e27e79c6d Merge "Add renameRestrictions.php maintenance script" 2019-11-08 15:41:58 +00:00
Max Semenik
38a9f0a42a Add a maintenance script to delete a change tag
Based on Ib8b96b8460db3832e9297a07922ee1d9d1af5ccb by Legoktm.

Bug: T75181
Change-Id: I0e61dfbc72fe27efa9c1deabc928e7c9af66e1bc
2019-11-07 16:57:51 -08:00
Martin Urbanec
25d1f724a6 Add renameRestrictions.php maintenance script
Bug: T237194
Change-Id: I64a54980c3ef00d345a180dff10d8ffa917916bd
2019-11-07 22:29:25 +01:00
Timo Tijhof
0da1ecfd89 profiler: Remove ProfilerOutputDb and profileinfo.php entry point
Bug: T231366
Change-Id: I211c8192200d9af00914f9847608a6daf2898f91
2019-11-06 15:28:00 -05:00
Max Semenik
93a27f83f9 Remove PhpXmlBugTester
This bug was fixed over 10 years ago and is impossible to encounter
on modern libxml versions. While libxml versions might vary slightly
for the same PHP version depending on how it's built, this gives a
general idea:

https://3v4l.org/Tk27c

Change-Id: I669abb3543180e6edd090297fcfcb811aa833b57
2019-10-31 00:44:40 +00:00
Ed Sanders
e20a6e516a Move deflate method to MW util and deprecate EasyDeflate module
This will allow us to easily change the deflate library in future.

Rename the PHP class and i18n to just "Deflate".

Bug: T236210
Change-Id: I88dea5e82a7f672e36556c40b151ac00ff3d044e
2019-10-30 15:03:41 +00:00
Aryeh Gregor
e787246ce8 LanguageFactory to replace Language::factory()
Languages with variants no longer can override the parent's constructor
(which is now used for injecting services). Instead, they need to
override Language::newConverter().

Bug: T201405
Change-Id: I923400d61763cf1db88cb0c3f684c9c10e58032d
2019-10-23 10:48:23 -07:00
jenkins-bot
0915ac1713 Merge "Add TitleFactory" 2019-10-21 18:02:41 +00:00
jenkins-bot
abfea4c7ff Merge "Add faux SearchResult and SearchResultSet" 2019-10-21 09:37:50 +00:00
Gergő Tisza
95586dd937
Add TitleFactory
Makes it possible to mock static Title methods in tests, where
they are one of the more common reasons for not being able to
use MediaWikiUnitTestCase.

Actually introducing dependency injection to Title is left for
the future.

Change-Id: I959ba87f8e283da9549b6bfcefd338e60b00be8f
2019-10-18 00:00:46 +02:00
Aryeh Gregor
8c4f59db64 New LanguageFallback service
This replaces the static Language methods getFallbackFor(),
getFallbacksFor(), and getFallbacksIncludingSiteLanguage(). There is
100% unit and integration test coverage for the new class.

One deliberate functional change: I changed one place where we threw
MWException to InvalidArgumentException.

Bug: T201405
Depends-On: Ie7a89f6ed7d52a0bc01672019ff92e7ee105a1f3
Change-Id: I49222eb55f1feec5b1dcd40f364cffe0c8801855
2019-10-08 15:11:39 -07:00
Aryeh Gregor
6d80b6c082 Split some Language methods to LanguageNameUtils
These are static methods that have to do with processing language names
and codes. I didn't include fallback behavior, because that would mean a
circular dependency with LocalisationCache.

In the new class, I renamed AS_AUTONYMS to AUTONYMS, and added a class
constant DEFINED for 'mw' to match the existing SUPPORTED and ALL. I
also renamed fetchLanguageName(s) to getLanguageName(s).

There is 100% test coverage for the code in the new class.

This was previously committed as 2e52f48c2e and reverted because it
depended on e4468a1d6b, which had to be reverted for performance
issues. There should be no changes other than rebasing.

Bug: T201405
Change-Id: Ifa346c8a92bf1eb57dc5e79458b32b7b26f1ee8a
2019-10-07 15:20:52 -07:00
Gergő Tisza
c296cf69b4
Add faux SearchResult and SearchResultSet
The use case is code that uses search internally, but wants to allow
a development setup where search is proxied via some public API and
the actual querying is performed on a production server, instead of
having to set up all the search services + staging content locally.

Also fix a small logic error in SearchResultSet::shrink.

Change-Id: I83931c1a19c1cb747380e17a4aff3b1fadd5fcf3
2019-10-07 16:35:58 +02:00
James D. Forrester
52ed3261d9 HHVM removal: Drop HHVM code for maintenance/
Change-Id: Id713c523caacdf829d107f6d7473fe22ed9c75d6
2019-10-02 17:06:56 -07:00
Petr Pchelko
854b044ab7 Remove Revision::getRevisionText and gated pre-MCR schema access
- fixT22757.php appears to have been written for T22757 which has been
resolved, I assume it can be removed.

- compressOld.php - rev_text_id access is gated on MCRSchemaMigrationStage
READ_OLD. IT's safe to use the old_text and old_flags directly as we
select for them. Also the query ensures external blobs are not selected,
so we can use decompressData instead of Revision::getRevisionText.
Tested locally.

- recompressTracked.php uses a temporary table for tracking the blobs.
Table is populated by trackBlobs which explicitly queries for old_id,
so using it directly in recompressTracked is ok.
Tested locally.

- checkStorage.php the affected code attempts to fix broken revisions
from a dump, however, it looks like it doesn't work - the code expects
revision IDs as input, however it receives an array of text table old_id
values. Untested.

Bug: T198343
Change-Id: I753019565c15d270c831c995c07c7f1aad887cb6
2019-09-27 09:40:02 -07:00
Bartosz Dziewoński
97eab7f35b Improve collapsible HTMLForm styling (and accessibility, slightly)
Previously the form was only collapsible/expandable using the small
link-button on the far right. Now you can click on the entire header
to do it, and it has an appropriate pretty icon.

We add appropriate ARIA `role` and textual labels. Together with
recently added `toggleARIA` option of jquery.makeCollapsible in
Ic457bda58e56f we feature a screen reader workable output.

Bug: T222904
Change-Id: I6964296bc6870550478de662d21f12a1fc084c15
2019-09-23 10:57:26 -07:00
Brad Jorsch
02d6dc2e4f API: Use ApiBlockInfoTrait in ApiQueryUsers and AllUsers
For efficient bulk querying, this means that
ApiQueryBase::showHiddenUsersAddBlockInfo() needs to return everything
needed by DatabaseBlock::newFromRow().

Since we're rewriting it anyway, we may as well also move
ApiQueryBase::showHiddenUsersAddBlockInfo() out into a trait of its own.

Bug: T232021
Change-Id: I9c5b17a232ecbfbffefc7e40608cf5684ce8a644
2019-09-18 19:44:01 +00:00
Brad Jorsch
17909bfe0b MergeHistory: Update revactor_page too
When using MergeHistory, we need to update the denormalized
revision_actor_temp.revactor_page to match the update we do for
revision.rev_page.

Also, we need a maintenance script to clean up the rows that were broken
by our failure to do that before.

Bug: T232464
Change-Id: Ib819a9d9fc978d75d7cc7e53f361483b69ab8020
2019-09-17 07:17:38 +00:00
Reedy
dd71a77512 Make most special pages class names match filename
Change-Id: I3a9f932acb7d9cf44a984b5d97f9fbc6b8670f7d
2019-09-10 02:47:08 +01:00
jenkins-bot
64e7e7d760 Merge "Provide command to adjust phpunit.xml for code coverage" 2019-09-09 19:25:32 +00:00
Kosta Harlan
fd72f6c48e Provide command to adjust phpunit.xml for code coverage
Our current recommendation for adjusting PHPUnit configuration for
extension code coverage reports is to manually modify
tests/phpunit/suite.xml. This is cumbersome and annoying, since
suite.xml is version controlled.

This patch proposes a composer script to simplify editing
the (non-version controlled) phpunit.xml config in the root of the
MediaWiki repo. It is useful if you are interested in generating
code coverage reports based on unit tests only, not integration tests.

Usage: composer phpunit:coverage-edit -- extensions/GrowthExperiments

When you're done, you can run `rm phpunit.xml` to switch back to the
default phpunit.xml.dist.

The script will use the default includes/src/maintenance directories,
but a future improvement would be to identify the relevant directories
via the AutoloadClasses property of extension.json.

Another improvement would be to provide an option for passing
arbitrary paths in core, in case you are working on tests for a
specific class and want to generate coverage reports instantly.

We could probably also remove
dockerfiles/quibble-coverage/phpunit-suite-edit.py (which inspired
this patch) and use composer phpunit:coverage-edit instead.

Bug: T100294
Change-Id: Ia0ef41f67ca4a64b0d1ca0ddcee488c29630af0b
2019-09-09 14:32:02 +02:00
Timo Tijhof
56fdc4715e docs: Factor out MWDoxygenFilter from mwdoc-filter.php with tests
Bug: T232104
Change-Id: I591f44678cff4adb8863ce5c6ce231a8d3e162d7
2019-09-05 18:22:23 +01:00
daniel
6906a7728c Add UnknownContentHandler.
UnknownContentHandler can be configued to handle models that
belong to extensions that have been undeployed:

  $wgContentHandlers['xyzzy'] = 'UnknownContentHandler';

This way, no errors will be thrown when trying to access
pages with the unsupported model. Instead, an error message is
shown, and editing is prevented.

This patch also improves handling of non-editable content in
EditPage and in DifferenceEngine.

Bug: T220608
Change-Id: Ia94521b786c0a5225a674e4dc3cb6761a723d75b
2019-08-29 10:43:11 +00:00
jenkins-bot
4accd44583 Merge "Hard deprecate new SearchResult() and introduce RevisionSearchResult" 2019-08-27 15:53:34 +00:00
David Causse
bf9a7cad61 Hard deprecate new SearchResult() and introduce RevisionSearchResult
Transitional step for the transformation of SearchResult into an
abstract base class:
- RevisionSearchResult is introduced to behave like SearchResult
- methods are currently shared between  RevisionSearchResult and
  SearchResult in the RevisionSearchResultTrait

Bug: T228626
Change-Id: I13d132de50f6c66086b7f9055d036f2e76667b27
2019-08-27 08:27:28 -07:00
Aryeh Gregor
5a6c18a086 LockManagerGroupFactory to replace singletons
100% test coverage of code that appears to be working and used, in both
LockManagerGroupFactory and also LockManagerGroup. Where possible I
wrote it as unit tests. One preexisting code path seems to be broken and
I marked the test as skipped. Two methods look unused and perhaps not
especially helpful, so I didn't write tests for them yet in case we want
to just get rid of them instead.

Change-Id: Iaa7354f31c451b87773468609c674a3bf1d4382f
2019-08-27 13:19:15 +03:00
jenkins-bot
1c7a8c1d25 Merge "Add SearchResultTrait" 2019-08-27 00:32:25 +00:00
Amir Sarabadani
308e6427ae Revert "Make LocalisationCache a service"
This reverts commits:
 - 76a940350d
 - b78b8804d0
 - 2e52f48c2e
 - e4468a1d6b

Bug: T231200
Bug: T231198
Change-Id: I1a7e46a979ae5c9c8130dd3927f6663a216ba753
2019-08-26 18:28:26 +02:00
jenkins-bot
c63a37679c Merge "language: Move ConverterRule to includes/ and add test case" 2019-08-26 15:09:13 +00:00
Timo Tijhof
7eef775b27 language: Move ConverterRule to includes/ and add test case
Add a very basic test that creates an instance, invokes it
with an empty string, and asserts the types and values returned
by the public methods used in LanguageConverter::applyManualConv.

Bug: T225756
Change-Id: I3600260e712f019243ba5f00890011e694444e43
2019-08-26 12:32:14 +01:00
Daimona Eaytoy
f18af0b61f Remove more Oracle and Mssql leftovers
Follows-up 4d10bb14e8 and 807d793ab9.

According to codesearch [0], these were the last usages. Note that this
patch leaves two constants in places, IDatabase::DBO_SYSDBA and
DBO_DDLMODE. These are public constants used "mostly for oracle" according
to the docs, but maybe we could find other use cases in the future (?).

[0] - https://codesearch.wmflabs.org/core/?q=oracle%7Cmssql&i=fosho&files=%5C.%5B%5Ej%5Cd%5D%7Cen%5C.json&repos=

Bug: T230418
Change-Id: Ibfb748b4b23b885a77f4de161af4bf2ab9649a89
2019-08-25 17:21:49 +00:00
jenkins-bot
ab2e77bb5d Merge "objectcache: move MemcachedClient class to /utils subdir" 2019-08-23 14:19:58 +00:00
Aryeh Gregor
2e52f48c2e Split some Language methods to LanguageNameUtils
These are static methods that have to do with processing language names
and codes. I didn't include fallback behavior, because that would mean a
circular dependency with LocalisationCache.

In the new class, I renamed AS_AUTONYMS to AUTONYMS, and added a class
constant DEFINED for 'mw' to match the existing SUPPORTED and ALL. I
also renamed fetchLanguageName(s) to getLanguageName(s).

There is 100% test coverage for the code in the new class.

Change-Id: I245ae94bfc1f62b6af75ea57525139adf2539fe6
2019-08-23 12:52:35 +03:00
Aaron Schulz
44e2ab3560 objectcache: move MemcachedClient class to /utils subdir
Change-Id: I2774d3e7a3c96ef691106b21908a42bfbbf25956
2019-08-21 16:17:20 -07:00
Aryeh Gregor
5e2199c5b0 BadFileLookup to replace wfIsBadImage
I think this probably shouldn't be directly in the MediaWiki namespace,
but I don't know where is a better place to put it.

In order to avoid gratuitous use of TitleFormatter, I changed the cache
format -- the old implementation used getPrefixedDBkey() and I switched
to an ns/dbkey pair. I also changed the cache keys to use SHA1 instead
of MD5, by Daniel's request.

The previous implementation cached the parsed blacklist for one minute
without invalidation, so it could return slightly stale results, but it
didn't retrieve the bad image list message on a cache hit. The new
implementation unconditionally retrieves the bad image list message, but
uses a hash of it in the cache key and caches for one day. The new
behavior happens to be more cleanly implementable in a service.

Bug: T200882
Bug: T139216
Change-Id: I69fed1b1f3cfc1aa149e0739780e67f6de01609d
2019-08-21 20:45:37 +03:00
Aryeh Gregor
a83b33582a TempFSFileFactory service
This replaces TempFSFile::factory(), which is now deprecated.

Change-Id: I9e65c3867e26c16687560dccc7d9f3e195a8bdd6
2019-08-21 16:26:05 +03:00
David Causse
9d944bd816 Add SearchResultTrait
to hold non-obvious behaviors and rarely specialized methods.

Change-Id: Idc600e22b35a01be8be8cb629bfb09701e842cd7
2019-08-20 18:24:44 +02:00
Aryeh Gregor
8ec24b607a Introduce MovePageFactory
This will help make MovePage more testable.

In the course of abstracting the logic out of ParserFactoryTest to
FactoryArgTestTrait so it could be used in MovePageFactoryTest, I made
them all unit tests instead of integration. This required some
modification to the Parser constructor so that it didn't access
MediaWikiServices unnecessarily.

Change-Id: Idaa1633f32dfedfa37516bb9180cfcfbe7ca31aa
2019-08-19 20:25:31 +03:00
Amir Sarabadani
4b80ca45f7 Drop last bits of oracle
Undefined constant

Change-Id: I66f17a7647bdcf254695dd0d3a0d49d41a35fff3
2019-08-14 23:44:22 +02:00
Amir Sarabadani
4d10bb14e8 Drop Oracle and Mssql
After approval of RFC T191231, we are going to drop oracle and mssql
and it will be possible to bring back the support using the abstract schema

Adding to release notes will be done in a follow-up

Bug: T230418
Change-Id: I90bd5cfcc3e18011b193c965fdb1fa54675040b5
2019-08-14 11:31:41 +00:00
jenkins-bot
fab912b65c Merge "Create Special:NewSection special page" 2019-08-07 20:24:41 +00:00
Daniel Kinzler
aa4da3c2e8 Revert "Add small HtmlCacheUpdater service class to normalize purging code"
This reverts commit 35da1bbd7c.

Reason for revert: wrong tab, wrong patch. Ooops.

Change-Id: I5828fff6308d43460a3b2b10f60996409181f8b3
2019-08-07 13:56:30 +00:00
Aaron Schulz
35da1bbd7c Add small HtmlCacheUpdater service class to normalize purging code
The purge() method handles purging of both file cache and CDN, using
a PRESEND deferred update. This avoids code duplication and missing
file cache purge calls.

Also:
* Migrate HTMLCacheUpdate callers to just directly using HTMLCacheUpdateJob
* Add HtmlFileCacheUpdate class and defer such updates just like with CDN
* Simplify HTMLCacheUpdate constructor parameters
* Remove BacklinkCache::clear() calls which do nothing since the backlink
  query does not actually happen until the job runs

Change-Id: Ic453b189a40109a73a9426538608eea87a76befa
2019-08-06 13:45:27 -07:00
Aaron Schulz
0bee81df81 Move WANObjectCache to wancache/ instead of WinCache
Follow up 6ca3de5fa0.

Change-Id: I7021dfe5c900f810ab3b6dc701a04e2c3e1c4c66
2019-08-02 22:07:47 +00:00
Aaron Schulz
6ca3de5fa0 Move WAN cache classes under a new wancache/ directory
Change-Id: I6837761ebca7557e029e1f65beca738266e48efb
2019-08-02 14:46:23 -04:00
DannyS712
95b257375c Create Special:NewSection special page
Bug: T207577
Change-Id: If69a8e13b524f55f78b2f61aadf1f9045fda5ff2
2019-08-02 12:34:13 +00:00
jenkins-bot
d64df8329b Merge "Make CliInstaller control the processing logic of the error" 2019-08-01 00:01:08 +00:00
RazeSoldier
b873e9294b Make CliInstaller control the processing logic of the error
Previously, if there was an error during CLI installation,
CliInstaller::showStatusMessage() exited the script directly. The exit
timing of the script should be given to the caller, not the callee.
So, I coding:
[1] Remove `exit()` from CliInstaller::showStatusMessage()
[2] Make the callee to return Status, the caller determine how to handle these Status
[3] Strictly check the key database type instead of just outputting message

Bug: T46511
Change-Id: I72ffd33fe5c592b9ea78f37bae5a9c081295c624
2019-07-29 20:18:08 +08:00
David Causse
ff6b6a758a Add SearchResultSetTrait
trait meant to hold methods that rarely overridden or that are
non trivial to implement.

Bug: T228626
Change-Id: I4fba27b22860109d648e830a435d4a036d26ad06
2019-07-25 15:52:36 +02:00
David Causse
e97ff3524b Add BaseSearchResultSet
Meant to hold the B/C behaviors and be the base class implemented
by extensions.

Bug: T228626
Change-Id: I072a9bd0f94bd785d1ff51f0e6ee13790e37b417
2019-07-25 15:47:01 +02:00
David Causse
6af636fb03 Add ISearchResultSet
Bug: T228626
Change-Id: I3306bf6107c97dd58adf578fd965bd11a422627d
2019-07-22 18:27:39 +00:00
Aaron Schulz
bebe30333d objectcache: add MediumSpecificBagOStuff base class for non-proxy subclasses
This make it much clearer what needs to be overridden

Change-Id: I3073f8a0605f557c6a3a93d0d8401cddd0fb8dbe
2019-07-19 13:01:46 -07:00
jenkins-bot
04d1aa3033 Merge "maintenance: Script to rename titles for Unicode uppercasing changes" 2019-07-10 06:42:16 +00:00
Brad Jorsch
9ef8c9608d maintenance: Script to rename titles for Unicode uppercasing changes
This uses MovePage where possible to try to better keep data in sync.
Archives, log entries, and so on can't do that though.

The script skips User and User_talk pages for registered users, as
renaming the users is more complicated than makes sense to try to
implement here. Use something like Extension:Renameuser to clean those
up; this script can provide a list of user names affected.

Bug: T219279
Change-Id: I157577cb5bedfd347b808c254fb19ae8088818ab
2019-07-09 13:53:43 -04:00
Aaron Schulz
670687fae0 objectcache: add IStoreKeyEncoder interface for key generation helper methods
If a key is stored in both BagOStuff and WANObjectCache, it useful to have
one common method for generating the cache and storage keys.

Change-Id: I8b77651746a55e8a98a79db298226e334d15a494
2019-07-08 22:33:07 +00:00
Reedy
d7451a03e9 Move MultiHttpClient.php to libs/http
Change-Id: I199e615fad363b1439604c9d01a9a475856d6128
2019-07-01 21:47:57 +01:00
Aaron Schulz
baafb5adb4 Make ExternalStore wrap ExternalStoreFactory and create access class
* Inject settings and global instances as dependencies to the
  ExternalStoreMedium instances. This includes the local wiki
  domain, so that wfWikiId() calls are not scattered around.
* Create ExternalStoreAccess service for read/write logic.
* Deprecate the ExternalStore wrapper methods.
* Add some exception cases for bogus store URLs are used instead
  of just giving PHP warnings and failing later.
* Make moveToExternal.php require the type/protocol to decide
  which ExternalStoreMedium to use instead of assuming "DB".
* Convert logging calls to use LoggerInterface.

Change-Id: I40c3b5534fc8a31116c4c5eb64ee6e4903a6197a
2019-06-28 14:31:44 -07:00
David Causse
92c20832f1 Deprecate SearchResult::termMatches()
And start indicating that hooks relying on this data might become
unreliable as this data is only populated by SearchDatabase search
engines.

This information was only populated by SearchDatabase implementations
and due to bad initial design of SearchResult[Set] (now fixed) it forced
users of these classes to carry this information for the sole purpose of
highlighting.
Because SearchEngine can now own their SearchResult[Set] implementations
nothing that is engine specific should be exposed outside of these
specific implementations.
If there are some logic that still requires access to such list of terms
they should be made engine specific by guarding their code against
instanceof SqlSearchResult.

Change-Id: I38b82c5e4c35309ee447edc3ded60ca6a18b247a
Depends-On: I53fe37c65c7940f696c1e184125e01e592a976e4
2019-06-27 08:44:06 -07:00
jenkins-bot
6b9b8b9add Merge "Add Special:Mute as a shortcut for muting notifications" 2019-06-25 17:15:39 +00:00
Dayllan Maza
ed13d3fa56 Add Special:Mute as a shortcut for muting notifications
- Special:Mute has been added as a quick way for users to block unwanted
   emails from other users originating from Special:EmailUser
 - Special:Mute can be enabled by setting $wgEnableSpecialMute = true.
   This flag default value is `false`. This flag is temporary until
   enough wikis have this feature enabled and then it will go away
 - When Special:Mute is enabled, emails sent from Special:EmailUser
   contain a link to Special:Mute to facilitate access to the page

In the future, Special:Mute will support extensions to append other types
of notifications that could be muted. These are some of the tasks tracking
the rest of the work:
- T218270
- T220163
- T218266

It is worth mentioning that blocking emails from users is already available
via Special:Preferences

Bug: T218265
Change-Id: I54b847192f42ee1f37999d36c3a187f8826f55a8
2019-06-24 23:10:02 -04:00
jenkins-bot
7462d3075a Merge "language: Move some language-related classes to includes/language/" 2019-06-19 02:14:15 +00:00
jenkins-bot
efe7286cac Merge "resourceloader: Skip modules with circular deps in tree optimiser" 2019-06-18 22:59:07 +00:00
Timo Tijhof
f557b2be4f language: Move some language-related classes to includes/language/
Bug: T225756
Change-Id: Ica351483d83a3a912d58ebb194b30828541fbcf3
2019-06-18 21:38:44 +00:00
Kunal Mehta
dd8aab7382 Remove unused/deprecated Replacer classes
Change-Id: Ifec6c624810b2354f2fab2c1fd4a27267b625c4b
2019-06-17 15:46:08 -04:00
Timo Tijhof
14547fd9dc resourceloader: Skip modules with circular deps in tree optimiser
Either the server needs to omit these from the registry with
state=error output to the client (and server-side error logging),
or it needs to detect them, and transport them unchanged, so that
the existing client-side logic can handle it.

This patch does the latter.

Without the source code change in this patch, the added test case
fails due to "top" and "middle1" then being registered with
an empty array as dependencies.

Bug: T223402
Change-Id: I57502d7c4e434de4737759aed325dd4200ca89bf
2019-06-13 20:11:44 +00:00
jenkins-bot
699920cc66 Merge "objectcache: add object segmentation support to BagOStuff" 2019-06-13 18:19:17 +00:00
Bartosz Dziewoński
a8dae2212c Allow loading styles for arbitrary OOUI icon packs
You can now create ResourceLoader modules for arbitrary sets of OOUI
icons. This is an alternative to I8af783666a2b23a938af93c1b56fee619219eaf5.

Update dependencies of OOUI's modules to use custom icon packs instead
of default icon packs.

Bug: T160690
Change-Id: Icf9560da79c91e56c7a3f4c0de01dd057f5aa00d
2019-06-11 17:52:23 +00:00
Aaron Schulz
b09b3980f9 objectcache: add object segmentation support to BagOStuff
Use it for ApiStashEdit so that large PaserOutput can be stored.

Add flag to allow for value segmentation on set() in BagOStuff.
Also add a flag for immediate deletion of segments on delete().

BagOStuff now has base serialize()/unserialize() methods.

Bug: T204742
Change-Id: I0667a02612526d8ddfd91d5de48b6faa78bd1ab5
2019-06-11 16:14:17 +01:00
jenkins-bot
dfe30d5118 Merge "Refactor buildPrevNextNavigation" 2019-06-06 09:04:26 +00:00
clarakosi
4ca72763ec Refactor buildPrevNextNavigation
Refactored buildPrevNextNavigation() into standalone helper class,
PrevNextNavigationRenderer, to be used by both SpecialPages and Pagers.

Bug:T207977
Change-Id: Ic49837a451f795ec203e867961ec1c69075cc91a
2019-06-05 19:32:27 -04:00
jenkins-bot
e3705c7b17 Merge "Add action=query&meta=languageinfo API module" 2019-06-04 20:03:38 +00:00
Lucas Werkmeister
67b3cdc004 Add action=query&meta=languageinfo API module
This API module can be used to get information about all the languages
supported by this MediaWiki installation. Since parts of this
information, such as the fallback chain, are expensive to retrieve if
the localization cache is not populated, we apply continuation if the
request is taking too long (suggested by Anomie in T217239#4994301); we
don’t expect this to happen in Wikimedia production, though.

Bug: T74153
Bug: T220415
Change-Id: Ic66991cd85ed4439a47bfb1412dbe24c23bd9819
2019-06-03 12:46:03 +02:00
jenkins-bot
e5ef0fd0c6 Merge "Add checkDependencies.php" 2019-05-29 19:36:04 +00:00
Thalia
e65a5b5882 Rename Block to MediaWiki\Block\DatabaseBlock
Keep Block as a deprecated class alias for DatabaseBlock.
Update calls to the Block constructor and Block static
methods from external classes.

Also update documentation in several places that refer to
blocks as Blocks.

Bug: T222737
Change-Id: I6d96b63ca0a84bee19486471e0a16a53a79d768a
2019-05-28 12:20:48 +01:00
jenkins-bot
cc74170831 Merge "Introduce TransactionRoundAwareUpdate interface" 2019-05-25 21:37:35 +00:00
Aaron Schulz
ef949d79d2 Introduce TransactionRoundAwareUpdate interface
Refactor the deferred update transaction round handling code to use
a new TransactionRoundAwareUpdate interface. Also, rename a few
DeferredUpdates methods so they do not give the impression that
doUpdates() is always called.

Change-Id: Idc4c6d81c4e2ca0ce41bca1e7800f797fa7e37f6
2019-05-25 02:33:05 +00:00
Kunal Mehta
c20215d6f0 Add checkDependencies.php
Checks to see whether the specified MediaWiki extensions/skins have all of
their dependencies. Each thing will get a status of:

* 'loaded' (it's already activated in LocalSettings.php, and therefore all
  the dependencies are present)
* 'present' (it exists in the filesystem, but not yet activated)
* 'missing' (does not exist in the filesystem)
* 'incompatible-*' (some version requirement is incompatible)

JSON output is available with --json for use in scripts.

Development dependencies will be checked if --dev is provided.

This is roughly based on the logic already existing in the Installer. It may
be worth deduplicating that code in the future.

Bug: T193824
Change-Id: Iae9178225c10b6374484274d8848bbea6621c8c2
2019-05-24 11:56:03 -07:00
jenkins-bot
60fbf0d875 Merge "rdbms: improve query logging logic in Database" 2019-05-21 22:12:32 +00:00
Reedy
489370cf07 Remove FileRepoStatus
Change-Id: I4712d7cf8177dd3a7b8157d980dacb88a902262c
2019-05-14 16:55:59 +01:00
Ariel T. Glenn
ee66a53468 move 7zip.inc to a regular php file
Bug: T182814
Change-Id: I53746333fe3c1cdc357bf46d71a351231a845e2f
2019-05-13 11:25:24 +00:00
Ariel T. Glenn
bb880f74b1 move most of dumpTextPass to an include file so it can be subclassed
Bug: T164262
Change-Id: I9b3c54503dd9ad193af7765459613a7e73ffbb45
2019-05-13 10:14:09 +03:00
Aaron Schulz
e0cc49ce39 rdbms: improve query logging logic in Database
* Merge the two debug() calls in attemptQuery() into one single
  call which checks DBO_DEBUG. This avoids pointless SPI logger
  overhead.
* Avoid calling generalizeSQL() unless actually necessary. This
  works via a lazy-loading object.
* Make lastQuery() a bit more consistent in terms of when it
  gets updated.
* Add DBQueryDisconnectedError class for dropped connections.
* Clean up visbility and names of last query/error fields.

Change-Id: Ie8df3434d23b18f7a0f4c056d71388192cc52c6b
2019-05-08 14:58:10 -07:00
Aaron Schulz
920bb76c6d rdbms: remove unused SavepointPostgres class
Change-Id: I45117c10d7f4ab779e95536807dad055c2970117
2019-05-08 21:33:23 +00:00
jenkins-bot
27ede06954 Merge "Move ApiQueryUserInfo::getBlockInfo() to ApiBase" 2019-05-06 12:29:40 +00:00
Amir Sarabadani
693c8b2f5a Move ApiQueryUserInfo::getBlockInfo() to ApiBase
ApiBase directly uses this method causing a cyclic dependency between
ApiBase and ApiQueryUserInfo

Change-Id: I84ed21641c44b2f65ebe1980b0893d1846db3b34
2019-05-06 00:06:30 +02:00
Aaron Schulz
4d8bfbdca4 Add UserOptionsUpdateJob class
This can help avoid DB master queries on HTTP GET requests

Change-Id: I6fa2d53d96509d88f5d3e1ff18f3ca1de8fa4bb1
2019-05-03 12:02:20 -07:00
jenkins-bot
31e768e643 Merge "Make generatePhpCharToUpperMappings.php a proper maintenance script" 2019-05-02 19:34:21 +00:00
Ed Sanders
5b3106f12b Make generatePhpCharToUpperMappings.php a proper maintenance script
This allows us to use Title for converting to upper case which
will respect any compatibility fixes added later.

Bug: T219279
Change-Id: I746487df12e4628f1e37b33b7cc3cce597853596
2019-05-02 10:47:26 -07:00
Aryeh Gregor
18ec468633 Don't pass Config to service constructors
We don't want to depend on the entire site configuration when we only
need a few specific settings.

This change additionally means that these services no longer see a live
version of the settings, but rather a copy. This means in tests you
really do have to call overrideMwServices() if you want services to pick
up your config changes.

ResourceLoader and SearchEngineConfig will need more work to port,
because they expose their member Config in a getter, and the getter is
actually used.

Parser and NamespaceInfo are also relatively complicated, so I split
them into separate patches.

Tested with 100% code coverage. \o/

Depends-On: If6534b18f6657ec1aba7327463f2661037f995b3
Change-Id: I1a3f358e8659b49de4502dc8216ecb6f35f4e02a
2019-05-02 11:33:56 +03:00
Zoranzoki21
4226fada45 Split parser related files to have one class in one file
Change-Id: I36b26609ccb3f135a22961b32a46cdc06603b3e4
2019-04-27 00:41:47 +00:00
Zoranzoki21
2d4eacf50b Split ApiErrorFormatter.php to have one class in one file
Change-Id: I5c6904e32f9bc7fe3aac511c56b03757bfde15a9
2019-04-21 22:20:22 +00:00
Giuseppe Lavagetto
d46835ef4f Add ability to override mb_strtoupper in Language::ucfirst
Different PHP versions treat unicode differently, and specifically some
wiki resources become unreachable if mb_strtoupper's behavior has changed.
This patch allows to introduce an override table that allows to smooth
the transition period.

It also provides maintenance scripts to generate such an override table.

Bug: T219279
Change-Id: I0503ff4207fded4648c58c7b50e67c55422a4849
2019-04-17 15:18:44 +00:00
Aaron Schulz
950c1c3246 filebackend: move more files to subdirectories
Change-Id: If965323809c5bfc9cb73ed0f357233d9325d3353
2019-04-15 02:30:24 -07:00
Reedy
40552888fc Split DairikiDiff to class per file
Change-Id: Ica426312ec69707b9a99dfe2a7deee945c38ba35
2019-04-14 23:37:52 +01:00
jenkins-bot
6955a4afc3 Merge "Split filebackend files to class per file" 2019-04-14 22:24:56 +00:00
Reedy
79502d48e6 Rename PhpBugTests -> PhpXMLBugTester
Only contains one class (probably should be removed when we bump to PHP 7 fully)

Change-Id: Iab2bb837e2ed5d5556bd49f4236030b43aba29f1
2019-04-14 22:03:47 +00:00
Reedy
7f04a47d68 Split filebackend files to class per file
Change-Id: Idf9f4177fb9a523ce41227bda2af923bf418396b
2019-04-14 23:02:13 +01:00
jenkins-bot
63e017f4fc Merge "Split HTMLFormElement.php into class per file" 2019-04-14 21:59:45 +00:00
jenkins-bot
2ba7a9f28d Merge "Move ClassCollector to its own file" 2019-04-14 21:54:10 +00:00
jenkins-bot
81c888ab85 Merge "Move SectionProfileCallback to its own file" 2019-04-14 21:53:00 +00:00
jenkins-bot
89b0d88c38 Merge "Remove XMPReader back compat" 2019-04-14 21:25:47 +00:00
Reedy
14826d1e0c Move ClassCollector to its own file
Change-Id: I881f1ccc4aaf8babc40ad534a2a91f1ccf3baad4
2019-04-14 19:46:18 +00:00
Reedy
6341ee8fa6 Move SectionProfileCallback to its own file
Change-Id: Iccb2048eed6631caa4f20639f55866e76f9fabf0
2019-04-14 19:25:56 +00:00
jenkins-bot
492215443d Merge "Fix casing of Special Pages to match class name" 2019-04-14 19:25:29 +00:00
jenkins-bot
cea4096dd7 Merge "Remove HWLDFWordAccumulator, deprecated in 1.28" 2019-04-14 19:21:26 +00:00
jenkins-bot
535dd60c71 Merge "Remove ObjectFactory" 2019-04-14 19:21:21 +00:00
Reedy
95b8b3a4de Remove XMPReader back compat
Change-Id: I4e3ecbf6c13a7e7cfed88253eb6820e78e49e9c3
2019-04-14 19:12:54 +00:00
Zoranzoki21
e996b53913 Split StubObject.php to have one class in one file
Change-Id: If00625b700962a1c6d6412c6de30c28fa3df9f81
2019-04-14 14:20:42 +00:00
Reedy
ae031e237e Remove HWLDFWordAccumulator, deprecated in 1.28
Change-Id: I1eb6ba3c4b8b4cbabf26033a27728e42ebcddb23
2019-04-14 14:52:41 +01:00
Reedy
dad735ed09 Remove ObjectFactory
Change-Id: Ibfdb55101c893a6724e1f999eba85f2f8eabb79b
2019-04-14 14:48:08 +01:00
Reedy
c28707d371 Fix casing of Special Pages to match class name
Change-Id: Ifc9e827202493e8f055a21875c54ff827a38d1f7
2019-04-14 13:55:04 +01:00
Reedy
a32b1b16ef Split HTMLFormElement.php into class per file
Change-Id: Ia8a35056fa6df5b81cda3e5bfcaac91d0b898d51
2019-04-14 13:38:49 +01:00
Umherirrender
b8ec4a8ff8 Split LocalFile.php to have one class in one file
Change-Id: Ic8e5220f2a1832dfc39f00720001235429ed2cab
2019-04-14 11:45:39 +02:00
Reedy
d1a3d98be9 Move UploadStashFile to its own file
Change-Id: I557bcd8369014bf2ea43c5eb8336562cb6295890
2019-04-14 03:50:59 +01:00
jenkins-bot
2a710e256f Merge "Split logging classes to individual files" 2019-04-14 02:26:45 +00:00
Reedy
f032d27d0c Split logging classes to individual files
Change-Id: I3eaaf23612fe1aed65e49c06a9e5e565399af9ce
2019-04-14 02:13:47 +00:00
Reedy
d8f480bad3 Remove PreferencesFormLegacy.php
Now unused, deprecated in 1.32

Change-Id: I4fc4bdf36b3832786c0266786cff57d512140d8e
2019-04-14 02:08:32 +00:00
Reedy
4be4fdc9cf Split SVGReader to its own file
Change-Id: I9fc442225a37c14d0606508aed5ef496a5ad82ba
2019-04-14 00:29:52 +00:00
Zoranzoki21
3f16fda078 Split ApiImport.php to have one class in one file
Change-Id: I3fbf5d271585722e95b7966ba62dd5e16fa3623f
2019-04-14 01:13:12 +01:00
jenkins-bot
7cb562ce79 Merge "Fix a couple of Generic.Files.OneObjectStructurePerFile.MultipleFound in api" 2019-04-13 23:49:50 +00:00
Reedy
821a4e84dd Fix a couple of Generic.Files.OneObjectStructurePerFile.MultipleFound in api
Change-Id: Ibb6b324b286f62153ce5d08a66454e0b05a0ef78
2019-04-13 23:32:53 +00:00
Timo Tijhof
04e8493822 changes: Split Feed.php into a class per file
Change-Id: I1f11a52871dcb249b3ba790e484dd10fe8bb049f
2019-04-13 23:29:04 +00:00
Max Semenik
20865b4a6f Remove CryptRand and related stuff
Deprecated in 1.31 and not used anywhere.

Change-Id: Idc2e9cec907e39cacc391fdd7e2718bd880081ae
2019-04-11 18:20:09 +01:00
jenkins-bot
3583f4dcd5 Merge "Remove Preferences class" 2019-04-11 16:19:15 +00:00
jenkins-bot
1f163231a6 Merge "Rehabilitate DateFormatter" 2019-04-11 06:45:16 +00:00
Max Semenik
f646a7db13 Remove Preferences class
Deprecated in 1.31, the only extension using it is broken on modern MW
anyway.

Change-Id: Ifa0ea5ad5727254e60511fbc1889923e4bcc189a
2019-04-10 18:19:09 -07:00
jenkins-bot
0d58c1ddda Merge "jobqueue: add GenericParameterJob and RunnableJob interface" 2019-04-10 16:07:09 +00:00
Tim Starling
76ca6c9b18 Rehabilitate DateFormatter
This code is surprisingly little changed since I added the class in
November 2003, and needs some modernisation.

* Remove the "linked" option, unused since 1.21. Similarly, make the
  "match-whole" option implied. This allows the regexes to be
  simplified. Nothing will be broken, according to CodeSearch.
* Instead of ucfirst(), use the canonical month name from the language.
  This will work with e.g. French which does not capitalise month names.
* Stop caching DateFormatter instances in APC. Caching was added
  in 2005 when initialisation was being done on every request, but now
  it is only needed when parsing a page with {{#formatdate}}, which is
  rarely, and the constructor overhead is only 200µs after Language
  object data initialisation. Instead, use an in-process cache via a
  factory service.
* Add docs and extra tests.
* Remove todo note obsolete since 38 minutes after the original commit.
* Rename many variables.
* Use double-slash comments
* Don't store the Language object, just get arrays.
* Use mb_strtolower() instead of Language::lc() -- any customisation of
  Language::lc() would break PCRE case-insensitive matching.
* Use named subpatterns instead of "keys"
* Remove the ISO1/ISO2 distinction, the only difference was linking.
* Use closure variables instead of temporary object members

Change-Id: I25fb1203dba2930724d7bc28ad0d51f59f88e1ea
2019-04-10 21:00:04 +10:00
Aryeh Gregor
76661cf129 NamespaceInfo service to replace MWNamespace
MWNamespace::clearCaches() has been removed entirely, along with the
$rebuild parameter to MWNamespace::getCanonicalNamespaces(). The rest of
MWNamespace is deprecated.

Diff best viewed with -C1 so git notices that NamespaceInfo is a copy of
MWNamespace.

Depends-On: Icb7a4a2a5d19fb1f2453b4b57a5271196b0e316d
Depends-On: Ib3c914fc99394e4876ac9fe27317a1eafa2ff69e
Change-Id: I1a03d4e146f5414ae73c7d1a5807c873323e8abc
2019-04-10 02:07:36 +00:00
Aaron Schulz
fc5d51f129 jobqueue: add GenericParameterJob and RunnableJob interface
Simplify the code of jobs that do not care about titles and removes
the direct Title dependency from JobQueue. Remove getTitle() from
IJobSpecification itself. Move all the Job::factory calls into a
single JobQueue::factoryJob() method.

Depends-on: Iee78f4baeca0c0b4d6db073f2fbcc56855114ab0
Change-Id: I9c9d0726d4066bb0aa937665847ad6042ade13ec
2019-04-08 11:05:23 -07:00
Zoranzoki21
26faca6a20 Move PackedHoverImageGallery from PackedOverlayImageGallery.php
Change-Id: I7a764fa89637dc7c3865dbbbbe0d90d5bc268ed2
2019-04-06 14:12:02 +02:00
Aaron Schulz
eb603040de rdbms: add and enforce DB_REPLICA/DB_MASTER roles in DBConnRef
Even if there is only one database, if a DB_REPLICA connection
reference is obtained and an attempt is made to write it then
it will still fail. This can make it easier to spot incorrect
database usage even in a simple vanilla developer environment.

Note that methods like ILoadBalancer::getConnectionRef() can
be used for local connections as well as foreign ones.

Change-Id: I5523daad1bdd64624d3e0dd41bfd8d078b1078b0
2019-04-05 09:03:50 +00:00
jenkins-bot
f28f7a0d0f Merge "jobqueue: remove entire unused JobQueueAggregator class hierarchy" 2019-04-03 17:43:31 +00:00
Filippo Giunchedi
e783e152a2 monolog: add MwlogHandler
Introduce a new handler, similar to SyslogHandler, that will be used to
replace udp2log. The main feature of the handler is being able to vary
the 'application name' with each record's channel. This way the channel
can be reconstructed later, e.g. when writing to plaintext files.

See also an overview of the plan here:
https://phabricator.wikimedia.org/T205856#4957430

Bug: T126989
Change-Id: I0c040825b31cd70f197dc8c1d406a103dc0ed1d1
2019-04-02 04:57:04 +00:00
Umherirrender
b233e9d188 Move MediaTransformOutput classes to own files
Change-Id: I1c676f18101250ffc28ea412213d568c5a4f527d
2019-03-30 12:23:14 +01:00
Aaron Schulz
196ef348c5 jobqueue: remove entire unused JobQueueAggregator class hierarchy
Change-Id: I3d56d5db54fcb4278c7cf2a8d08933c27773c3f7
2019-03-29 20:25:05 -07:00
Umherirrender
6745cb572a Move class SearchEngineDummy to own file
Each class should have its own file, even it is a no-op

Change-Id: I90124ed35e354c546fcd69d52dc1febb71b2c71f
2019-03-29 20:35:35 +01:00
Aaron Schulz
7ff25118ee rdbms: move some files under rdbms/database to subfolders
Change-Id: I627398d2cfe9fda93a16f94a94e75cf5f8833613
2019-03-28 16:22:07 -07:00
jenkins-bot
670cd4802b Merge "Move PrefixSearch classes to own files" 2019-03-28 21:42:50 +00:00
Krinkle
22476334be Merge "resourceloader: Improve test cases for MessageBlobStore" 2019-03-28 20:37:42 +00:00
jenkins-bot
26fbddd78c Merge "Move HistoryBlob classes to own files" 2019-03-28 10:55:48 +00:00
Timo Tijhof
853a291903 resourceloader: Improve test cases for MessageBlobStore
Move source code to includes/resourceloader to match
test case. This is part of ResourceLoader and not meant
to be used elsewhere.

Merge two similar test cases for getting blobs and fetching
messages which were doing the same thing.

Rewrite the test names to be a better reflection of the stories
they test, add comments for why, and re-order them to put related
tests together.

Move test-utilities to the bottom and make them actually private.

Change-Id: I7a437eebf3ba6a722e286dfe77c2f9fe49ad222f
2019-03-27 23:53:23 +00:00
Umherirrender
8d5a8fb181 Move PrefixSearch classes to own files
Move all into search subfolder

Change-Id: I4097b9745d22545afe6761da1fa67cf98af5b811
2019-03-27 21:40:33 +01:00
jenkins-bot
38760fe587 Merge "resources: Make manageForeignResources a regular maint script" 2019-03-25 20:04:08 +00:00
Umherirrender
7ede3c619a Move HistoryBlob classes to own files
Move all into own subfolder

Change-Id: Iccf1bb9a2c8927c1b4dc0952d59d745109a71f76
2019-03-25 20:29:47 +01:00
Umherirrender
c71a50e2a0 Rename PoolCounter_Stub to PoolCounterNull
Also move to own file
Remove "Stub", because it refers a php concept,
which is not used here

Change-Id: Ife952901b5ad8e4a408d229ee72de953a9acc220
2019-03-24 22:44:46 +01:00
Timo Tijhof
f8fcff31aa resources: Make manageForeignResources a regular maint script
The maintenance script was previously in a subdirectory which
is a bit unusual. It's now a regular maintenance script,
with the YAML file in a more discoverable place as well.

Change-Id: I38690f23dbe89839bee0e1d43ecfd68adeb19c0f
2019-03-24 20:57:46 +00:00
jenkins-bot
b9789f9c56 Merge "add lbzip2 output processor for exports" 2019-03-23 23:35:29 +00:00
Ariel T. Glenn
b01ff36537 add lbzip2 output processor for exports
Bug: T214293
Change-Id: I98e26b833df473bbeb3dc1b881f428174d776b64
2019-03-24 01:20:04 +02:00
jenkins-bot
e548897cab Merge "Move class RevisionListBase and friends to own file" 2019-03-23 22:37:10 +00:00
Timo Tijhof
6b7ddf9c9b Revert "Split out new RefreshSecondaryDataUpdate class"
This reverts commits a1f7fd3ada, 0ef02cd018.

Bug: T218456
Change-Id: I9bbea3d13460ed44755d77fc61ff23fb906cf71e
2019-03-19 14:51:27 +00:00
Piotr Miazga
fd24be4fc5 Provide a Taggable interface
The Taggable interface defines how to tag objects in MediaWiki.
For now there are only two Taggable objects:
 - RecentChange
 - ManualLogEntries

This interface should be used in places where we want to optionally
tag things, for example:
 We want to tag all mobile web actions with 'web mobile edit'.

With that interface, we will be able to expect a Taggable object,
and call `addTags()` when we need to, without having a special check
to verify is it RecentChange, or is it ManualLogEntry. We will only
expect a Taggable object.

Additionally, added @deprecated note to ManualLogEntries::setTags()
as each call to this method will override all previous tags. This
action can be harmfull to parts of code that conditionally add tags.
If object was tagged in some way, we should preserve those tags.

If there are any special cases, where we want to override all tags,
we should provide `resetTags()` method.

Bug: T215675
Change-Id: Ia4c019db8ca6f37ce0f86bf7d134d6f1713daf56
2019-03-18 23:10:06 +01:00
Timo Tijhof
4677392718 Remove wgSitesCacheFile and rebuildSitesCache.php (unused)
This seems to have been intended as optimization for SiteStore,
but was never used as far as I can tell. Instead, SiteStore is
already cached via LocalServerCache (APC).

Keep the FileBasedSiteLookup class for one release cycle in case
third parties not indexed by MediaWiki Codesearch are using it.

== History

* 2013: Report of high memcached usage by Wikibase via SiteStore.
* 2014: Lazy-load the data in Wikibase (d3f2e99cb6).
* 2014: Implement the file-based cache (via T47532 and 90f6efc360).
* 2015: Use local-server cache (APC), per T58602.

The file-based code was never used. The related task marked
invalid (T47532).

Change-Id: I8e2d9edcf3880149f824cc3de37793ca57435b49
2019-03-15 20:03:44 +00:00
Aaron Schulz
a1f7fd3ada Split out new RefreshSecondaryDataUpdate class
Make DerivedPageDataUpdater bundle all the related DataUpdate tasks
on page change with a RefreshSecondaryDataUpdate wrapper. If one of
the DataUpdate tasks fails, then the entire bundle of updates can be
re-run in the form of enqueueing a RefreshLinksJob instance (these
jobs are idempotent). If several of the bundled tasks fail, it is easy
for DeferredUpdates to know that only one RefreshLinksJob should be
enqueued.

The goal is to make DataUpdate tasks more reliable and resilient.
Most of these deferred update failures are due to ephemeral problems
like lock contention. Since the job queue is already able to reliably
store and retry jobs, and the time that a regular web request can spend
in post-send is more limited, it makes the most sense to just enqueue
tasks as jobs if they fail post-send.

Make LinkUpdate no longer defined as enqueueable as RefreshLinksJob
since they are not very congruent (LinksUpdate only does some of the
work that RefreshLinksJob does). Only the wrapper, with the bundle of
DataUpdate instances, is congruent to RefreshLinksJob.

This change does not itself implement the enqueue-on-failure logic
in DeferredUpdates, but is merely a prerequisite.

Bug: T206288
Change-Id: I191103c1aeff4c9fedbf524ee387dad9bdf5fab8
2019-03-15 17:14:50 +00:00
Umherirrender
3265bbb184 Move class RevisionListBase and friends to own file
Change-Id: I2c3675286bef948585ee0364288081aad9fd4376
2019-03-14 19:50:40 +01:00
jenkins-bot
c4022f1e98 Merge "Move class HistoryPager to own file" 2019-03-10 03:25:36 +00:00
Umherirrender
9d5e2fd751 Move class RangeDifference to own file
Change-Id: I5262c7484017a0d920cc24297515d5946f614ee6
2019-03-08 23:29:14 +01:00
Umherirrender
ba03d8f32a Move CacheDependency classes to own files
Change-Id: Icacf36674f10fa19a09499d68d596d5e2cc235f0
2019-03-08 22:27:29 +01:00
Umherirrender
11ce0ab99b Move class HistoryPager to own file
Change-Id: Ie12e79e6f32225442b5bd794826f8c760b2c02d6
2019-03-08 21:56:38 +01:00
Umherirrender
d515f784e5 Move class JobQueueAggregatorNull to own file
Change-Id: Icb76f25eb9c2a26c91ba564a78edd4c07b49b944
2019-03-08 20:19:26 +01:00
James D. Forrester
3f717984c1 Drop AuthPlugin and related code, deprecated in 1.27
Bug: T215843
Depends-On: Ie49709faa6f67b0a31bd546823d29dbfea0a70eb
Depends-On: If8109dbfdeeb88a6265f4cd79d1ae81bff48d934
Depends-On: I36b195fa2d6c23a76631ebaf869c787e44427d60
Depends-On: Iaa171b085fde331eab7d85c7de74523e27fc625a
Change-Id: I330b30d6582034a233fed204c0680b1ce84eec6e
2019-03-05 08:23:14 +00:00