From e6467452c60771adea067e1cf6545718a585f417 Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Thu, 14 Feb 2013 11:08:57 +0100 Subject: [PATCH] (bug 44219) Avoid fatal errors when a revision doesn't exist in action=info WikiPage::getRevision() and WikiPage::getOldestRevision() may return null when a revision does not exist; catch this in InfoAction::pageInfo(). Change-Id: If141213aedfe7c55e935105abf4415b6feced57c --- includes/actions/InfoAction.php | 84 ++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/includes/actions/InfoAction.php b/includes/actions/InfoAction.php index acb8c00fe7..b990490303 100644 --- a/includes/actions/InfoAction.php +++ b/includes/actions/InfoAction.php @@ -394,53 +394,61 @@ class InfoAction extends FormlessAction { $lastRev = $this->page->getRevision(); $batch = new LinkBatch; - $firstRevUser = $firstRev->getUserText( Revision::FOR_THIS_USER ); - if ( $firstRevUser !== '' ) { - $batch->add( NS_USER, $firstRevUser ); - $batch->add( NS_USER_TALK, $firstRevUser ); + if ( $firstRev ) { + $firstRevUser = $firstRev->getUserText( Revision::FOR_THIS_USER ); + if ( $firstRevUser !== '' ) { + $batch->add( NS_USER, $firstRevUser ); + $batch->add( NS_USER_TALK, $firstRevUser ); + } } - $lastRevUser = $lastRev->getUserText( Revision::FOR_THIS_USER ); - if ( $lastRevUser !== '' ) { - $batch->add( NS_USER, $lastRevUser ); - $batch->add( NS_USER_TALK, $lastRevUser ); + if ( $lastRev ) { + $lastRevUser = $lastRev->getUserText( Revision::FOR_THIS_USER ); + if ( $lastRevUser !== '' ) { + $batch->add( NS_USER, $lastRevUser ); + $batch->add( NS_USER_TALK, $lastRevUser ); + } } $batch->execute(); - // Page creator - $pageInfo['header-edits'][] = array( - $this->msg( 'pageinfo-firstuser' ), - Linker::revUserTools( $firstRev ) - ); + if ( $firstRev ) { + // Page creator + $pageInfo['header-edits'][] = array( + $this->msg( 'pageinfo-firstuser' ), + Linker::revUserTools( $firstRev ) + ); - // Date of page creation - $pageInfo['header-edits'][] = array( - $this->msg( 'pageinfo-firsttime' ), - Linker::linkKnown( - $title, - $lang->userTimeAndDate( $firstRev->getTimestamp(), $user ), - array(), - array( 'oldid' => $firstRev->getId() ) - ) - ); + // Date of page creation + $pageInfo['header-edits'][] = array( + $this->msg( 'pageinfo-firsttime' ), + Linker::linkKnown( + $title, + $lang->userTimeAndDate( $firstRev->getTimestamp(), $user ), + array(), + array( 'oldid' => $firstRev->getId() ) + ) + ); + } - // Latest editor - $pageInfo['header-edits'][] = array( - $this->msg( 'pageinfo-lastuser' ), - Linker::revUserTools( $lastRev ) - ); + if ( $lastRev ) { + // Latest editor + $pageInfo['header-edits'][] = array( + $this->msg( 'pageinfo-lastuser' ), + Linker::revUserTools( $lastRev ) + ); - // Date of latest edit - $pageInfo['header-edits'][] = array( - $this->msg( 'pageinfo-lasttime' ), - Linker::linkKnown( - $title, - $lang->userTimeAndDate( $this->page->getTimestamp(), $user ), - array(), - array( 'oldid' => $this->page->getLatest() ) - ) - ); + // Date of latest edit + $pageInfo['header-edits'][] = array( + $this->msg( 'pageinfo-lasttime' ), + Linker::linkKnown( + $title, + $lang->userTimeAndDate( $this->page->getTimestamp(), $user ), + array(), + array( 'oldid' => $this->page->getLatest() ) + ) + ); + } // Total number of edits $pageInfo['header-edits'][] = array( -- 2.20.1