clean up attributes
This commit is contained in:
@@ -125,7 +125,7 @@ class ArticleConductor extends Conductor
|
|||||||
public function includeAttachments(Model $model)
|
public function includeAttachments(Model $model)
|
||||||
{
|
{
|
||||||
return $model->getAttachments()->map(function ($attachment) {
|
return $model->getAttachments()->map(function ($attachment) {
|
||||||
return MediaConductor::includeModel(request(), 'attachments', $attachment->getMedia());
|
return MediaConductor::includeModel(request(), 'attachments', $attachment->media);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ class ArticleConductor extends Conductor
|
|||||||
public function includeGallery(Model $model)
|
public function includeGallery(Model $model)
|
||||||
{
|
{
|
||||||
return $model->getGallery()->map(function ($item) {
|
return $model->getGallery()->map(function ($item) {
|
||||||
return MediaConductor::includeModel(request(), 'gallery', $item->getMedia());
|
return MediaConductor::includeModel(request(), 'gallery', $item->media);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ class EventConductor extends Conductor
|
|||||||
|
|
||||||
return $model->getAttachments()->map(function ($attachment) use ($user) {
|
return $model->getAttachments()->map(function ($attachment) use ($user) {
|
||||||
if ($attachment->private === false || ($user !== null && $user->hasPermission('admin/events') === true)) {
|
if ($attachment->private === false || ($user !== null && $user->hasPermission('admin/events') === true)) {
|
||||||
return MediaConductor::includeModel(request(), 'attachments', $attachment->getMedia());
|
return MediaConductor::includeModel(request(), 'attachments', $attachment->media);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,10 +46,41 @@ class Attachment extends Model
|
|||||||
*
|
*
|
||||||
* @return null|Media
|
* @return null|Media
|
||||||
*/
|
*/
|
||||||
public function getMedia(): ?Media
|
public function getMediaAttribute(): ?Media
|
||||||
{
|
{
|
||||||
return Cache::remember("attachment:{$this->id}:media", now()->addDays(28), function () {
|
$mediaId = '0';
|
||||||
|
$media = null;
|
||||||
|
|
||||||
|
if (Cache::has("attachment:{$this->id}:media") === true) {
|
||||||
|
$mediaId = Cache::get("attachment:{$this->id}:media");
|
||||||
|
} else {
|
||||||
|
$media = $this->media()->first();
|
||||||
|
if ($media === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$mediaId = $media->id;
|
||||||
|
Cache::put("attachment:{$this->id}:media", $mediaId, now()->addDays(28));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Cache::remember("media:{$mediaId}", now()->addDays(28), function () use ($media) {
|
||||||
|
if ($media !== null) {
|
||||||
|
return $media;
|
||||||
|
}
|
||||||
|
|
||||||
return $this->media()->first();
|
return $this->media()->first();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the media for this item.
|
||||||
|
*
|
||||||
|
* @param Media $media The media model.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setMediaAttribute(Media $media): void
|
||||||
|
{
|
||||||
|
$this->media()->associate($media)->save();
|
||||||
|
Cache::put("attachment:{$this->id}:media", $media->id, now()->addDays(28));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ class Gallery extends Model
|
|||||||
*
|
*
|
||||||
* @return null|Media The media model.
|
* @return null|Media The media model.
|
||||||
*/
|
*/
|
||||||
public function getMedia(): ?Media
|
public function getMediaAttribute(): ?Media
|
||||||
{
|
{
|
||||||
$mediaId = '0';
|
$mediaId = '0';
|
||||||
$media = null;
|
$media = null;
|
||||||
@@ -92,4 +92,16 @@ class Gallery extends Model
|
|||||||
return $this->media()->first();
|
return $this->media()->first();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the media for this item.
|
||||||
|
*
|
||||||
|
* @param Media $media The media model.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setMediaAttribute(Media $media): void
|
||||||
|
{
|
||||||
|
$this->media()->associate($media)->save();
|
||||||
|
Cache::put("gallery:{$this->id}:media", $media->id, now()->addDays(28));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,9 +103,9 @@ class User extends Authenticatable implements Auditable
|
|||||||
/**
|
/**
|
||||||
* Get the list of permissions of the user
|
* Get the list of permissions of the user
|
||||||
*
|
*
|
||||||
* @return Illuminate\Database\Eloquent\Collection
|
* @return Illuminate\Database\Eloquent\Relations\HasMany
|
||||||
*/
|
*/
|
||||||
public function permissions(): Collection
|
public function permissions(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Permission::class);
|
return $this->hasMany(Permission::class);
|
||||||
}
|
}
|
||||||
@@ -123,6 +123,23 @@ class User extends Authenticatable implements Auditable
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the permission attribute
|
||||||
|
*
|
||||||
|
* @param array $newPermissions The new permissions to set to the user.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setPermissionsAttribute(array $newPermissions): void
|
||||||
|
{
|
||||||
|
$existingPermissions = $this->permissions->pluck('permission')->toArray();
|
||||||
|
|
||||||
|
$this->revokePermission(array_diff($this->permissions, $newPermissions));
|
||||||
|
$this->givePermission(array_diff($newPermissions, $this->permissions));
|
||||||
|
|
||||||
|
$cacheKey = "user:{$this->id}:permissions";
|
||||||
|
Cache::delete($cacheKey);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test if user has permission
|
* Test if user has permission
|
||||||
*
|
*
|
||||||
@@ -146,19 +163,14 @@ class User extends Authenticatable implements Auditable
|
|||||||
$permissions = [$permissions];
|
$permissions = [$permissions];
|
||||||
}
|
}
|
||||||
|
|
||||||
$permissions = collect($permissions)->map(function ($permission) {
|
$newPermissions = array_map(function ($permission) {
|
||||||
return ['permission' => $permission];
|
return ['permission' => $permission];
|
||||||
});
|
}, array_diff($permissions, $this->permissions));
|
||||||
|
|
||||||
$existingPermissions = $this->permissions;
|
|
||||||
$newPermissions = $permissions->reject(function ($permission) use ($existingPermissions) {
|
|
||||||
return $existingPermissions->contains('permission', $permission['permission']);
|
|
||||||
});
|
|
||||||
|
|
||||||
$cacheKey = "user:{$this->id}:permissions";
|
$cacheKey = "user:{$this->id}:permissions";
|
||||||
Cache::forget($cacheKey);
|
Cache::forget($cacheKey);
|
||||||
|
|
||||||
return $this->permissions()->createMany($newPermissions->toArray());
|
return $this->permissions()->createMany($newPermissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user