X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fapi%2FApiContinuationManager.php;h=19e2453944b132a695a80400b4e525d65d3dfc0d;hp=6601fb7463e18b95c19bf8dc17d5c08b05e6dba2;hb=e758226c91935a1df2b6fd3ed1f18922d8bfb45b;hpb=7abf23c194b6fc87bcb3da2453747638cbea64c5 diff --git a/includes/api/ApiContinuationManager.php b/includes/api/ApiContinuationManager.php index 6601fb7463..19e2453944 100644 --- a/includes/api/ApiContinuationManager.php +++ b/includes/api/ApiContinuationManager.php @@ -31,6 +31,7 @@ class ApiContinuationManager { private $continuationData = []; private $generatorContinuationData = []; + private $generatorNonContinuationData = []; private $generatorParams = []; private $generatorDone = false; @@ -142,6 +143,26 @@ class ApiContinuationManager { $this->continuationData[$name][$paramName] = $paramValue; } + /** + * Set the non-continuation parameter for the generator module + * + * In case the generator isn't going to be continued, this sets the fields + * to return. + * + * @since 1.28 + * @param ApiBase $module + * @param string $paramName + * @param string|array $paramValue + */ + public function addGeneratorNonContinueParam( ApiBase $module, $paramName, $paramValue ) { + $name = $module->getModuleName(); + $paramName = $module->encodeParamName( $paramName ); + if ( is_array( $paramValue ) ) { + $paramValue = implode( '|', $paramValue ); + } + $this->generatorNonContinuationData[$name][$paramName] = $paramValue; + } + /** * Set the continuation parameter for the generator module * @param ApiBase $module @@ -165,6 +186,15 @@ class ApiContinuationManager { return array_merge_recursive( $this->continuationData, $this->generatorContinuationData ); } + /** + * Fetch raw non-continuation data + * @since 1.28 + * @return array + */ + public function getRawNonContinuation() { + return $this->generatorNonContinuationData; + } + /** * Fetch continuation result data * @return array [ (array)$data, (bool)$batchcomplete ] @@ -192,8 +222,13 @@ class ApiContinuationManager { foreach ( $continuationData as $module => $kvp ) { $data += $kvp; } - $data += $this->generatorParams; - $generatorKeys = implode( '|', array_keys( $this->generatorParams ) ); + $generatorParams = []; + foreach ( $this->generatorNonContinuationData as $kvp ) { + $generatorParams += $kvp; + } + $generatorParams += $this->generatorParams; + $data += $generatorParams; + $generatorKeys = implode( '|', array_keys( $generatorParams ) ); } elseif ( $this->generatorContinuationData ) { // All the generator-using modules are complete, but the // generator isn't. Continue the generator and restart the