}
$db = $this->getDB();
+ $op = $params['dir'] == 'descending' ? '<' : '>';
$prefix = $db->addQuotes( $cont[0] );
$title = $db->addQuotes( $this->titleToKey( $cont[1] ) );
$from = intval( $cont[2] );
$this->addWhere(
- "iwl_prefix > $prefix OR " .
+ "iwl_prefix $op $prefix OR " .
"(iwl_prefix = $prefix AND " .
- "(iwl_title > $title OR " .
+ "(iwl_title $op $title OR " .
"(iwl_title = $title AND " .
- "iwl_from >= $from)))"
+ "iwl_from $op= $from)))"
);
}
$this->addFields( array( 'page_id', 'page_title', 'page_namespace', 'page_is_redirect',
'iwl_from', 'iwl_prefix', 'iwl_title' ) );
+ $sort = ( $params['dir'] == 'descending' ? ' DESC' : '' );
if ( isset( $params['prefix'] ) ) {
$this->addWhereFld( 'iwl_prefix', $params['prefix'] );
if ( isset( $params['title'] ) ) {
$this->addWhereFld( 'iwl_title', $params['title'] );
- $this->addOption( 'ORDER BY', 'iwl_from' );
+ $this->addOption( 'ORDER BY', 'iwl_from' . $sort );
} else {
$this->addOption( 'ORDER BY', array(
- 'iwl_title',
- 'iwl_from'
+ 'iwl_title' . $sort,
+ 'iwl_from' . $sort
));
}
} else {
$this->addOption( 'ORDER BY', array(
- 'iwl_prefix',
- 'iwl_title',
- 'iwl_from'
+ 'iwl_prefix' . $sort,
+ 'iwl_title' . $sort,
+ 'iwl_from' . $sort
));
}
'iwtitle',
),
),
+ 'dir' => array(
+ ApiBase::PARAM_DFLT => 'ascending',
+ ApiBase::PARAM_TYPE => array(
+ 'ascending',
+ 'descending'
+ )
+ ),
);
}
' iwtitle - Adds the title of the interwiki',
),
'limit' => 'How many total pages to return',
+ 'dir' => 'The direction in which to list',
);
}