- // for category redirection
- if ( $nt->isRedirect() ) {
- $at = new Article( $nt );
- $nt = $at->getRedirectTarget();
- // we only redirect a category to another category
- if ( $nt->getNamespace() == NS_CATEGORY )
- $name = $nt->getText();
+
+ if ( $this->mTitle->getNamespace() == NS_CATEGORY ) {
+ $type = 'subcat';
+ } elseif ( $this->mTitle->getNamespace() == NS_FILE ) {
+ $type = 'file';
+ } else {
+ $type = 'page';
+ }
+
+ # TODO: This is kind of wrong, because someone might set a sort
+ # key prefix that's the same as the default sortkey for the
+ # title. This should be fixed by refactoring code to replace
+ # $sortkey in this array by a prefix, but it's basically harmless
+ # (Title::moveTo() has had the same issue for a long time).
+ if ( $this->mTitle->getCategorySortkey() == $sortkey ) {
+ $prefix = '';
+ $sortkey = $wgContLang->convertToSortkey( $sortkey );
+ } else {
+ # Treat custom sortkeys as a prefix, so that if multiple
+ # things are forced to sort as '*' or something, they'll
+ # sort properly in the category rather than in page_id
+ # order or such.
+ $prefix = $sortkey;
+ $sortkey = $wgContLang->convertToSortkey(
+ $this->mTitle->getCategorySortkey( $prefix ) );