Commit graph

125 commits

Author SHA1 Message Date
Reedy
a12c1bdb1b WikiImporter: Minor code style changes
Change-Id: I8001629ed8511b3d5ffaedea1041c8043cebb8f9
2021-02-08 00:09:15 +00:00
Reedy
0a9b320934 Remove unused variable from WikiImporter::doImport()
Change-Id: I98665fa692394c486aeb48df35369921c51cd9b1
Follows-Up: I52c1e597e1588941d50211d1c71fc19cc414d8e4
2021-02-08 00:03:06 +00:00
jenkins-bot
28365e1365 Merge "Improve and add documentation to import/export related classes" 2021-02-05 03:14:35 +00:00
Cindy Cicalese
5576727771 Make UserIdentity objects aware of which wiki they belong to.
Bug: T260933
Change-Id: Ic986640cc34e6ec6be239e410a8334f0e299c682
2021-02-02 16:10:51 +00:00
Umherirrender
56b2bd653a Improve and add documentation to import/export related classes
Change-Id: Ib2a74c1ac1a1902341e289961f4c1aa4dadd4bd8
2021-02-01 19:35:49 +00:00
Reedy
256e6ff0d9 Revert "Wrap libxml_disable_entity_loader() calls in version constraint"
This reverts commit a4c69bde13.

Reason for revert: Needs a bit more thinking about

Bug: T268847
Change-Id: I82a7bb2a4ef15adc65717d5ba173c8f3cfb0644c
2021-01-27 16:06:38 +00:00
Reedy
a4c69bde13 Wrap libxml_disable_entity_loader() calls in version constraint
Bug: T268847
Change-Id: I56684ce7b39aaebe1ae76811b833bc9183bc359b
2021-01-27 00:42:31 +00:00
Ariel T. Glenn
6df4b78e36 WikiRevision::model can be null so don't pass it as an arg
Use getModel() as the arg instead

Change-Id: Ie23d31885416abdcc639f4fc5028961ba80de495
2021-01-22 13:30:17 +02:00
Reedy
77f631ea5e composer.json: Add ext-libxml and ext-xmlreader to requires
Change-Id: I1c82ec4f2b521ff9dc2d4604cf1007847f32f7de
2020-12-27 22:01:02 +00:00
Ammar Abdulhamid
96bcbcd758 WikiImporter: Replace deprecated WikiRevision::setText
Change-Id: Ic1626a95f4dbb9ca848422e095e3098f2393cca9
2020-11-30 10:14:53 +00:00
jenkins-bot
29c1a731cf Merge "Simplify try-block and exception rethrow" 2020-11-20 06:29:11 +00:00
Ammar Abdulhamid
00e0b40213 Hard deprecate WikiRevision::importUpload
Soft deprecated since 1.31 and no longer in use save one usage
in WikiImporter which has been replaced too.

Change-Id: I88305fb7579d66fd402646f1717f2d528bf90d02
2020-11-20 04:45:19 +01:00
Ammar Abdulhamid
2defaa19ea Simplify try-block and exception rethrow
Since we only want close the reader and entity loader, there's
no need for catch and rethrow as finally can handle this as we want.

Change-Id: I52c1e597e1588941d50211d1c71fc19cc414d8e4
2020-11-20 04:32:40 +01:00
Umherirrender
539b6abba2 Replace deprecated WikiPage::factory in import/export related classes
Change-Id: I58c5d1bc7bfca872fe0bcfdc51828dcef5abdf02
2020-11-15 18:32:21 +00:00
Petr Pchelko
f11ed7e46f Add forgotten import hook interface
When making primitive tests for HookRunner in
I8d0a34e185aad79a391acdd47e506c8911c75257 I've
notived that coverage was not 100% and found that
this hook interface was forgotten.

Change-Id: Ic877fd1f2bbac5a1af708f283e9e0b7a49f89d88
2020-11-02 08:17:34 -07:00
daniel
2e57447c58 Document hook names in hook interfaces.
Bug: T258665
Change-Id: Ifddbf57f8aa2e3eb0d5845601376cbafa08ed407
2020-09-27 12:03:12 +02:00
DannyS712
e834b31b2b Use recordUpload3, hard deprecate recordUpload2
Also reduces references to $wgUser in importImages

