- $joins = array( 'categorylinks' => array( 'INNER JOIN', 'cl_from = page_id' ),
- 'category' => array( 'LEFT JOIN', 'cat_title = page_title AND page_namespace = ' . NS_CATEGORY ) );
-
- if ( $wgExperimentalCategorySort ) {
- # Copy-pasted from below, but that's okay, because the stuff below
- # will be deleted when this becomes the default.
- $this->nextPage = array(
- 'page' => null,
- 'subcat' => null,
- 'file' => null,
- );
- $this->flip = array( 'page' => false, 'subcat' => false, 'file' => false );
-
- foreach ( array( 'page', 'subcat', 'file' ) as $type ) {
- # Get the sortkeys for start/end, if applicable. Note that if
- # the collation in the database differs from the one
- # $wgContLang is using, pagination might go totally haywire.
- $extraConds = array( 'cl_type' => $type );
- if ( $this->from[$type] !== null ) {
- $extraConds[] = 'cl_sortkey >= '
- . $dbr->addQuotes( $wgContLang->convertToSortkey( $this->from[$type] ) );
- } elseif ( $this->until[$type] !== null ) {
- $extraConds[] = 'cl_sortkey < '
- . $dbr->addQuotes( $wgContLang->convertToSortkey( $this->until[$type] ) );
- $this->flip[$type] = true;
- }
-
- $res = $dbr->select(
- $tables,
- array_merge( $fields, array( 'cl_sortkey_prefix' ) ),
- $conds + $extraConds,
- __METHOD__,
- $opts + array( 'ORDER BY' => $this->flip[$type] ? 'cl_sortkey DESC' : 'cl_sortkey' ),
- $joins
- );
-
- $count = 0;
- foreach ( $res as $row ) {
- $title = Title::newFromRow( $row );
- $rawSortkey = $title->getCategorySortkey( $row->cl_sortkey_prefix );
-
- if ( ++$count > $this->limit ) {
- # We've reached the one extra which shows that there
- # are additional pages to be had. Stop here...
- $this->nextPage[$type] = $rawSortkey;
- break;
- }
-
- if ( $title->getNamespace() == NS_CATEGORY ) {
- $cat = Category::newFromRow( $row, $title );
- $this->addSubcategoryObject( $cat, $rawSortkey, $row->page_len );
- } elseif ( $this->showGallery && $title->getNamespace() == NS_FILE ) {
- $this->addImage( $title, $rawSortkey, $row->page_len, $row->page_is_redirect );
- } else {
- $this->addPage( $title, $rawSortkey, $row->page_len, $row->page_is_redirect );
- }
- }
+ $this->flip = array( 'page' => false, 'subcat' => false, 'file' => false );
+
+ foreach ( array( 'page', 'subcat', 'file' ) as $type ) {
+ # Get the sortkeys for start/end, if applicable. Note that if
+ # the collation in the database differs from the one
+ # set in $wgCategoryCollation, pagination might go totally haywire.
+ $extraConds = array( 'cl_type' => $type );
+ if ( $this->from[$type] !== null ) {
+ $extraConds[] = 'cl_sortkey >= '
+ . $dbr->addQuotes( $this->collation->getSortKey( $this->from[$type] ) );
+ } elseif ( $this->until[$type] !== null ) {
+ $extraConds[] = 'cl_sortkey < '
+ . $dbr->addQuotes( $this->collation->getSortKey( $this->until[$type] ) );
+ $this->flip[$type] = true;