/**
* Set and return the mOffset timestamp such that we can get all revisions with
* a timestamp up to the specified parameters.
- * @param int $year [optional] Year up to which we want revisions. Default is current year.
- * @param int $month [optional] Month up to which we want revisions. Default is end of year.
+ * @param int $year Year up to which we want revisions
+ * @param int $month Month up to which we want revisions
* @param int $day [optional] Day up to which we want revisions. Default is end of month.
- * @return string Timestamp
+ * @return string|null Timestamp or null if year and month are false/invalid
*/
- function getDateCond( $year = -1, $month = -1, $day = -1 ) {
+ function getDateCond( $year, $month, $day = -1 ) {
$year = intval( $year );
$month = intval( $month );
$day = intval( $day );
$this->mYear = $year > 0 ? $year : false;
$this->mMonth = ( $month > 0 && $month < 13 ) ? $month : false;
+ // If year and month are false, don't update the mOffset
+ if ( !$this->mYear && !$this->mMonth ) {
+ return;
+ }
+
// Given an optional year, month, and day, we need to generate a timestamp
// to use as "WHERE rev_timestamp <= result"
// Examples: year = 2006 equals < 20070101 (+000000)
$currYear = $timestamp->format( 'Y' );
$currMonth = $timestamp->format( 'n' );
- $currYearTimestamp = $db->timestamp( $currYear + 1 . '0101000000' );
// Test that getDateCond sets and returns mOffset
- $this->assertEquals( $pager->getDateCond( 2006 ), $pager->mOffset );
-
- // Test year
- $pager->getDateCond( 2006 );
- $this->assertEquals( $pager->mOffset, $db->timestamp( '20070101000000' ) );
+ $this->assertEquals( $pager->getDateCond( 2006, 6 ), $pager->mOffset );
// Test year and month
$pager->getDateCond( 2006, 6 );
$pager->getDateCond( 2006, 6, 30 );
$this->assertEquals( $pager->mOffset, $db->timestamp( '20060701000000' ) );
- // Test invalid year (should use current year)
- $pager->getDateCond( -1337 );
- $this->assertEquals( $pager->mOffset, $currYearTimestamp );
-
- // Test invalid month
+ // Test invalid month (should use end of year)
$pager->getDateCond( 2006, -1 );
$this->assertEquals( $pager->mOffset, $db->timestamp( '20070101000000' ) );
- // Test invalid day
+ // Test invalid day (should use end of month)
$pager->getDateCond( 2006, 6, 1337 );
$this->assertEquals( $pager->mOffset, $db->timestamp( '20060701000000' ) );
- // Test no year or month (should use end of current year)
- $pager->getDateCond();
- $this->assertEquals( $pager->mOffset, $currYearTimestamp );
-
// Test last day of year
$pager->getDateCond( 2006, 12, 31 );
$this->assertEquals( $pager->mOffset, $db->timestamp( '20070101000000' ) );