Bug: T248813
Change-Id: I17c850000044f65f2fcfdfcfb82f852583a99000
2020-09-10 00:00:42 +00:00
Ed Sanders
7683f7d839 Use strict (in)equality with namespaces constants when LHS is definitely an integer
Change-Id: I8fede00dfe1270d93c5d78d3c36e788cddfc8a99
2020-07-31 18:03:28 +01:00
daniel
cd6d423eef Import: use master DB for loading slots.
We were using the master to load revision data from the revision
table, but not when loading slot data. We should use the master DB for
both, consistently.

Bug: T258666
Change-Id: I800adb852ec690b63fa926f40428de3272d69584
2020-07-23 18:34:34 +02:00
Cindy Cicalese
f3556c729e Remove backward compatibility code from ImportableOldRevisionImporter
The last constructor parameter is now mandatory.

Depends-on: Ifd5dbc2b947533a5e926c581e1c5a67e4af147dc
Bug: T220525
Change-Id: I47071440a9696f18568e542fe6eee32843c28210
2020-07-23 12:25:56 +00:00
Cindy Cicalese
c69489f44c Check for unknown slot.
Bug: T220525
Change-Id: I89ac1679ea70cb403433f8b97fe11e8eb6811280
2020-07-20 10:39:28 -04:00
daniel
7ffacacc6b MCR import
Bug: T220525
Change-Id: I7d41a8af12e33aed802526eb39a0880292c4f534
2020-07-18 20:34:16 -04:00
daniel
e6e0ad2472 Replace "@stable for implementation" with "@stable to implement"
For compliance with the new version of the table interface policy
(T255803).

This patch was created by an automated search & replace operation
on the includes/ directory.

Bug: T257789
Change-Id: I17e5e92e24c708ffc846945a136347670a3a20c7
2020-07-13 11:05:49 +02:00
daniel
f59bf8a22f Use @internal instead of @private per policy
https://www.mediawiki.org/wiki/Stable_interface_policy mandates the use
of @internal. The semantics of @private was never properly defined.

Bug: T247862
Change-Id: I4c7c6e7b5a80e86456965521f88d1dfa7d698f84
2020-06-26 14:14:23 +02:00
DannyS712
538cfa4010 WikiPage::doEditUpdates - accept a RevisionRecord object
Passing a Revision is hard deprecated

Bug: T249563
Change-Id: Ic3f8fe9ed05820174b9cc3e9d2f4d17718947da0
2020-06-16 02:06:25 +00:00
DannyS712
bcc555d67a ImportableOldRevisionImporter: Don't call WikiPage::updateIfNewerOn
Bug: T250318
Change-Id: I96bd5b8c226a54e0534d1930a430d9ab7b8af8ce
2020-06-15 21:22:27 +00:00
Tim Starling
47a1619027 Remove terminating line breaks from debug messages
A terminating line break has not been required in wfDebug() since 2014,
however no migration was done. Some of these line breaks found their way
into LoggerInterface::debug() calls, where they mess up the formatting
of the debug log.

So, remove terminating line breaks from wfDebug() and
LoggerInterface::debug() calls.

Also:
* Fix the stripping of leading line breaks from the log header emitted
  by Setup.php. This feature, accidentally broken in 2014, allows
  requests to be distinguished in the log file.
* Avoid using the global variable $self.
* Move the logging of the client IP back to Setup.php. It was moved to
  WebRequest in the hopes that it would not always be needed, however
  $wgRequest->getIP() is now called unconditionally a few lines up in
  Setup.php. This means that it is put in its proper place after the
  "start request" message.
* Wrap the log header code in a closure so that variables like $name do
  not leak into global scope.
* In Linker.php, remove a few instances of an unnecessary second
  parameter to wfDebug().

Change-Id: I96651d3044a95b9d210b51cb8368edc76bebbb9e
2020-06-03 12:01:16 +10:00
Tim Starling
68c433bd23 Hooks::run() call site migration
Migrate all callers of Hooks::run() to use the new
HookContainer/HookRunner system.

General principles:
* Use DI if it is already used. We're not changing the way state is
  managed in this patch.
* HookContainer is always injected, not HookRunner. HookContainer
  is a service, it's a more generic interface, it is the only
  thing that provides isRegistered() which is needed in some cases,
  and a HookRunner can be efficiently constructed from it
  (confirmed by benchmark). Because HookContainer is needed
  for object construction, it is also needed by all factories.
