Page MenuHomePhabricator

Migrate boolean flags in ParserOutput to ::setFlag() or ::setOutputFlag() or ::setExtensionData()
Open, LowPublic

Description

There are a large number of ad-hoc booleans in ParserOutput:

  • ::setNoGallery()
  • ::setEnableOOUI()
  • ::setIndexPolicy() (maybe?)
  • ::setNewSection()
  • ::setHideNewSection()
  • ::setPreventClickjacking()

These generally have nothing to do with the parser, they are just pass-throughs from certain extensions or parser functions. We should try to unify them to a standard interface so that the API of ParserOutput doesn't grow w/o limit. Perhaps

function setOutputFlag(string $flag, bool $val = true);

can be used, with a class

class ParserOutputFlags {
   public const PREVENT_CLICKJACKING = 'mw-preventClickjacking';
   public const ENABLE_OOUI = 'mw-enableOOUI';
   // etc
}

In fact, we already have ParserOutput::setExtensionData() *and* ::setFlag(); perhaps this should be used for the backend storage instead of inventing a new method.

Related Objects

StatusSubtypeAssignedTask
OpenReleaseNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenFeatureNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenBUG REPORTNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
Resolvedcscott
ResolvedABreault-WMF
Resolvedcscott
Opencscott
Resolvedssastry
ResolvedJgiannelos
OpenJgiannelos
OpenJgiannelos
OpenJgiannelos
OpenJgiannelos
ResolvedJgiannelos

Event Timeline

Change 728644 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Add new ParserOutput::{get,set}OutputFlag() interface

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

cscott renamed this task from Migrate boolean flags in ParserOutput to ::setOutputFlag() or ::setExtensionData() to Migrate boolean flags in ParserOutput to ::setFlag() or ::setOutputFlag() or ::setExtensionData().Oct 8 2021, 8:15 PM
cscott updated the task description. (Show Details)

Change 730636 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Mark ParserOutput::getAllFlags() @internal

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

Change 730636 merged by jenkins-bot:

[mediawiki/core@master] Mark ParserOutput::getAllFlags() @internal

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

Change 728644 merged by jenkins-bot:

[mediawiki/core@master] Add new ParserOutput::{get,set}OutputFlag() interface

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

Patches are merged, can we close this ticket?

daniel triaged this task as Medium priority.May 24 2022, 8:22 AM
daniel lowered the priority of this task from Medium to Low.May 30 2022, 3:09 PM

Change 942525 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Hard-deprecate ParserOutput::{get,set}Flag()

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

Change 942534 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/CIForms@master] Use ParserOutput::{get,set}ExtensionData instead of deprecated methods

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

Change 942535 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/PageProperties@master] Use ParserOutput::{get,set}ExtensionData instead of deprecated methods

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

Change 942535 merged by jenkins-bot:

[mediawiki/extensions/PageProperties@master] Use ParserOutput::{get,set}ExtensionData instead of deprecated methods

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

Change 942525 merged by jenkins-bot:

[mediawiki/core@master] Hard-deprecate ParserOutput::{get,set}Flag()

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

MSantos subscribed.

I am removing RESTBase Sunsetting as this is not needed for its completion. Please, re-add in case I'm missing something.

Change #1193553 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] ParserOutput: move flags into $mFlags array

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

Change #1193579 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Forward-compatibility: allow output flags to be serialized in `OutputFlags`

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

Change #1193580 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] ParserOutput: Serialize output flags in `OutputFlags`

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

Change #1193579 merged by jenkins-bot:

[mediawiki/core@master] Forward-compatibility: allow output flags to be serialized in `OutputFlags`

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

Change #1199106 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@REL1_44] Forward-compatibility: allow output flags to be serialized in `OutputFlags`

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

Change #1199108 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@REL1_43] Forward-compatibility: allow output flags to be serialized in `OutputFlags`

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

Change #1199114 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@wmf/1.45.0-wmf.25] Forward-compatibility: allow output flags to be serialized in `OutputFlags`

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

Change #1199114 merged by jenkins-bot:

[mediawiki/core@wmf/1.45.0-wmf.25] Forward-compatibility: allow output flags to be serialized in `OutputFlags`

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

Change #1199108 merged by jenkins-bot:

[mediawiki/core@REL1_43] Forward-compatibility: allow output flags to be serialized in `OutputFlags`

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

Change #1199106 merged by jenkins-bot:

[mediawiki/core@REL1_44] Forward-compatibility: allow output flags to be serialized in `OutputFlags`

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

Change #1193580 merged by jenkins-bot:

[mediawiki/core@master] ParserOutput: Serialize output flags in `OutputFlags`

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