Ver código fonte

Add ModLogService

Daniel Supernault 5 anos atrás
pai
commit
810dc2190f
1 arquivos alterados com 98 adições e 0 exclusões
  1. 98 0
      app/Services/ModLogService.php

+ 98 - 0
app/Services/ModLogService.php

@@ -0,0 +1,98 @@
+<?php
+
+namespace App\Services;
+
+use App\ModLog;
+use App\User;
+
+class ModLogService {
+
+	protected $log;
+
+	public function __construct()
+	{
+		$this->log = new \StdClass;
+	}
+
+	public static function boot()
+	{
+		return new self;
+	}
+
+	public function user(User $user)
+	{
+		$this->log->user = $user;
+		return $this;
+	}
+
+	public function objectUid($val = null)
+	{
+		$this->log->object_uid = $val;
+		return $this;
+	}
+
+	public function objectId($val = null)
+	{
+		$this->log->object_id = $val;
+		return $this;
+	}
+
+	public function objectType($val = null)
+	{
+		$this->log->object_type = $val;
+		return $this;
+	}
+
+	public function action($val = null)
+	{
+		$this->log->action = $val;
+		return $this;
+	}
+
+	public function message($val = null)
+	{
+		$this->log->message = $val;
+		return $this;
+	}
+
+	public function metadata(array $val = null)
+	{
+		$this->log->metadata = json_encode($val);
+		return $this;
+	}
+
+	public function accessLevel($val = null)
+	{
+		if(!in_array($val, ['admin', 'mod'])) {
+			return $this;
+		}
+		$this->log->access_level = $val;
+		return $this;
+	}
+
+	public function save($res = false)
+	{
+		$log = $this->log;
+		if(!isset($log->user)) {
+			throw new \Exception('Invalid ModLog attribute.');
+		}
+
+		$ml = new ModLog();
+		$ml->user_id = $log->user->id;
+		$ml->user_username = $log->user->username;
+		$ml->object_uid = $log->object_uid ?? null;
+		$ml->object_id = $log->object_id ?? null;
+		$ml->object_type = $log->object_type ?? null;
+		$ml->action = $log->action ?? null;
+		$ml->message = $log->message ?? null;
+		$ml->metadata = $log->metadata ?? null;
+		$ml->access_level = $log->access_level ?? 'admin';
+		$ml->save();
+
+		if($res == true) {
+			return $ml;
+		} else {
+			return;
+		}
+	}
+}