]> BookStack Code Mirror - bookstack/blobdiff - app/Entities/Models/Deletion.php
Updated attachment links to have dropdown for open type
[bookstack] / app / Entities / Models / Deletion.php
index 1be0ba4c678c17139cf1aa9ca2592f2ca0f692d7..25f0ea6db7f84478fe2e7d30fe45c1145ab5c55b 100644 (file)
@@ -1,14 +1,24 @@
-<?php namespace BookStack\Entities\Models;
+<?php
+
+namespace BookStack\Entities\Models;
 
 use BookStack\Auth\User;
-use BookStack\Entities\Models\Entity;
+use BookStack\Interfaces\Deletable;
 use BookStack\Interfaces\Loggable;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
 use Illuminate\Database\Eloquent\Relations\MorphTo;
 
+/**
+ * @property int       $id
+ * @property int       $deleted_by
+ * @property string    $deletable_type
+ * @property int       $deletable_id
+ * @property Deletable $deletable
+ */
 class Deletion extends Model implements Loggable
 {
+    protected $hidden = [];
 
     /**
      * Get the related deletable record.
@@ -19,7 +29,7 @@ class Deletion extends Model implements Loggable
     }
 
     /**
-     * The the user that performed the deletion.
+     * Get the user that performed the deletion.
      */
     public function deleter(): BelongsTo
     {
@@ -29,20 +39,34 @@ class Deletion extends Model implements Loggable
     /**
      * Create a new deletion record for the provided entity.
      */
-    public static function createForEntity(Entity $entity): Deletion
+    public static function createForEntity(Entity $entity): self
     {
         $record = (new self())->forceFill([
-            'deleted_by' => user()->id,
+            'deleted_by'     => user()->id,
             'deletable_type' => $entity->getMorphClass(),
-            'deletable_id' => $entity->id,
+            'deletable_id'   => $entity->id,
         ]);
         $record->save();
+
         return $record;
     }
 
     public function logDescriptor(): string
     {
         $deletable = $this->deletable()->first();
-        return "Deletion ({$this->id}) for {$deletable->getType()} ({$deletable->id}) {$deletable->name}";
+
+        if ($deletable instanceof Entity) {
+            return "Deletion ({$this->id}) for {$deletable->getType()} ({$deletable->id}) {$deletable->name}";
+        }
+
+        return "Deletion ({$this->id})";
+    }
+
+    /**
+     * Get a URL for this specific deletion.
+     */
+    public function getUrl(string $path = 'restore'): string
+    {
+        return url("/settings/recycle-bin/{$this->id}/" . ltrim($path, '/'));
     }
 }