Commit graph

1064 commits

Author SHA1 Message Date
jenkins-bot
1cbafee5de Merge "[ParsoidParser] Remove unneeded code to set render ID" 2024-07-30 16:54:51 +00:00
Umherirrender
07db7102cc Replace deprecated LogFormatter::newFromRow/newFromEntry
Change-Id: I453ce3148a46fcb9cc5c685cee92274e0cb4f98a
2024-07-29 22:26:41 +02:00
Kunal Mehta
4d49a4a59e Extract LintErrorChecker out of SignatureValidator
This code was partially copied into MassMessage and will hopefully
enable more places that accept arbitrary wikitext to check lint errors.

It also hides the internal details of checking with the Linter
extension's configuration in one place until it can be refactored into
something more acceptable (T360809).

Bug: T368690
Change-Id: Iaeb3ccbd61a2a8cb0d8b3dc8b06a3a10bc8fa653
2024-07-29 14:35:40 -04:00
Arlo Breault
44580945ed Add OutputPipelineStages from extensions
Adds an experimental configuration to allow extensions to define
OutputPipelineStages to include in the DefaultOutputPipeline.

There are a lot of open questions about this api, like ordering of
execution, but adding it @experimental will help surface the
requirements.

Bug: T370541
Needed-By: I6dc92af0611c680b6e55605a7c9ff8a3fc1dfa26
Change-Id: I64baea40a1687c7a06fbcda9efe9f9a159b0ae8d
2024-07-25 11:44:17 -04:00
jenkins-bot
426bf0f280 Merge "Add support for user-groups-based conditional options filter" 2024-07-23 17:56:46 +00:00
jenkins-bot
2c6d357b9b Merge "Extract StatsFactory methods in parsoid SiteConfig" 2024-07-19 22:20:18 +00:00
C. Scott Ananian
16de2c0851 [ParsoidParser] Remove unneeded code to set render ID
Since I72c5e6f86b7f081ab5ce7a56f5365d2f75067a78 it is part of the
contract of ContentRenderer::getParserOutput() that the render ID (and
other cache parameters) will be set when it returns.
(ContentHandler::getParserOutput() can set them even earlier if it has
custom content-based overrides.)  We had a lot of temporary
backward-compatibility code "later" in the parse process to try to close
the barn door if some code path "forgot" to set them, but these are
unnecessary now.

This patch removes that backward-compatibility code in ParsoidParser;
there is similar remaining code in ParserCache etc. which can be
addressed in follow ups.

(For compatibility we do have to temporarily copy the render ID code
inside ParsoidOutputAccess::parseUncachable, but that class is
deprecated and will be removed.)

The HtmlOutputRendererHelper path which used to call
ParsoidParser::parseFakeRevision() is now replaced with a codepath that
goes through RevisionRenderer.  In order to maintain the same behavior
of the ParsoidHandler, we have also added 'useParsoid' handling to the
JsonContentHandler.  This support can perhaps be deprecated eventually.

Bug: T350538
Change-Id: I0853624cf785f72fd956c6c2336f979f4402a68f
2024-07-19 16:09:32 -04:00
jenkins-bot
e0a15799cd Merge "[HtmlOutputRendererHelper] Remove use of ParsoidOutputAccess::parseUncacheable" 2024-07-19 11:13:51 +00:00
jenkins-bot
eebc96e10c Merge "BacklinkCache: cleanup, use fullResultCache with limit" 2024-07-19 10:36:27 +00:00
C. Scott Ananian
1a1ac6a82d [HtmlOutputRendererHelper] Remove use of ParsoidOutputAccess::parseUncacheable
This removes the last use of ParsoidOutputAccess in core, allowing it
to be deprecated and eventually removed.

