From e2b06a292f5a458d408615b83d1965b249dda0e9 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Fri, 16 Sep 2005 00:12:48 +0000 Subject: [PATCH] quick hackjob to fix damages imports on wikisource page records have page_latest wrong (0); find the current rev for each such page and fix it up. --- maintenance/attachLatest.php | 73 ++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 maintenance/attachLatest.php diff --git a/maintenance/attachLatest.php b/maintenance/attachLatest.php new file mode 100644 index 0000000000..65394efcf7 --- /dev/null +++ b/maintenance/attachLatest.php @@ -0,0 +1,73 @@ + + * http://www.mediawiki.org/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @package MediaWiki + * @subpackage Maintenance + */ + +require_once( 'commandLine.inc' ); + +$fixit = isset( $options['fix'] ); +$fname = 'attachLatest'; + +echo "Looking for pages with page_latest set to 0...\n"; +$dbw =& wfGetDB( DB_MASTER ); +$result = $dbw->select( 'page', + array( 'page_id', 'page_namespace', 'page_title' ), + array( 'page_latest' => 0 ), + $fname ); + +$n = 0; +while( $row = $dbw->fetchObject( $result ) ) { + $pageId = intval( $row->page_id ); + $title = Title::makeTitle( $row->page_namespace, $row->page_title ); + $name = $title->getPrefixedText(); + $latestTime = $dbw->selectField( 'revision', + 'MAX(rev_timestamp)', + array( 'rev_page' => $pageId ), + $fname ); + if( !$latestTime ) { + echo "$wgDBname $pageId [[$name]] can't find latest rev time?!\n"; + continue; + } + + $revision = Revision::loadFromTimestamp( $dbw, $title, $latestTime ); + if( is_null( $revision ) ) { + echo "$wgDBname $pageId [[$name]] latest time $latestTime, can't find revision id\n"; + continue; + } + $id = $revision->getId(); + echo "$wgDBname $pageId [[$name]] latest time $latestTime, rev id $id\n"; + if( $fixit ) { + $article = new Article( $title ); + $article->updateRevisionOn( $dbw, $revision ); + } + $n++; +} +$dbw->freeResult( $result ); +echo "Done! Processed $n pages.\n"; +if( !$fixit ) { + echo "This was a dry run; rerun with --fix to update page_latest.\n"; +} + +?> -- 2.20.1