/** * Does the API request and returns the result. * * The returned value is an array containing * - the result data (array) * - the request (WebRequest) * - the session data of the request (array) * - if $appendModule is true, the Api module $module * * @param array $params * @param array|null $session * @param bool $appendModule * @param User|null $user * * @return array */ protected function doApiRequest(array $params, array $session = null, $appendModule = false, User $user = null) { global $wgRequest, $wgUser; if (is_null($session)) { // re-use existing global session by default $session = $wgRequest->getSessionArray(); } // set up global environment if ($user) { $wgUser = $user; } $wgRequest = new FauxRequest($params, true, $session); RequestContext::getMain()->setRequest($wgRequest); RequestContext::getMain()->setUser($wgUser); // set up local environment $context = $this->apiContext->newTestContext($wgRequest, $wgUser); $module = new ApiMain($context, true); // run it! $module->execute(); // construct result $results = array($module->getResult()->getResultData(null, array('Strip' => 'all')), $context->getRequest(), $context->getRequest()->getSessionArray()); if ($appendModule) { $results[] = $module; } return $results; }
protected function doApiRequest($params, $session = null, $appendModule = false, $user = null) { if (is_null($session)) { $session = array(); } $context = $this->apiContext->newTestContext($params, $session, $user); $module = new ApiMain($context, true); $module->execute(); $results = array($module->getResultData(), $context->getRequest(), $context->getRequest()->getSessionArray()); if ($appendModule) { $results[] = $module; } return $results; }