- if (is_null($params['category']))
- $this->dieUsage("The cmtitle parameter is required", 'notitle');
- $categoryTitle = Title::makeTitleSafe(NS_CATEGORY, $params['category']);
-
- if ( is_null( $categoryTitle ) || $categoryTitle->getNamespace() != NS_CATEGORY )
- $this->dieUsage("The category name you entered is not valid", 'invalidcategory');
-
- $prop = array_flip($params['prop']);
- $fld_ids = isset($prop['ids']);
- $fld_title = isset($prop['title']);
- $fld_sortkey = isset($prop['sortkey']);
- $fld_timestamp = isset($prop['timestamp']);
-
- if (is_null($resultPageSet)) {
- $this->addFields(array('cl_from', 'cl_sortkey', 'page_namespace', 'page_title'));
- $this->addFieldsIf('page_id', $fld_ids);
+ $this->requireOnlyOneParameter( $params, 'title', 'pageid' );
+
+ if ( isset( $params['title'] ) ) {
+ $categoryTitle = Title::newFromText( $params['title'] );
+
+ if ( is_null( $categoryTitle ) || $categoryTitle->getNamespace() != NS_CATEGORY ) {
+ $this->dieUsage( 'The category name you entered is not valid', 'invalidcategory' );
+ }
+ } elseif( isset( $params['pageid'] ) ) {
+ $categoryTitle = Title::newFromID( $params['pageid'] );
+
+ if ( !$categoryTitle ) {
+ $this->dieUsageMsg( array( 'nosuchpageid', $params['pageid'] ) );
+ } elseif ( $categoryTitle->getNamespace() != NS_CATEGORY ) {
+ $this->dieUsage( 'The category name you entered is not valid', 'invalidcategory' );
+ }
+ }
+
+ $prop = array_flip( $params['prop'] );
+ $fld_ids = isset( $prop['ids'] );
+ $fld_title = isset( $prop['title'] );
+ $fld_sortkey = isset( $prop['sortkey'] );
+ $fld_sortkeyprefix = isset( $prop['sortkeyprefix'] );
+ $fld_timestamp = isset( $prop['timestamp'] );
+ $fld_type = isset( $prop['type'] );
+
+ if ( is_null( $resultPageSet ) ) {
+ $this->addFields( array( 'cl_from', 'page_namespace', 'page_title' ) );
+ $this->addFieldsIf( 'page_id', $fld_ids );
+ $this->addFieldsIf( 'cl_sortkey_prefix', $fld_sortkeyprefix );
+ $this->addFieldsIf( 'cl_sortkey', $fld_sortkey );