/** * @dataProvider provideValidConstruction */ public function testValidConstruction($pageIdentifier, $revisions) { $page = new Page($pageIdentifier, $revisions); $this->assertEquals($pageIdentifier, $page->getPageIdentifier()); if (is_null($revisions)) { $this->assertInstanceOf('Mediawiki\\DataModel\\Revisions', $page->getRevisions()); } else { $this->assertEquals($revisions, $page->getRevisions()); } }
/** * @param Page $page * * @returns bool */ public function watch(Page $page) { $params = ['token' => $this->api->getToken('watch')]; if (!is_null($page->getPageIdentifier()->getId())) { $params['pageids'] = $page->getPageIdentifier()->getId(); } elseif (!is_null($page->getPageIdentifier()->getTitle())) { $params['titles'] = $page->getPageIdentifier()->getTitle()->getTitle(); } elseif (!is_null($page->getRevisions()->getLatest())) { $params['revids'] = $page->getRevisions()->getLatest()->getId(); } $this->api->postRequest(new SimpleRequest('watch', $params)); return true; }
/** * @since 0.2 * * @param Page $page * @param QueryOptions|null $options * * @return Page */ public function getFromPage(Page $page, QueryOptions $options = null) { if (is_null($options)) { $options = new QueryOptions(); } $result = $this->api->getRequest(new SimpleRequest('query', $this->getQuery(array('pageids' => $page->getId()), $options))); $revisions = $this->getRevisionsFromResult(array_shift($result['query']['pages'])); $revisions->addRevisions($page->getRevisions()); return new Page($page->getPageIdentifier(), $revisions); }
/** * @since 0.2 * * @param Page $page * @param array $extraParams * * @return Page */ public function getFromPage(Page $page, array $extraParams = []) { $result = $this->api->getRequest(new SimpleRequest('query', $this->getQuery(['pageids' => $page->getId()], $extraParams))); $revisions = $this->getRevisionsFromResult(array_shift($result['query']['pages'])); $revisions->addRevisions($page->getRevisions()); return new Page($page->getPageIdentifier(), $revisions); }
/** * @param Page $page * @param DumpQuery $query * * @return bool */ private function matchPage(Page $page, DumpQuery $query) { //Check namespaces if (count($query->getNamespaceFilters()) !== 0 && !in_array($page->getTitle()->getNs(), $query->getNamespaceFilters())) { return false; } //Check Title foreach ($query->getTitleFilters(DumpQuery::TYPE_CONTAINS) as $regex) { if (!preg_match($regex, $page->getTitle()->getTitle())) { return false; } } foreach ($query->getTitleFilters(DumpQuery::TYPE_MISSING) as $regex) { if (preg_match($regex, $page->getTitle()->getTitle())) { return false; } } //Check Text foreach ($query->getTextFilters(DumpQuery::TYPE_CONTAINS) as $regex) { if (!preg_match($regex, $page->getRevisions()->getLatest()->getContent())) { return false; } } foreach ($query->getTextFilters(DumpQuery::TYPE_MISSING) as $regex) { if (preg_match($regex, $page->getRevisions()->getLatest()->getContent())) { return false; } } return true; }