* "Ask your friendly local base class". Big hierarchies like
  SpecialPage and ApiBase have getHookContainer() and getHookRunner()
  methods in the base class, and classes that extend that base class
  are not expected to know or care where the base class gets its
  HookContainer from.
* ProtectedHookAccessorTrait provides protected getHookContainer() and
  getHookRunner() methods, getting them from the global service
  container. The point of this is to ease migration to DI by ensuring
  that call sites ask their local friendly base class rather than
  getting a HookRunner from the service container directly.
* Private $this->hookRunner. In some smaller classes where accessor
  methods did not seem warranted, there is a private HookRunner property
  which is accessed directly. Very rarely (two cases), there is a
  protected property, for consistency with code that conventionally
  assumes protected=private, but in cases where the class might actually
  be overridden, a protected accessor is preferred over a protected
  property.
* The last resort: Hooks::runner(). Mostly for static, file-scope and
  global code. In a few cases it was used for objects with broken
  construction schemes, out of horror or laziness.

Constructors with new required arguments:
* AuthManager
* BadFileLookup
* BlockManager
* ClassicInterwikiLookup
* ContentHandlerFactory
* ContentSecurityPolicy
* DefaultOptionsManager
* DerivedPageDataUpdater
* FullSearchResultWidget
* HtmlCacheUpdater
* LanguageFactory
* LanguageNameUtils
* LinkRenderer
* LinkRendererFactory
* LocalisationCache
* MagicWordFactory
* MessageCache
* NamespaceInfo
* PageEditStash
* PageHandlerFactory
* PageUpdater
* ParserFactory
* PermissionManager
* RevisionStore
* RevisionStoreFactory
* SearchEngineConfig
* SearchEngineFactory
* SearchFormWidget
* SearchNearMatcher
* SessionBackend
* SpecialPageFactory
* UserNameUtils
* UserOptionsManager
* WatchedItemQueryService
* WatchedItemStore

Constructors with new optional arguments:
* DefaultPreferencesFactory
* Language
* LinkHolderArray
* MovePage
* Parser
* ParserCache
* PasswordReset
* Router

setHookContainer() now required after construction:
* AuthenticationProvider
* ResourceLoaderModule
* SearchEngine

Change-Id: Id442b0dbe43aba84bd5cf801d86dedc768b082c7
2020-05-30 14:23:28 +00:00
DannyS712
3c293332ea ImportableOldRevisionImporter: Remove use of Revision::insertOn
Bug: T251856
Change-Id: Ie1764d5d8f8711eb0c7792be307728e3042fc444
2020-05-16 08:38:41 +00:00
Umherirrender
018f9a3bd4 Add missing visibility on methods related to import/export
Change-Id: Iec6646a55a8c5d8e8a56dc7bccf8ef98a998ce1a
2020-05-09 11:56:48 +00:00
Tim Starling
550f5930f2 Hook interface type fixes, to fix Phan errors
Phan flagged a lot of incorrect type hints when run against the call
site migration patch.

Bug: T240307
Change-Id: I698de5536446c241b200430198b21b72763b0c69
2020-05-05 11:22:04 +10:00
apaskulin
c44488f725 docs: Hook interface doc comment review
Edited doc comments for hook interfaces to improve
consistency and add type hints.

Bug: T246855
Change-Id: I38fa802463cd6f39bf5946dbbeb1b3ebaea604b2
2020-04-21 09:10:08 +10:00
Tim Starling
f5aaf75ad1 Automatically generated hook interfaces
Add hook interfaces which were generated by a script which parses
hooks.txt and identifies caller namespaces and directories.

Hook interfaces are mostly placed in a Hook/ subdirectory
relative to the caller location. When there are callers in multiple
directories, a "primary" caller was manually selected. The exceptions to
this are:

* The source root, maintenance and tests, which use includes/Hook. Test
  hooks need to be autoloadable in a non-test request so that
  implementing test interfaces in a generic handler will not fail.
* resources uses includes/resourceloader/Hook
* The following third-level subdirectories had their hooks placed in
  the parent ../Hook:
    * includes/filerepo/file
    * includes/search/searchwidgets
    * includes/specials/forms
    * includes/specials/helpers
    * includes/specials/pagers

Parameters marked as legacy references in hooks.txt are passed
by value in the interfaces.