Bug: T367074
Bug: T317018
Change-Id: Ica2c880e2e7c2b126aaea66a3e4be460b3f2234f
2024-07-19 03:09:32 -04:00
jenkins-bot
609cdb524b Merge "permissions: Use UserIdentityLookup in PermissionManager" 2024-07-12 14:54:58 +00:00
Yiannis Giannelos
90bac43f11 Extract StatsFactory methods in parsoid SiteConfig
* Its not very clean to import Wikimedia\Stats in parsoid
  * Mediawiki depends on parsoid
* As a workaround we can extract the 2 methods we need in SiteConfig

Bug: T354908
Change-Id: I696131cfba6ccc26ae1f705f216e221a7c3db175
2024-07-10 18:01:56 +02:00
Ebrahim Byagowi
fab78547ad Add namespace to the root classes of ObjectCache
And deprecated aliases for the the no namespaced classes.

ReplicatedBagOStuff that already is deprecated isn't moved.

Bug: T353458
Change-Id: Ie01962517e5b53e59b9721e9996d4f1ea95abb51
2024-07-10 00:14:54 +03:30
Umherirrender
41439e607f permissions: Use UserIdentityLookup in PermissionManager
Replace UserCache with UserIdentityLookup
UserIdentityLookup is implemented by ActorStore and
there is already a cache

Change-Id: I8a59e77391da45d2726aab3d5432f08ad0c9a84f
2024-07-09 19:57:40 +00:00
Jon Robson
f18b9f6f3d ServiceWiring: Hide Skin Json from Special:Preferences
Follow up to c33b31728d
The skin is showing up on Special:Preferences as a selectable
skin. Choosing this would make the site unreadable without applying
?useskin=vector-2022 on the URL.

The last parameter makes it an internal skin and therefore
not shown on preferences page.

Bug: T364696
Change-Id: I3f95b68692fe8ae9d05d2f3187986774ef91ba6d
2024-07-03 01:43:48 +00:00
Jon Robson
c33b31728d Skins: Support useskin=json
This allows rendering of the data passed to the skin rendering
layer, to allow developers to debug the information used to render
a skin.

Bug: T364696
Change-Id: I32aaa6a85d24df4f4689269f6a455823bb08196b
2024-07-02 21:29:00 +00:00
xtex
a668a1bbea Add support for user-groups-based conditional options filter
Bug: T363059
Change-Id: I728cacf6acfc02ecb0ef9b3695e7770c2d3f8d83
2024-06-29 07:07:06 +00:00
Tim Starling
d5ac0b40d0 BacklinkCache: cleanup, use fullResultCache with limit
* In queryLinks(), use the full result cache even if a limit is
  specified. Truncate the result in the caller if necessary.
* Remove the confusing boolean parameter from partitionResult(). Make it
  always false and fix up the results afterwards. So the batches are
  always the inclusive start and end IDs, false is never returned.
* Inject a logger instead of using wfDebug()
* Use private not protected. Defaulting to protected was just a coding
  style quirk I had at the time.
* In queryLinks(), use early return.
* In hooks BacklinkCacheGetConditionsHook and BacklinkCacheGetPrefixHook
  adjust the parameter type hint to avoid the need for a Phan override.

Change-Id: Ia53f494633affe48316f0a8b63d03596239ad53c
2024-06-28 15:04:16 +10:00
Umherirrender
9879723ef3 Use namespaced classes (1)
Changes to the use statements done automatically via script
Addition of missing use statement done manually

Change-Id: Ic4d4dd61de5ab896fb6173eb579c81f164a1e4a3
2024-06-16 20:18:23 +02:00
frankie
17b2250683 Migrate MediaWiki.editstash to statslib
Modifies incrStatsByContent in order to migrate cache_misses, cache_hits to Prometheus backend

Bug: T359465
Change-Id: I78afac7437bc2849b64f43c23477d702b94e907b
2024-06-13 17:11:33 +00:00
jenkins-bot
ce3767dd85 Merge "user: Introduce UserOptionsStore" 2024-06-13 13:06:27 +00:00
jenkins-bot
0d29a60676 Merge "User objectCacheFactory methods not deprecated ObjectCache methods" 2024-06-12 12:42:05 +00:00
Tim Starling
cdc5178150 user: Introduce UserOptionsStore
Refactoring:

