* @ingroup Upload
*/
class AssembleUploadChunksJob extends Job {
- public function __construct( $title, $params ) {
+ public function __construct( Title $title, array $params ) {
parent::__construct( 'AssembleUploadChunks', $title, $params );
$this->removeDuplicates = true;
}
public function run() {
+ /** @noinspection PhpUnusedLocalVariableInspection */
$scope = RequestContext::importScopedSession( $this->params['session'] );
+ $this->addTeardownCallback( function () use ( &$scope ) {
+ ScopedCallback::consume( $scope ); // T126450
+ } );
+
$context = RequestContext::getMain();
$user = $context->getUser();
try {
UploadBase::setSessionStatus(
$user,
$this->params['filekey'],
- array( 'result' => 'Poll', 'stage' => 'assembling', 'status' => Status::newGood() )
+ [ 'result' => 'Poll', 'stage' => 'assembling', 'status' => Status::newGood() ]
);
$upload = new UploadFromChunks( $user );
$upload->continueChunks(
$this->params['filename'],
$this->params['filekey'],
- $context->getRequest()
+ new WebRequestUpload( $context->getRequest(), 'null' )
);
// Combine all of the chunks into a local file and upload that to a new stash file
UploadBase::setSessionStatus(
$user,
$this->params['filekey'],
- array( 'result' => 'Failure', 'stage' => 'assembling', 'status' => $status )
+ [ 'result' => 'Failure', 'stage' => 'assembling', 'status' => $status ]
);
$this->setLastError( $status->getWikiText() );
UploadBase::setSessionStatus(
$user,
$this->params['filekey'],
- array(
+ [
'result' => 'Success',
'stage' => 'assembling',
'filekey' => $newFileKey,
'imageinfo' => $imageInfo,
'status' => Status::newGood()
- )
+ ]
);
} catch ( Exception $e ) {
UploadBase::setSessionStatus(
$user,
$this->params['filekey'],
- array(
+ [
'result' => 'Failure',
'stage' => 'assembling',
'status' => Status::newFatal( 'api-error-stashfailed' )
- )
+ ]
);
- $this->setLastError( get_class( $e ) . ": " . $e->getText() );
+ $this->setLastError( get_class( $e ) . ": " . $e->getMessage() );
// To be extra robust.
MWExceptionHandler::rollbackMasterChangesAndLog( $e );
public function getDeduplicationInfo() {
$info = parent::getDeduplicationInfo();
if ( is_array( $info['params'] ) ) {
- $info['params'] = array( 'filekey' => $info['params']['filekey'] );
+ $info['params'] = [ 'filekey' => $info['params']['filekey'] ];
}
return $info;