Bug: T240307
Change-Id: I6efe2e7dd1f0c6a3d0f4d100a4c34e41f8428720
2020-04-20 13:31:05 +10:00
Umherirrender
878330ae30 Use MediaWikiServices::getRepoGroup
Change-Id: Ibcef425c2e0c95d6d2f98b8d889f85ebcb33f20a
2020-03-14 13:16:12 +01:00
Tim Starling
7cdebd61b7 Use array literals when calling Hooks::run()
To make static analysis and call site replacement easier.

Bug: T240307
Change-Id: I93ab9784b60df633292997ccb1c28f303634c87c
2020-03-04 11:08:30 +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
James D. Forrester
0958a0bce4 Coding style: Auto-fix MediaWiki.Usage.IsNull.IsNull
Change-Id: I90cfe8366c0245c9c67e598d17800684897a4e27
2020-01-10 14:17:13 -08:00
jenkins-bot
2b04ef6657 Merge "Set method visibility for various constructors" 2019-12-05 10:23:34 +00:00
Umherirrender
0688dd7c6d Set method visibility for various constructors
Change-Id: Id3c88257e866923b06e878ccdeddded7f08f2c98
2019-12-03 20:17:30 +01:00
Thiemo Kreuz
78ca9eff4a Remove duplicate variable name from class property PHPDocs
Repeating the variable name doesn't do anything. Documentation
generators don't need it. It's more stuff to read that doesn't add new
information. And it can become outdated.

Note there are two types of @var docs. When used inline (and not on a
class property) the variable name is needed.

Change-Id: If5a520405efacd8cefd90b878c999b842b91ac61
2019-12-02 12:58:29 +00:00
Umherirrender
c7ad21c25f Improve param docs
Change-Id: I746a69f6ed01c3ff000da125457df62b02d13b34
2019-11-28 19:08:59 +01:00
Thiemo Kreuz
5f3815e6ac import: Update docs about WikiRevision requiring a Config
Change-Id: I5a3d6883150d63d16c1d59ae202e884acb7ec429
2019-09-17 16:36:32 +02:00
Daimona Eaytoy
dddc912fd6 Update docblocks for methods potentially returning null
These were discovered by setting `null_casts_as_any_type` to true in
phan, and filtering by `PhanTypeMismatchReturnNullable`. Of course there
are others, some of which are false positives, but we cannot suppress
them now (or the UnusedSuppressionPlugin will complain).

Change-Id: Ia8443e575c22f47a6d8c63038f4e7ac36815fc27
2019-09-15 15:22:39 +00:00
Daimona Eaytoy
290ab29617 Declare dynamic properties
This is for classes with a single undeclared property - aside from
BlockManager: I3f51fd3579514b83b567dfe20926df2f0930dc85 removed the
declaration of $permissionManager without actually removing all uses.

Change-Id: Ic2a95f77071312041be6e0633ea9b5325e98de42
2019-09-14 15:21:26 +02:00
Daimona Eaytoy
9699158f74 Declare dynamic properties
This is for all classes with 2 or more undeclared properties.

Change-Id: I1d80deb31f331bcc277b33f9e9f74857ba825637
2019-09-13 17:54:37 +00:00
Daimona Eaytoy
b3e4a6f61f Add docblocks to a bunch of methods
Copied from I014ea7f048862cc8cc387a68bf0f1cc5acbd9c6e.

Change-Id: Ic3216386af173cfb9cbffda0826879829e52ffbb
2019-09-08 18:33:31 +00:00
Aaron Schulz
2c87b59f35 filerepo: Use @method LocalRepo::newFile() to document the return type
This avoids PhpStorm IDE warnings

Change-Id: I521aa1b1243ceabd40e7da18bf73ab95af7039cc
2019-09-04 20:12:23 +02:00
jenkins-bot
bb575f1dc7 Merge "Include change tags in revision import structure" 2019-09-04 09:46:56 +00:00
Adam Wight
b6afa0bd1b Include change tags in revision import structure
This makes it possible to import change tags, which will be leveraged by
Extension:FileImporter.

Bug: T227849
Change-Id: I70a8df2b2be0ec11806eb8d798115c52683cc787
2019-09-03 21:14:16 +02:00
Daimona Eaytoy
c659bc6308 Unsuppress another phan issue (part 7)
Bug: T231636
Depends-On: I2cd24e73726394e3200a570c45d5e86b6849bfa9
Depends-On: I4fa3e6aad872434ca397325ed7a83f94973661d0
Change-Id: Ie6233561de78457cae5e4e44e220feec2d1272d8
2019-09-03 17:19:21 +00:00