return '<p>'.wfMsg("doubleredirectstext")."</p><br />\n";
}
- function getSQL() {
- $dbr =& wfGetDB( DB_SLAVE );
+ function getSQLText( &$dbr, $namespace = null, $title = null ) {
+
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";
+ $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 $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";
+
+ 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 '';
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";
+ $sql = $this->getSQLText( $dbr, $result->namespace, $result->title );
$res = $dbr->query( $sql, $fname );
if ( $res ) {
$result = $dbr->fetchObject( $res );
+ $dbr->freeResult( $res );
}
}
if ( !$result ) {