You've already forked Epicnabbo-Catalogus-Updated-Daily
🆙 More fixes 🆙
This commit is contained in:
@@ -13,6 +13,25 @@ if (! function_exists('setting')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! function_exists('isDarkColor')) {
|
||||||
|
function isDarkColor(?string $hex): bool
|
||||||
|
{
|
||||||
|
if (! is_string($hex)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$hex = trim($hex);
|
||||||
|
if (! preg_match('/^#?[0-9a-fA-F]{6}$/', $hex)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$hex = ltrim($hex, '#');
|
||||||
|
$r = hexdec(substr($hex, 0, 2));
|
||||||
|
$g = hexdec(substr($hex, 2, 2));
|
||||||
|
$b = hexdec(substr($hex, 4, 2));
|
||||||
|
$luminance = (0.2126 * $r + 0.7152 * $g + 0.0722 * $b) / 255;
|
||||||
|
return $luminance < 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (! function_exists('hasPermission')) {
|
if (! function_exists('hasPermission')) {
|
||||||
function hasPermission(string $permission): string
|
function hasPermission(string $permission): string
|
||||||
{
|
{
|
||||||
@@ -94,4 +113,4 @@ if (! function_exists('dropForeignKeyIfExists')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,15 @@ use App\Models\Articles\WebsiteArticleComment as ArticleComment;
|
|||||||
use App\Models\Articles\WebsiteArticleReaction as ArticleReaction;
|
use App\Models\Articles\WebsiteArticleReaction as ArticleReaction;
|
||||||
use App\Models\Articles\Tag;
|
use App\Models\Articles\Tag;
|
||||||
use App\Models\Compositions\HasNotificationUrl;
|
use App\Models\Compositions\HasNotificationUrl;
|
||||||
|
use App\Models\User;
|
||||||
use Auth;
|
use Auth;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Casts\Attribute;
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||||
use Str;
|
use Str;
|
||||||
|
|
||||||
class Article extends Model
|
class Article extends Model
|
||||||
@@ -31,25 +34,21 @@ class Article extends Model
|
|||||||
static::creating(function (Article $article): void {
|
static::creating(function (Article $article): void {
|
||||||
$article->user_id = Auth::id();
|
$article->user_id = Auth::id();
|
||||||
$article->slug = Str::slug($article->title);
|
$article->slug = Str::slug($article->title);
|
||||||
$article->predominant_color = getPredominantImageColor($article->image);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
static::updating(function (Article $article): void {
|
static::updating(function (Article $article): void {
|
||||||
$article->slug = Str::slug($article->title);
|
$article->slug = Str::slug($article->title);
|
||||||
|
|
||||||
if ($article->isDirty('image')) {
|
|
||||||
$article->predominant_color = getPredominantImageColor($article->image);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function syncPaginatedComments(): void
|
public function syncPaginatedComments(): void
|
||||||
{
|
{
|
||||||
$this->setRelation('comments',
|
$this->setRelation('comments', $this->comments()->paginate(10)->fragment('comments'));
|
||||||
$this->comments()->defaultRelationships()->paginate(10)->fragment('comments'),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Builder<Article>
|
||||||
|
*/
|
||||||
public static function fromIdAndSlug(string $id, string $slug, bool $withDefaultRelationships = true): Builder
|
public static function fromIdAndSlug(string $id, string $slug, bool $withDefaultRelationships = true): Builder
|
||||||
{
|
{
|
||||||
return Article::valid()
|
return Article::valid()
|
||||||
@@ -74,6 +73,9 @@ class Article extends Model
|
|||||||
return $article;
|
return $article;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Builder<Article>
|
||||||
|
*/
|
||||||
public static function forIndex(int $limit): Builder
|
public static function forIndex(int $limit): Builder
|
||||||
{
|
{
|
||||||
return Article::valid()
|
return Article::valid()
|
||||||
@@ -84,38 +86,50 @@ class Article extends Model
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[\Illuminate\Database\Eloquent\Attributes\Scope]
|
#[\Illuminate\Database\Eloquent\Attributes\Scope]
|
||||||
protected function valid(Builder $query): void
|
protected function valid(Builder $query): Builder
|
||||||
{
|
{
|
||||||
$query->whereVisible(true);
|
return $query->whereVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[\Illuminate\Database\Eloquent\Attributes\Scope]
|
#[\Illuminate\Database\Eloquent\Attributes\Scope]
|
||||||
protected function defaultRelationships(Builder $query): void
|
protected function defaultRelationships(Builder $query): Builder
|
||||||
{
|
{
|
||||||
$query->with([
|
return $query->with([
|
||||||
'user:id,username,look,gender',
|
'user:id,username,look,gender',
|
||||||
'tags',
|
'tags',
|
||||||
'reactions' => fn ($query) => $query->defaultRelationships(),
|
'reactions',
|
||||||
'user.followers',
|
'user.followers',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return HasMany<ArticleComment, $this>
|
||||||
|
*/
|
||||||
public function comments(): HasMany
|
public function comments(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(ArticleComment::class)->defaultBehavior();
|
return $this->hasMany(ArticleComment::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return HasMany<ArticleReaction, $this>
|
||||||
|
*/
|
||||||
public function reactions(): HasMany
|
public function reactions(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(ArticleReaction::class)->defaultBehavior();
|
return $this->hasMany(ArticleReaction::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function user()
|
/**
|
||||||
|
* @return BelongsTo<User, $this>
|
||||||
|
*/
|
||||||
|
public function user(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(User::class);
|
return $this->belongsTo(User::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tags(): \Illuminate\Database\Eloquent\Relations\MorphToMany
|
/**
|
||||||
|
* @return MorphToMany<Tag, $this>
|
||||||
|
*/
|
||||||
|
public function tags(): MorphToMany
|
||||||
{
|
{
|
||||||
return $this->morphToMany(Tag::class, 'taggable');
|
return $this->morphToMany(Tag::class, 'taggable');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user