summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/ManualEntryLogger.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/ManualEntryLogger.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/ManualEntryLogger.php85
1 files changed, 85 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/ManualEntryLogger.php b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/ManualEntryLogger.php
new file mode 100644
index 00000000..a8e92649
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/ManualEntryLogger.php
@@ -0,0 +1,85 @@
+<?php
+
+namespace SMW\MediaWiki;
+
+use LogEntry;
+use ManualLogEntry;
+use Title;
+use User;
+
+/**
+ * @license GNU GPL v2+
+ * @since 2.1
+ *
+ * @author mwjames
+ */
+class ManualEntryLogger {
+
+ /**
+ * @var logEntry
+ */
+ private $logEntry = null;
+
+ /**
+ * @var array
+ */
+ private $eventTypes = [];
+
+ /**
+ * @since 2.4
+ *
+ * @param LogEntry|null $logEntry
+ */
+ public function __construct( LogEntry $logEntry = null ) {
+ $this->logEntry = $logEntry;
+ }
+
+ /**
+ * @since 2.4
+ *
+ * @param string $eventTypes
+ */
+ public function registerLoggableEventType( $eventType ) {
+ $this->eventTypes[$eventType] = true;
+ }
+
+ /**
+ * @since 2.1
+ *
+ * @param string $type
+ * @param string $performer
+ * @param string $target
+ * @param string $comment
+ *
+ * @return integer|null
+ */
+ public function log( $type, $performer, $target, $comment ) {
+
+ if ( !isset( $this->eventTypes[$type] ) || !$this->eventTypes[$type] ) {
+ return null;
+ }
+
+ $logEntry = $this->newManualLogEntryForType( $type );
+ $logEntry->setTarget( Title::newFromText( $target ) );
+
+ if ( is_string( $performer) ) {
+ $performer = User::newFromName( $performer );
+ }
+
+ $logEntry->setPerformer( $performer );
+ $logEntry->setParameters( [] );
+ $logEntry->setComment( $comment );
+
+ return $logEntry->insert();
+ }
+
+ protected function newManualLogEntryForType( $type ) {
+
+ if ( $this->logEntry !== null ) {
+ return $this->logEntry;
+ }
+
+ return new ManualLogEntry( 'smw', $type );
+ }
+
+}