* Break out the database access part of UserOptionsManager to a separate
  class hierarchy implementing interface UserOptionsStore. It's
  basically a key/key/string-value store, very simple. The complex
  parts of user options storage remain in UserOptionsManager.
* Bundle the UserOptionsManager caches into a per-user cache object. I
  was adding a couple more and it was getting tedious.

Start integrating GlobalPreferences with UserOptionsManager:

* Have an array of stores. There's always a local store, and extensions
  can add stores via an attribute.
* Add $global parameter to UserOptionsManager::setOption(), allowing
  this method to update or override global options.
* Rename loadOptionsFromDb to loadOptionsFromStore.
* Move the local override feature from GlobalPreferences to core.

Bug: T323076
Change-Id: Ib3623b723557c819bc0ffdf21a4ffcb070eb298b
2024-06-12 01:27:57 +00:00
jenkins-bot
f9ae750806 Merge "Use $stage::CONSTRUCTOR_OPTIONS in DefaultOutputPipelineFactory" 2024-06-11 02:38:38 +00:00
jenkins-bot
1da7b2f8ae Merge "Implement RedirectStore service" 2024-06-11 02:27:40 +00:00
Máté Szabó
a1576cba3c Implement RedirectStore service
I469de6f85e405e8ddbe7abaa5b99b77cb9cf415d added an initial RedirectStore
implementation, but it has remained a stub despite the corresponding
task being closed. So, flesh out the implementation by moving the
corresponding logic from WikiPage.

Soft-deprecate WikiPage::insertRedirectEntry() accordingly.

Bug: T290639
Change-Id: Ia500df45bc969ce77b6b2a06bfec10e32c00b931
2024-06-11 02:03:55 +00:00
C. Scott Ananian
292709cc13 Use $stage::CONSTRUCTOR_OPTIONS in DefaultOutputPipelineFactory
Rather than have DefaultOutputPipelineFactory::CONSTRUCTOR_OPTIONS be a
union of all the options needed by all the stages, allow each stage to
define its own CONSTRUCTOR_OPTIONS and pass a Config object to the
DefaultOutputPipelineFactory service.

In the process, move the $options and $logger properties into the
abstract superclass, since they are passed to every stage.

Bug: T363764
Followup-To: I64aeb81b395ba84e1d839dfbd31decf16c337cd0
Change-Id: I7d386b22c7d8e99b6dfe4cf798069914ac9af373
2024-06-10 20:53:21 -04:00
Arlo Breault
6011792afa Refactor DI in OutputTransform stages
Bug: T363764
Change-Id: I64aeb81b395ba84e1d839dfbd31decf16c337cd0
2024-06-10 16:30:06 -04:00
Arlo Breault
276fc1608a Inject MobileContext in DefaultOutputPipelineFactory
Change-Id: I613893fa236be956a4850a52a03a40e620c7ce64
2024-06-10 15:11:01 -04:00
Wandji69
1665ea876f User objectCacheFactory methods not deprecated ObjectCache methods
Bug: T363770
Change-Id: I2335b315bec6a540409492df4891c518640966d5
2024-06-06 09:59:24 +01:00
C. Scott Ananian
64d343353e [HtmlOutputRendererHelper] Use ParserOutputAccess
One more step in gradually replacing uses of ParsoidOutputAccess with
ParserOutputAccess.  This is mostly just inlining the code from
ParsoidOutputAccess (which already uses ParserOutputAccess internally)
and then removing dead code.

