summaryrefslogtreecommitdiff
path: root/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/LogListGetter.php
diff options
context:
space:
mode:
Diffstat (limited to 'bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/LogListGetter.php')
-rw-r--r--bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/LogListGetter.php83
1 files changed, 83 insertions, 0 deletions
diff --git a/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/LogListGetter.php b/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/LogListGetter.php
new file mode 100644
index 00000000..d9394919
--- /dev/null
+++ b/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/LogListGetter.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace Mediawiki\Api\Service;
+
+use Mediawiki\Api\SimpleRequest;
+use Mediawiki\DataModel\Log;
+use Mediawiki\DataModel\LogList;
+use Mediawiki\DataModel\Page;
+use Mediawiki\DataModel\PageIdentifier;
+use Mediawiki\DataModel\Revisions;
+use Mediawiki\DataModel\Title;
+
+/**
+ * @access private
+ *
+ * @author Thomas Arrow
+ */
+class LogListGetter extends Service {
+
+ /**
+ * @param array $extraParams
+ *
+ * @return LogList
+ */
+ public function getLogList( array $extraParams = [] ) {
+ $logList = new LogList();
+
+ while ( true ) {
+ $params = [
+ 'list' => 'logevents',
+ 'leprop' => 'title|ids|type|user|timestamp|comment|details'
+ ];
+
+ $newParams = array_merge( $extraParams, $params );
+ $result = $this->api->getRequest( new SimpleRequest( 'query', $newParams ) );
+
+ 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 )
+ )
+ );
+ }
+
+ return $logList;
+ }
+ }
+
+ /**
+ * @param array $event
+ *
+ * @return array
+ */
+ private function getLogDetailsFromEvent( $event ) {
+ $ignoreKeys = array_flip( [
+ 'logid',
+ 'ns',
+ 'title',
+ 'pageid',
+ 'logpage',
+ 'type',
+ 'action',
+ 'user',
+ 'type',
+ 'timestamp',
+ 'comment' ] );
+ return array_diff_key( $event, $ignoreKeys );
+ }
+
+}