-<?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.
}
/**
- * The the user that performed the deletion.
+ * Get the user that performed the deletion.
*/
public function deleter(): BelongsTo
{
/**
* 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, '/'));
}
}