Change-Id: I87d6568d9dc71bc11f406ea3c31ce86e01667e05
2024-06-05 10:37:36 -04:00
jenkins-bot
742681d2f5 Merge "[HtmlInputTransformHelper] Use ParserOutputAccess" 2024-05-28 17:23:25 +00:00
jenkins-bot
07ece77e44 Merge "Add MediaWiki\Watchlist namespace to the related classes" 2024-05-23 23:12:10 +00:00
jenkins-bot
2de29c2af5 Merge "ServiceWiring: Drop _LocalClusterCache service" 2024-05-23 20:17:37 +00:00
jenkins-bot
7fc3b17a9e Merge "LoginSignupSpecialPage: Support &display=popup" 2024-05-23 16:03:19 +00:00
jenkins-bot
024e0202a4 Merge "Allow undeletion of IP revisions when temp accounts are enabled" 2024-05-23 14:37:16 +00:00
Derick Alangi
83bb1d45db
ServiceWiring: Drop _LocalClusterCache service
With the ObjectCacheFactory refactor in T358346, this service is
pretty much used in 2 places, (1) service wiring which can be replaced
and (2) in MediaWikiIntegrationTestCase.

The service can be removed entirely and the local cluster cache gotten
from the ObjectCacheFactory service injected via service wiring. Hence,
usage of this internal service can be removed.

NOTE: See followup: 7475063 for the TODO to drop this service entirely.

Change-Id: I173f04456df6cc1782cec2f16d6653c6b0826dce
2024-05-23 13:36:33 +01:00
Dreamy Jazz
400c2a62ee Allow undeletion of IP revisions when temp accounts are enabled
Why:
* When wgAutoCreateTempUser['enabled'] is true, calling ActorStore
  ::acquireActorId for an IP address user will throw a
  CannotCreateActorException to prevent attributing actions to IP
  addresses.
* When using Special:Undelete to undelete a page that has IP
  addresses who have made edits, the UndeletePage call to the
  ActorStore::acquireActorId causes an exception.
* However, the revisions already existed so (similar to importing
  revisions) it does not represent a leak of the IP address.
* As such, it should be possible to undelete a page with revisions
  performed by IP addresses.

What:
* Add ActorStore::getActorStoreForUndelete which works the same
  as ActorStore::getActorStoreForImport. Having methods that
  are named for undelete / import avoids the usage for other
  code that should use ::getActorStore instead.
* Add RevisionStoreFactory::getRevisionStoreForUndelete which
  uses the ActorStore returned by ActorStore
  ::getActorStoreForUndelete.
* Update the PageCommandFactory to take the RevisionStoreFactory
  and then call ::getRevisionStore for all but UndeletePage where
  the ::getRevisionStoreForUndelete method is called.

Bug: T362019
Bug: T365669
Change-Id: Ia7c583c625843f4f400e1c4aa7ea360519e63c87
2024-05-23 09:30:48 +00:00
Bartosz Dziewoński
5623b2e44c LoginSignupSpecialPage: Support &display=popup
Setting this URL parameter will replace the default skin with a
"micro-skin" that omits most of the usual interface elements,
making the page suitable to be displayed in a small popup window.
Its design (such as it is) is mostly based on Vector 2022.

In the future, we might allow normal skins to serve this mode too,
if they advise that they support it by setting a skin option.
For now that is out of scope.

The login/signup process is otherwise completely normal. To make use
of it, launch the login page in a popup, and set &returnto=... to
redirect back to your own success page, which should communicate the
successful login to your app and then close itself.

The display=popup / display=page vocabulary is borrowed from the
OpenID Connect spec.

Bug: T362706
Change-Id: Ic7cbbe98344b25d2e965750e0c4429ce157163ed
2024-05-22 22:06:31 +02:00
jenkins-bot
08ef39abfd Merge "Move ParsoidOutputAccess::supportsContentModel() into Parsoid SiteConfig" 2024-05-22 16:46:31 +00:00
jenkins-bot
df0fa2b09c Merge "Parser: Inject service LanguageNameUtils" 2024-05-22 15:31:12 +00:00
C. Scott Ananian
1c0089772d [HtmlInputTransformHelper] Use ParserOutputAccess
One step in gradually replacing uses of ParsoidOutputAccess with
ParserOutputAccess.  This is mostly just inlining the code from
ParsoidOutputAccess (which already uses ParserOutputAccess internally)
and then removing dead code.

