public function testLimit()
 {
     $obj = new ListLogEventsOptions();
     $this->assertEquals(null, $obj->getLimit());
     $this->assertEquals($obj, $obj->setLimit(100));
     $this->assertEquals(100, $obj->getLimit());
 }
예제 #2
0
 /**
  * @param ListLogEventsOptions $options
  *
  * @return LogList
  */
 public function getLogList(ListLogEventsOptions $options = null)
 {
     if ($options == null) {
         $options = new ListLogEventsOptions();
     }
     $logList = new LogList();
     $continue = '';
     $limit = $options->getLimit();
     while (true) {
         $params = $this->getParamsFromOptions($options);
         if (!empty($continue)) {
             $params['lecontinue'] = $continue;
         }
         if ($limit === null) {
             $params['lelimit'] = 5000;
         } else {
             $params['lelimit'] = $limit;
         }
         $result = $this->api->getRequest(new SimpleRequest('query', $params));
         $limit = $limit - count($result['query']['logevents']);
         foreach ($result['query']['logevents'] as $logevent) {
             $logList->addLog(new Log($logevent['logid'], $logevent['type'], $logevent['action'], $logevent['timestamp'], $logevent['user'], new Page(new PageIdentifier(new Title($logevent['title'], $logevent['ns']), $logevent['pageid']), new Revisions()), $logevent['comment'], $this->getLogDetailsFromEvent($logevent)));
         }
         if ($limit !== null && $limit <= 0) {
             return $logList;
         }
         if (empty($result['query-continue']['logevents']['lecontinue'])) {
             return $logList;
         } else {
             $continue = $result['query-continue']['logevents']['lecontinue'];
         }
     }
 }