Merge "(bug 44219) Avoid fatal errors when a revision doesn't exist in action=info"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 26 Feb 2013 17:01:31 +0000 (17:01 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 26 Feb 2013 17:01:31 +0000 (17:01 +0000)
1  2 
includes/actions/InfoAction.php

@@@ -81,11 -81,11 +81,11 @@@ class InfoAction extends FormlessActio
  
                // Hide "This page is a member of # hidden categories" explanation
                $content .= Html::element( 'style', array(),
 -                      '.mw-hiddenCategoriesExplanation { display: none; }' );
 +                      '.mw-hiddenCategoriesExplanation { display: none; }' ) . "\n";
  
                // Hide "Templates used on this page" explanation
                $content .= Html::element( 'style', array(),
 -                      '.mw-templatesUsedExplanation { display: none; }' );
 +                      '.mw-templatesUsedExplanation { display: none; }' ) . "\n";
  
                // Get page information
                $pageInfo = $this->pageInfo();
  
                // Render page information
                foreach ( $pageInfo as $header => $infoTable ) {
 -                      $content .= $this->makeHeader( $this->msg( "pageinfo-${header}" )->escaped() );
 -                      $table = '';
 +                      $content .= $this->makeHeader( $this->msg( "pageinfo-${header}" )->escaped() ) . "\n";
 +                      $table = "\n";
                        foreach ( $infoTable as $infoRow ) {
                                $name = ( $infoRow[0] instanceof Message ) ? $infoRow[0]->escaped() : $infoRow[0];
                                $value = ( $infoRow[1] instanceof Message ) ? $infoRow[1]->escaped() : $infoRow[1];
 -                              $table = $this->addRow( $table, $name, $value );
 +                              $table = $this->addRow( $table, $name, $value ) . "\n";
                        }
 -                      $content = $this->addTable( $content, $table );
 +                      $content = $this->addTable( $content, $table ) . "\n";
                }
  
                // Page footer
         * @return string The HTML.
         */
        protected function makeHeader( $header ) {
 -              global $wgParser;
 -              $spanAttribs = array( 'class' => 'mw-headline', 'id' => $wgParser->guessSectionNameFromWikiText( $header ) );
 +              $spanAttribs = array( 'class' => 'mw-headline', 'id' => Sanitizer::escapeId( $header ) );
                return Html::rawElement( 'h2', array(), Html::element( 'span', $spanAttribs, $header ) );
        }
  
                $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(