Commit graph

1077 commits

Author SHA1 Message Date
jenkins-bot
634373a3cf Merge "REST: add restbase compat mode for some endpoints" 2024-09-16 19:21:57 +00:00
daniel
602f0ab595 REST: add restbase compat mode for some endpoints
In order to replace the /api/rest_v1/page/title/{title} endpoints, we
need to have something in MediaWiki that generates a compatible
responser. The v1/page/{title}/bare and v1/revision/{id}/bare endpoints
are functionally equivalent, so the easiest approach seemed to be to
add a compatibility mode to them. The compatibility mode is triggered
using the x-restbase-compat header, which can be set via the gateway
when routing the request from /api/rest_v1/page/title/.

Bug: T374136
Change-Id: I4af7ff5325660ae30faebb24753b9dc1c3acb2b3
2024-09-15 16:41:21 -05:00
jenkins-bot
d7fe4e3baa Merge "objectcache: Migrate WANObjectCache metrics to StatsLib" 2024-09-11 00:19:25 +00:00
Derick Alangi
68dea2a28e objectcache: Migrate WANObjectCache metrics to StatsLib
This patch begins migrating the WANObjectCache metrics from graphite
to prometheus. This class can be constructed directly and parameter
options (which might include a stats collector object) passed, so we
need a way to detect the incorrect case and warn accordingly.

Since this is used by extensions, and we want to support only the new
StatsFactory option. We need a way to track and warn places where the
old stats collector is still in use and also put in place a mechanism
so new code doesn't use the old stats collector.

So, constructing a WANObjectCache object with an IBufferingStatsDataFactory
stats collector is deprecated in this patch in favor of the new collector.
Callers are responsible for fixing usage to StatsFactory.

Bug: T359257
Change-Id: If1162f69997b1b914fb9e02dad7d7ae1540d2d01
2024-09-10 23:53:03 +00:00
jenkins-bot
4a611caaa7 Merge "UserOptionsManager: Allow global prefs for users without local accounts" 2024-09-10 18:22:53 +00:00
Bartosz Dziewoński
949c34b205 UserOptionsManager: Allow global prefs for users without local accounts
Bug: T371340
Change-Id: I5eba0fa558ad7f111988c17cfcee260c5a272baf
2024-09-10 00:01:58 +02:00
Ebrahim Byagowi
6f1acdda65 Avoid use of deprecated wfExpandUrl in IntroMessageBuilder
Bug: T319340
Change-Id: I77542ef7cbe38fcc4eee42873610c50236e41661
2024-09-08 06:46:37 +03:30
C. Scott Ananian
132de675ce Add tracking category resolution to Parsoid DataAccess
This allows Parsoid to add tracking categories, even though
the exact name of the categories is resolved by mediawiki
core.

Change-Id: Id4b29c6d09c79649c94d2da2e678af52a967bbe5
2024-08-30 14:08:38 -04:00
jenkins-bot
aef156e925 Merge "Migrate ParserOutputAccess metrics to statslib" 2024-08-23 21:39:21 +00:00
jenkins-bot
6dfbace5d7 Merge "PasswordReset: Code quality improvements" 2024-08-23 21:11:26 +00:00
Yiannis Giannelos
fa3e92db5e Migrate ParserOutputAccess metrics to statslib
Bug: T359372
Change-Id: I5450251dff31d55a9a46b7fe885c27cd6ba083bf
2024-08-23 21:06:34 +00:00
Ebrahim Byagowi
697e19e461 Add MediaWiki\Registration namespace to registration classes
Bug: T353458
Change-Id: Ifa3b6a6e0353bb4ce21a3f4456f1fc696c8d377c
2024-08-10 10:08:22 +00:00
Bartosz Dziewoński
c7d358eb8d PasswordReset: Code quality improvements
Treat the username/email as provided when it's a falsy string ('0').

Refactor away some redundant checks and variables.

Only construct User objects when needed for the hook.

Documentation and code style tweaks.

Change-Id: I499d73dacfb48a95291dcfa0405e52788a0251f4
2024-08-08 12:35:03 +02:00
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