- $res = $db->select(
- 'redirect',
- [
- 'rd_from',
- 'rd_namespace',
- 'rd_fragment',
- 'rd_interwiki',
- 'rd_title'
- ], [ 'rd_from' => array_keys( $this->mPendingRedirectIDs ) ],
- __METHOD__
- );
- foreach ( $res as $row ) {
- $rdfrom = intval( $row->rd_from );
- $from = $this->mPendingRedirectIDs[$rdfrom]->getPrefixedText();
- $to = Title::makeTitle(
- $row->rd_namespace,
- $row->rd_title,
- $row->rd_fragment,
- $row->rd_interwiki
- );
- $this->mResolvedRedirectTitles[$from] = $this->mPendingRedirectIDs[$rdfrom];
- unset( $this->mPendingRedirectIDs[$rdfrom] );
- if ( $to->isExternal() ) {
- $this->mInterwikiTitles[$to->getPrefixedText()] = $to->getInterwiki();
- } elseif ( !isset( $this->mAllPages[$row->rd_namespace][$row->rd_title] ) ) {
- $lb->add( $row->rd_namespace, $row->rd_title );
+ if ( $this->mPendingRedirectIDs ) {
+ $res = $db->select(
+ 'redirect',
+ [
+ 'rd_from',
+ 'rd_namespace',
+ 'rd_fragment',
+ 'rd_interwiki',
+ 'rd_title'
+ ], [ 'rd_from' => array_keys( $this->mPendingRedirectIDs ) ],
+ __METHOD__
+ );
+ foreach ( $res as $row ) {
+ $rdfrom = intval( $row->rd_from );
+ $from = $this->mPendingRedirectIDs[$rdfrom]->getPrefixedText();
+ $to = Title::makeTitle(
+ $row->rd_namespace,
+ $row->rd_title,
+ $row->rd_fragment,
+ $row->rd_interwiki
+ );
+ $this->mResolvedRedirectTitles[$from] = $this->mPendingRedirectIDs[$rdfrom];
+ unset( $this->mPendingRedirectIDs[$rdfrom] );
+ if ( $to->isExternal() ) {
+ $this->mInterwikiTitles[$to->getPrefixedText()] = $to->getInterwiki();
+ } elseif ( !isset( $this->mAllPages[$to->getNamespace()][$to->getDBkey()] ) ) {
+ $titlesToResolve[] = $to;
+ }
+ $this->mRedirectTitles[$from] = $to;
+ }
+
+ if ( $this->mPendingRedirectIDs ) {
+ // We found pages that aren't in the redirect table
+ // Add them
+ foreach ( $this->mPendingRedirectIDs as $id => $title ) {
+ $page = WikiPage::factory( $title );
+ $rt = $page->insertRedirect();
+ if ( !$rt ) {
+ // What the hell. Let's just ignore this
+ continue;
+ }
+ if ( $rt->isExternal() ) {
+ $this->mInterwikiTitles[$rt->getPrefixedText()] = $rt->getInterwiki();
+ } elseif ( !isset( $this->mAllPages[$rt->getNamespace()][$rt->getDBkey()] ) ) {
+ $titlesToResolve[] = $rt;
+ }
+ $from = $title->getPrefixedText();
+ $this->mResolvedRedirectTitles[$from] = $title;
+ $this->mRedirectTitles[$from] = $rt;
+ unset( $this->mPendingRedirectIDs[$id] );
+ }