Page MenuHomePhabricator

Require constructor $context parameter in HTMLForm
Closed, ResolvedPublic

Description

I'd like us to require the constructor's $context parameter in HTMLForm. It is currently allowed (but deprecated since 97056794f) to omit it.

It looks like there are still a few uses remaining:

Code search query: https://codesearch.wmcloud.org/search/?q=HTMLForm(%3A%3Afactory%7C)%5C(%5Cs*%5B%27"%2C%5Cw%20%5D*(%5C%24%5Cw%2B%7C%5C%5B((%3F%3A%5C%5B(%3F%3A%5C%5B%5B%5E%5C%5D%5D%2B%5C%5D%7C%5B%5E%5C%5D%5D)%2B%5C%5D%7C%5B%5E%5C%5D%5D)%2B)%5C%5D)%5Cs*%5C)&i=nope&files=&excludeFiles=&repos=

Searching for HTMLForm(::factory|)\(\s*['",\w ]*(\$\w+|\[((?:\[(?:\[[^\]]+\]|[^\]])+\]|[^\]])+)\])\s*\) locally returns some more results, looks like the regexp is too cursed for code search:

core/tests/phpunit/includes/htmlform/HTMLRestrictionsFieldTest.php:
   32:      $form = HTMLForm::factory( 'ooui', [
   33:         'restrictions' => [ 'class' => HTMLRestrictionsField::class ],
   34:      ] );

extensions/BetaFeatures/tests/phpunit/HTMLFeatureFieldTest.php:
   36: 		$form = new HTMLForm( [
   37: 			'blahblahblah' => [
   38: 				'class' => HTMLFeatureField::class,
   39: 				'label-message' => 'betafeatures-test-check-field',
   40: 				'desc-message' => 'betafeatures-test-feature-field',
   41: 				'info-link' => 'http://example.org/features',
   42: 				'discussion-link' => 'http://example.org/feedback',
   43: 			],
   44: 		] );

extensions/BetaFeatures/tests/phpunit/HTMLHorizontalRuleFieldTest.php:
   36: 		$form = new HTMLForm( [
   37: 			'blahblahblah' => [
   38: 				'class' => HTMLHorizontalRuleField::class,
   39: 			],
   40: 		] );

extensions/ConfirmEdit/tests/phpunit/HTMLFancyCaptchaFieldTest.php:
   34: 		$form = new HTMLForm( [ 'captchaWord' => $params ] );

extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaNoCaptchaFieldTest.php:
    8: 		$form = new HTMLForm( [
    9: 			'foo' => [
   10: 				'class' => HTMLReCaptchaNoCaptchaField::class,
   11: 				'key' => '123',
   12: 			],
   13: 		] );

Fixes:

WMF logging: https://logstash.wikimedia.org/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-90d,to:now))&_a=(columns:!(_source),filters:!(),index:'logstash-*',interval:auto,query:(language:lucene,query:'%22HTMLForm::__construct%20without%20$context%22'),sort:!())

Searching for "HTMLForm::__construct without $context".

image.png (537×2 px, 44 KB)

Fixes:

Event Timeline

Change 791812 had a related patch set uploaded (by Bartosz Dziewoński; author: Bartosz Dziewoński):

[mediawiki/core@master] HTMLForm: Require constructor $context parameter

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

Change 791812 merged by jenkins-bot:

[mediawiki/core@master] HTMLForm: Require constructor $context parameter

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

matmarex claimed this task.