Page MenuHomePhabricator
Authored By
TTO
Jan 10 2016, 1:54 AM
Size
2 KB
Referenced Files
None
Subscribers
None

T123166.diff

From 7d88021b9e1b3a45b60616d784c8780e001cff8f Mon Sep 17 00:00:00 2001
From: aude <aude.wiki@gmail.com>
Date: Tue, 8 Sep 2015 16:18:03 +0200
Subject: [PATCH] Fix exception in Import, when import of a revision fails
A 'notice' is thrown when an import fails, for some reason,
such as the user does not have permission, and the reason
is reported to the user.
In this case, $title is false and not a Title object,
as needed by the beforeImportPage callback (which calls
WikiPage::factory). As well, $pageInfo['_title'] is undefined,
in pageOutCallback, which also calls WikiPage::factory via
finishImportPage.
Bug: T108544
Change-Id: I55042fdf305cd1198d3a4b28a0ebb5ce31b76a1f
---
includes/Import.php | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/includes/Import.php b/includes/Import.php
index 6a0bfd0..db4a6b2 100644
--- a/includes/Import.php
+++ b/includes/Import.php
@@ -728,13 +728,14 @@ class WikiImporter {
$title = $this->processTitle( $pageInfo['title'],
isset( $pageInfo['ns'] ) ? $pageInfo['ns'] : null );
- if ( !$title ) {
+ // $title is either an array of two titles or false.
+ if ( is_array( $title ) ) {
+ $this->pageCallback( $title );
+ list( $pageInfo['_title'], $foreignTitle ) = $title;
+ } else {
$badTitle = true;
$skip = true;
}
-
- $this->pageCallback( $title );
- list( $pageInfo['_title'], $foreignTitle ) = $title;
}
if ( $title ) {
@@ -750,10 +751,17 @@ class WikiImporter {
}
}
- $this->pageOutCallback( $pageInfo['_title'], $foreignTitle,
+ // @note $pageInfo is only set if a valid $title is processed above with
+ // no error. If we have a valid $title, then pageCallback is called
+ // above, $pageInfo['title'] is set and we do pageOutCallback here.
+ // If $pageInfo['_title'] is not set, then $foreignTitle is also not
+ // set since they both come from $title above.
+ if ( array_key_exists( '_title', $pageInfo ) ) {
+ $this->pageOutCallback( $pageInfo['_title'], $foreignTitle,
$pageInfo['revisionCount'],
$pageInfo['successfulRevisionCount'],
$pageInfo );
+ }
}
/**
--
1.8.3.msysgit.0

File Metadata

Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3223664
Default Alt Text
T123166.diff (2 KB)

Event Timeline