X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialDoubleRedirects.php;h=9bfa7e52b3874aff9e3b93d12fc0d0273465f5f7;hb=d470d9800dec83a0e625cb5cbd89be464678716b;hp=3169844610595650c4da3f45244300fe9546b3bd;hpb=e0ce5a322e41cf39f110fd4fa3c2c5c849964252;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialDoubleRedirects.php b/includes/SpecialDoubleRedirects.php index 3169844610..9bfa7e52b3 100644 --- a/includes/SpecialDoubleRedirects.php +++ b/includes/SpecialDoubleRedirects.php @@ -1,97 +1,92 @@ '.wfMsg("doubleredirectstext")."


\n"; + return wfMsgExt( 'doubleredirectstext', array( 'parse' ) ); } - function getSQL() { - $dbr =& wfGetDB( DB_SLAVE ); - extract( $dbr->tableNames( 'page', 'pagelinks' ) ); - - $sql = "SELECT 'DoubleRedirects' as type," . - " pa.page_namespace as namespace, pa.page_title as title," . - " pb.page_namespace as nsb, pb.page_title as tb," . - " pc.page_namespace as nsc, pc.page_title as tc" . - " FROM $pagelinks AS la, $pagelinks AS lb, $page AS pa, $page AS pb, $page AS pc" . - " WHERE pa.page_is_redirect=1 AND pb.page_is_redirect=1" . - " AND la.pl_from=pa.page_id" . - " AND la.pl_namespace=pb.page_namespace" . - " AND la.pl_title=pb.page_title" . - " AND lb.pl_from=pb.page_id" . - " AND lb.pl_namespace=pc.page_namespace" . - " AND lb.pl_title=pc.page_title"; + function getSQLText( &$dbr, $namespace = null, $title = null ) { + + list( $page, $redirect ) = $dbr->tableNamesN( 'page', 'redirect' ); + + $limitToTitle = !( $namespace === null && $title === null ); + $sql = $limitToTitle ? "SELECT" : "SELECT 'DoubleRedirects' as type," ; + $sql .= + " pa.page_namespace as namespace, pa.page_title as title," . + " pb.page_namespace as nsb, pb.page_title as tb," . + " pc.page_namespace as nsc, pc.page_title as tc" . + " FROM $redirect AS ra, $redirect AS rb, $page AS pa, $page AS pb, $page AS pc" . + " WHERE ra.rd_from=pa.page_id" . + " AND ra.rd_namespace=pb.page_namespace" . + " AND ra.rd_title=pb.page_title" . + " AND rb.rd_from=pb.page_id" . + " AND rb.rd_namespace=pc.page_namespace" . + " AND rb.rd_title=pc.page_title"; + + if( $limitToTitle ) { + $encTitle = $dbr->addQuotes( $title ); + $sql .= " AND pa.page_namespace=$namespace" . + " AND pa.page_title=$encTitle"; + } + return $sql; } + function getSQL() { + $dbr = wfGetDB( DB_SLAVE ); + return $this->getSQLText( $dbr ); + } + function getOrder() { return ''; } - + function formatResult( $skin, $result ) { + global $wgContLang; + $fname = 'DoubleRedirectsPage::formatResult'; $titleA = Title::makeTitle( $result->namespace, $result->title ); if ( $result && !isset( $result->nsb ) ) { - $dbr =& wfGetDB( DB_SLAVE ); - extract( $dbr->tableNames( 'page', 'pagelinks' ) ); - $encTitle = $dbr->addQuotes( $result->title ); - - $sql = "SELECT pa.page_namespace as namespace, pa.page_title as title," . - " pb.page_namespace as nsb, pb.page_title as tb," . - " pc.page_namespace as nsc, pc.page_title as tc" . - " FROM $pagelinks AS la, $pagelinks AS lb, $page AS pa, $page AS pb, $page AS pc" . - " WHERE pa.page_is_redirect=1 AND pb.page_is_redirect=1" . - " AND la.pl_from=pa.page_id" . - " AND la.pl_namespace=pb.page_namespace" . - " AND la.pl_title=pb.page_title" . - " AND lb.pl_from=pb.page_id" . - " AND lb.pl_namespace=pc.page_namespace" . - " AND lb.pl_title=pc.page_title" . - " AND pa.page_namespace={$result->namespace}" . - " AND pa.page_title=$encTitle"; + $dbr = wfGetDB( DB_SLAVE ); + $sql = $this->getSQLText( $dbr, $result->namespace, $result->title ); $res = $dbr->query( $sql, $fname ); if ( $res ) { $result = $dbr->fetchObject( $res ); + $dbr->freeResult( $res ); } } if ( !$result ) { - return ''; + return '' . $skin->makeLinkObj( $titleA, '', 'redirect=no' ) . ''; } - + $titleB = Title::makeTitle( $result->nsb, $result->tb ); $titleC = Title::makeTitle( $result->nsc, $result->tc ); - $linkA = $skin->makeKnownLinkObj( $titleA,'', 'redirect=no' ); + $linkA = $skin->makeKnownLinkObj( $titleA, '', 'redirect=no' ); $edit = $skin->makeBrokenLinkObj( $titleA, "(".wfMsg("qbedit").")" , 'redirect=no'); $linkB = $skin->makeKnownLinkObj( $titleB, '', 'redirect=no' ); $linkC = $skin->makeKnownLinkObj( $titleC ); - - return "$linkA $edit → $linkB → $linkC"; + $arr = $wgContLang->getArrow() . $wgContLang->getDirMark(); + + return( "{$linkA} {$edit} {$arr} {$linkB} {$arr} {$linkC}" ); } } @@ -100,10 +95,9 @@ class DoubleRedirectsPage extends PageQueryPage { */ function wfSpecialDoubleRedirects() { list( $limit, $offset ) = wfCheckLimits(); - + $sdr = new DoubleRedirectsPage(); - + return $sdr->doQuery( $offset, $limit ); } -?>