Page MenuHomePhabricator

Create a base class to use in all web entry points
Open, In Progress, LowPublic

Description

Context: We currently have no reliable way to keep the behavior of different entry points consistent. Most rely on static methods in the MediaWiki class for cleanup, but otherwise, each web entry points re-implements the request handling life-cycle.

Rationale: introducing a base class for web entry points would allow us to handle things like headers and output buffers consistently. It would also ensure that we can test entry point code using phpunit. This is analogous to the Maintenance base class for command line scripts.

Survey of entry points:

  • index.php
  • api.php
  • rest.php
  • load.php
  • img_auth.php
  • thumb.php
  • thumb_handler.php
  • opensearch_desc.php

Note that extensions should not introduce their own web entry points.

Details

SubjectRepoBranchLines +/-
mediawiki/coremaster+791 -197
mediawiki/coremaster+148 -115
mediawiki/coremaster+160 -30
mediawiki/coremaster+98 -105
mediawiki/coremaster+255 -99
mediawiki/coremaster+962 -241
mediawiki/coremaster+580 -436
mediawiki/coremaster+1 K -1 K
mediawiki/coremaster+968 -235
mediawiki/coremaster+16 -14
mediawiki/extensions/InputBoxmaster+3 -3
mediawiki/extensions/TimedMediaHandlermaster+3 -3
mediawiki/extensions/FileImportermaster+2 -2
mediawiki/extensions/WikimediaIncubatormaster+2 -2
mediawiki/extensions/CirrusSearchmaster+2 -1
mediawiki/extensions/MobileFrontendmaster+2 -1
mediawiki/extensions/VisualEditormaster+2 -2
mediawiki/extensions/WikimediaEventsmaster+2 -2
Show related patches Customize query in gerrit

Event Timeline

I'm poking at this as a side project

daniel renamed this task from Create a base class to use in all entry points to Create a base class to use in all web entry points.Jan 2 2024, 7:54 PM

Change 965563 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] Introduce MediaWikiEntryPoint and ActionEntryPoint

https://gerrit.wikimedia.org/r/965563

Also opensearch_desc.php?

Oh, right. Added.

Change 965563 merged by jenkins-bot:

[mediawiki/core@master] Introduce MediaWikiEntryPoint and ActionEntryPoint

https://gerrit.wikimedia.org/r/965563

Change 988026 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] entrypoint: Restore doc grouping for MediaWikiEntryPoint

https://gerrit.wikimedia.org/r/988026

Change 960185 had a related patch set uploaded (by Krinkle; author: Daniel Kinzler):

[mediawiki/core@master] entrypoint: Isolate entry points from PHP runtime for testing

https://gerrit.wikimedia.org/r/960185

Change 959047 had a related patch set uploaded (by Krinkle; author: Daniel Kinzler):

[mediawiki/core@master] entrypoint: Factory out ApiEntryPoint from api.php

https://gerrit.wikimedia.org/r/959047

Change 988028 had a related patch set uploaded (by Jdlrobson; author: Jdlrobson):

[mediawiki/extensions/WikimediaEvents@master] phan: Use ActionEntryPoint

https://gerrit.wikimedia.org/r/988028

Change 977112 had a related patch set uploaded (by Krinkle; author: Daniel Kinzler):

[mediawiki/core@master] ResourceLoader: Factor out ResourceEntryPoint from load.php

https://gerrit.wikimedia.org/r/977112

Change 977167 had a related patch set uploaded (by Krinkle; author: Daniel Kinzler):

[mediawiki/core@master] ResourceLoader: Move ResourceLoader::respond into ResourceEntryPoint

https://gerrit.wikimedia.org/r/977167

Change 988029 had a related patch set uploaded (by Jdlrobson; author: Jdlrobson):

[mediawiki/extensions/VisualEditor@master] phan: Use ActionEntryPoint

https://gerrit.wikimedia.org/r/988029

Change 976936 had a related patch set uploaded (by Krinkle; author: Daniel Kinzler):

[mediawiki/core@master] Rest: Turn Rest\EntryPoint into a MediaWikiEntryPoint subclass

https://gerrit.wikimedia.org/r/976936

Change 988030 had a related patch set uploaded (by Jdlrobson; author: Jdlrobson):

[mediawiki/extensions/MobileFrontend@master] phan: Use ActionEntryPoint

https://gerrit.wikimedia.org/r/988030

Change 981449 had a related patch set uploaded (by Krinkle; author: Daniel Kinzler):

[mediawiki/core@master] Move request handling from ApiMain to ApiEntryPoint (part 1)

