Example #1
0
 /**
  * @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());
     }
 }
Example #2
0
 /**
  * @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;
 }
Example #3
0
 /**
  * @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);
 }
Example #4
0
 /**
  * @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);
 }
Example #5
0
 /**
  * @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;
 }