Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F3215658
T123166.diff
TTO (This, that and the other)
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
TTO
Jan 10 2016, 1:54 AM
2016-01-10 01:54:54 (UTC+0)
Size
2 KB
Referenced Files
None
Subscribers
None
T123166.diff
View Options
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
Details
Attached
Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3223664
Default Alt Text
T123166.diff (2 KB)
Attached To
Mode
T123166: Import.php caused a Catchable fatal error: Argument 1 passed to WikiPage::factory
Attached
Detach File
Event Timeline
Log In to Comment