Change-Id: I9807149c30f4bfe06fd7ad12f96c13816c22aa9c
2024-05-22 10:58:38 -04:00
C. Scott Ananian
a565e388f9 Move ParsoidOutputAccess::supportsContentModel() into Parsoid SiteConfig
The `supportsContentModel` method is really querying Parsoid for the
set of content models it supports, so it makes sense to put it in the
Parsoid-specific SiteConfig service.

This is part of the work to deprecate and remove ParsoidOutputAccess.

Change-Id: I81eb2df8cef93ede95361a4e03185b3d58e5b84b
2024-05-22 10:57:37 -04:00
Ebrahim Byagowi
12660db261 Add MediaWiki\Watchlist namespace to the related classes
This adds MediaWiki\Watchlist namespace to the classes of watchlist
directory and adds deprecation notice since 1.43 to the just created
unnamespaced aliases of the classes.

Bug: T353458
Change-Id: I4234f8fe62bb3bde6f5271c7ba31a2420b0f4b90
2024-05-22 01:23:10 +03:30
Derick Alangi
7475063bfd objectcache: Complete refactor of ObjectCache.php
This patch completes the rest of the ObjectCache refactor and
migrates methods to the appropriate class while deprecating them
in `ObjectCache.php`.

It also moves the `_LocalClusterCache` internal service logic
into ObjectCacheFactory and calls that instead making sure that
wiring code stays wiring code and let the class do the heavy lifting.

`::makeLocalServerCache()` is retained as a static method in the
ObjectCacheFactory class because it's called early in Setup.php
before the services container is available (so it needs to be stand-
alone).

To add, we also converts all global variables that were used in the
`ObjectCache.php` class into the config schema approach and retrieves
them using ServiceOptions injected in service wiring.

NOTE: MediaWikiIntegrationTestCase::setMainCache() was slightly
rewritten to take care of service reset which throws away the cache
object preserved by setInstanceForTesting() after service reset.
Instead, we preserve the object via MainConfigNames::ObjectCaches
setting with a factory closure which returns the correct cache object.

As a nice side effect of the above, the setInstanceForTesting() method
was removed entirely.

As a follow-up to this patch, I would like to remove the internal
_LocalClusterCache service in a stand-alone patch.

Bug: T363770
Change-Id: Ia2b689243980dbac37ee3bcfcbdf0683f9e1779b
2024-05-21 14:03:08 +00:00
jenkins-bot
37ae84be8b Merge "Add namespace and deprecation alias to WatchedItemStore" 2024-05-21 10:54:43 +00:00
Fomafix
66aa439d00 Parser: Inject service LanguageNameUtils
Change-Id: Ia9884f991550c96e4d9bbca9bfb882144716cd24
2024-05-20 19:23:37 +00:00
Ebrahim Byagowi
1be5d40e56 Add namespace and deprecation alias to FileBackendGroup
This patch introduces a namespace declaration for the
MediaWiki\FileBackend to FileBackendGroup and establishes a class
alias marked as deprecated since version 1.43.

Bug: T353458
Change-Id: Id33b6bfa56131978900199786b0082481c6c54a5
2024-05-20 20:06:00 +03:30
Ebrahim Byagowi
49fe440c63 Add namespace and deprecation alias to WatchedItemStore
This patch introduces a namespace declaration for the
MediaWiki\Watchlist to WatchedItemStore and establishes a class
alias marked as deprecated since version 1.43.

Bug: T353458
Change-Id: I820a3512440ba5a1de13e8470ccf5845918f3198
2024-05-20 19:14:17 +03:30
Reedy
5ab70409f5 Namespace includes/password
Bug: T353458
Change-Id: I1a701b5b7ff65356692abb0efde9a2207b6135b6
2024-05-18 16:17:38 +01:00