# HTML 4 has no rel="end" . . .
$attrs = '';
}
+
+ if( $type ) {
+ $attrs .= " class=\"mw-{$type}link\"" ;
+ }
return $this->getSkin()->makeKnownLinkObj( $this->getTitle(), $text,
wfArrayToCGI( $query, $this->getDefaultQuery() ), '', '',
$attrs );
unset( $this->mDefaultQuery['offset'] );
unset( $this->mDefaultQuery['limit'] );
unset( $this->mDefaultQuery['order'] );
+ unset( $this->mDefaultQuery['month'] );
+ unset( $this->mDefaultQuery['year'] );
}
return $this->mDefaultQuery;
}
}
foreach ( $this->mLimitsShown as $limit ) {
$links[] = $this->makeLink( $wgLang->formatNum( $limit ),
- array( 'offset' => $offset, 'limit' => $limit ) );
+ array( 'offset' => $offset, 'limit' => $limit ), 'num' );
}
return $links;
}
* @ingroup Pager
*/
abstract class AlphabeticPager extends IndexPager {
- function __construct() {
- parent::__construct();
- }
-
/**
* Shamelessly stolen bits from ReverseChronologicalPager,
* didn't want to do class magic as may be still revamped
return $this->mNavigationBar;
}
+ $opts = array( 'parsemag', 'escapenoentities' );
$linkTexts = array(
- 'prev' => wfMsgHtml( 'prevn', $wgLang->formatNum( $this->mLimit ) ),
- 'next' => wfMsgHtml( 'nextn', $wgLang->formatNum($this->mLimit ) ),
- 'first' => wfMsgHtml( 'page_first' ),
- 'last' => wfMsgHtml( 'page_last' )
+ 'prev' => wfMsgExt( 'prevn', $opts, $wgLang->formatNum( $this->mLimit ) ),
+ 'next' => wfMsgExt( 'nextn', $opts, $wgLang->formatNum($this->mLimit ) ),
+ 'first' => wfMsgExt( 'page_first', $opts ),
+ 'last' => wfMsgExt( 'page_last', $opts )
);
$pagingLinks = $this->getPagingLinks( $linkTexts );
*/
abstract class ReverseChronologicalPager extends IndexPager {
public $mDefaultDirection = true;
+ public $mYear;
+ public $mMonth;
function __construct() {
parent::__construct();
wfMsgHtml("viewprevnext", $pagingLinks['prev'], $pagingLinks['next'], $limits);
return $this->mNavigationBar;
}
+
+ function getDateCond( $year, $month ) {
+ $year = intval($year);
+ $month = intval($month);
+ // Basic validity checks
+ $this->mYear = $year > 0 ? $year : false;
+ $this->mMonth = ($month > 0 && $month < 13) ? $month : false;
+ // Given an optional year and month, we need to generate a timestamp
+ // to use as "WHERE rev_timestamp <= result"
+ // Examples: year = 2006 equals < 20070101 (+000000)
+ // year=2005, month=1 equals < 20050201
+ // year=2005, month=12 equals < 20060101
+ if ( !$this->mYear && !$this->mMonth ) {
+ return;
+ }
+ if ( $this->mYear ) {
+ $year = $this->mYear;
+ } else {
+ // If no year given, assume the current one
+ $year = gmdate( 'Y' );
+ // If this month hasn't happened yet this year, go back to last year's month
+ if( $this->mMonth > gmdate( 'n' ) ) {
+ $year--;
+ }
+ }
+ if ( $this->mMonth ) {
+ $month = $this->mMonth + 1;
+ // For December, we want January 1 of the next year
+ if ($month > 12) {
+ $month = 1;
+ $year++;
+ }
+ } else {
+ // No month implies we want up to the end of the year in question
+ $month = 1;
+ $year++;
+ }
+ // Y2K38 bug
+ if ( $year > 2032 ) {
+ $year = 2032;
+ }
+ $ymd = (int)sprintf( "%04d%02d01", $year, $month );
+ if ( $ymd > 20320101 ) {
+ $ymd = 20320101;
+ }
+ $this->mOffset = $this->mDb->timestamp( "${ymd}000000" );
+ }
}
/**