51 $this->
output(
"Looking for pages with page_latest set to 0...\n" );
53 $conds = [
'page_latest' => 0 ];
54 if ( $this->
hasOption(
'regenerate-all' ) ) {
57 $result = $dbw->newSelectQueryBuilder()
58 ->select( [
'page_id',
'page_namespace',
'page_title' ] )
61 ->caller( __METHOD__ )
65 $dbDomain = $services->getDBLoadBalancerFactory()->getLocalDomainID();
66 $wikiPageFactory = $services->getWikiPageFactory();
67 $revisionLookup = $services->getRevisionLookup();
70 foreach ( $result as $row ) {
71 $pageId = intval( $row->page_id );
72 $title = Title::makeTitle( $row->page_namespace, $row->page_title );
73 $name = $title->getPrefixedText();
74 $latestTime = $dbw->newSelectQueryBuilder()
75 ->select(
'MAX(rev_timestamp)' )
77 ->where( [
'rev_page' => $pageId ] )
78 ->caller( __METHOD__ )
81 $this->
output(
"$dbDomain $pageId [[$name]] can't find latest rev time?!\n" );
85 $revRecord = $revisionLookup->getRevisionByTimestamp( $title, $latestTime, IDBAccessObject::READ_LATEST );
86 if ( $revRecord ===
null ) {
88 "$dbDomain $pageId [[$name]] latest time $latestTime, can't find revision id\n"
93 $id = $revRecord->getId();
94 $this->
output(
"$dbDomain $pageId [[$name]] latest time $latestTime, rev id $id\n" );
96 $page = $wikiPageFactory->newFromTitle( $title );
97 $page->updateRevisionOn( $dbw, $revRecord );
102 $this->
output(
"Done! Processed $n pages.\n" );
104 $this->
output(
"This was a dry run; rerun with --fix to update page_latest.\n" );