https://gerrit.wikimedia.org/r/981449

Change 988028 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] phan: Use ActionEntryPoint

https://gerrit.wikimedia.org/r/988028

Change 988061 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/InputBox@master] build: Fix doc type on MediaWikiPerformActionHook

https://gerrit.wikimedia.org/r/988061

Change 988062 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/TimedMediaHandler@master] build: Fix doc type on MediaWikiPerformActionHook

https://gerrit.wikimedia.org/r/988062

Change 988063 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/WikimediaIncubator@master] build: Fix doc type on MediaWikiPerformActionHook

https://gerrit.wikimedia.org/r/988063

Change 988064 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/CirrusSearch@master] build: Fix doc type on BeforeInitializeHook

https://gerrit.wikimedia.org/r/988064

Change 988065 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/FileImporter@master] build: Fix doc type on BeforeInitializeHook

https://gerrit.wikimedia.org/r/988065

Change 988029 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@master] phan: Use ActionEntryPoint

https://gerrit.wikimedia.org/r/988029

Change 988030 merged by jenkins-bot:

[mediawiki/extensions/MobileFrontend@master] phan: Use ActionEntryPoint

https://gerrit.wikimedia.org/r/988030

Change 988064 merged by jenkins-bot:

[mediawiki/extensions/CirrusSearch@master] build: Fix doc type on BeforeInitializeHook

https://gerrit.wikimedia.org/r/988064

Change 988063 merged by jenkins-bot:

[mediawiki/extensions/WikimediaIncubator@master] build: Fix doc type on MediaWikiPerformActionHook

https://gerrit.wikimedia.org/r/988063

Change 988065 merged by jenkins-bot:

[mediawiki/extensions/FileImporter@master] build: Fix doc type on BeforeInitializeHook

https://gerrit.wikimedia.org/r/988065

Change 988062 merged by jenkins-bot:

[mediawiki/extensions/TimedMediaHandler@master] build: Fix doc type on MediaWikiPerformActionHook

https://gerrit.wikimedia.org/r/988062

Change 988061 merged by jenkins-bot:

[mediawiki/extensions/InputBox@master] build: Fix doc type on MediaWikiPerformActionHook

https://gerrit.wikimedia.org/r/988061

Change 988026 merged by jenkins-bot:

[mediawiki/core@master] entrypoint: Restore doc grouping for MediaWikiEntryPoint

https://gerrit.wikimedia.org/r/988026

Change 991638 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] entrypoint: Isolate entry points from PHP runtime for testing

https://gerrit.wikimedia.org/r/991638

Change 991638 abandoned by Daniel Kinzler:

[mediawiki/core@master] entrypoint: Isolate entry points from PHP runtime for testing (Version 2)

Reason:

merged into Ic21950c956de5d2b5a7dd66a1e2de58f807cfd9f

https://gerrit.wikimedia.org/r/991638

Change 960185 merged by jenkins-bot:

[mediawiki/core@master] entrypoint: Isolate entry points from PHP runtime for testing

https://gerrit.wikimedia.org/r/960185

Change 959047 merged by jenkins-bot:

[mediawiki/core@master] Move code from api.php into ApiEntryPoint class

https://gerrit.wikimedia.org/r/959047

Change 977112 merged by jenkins-bot:

[mediawiki/core@master] ResourceLoader: Factor out ResourceEntryPoint from load.php

https://gerrit.wikimedia.org/r/977112

MediaWikiEntryPoint.php is not at all what I'd expect based on this task description. It's not an entry point, it's extremely complex. Most other frameworks would call it an application class, I think.

Change 1005827 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] ResourceLoader: Follow-up creation of ResourceLoaderEntryPoint

https://gerrit.wikimedia.org/r/1005827

Change 1005827 merged by jenkins-bot:

[mediawiki/core@master] ResourceLoader: Follow-up creation of ResourceLoaderEntryPoint

https://gerrit.wikimedia.org/r/1005827

Change 976936 merged by jenkins-bot:

[mediawiki/core@master] Rest: Turn Rest\EntryPoint into a MediaWikiEntryPoint subclass

https://gerrit.wikimedia.org/r/976936

daniel moved this task from Incoming (Needs Triage) to In Progress on the MW-Interfaces-Team board.
FJoseph-WMF changed the task status from Open to In Progress.Apr 5 2024, 2:42 PM

Change #978532 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] Extract AuthenticatedFileEntryPoint from img_auth.php

https://gerrit.wikimedia.org/r/978532