use BookStack\Actions\View;
use BookStack\Auth\Permissions\EntityPermission;
use BookStack\Auth\Permissions\JointPermission;
+use BookStack\Facades\Permissions;
use BookStack\Ownable;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Relations\MorphMany;
* The base class for book-like items such as pages, chapters & books.
* This is not a database model in itself but extended.
*
- * @property integer $id
+ * @property int $id
* @property string $name
* @property string $slug
* @property Carbon $created_at
*/
public function activity()
{
- return $this->morphMany(Activity::class, 'entity')->orderBy('created_at', 'desc');
+ return $this->morphMany(Activity::class, 'entity')
+ ->orderBy('created_at', 'desc');
}
/**
return strtolower(static::getClassName());
}
+ /**
+ * Get the type of this entity.
+ */
+ public function type(): string
+ {
+ return static::getType();
+ }
+
/**
* Get an instance of an entity of the given type.
* @param $type
if (mb_strlen($text) > $length) {
$text = mb_substr($text, 0, $length-3) . '...';
}
- return trim($text);
+ return trim($text);
}
/**
{
return $path;
}
+
+ /**
+ * Rebuild the permissions for this entity.
+ */
+ public function rebuildPermissions()
+ {
+ /** @noinspection PhpUnhandledExceptionInspection */
+ Permissions::buildJointPermissionsForEntity($this);
+ }
+
+ /**
+ * Generate and set a new URL slug for this model.
+ */
+ public function refreshSlug(): string
+ {
+ $generator = new SlugGenerator($this);
+ $this->slug = $generator->generate();
+ return $this->slug;
+ }
}