From fffffe8f8f994b093adb1a375441cb80a27082fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 29 Apr 2021 02:06:56 +0200 Subject: [PATCH] Pass whole context to internal action API requests Otherwise, the global context is used (RequestContext::getMain()), which is undesirable when you're building a rubegoldbergian contraption and we're already inside an internal action API request with a fake context. Change-Id: I01daf8dc70b5751bc1e157fe598988cd5d3219e5 --- includes/ApiDiscussionToolsEdit.php | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/includes/ApiDiscussionToolsEdit.php b/includes/ApiDiscussionToolsEdit.php index 9e6486602..2e60e0db0 100644 --- a/includes/ApiDiscussionToolsEdit.php +++ b/includes/ApiDiscussionToolsEdit.php @@ -5,6 +5,7 @@ namespace MediaWiki\Extension\DiscussionTools; use ApiBase; use ApiMain; use ApiParsoidTrait; +use DerivativeContext; use DerivativeRequest; use DOMElement; use MediaWiki\Logger\LoggerFactory; @@ -66,9 +67,10 @@ class ApiDiscussionToolsEdit extends ApiBase { // As section=new this is append only so we don't need to // worry about edit-conflict params such as oldid/baserevid/etag. // Edit summary is also automatically generated when section=new - $api = new ApiMain( + $context = new DerivativeContext( $this->getContext() ); + $context->setRequest( new DerivativeRequest( - $this->getRequest(), + $context->getRequest(), [ 'action' => 'visualeditoredit', 'paction' => 'save', @@ -86,7 +88,10 @@ class ApiDiscussionToolsEdit extends ApiBase { 'captchaword' => $params['captchaword'] ], /* was posted? */ true - ), + ) + ); + $api = new ApiMain( + $context, /* enable write? */ true ); @@ -186,9 +191,10 @@ class ApiDiscussionToolsEdit extends ApiBase { $this->msg( 'discussiontools-defaultsummary-reply' )->inContentLanguage()->text(); } - $api = new ApiMain( + $context = new DerivativeContext( $this->getContext() ); + $context->setRequest( new DerivativeRequest( - $this->getRequest(), + $context->getRequest(), [ 'action' => 'visualeditoredit', 'paction' => 'save', @@ -205,7 +211,10 @@ class ApiDiscussionToolsEdit extends ApiBase { 'captchaword' => $params['captchaword'] ], /* was posted? */ true - ), + ) + ); + $api = new ApiMain( + $context, /* enable write? */ true );