Added NSFW compatibility
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace App\Models;
|
||||
|
||||
use App\Helpers\EntryHelpers;
|
||||
use App\Models\Scopes\NsfwScope;
|
||||
use App\Traits\HasGallery;
|
||||
use App\Traits\HasXenforoUserId;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
@@ -137,7 +138,8 @@ class Entry extends Model
|
||||
'staff_comment',
|
||||
'rejected_at',
|
||||
'level_id',
|
||||
'created_at'
|
||||
'created_at',
|
||||
'nsfw'
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -151,11 +153,15 @@ class Entry extends Model
|
||||
];
|
||||
|
||||
protected static function booted(): void {
|
||||
|
||||
static::addGlobalScope(new NsfwScope);
|
||||
|
||||
static::saving( function( $entry ) {
|
||||
if( $entry->isDirty('version') ) {
|
||||
$entry->created_at = now();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
29
app/Models/Scopes/NsfwScope.php
Normal file
29
app/Models/Scopes/NsfwScope.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Scopes;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Scope;
|
||||
|
||||
class NsfwScope implements Scope
|
||||
{
|
||||
|
||||
private function canNsfw(): bool
|
||||
{
|
||||
if( \Auth::guest() )
|
||||
return false;
|
||||
|
||||
$user = \Auth::user();
|
||||
return $user->nsfw_content === 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the scope to a given Eloquent query builder.
|
||||
*/
|
||||
public function apply(Builder $builder, Model $model): void
|
||||
{
|
||||
if( !$this->canNsfw() )
|
||||
$builder->where('nsfw', false );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user