aboutsummaryrefslogtreecommitdiffstats
path: root/includes/api/ApiUpload.php
diff options
context:
space:
mode:
authorTim Starling <tstarling@wikimedia.org>2019-07-26 15:07:41 +1000
committerTim Starling <tstarling@wikimedia.org>2019-07-26 16:15:30 +1000
commit51e837f68f6df7fdc6cb35803e497bfc0532c861 (patch)
tree775319bf2fd5d089e4ae24653fb6c39858703bed /includes/api/ApiUpload.php
parent4320a90bd508f010b430dcd7c038964be4d7d28c (diff)
downloadmediawikicore-51e837f68f6df7fdc6cb35803e497bfc0532c861.tar.gz
mediawikicore-51e837f68f6df7fdc6cb35803e497bfc0532c861.zip
Don't try to store File objects to the upload session
File objects can contain closures which can't be serialized. Instead, add makeWarningsSerializable(), which converts the warnings to a serializable array. Make ApiUpload::transformWarnings() act on this serializable array instead. For consistency, ApiUpload::getApiWarnings() also needs to convert the result of checkWarnings() before transforming it. Bug: T228749 Change-Id: I8236aaf3683f93a03a5505803f4638e022cf6d85
Diffstat (limited to 'includes/api/ApiUpload.php')
-rw-r--r--includes/api/ApiUpload.php14
1 files changed, 5 insertions, 9 deletions
diff --git a/includes/api/ApiUpload.php b/includes/api/ApiUpload.php
index fc41e4ea6a7e..b15b9989a00a 100644
--- a/includes/api/ApiUpload.php
+++ b/includes/api/ApiUpload.php
@@ -658,7 +658,7 @@ class ApiUpload extends ApiBase {
* @return array
*/
protected function getApiWarnings() {
- $warnings = $this->mUpload->checkWarnings();
+ $warnings = UploadBase::makeWarningsSerializable( $this->mUpload->checkWarnings() );
return $this->transformWarnings( $warnings );
}
@@ -670,9 +670,8 @@ class ApiUpload extends ApiBase {
if ( isset( $warnings['duplicate'] ) ) {
$dupes = [];
- /** @var File $dupe */
foreach ( $warnings['duplicate'] as $dupe ) {
- $dupes[] = $dupe->getName();
+ $dupes[] = $dupe['fileName'];
}
ApiResult::setIndexedTagName( $dupes, 'duplicate' );
$warnings['duplicate'] = $dupes;
@@ -681,27 +680,24 @@ class ApiUpload extends ApiBase {
if ( isset( $warnings['exists'] ) ) {
$warning = $warnings['exists'];
unset( $warnings['exists'] );
- /** @var LocalFile $localFile */
$localFile = $warning['normalizedFile'] ?? $warning['file'];
- $warnings[$warning['warning']] = $localFile->getName();
+ $warnings[$warning['warning']] = $localFile['fileName'];
}
if ( isset( $warnings['no-change'] ) ) {
- /** @var File $file */
$file = $warnings['no-change'];
unset( $warnings['no-change'] );
$warnings['nochange'] = [
- 'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() )
+ 'timestamp' => wfTimestamp( TS_ISO_8601, $file['timestamp'] )
];
}
if ( isset( $warnings['duplicate-version'] ) ) {
$dupes = [];
- /** @var File $dupe */
foreach ( $warnings['duplicate-version'] as $dupe ) {
$dupes[] = [
- 'timestamp' => wfTimestamp( TS_ISO_8601, $dupe->getTimestamp() )
+ 'timestamp' => wfTimestamp( TS_ISO_8601, $dupe['timestamp'] )
];
}
unset( $warnings['duplicate-version'] );