public function testRecursive() { $obj = new ListCategoryMembersOptions(); $this->assertEquals(false, $obj->getRecursive()); $this->assertEquals($obj, $obj->setRecursive(true)); $this->assertEquals(true, $obj->getRecursive()); }
/** * @since 0.3 * * @param string $name * @param ListCategoryMembersOptions $options * @returns Pages */ public function getPageListFromCategoryName($name, ListCategoryMembersOptions $options = null) { if (is_null($options)) { $options = new ListCategoryMembersOptions(); } $recursive = $options->getRecursive(); if ($recursive) { //TODO implement recursive behaviour throw new \BadMethodCallException('Not yet implemented'); } $continue = ''; $limit = $options->getLimit(); $pages = new Pages(); while (true) { $params = array('list' => 'categorymembers', 'cmtitle' => $name); if (!empty($continue)) { $params['cmcontinue'] = $continue; } if ($limit === null) { $params['cmlimit'] = 5000; } else { $params['cmlimit'] = $limit; } $result = $this->api->getRequest(new SimpleRequest('query', $params)); if (!array_key_exists('query', $result)) { return $pages; } $limit = $limit - count($result['query']['categorymembers']); foreach ($result['query']['categorymembers'] as $member) { $pages->addPage(new Page(new PageIdentifier(new Title($member['title'], $member['ns']), $member['pageid']), new Revisions())); } if ($limit !== null && $limit <= 0) { return $pages; } if (empty($result['query-continue']['categorymembers']['cmcontinue'])) { if ($recursive) { //TODO implement recursive behaviour } return $pages; } else { $continue = $result['query-continue']['categorymembers']['cmcontinue']; } } }