'integer', 'einundzwanzig_pleb_id' => 'integer', 'accepted' => 'boolean', 'sats_paid' => 'integer', ]; protected static function booted() {} public function getSlugOptions(): SlugOptions { return SlugOptions::create() ->generateSlugsFrom(['name']) ->saveSlugsTo('slug') ->usingLanguage(Cookie::get('lang', config('app.locale'))); } public function registerMediaConversions(?Media $media = null): void { $this ->addMediaConversion('preview') ->fit(Fit::Crop, 300, 300) ->nonQueued(); $this ->addMediaConversion('thumb') ->fit(Fit::Crop, 130, 130) ->width(130) ->height(130); } public function registerMediaCollections(): void { $this ->addMediaCollection('main') ->singleFile() ->acceptsMimeTypes([ 'image/jpeg', 'image/png', 'image/gif', 'image/webp', ]) ->useDisk('private') ->useFallbackUrl(asset('einundzwanzig-alpha.jpg')); } public function getSignedMediaUrl(string $collection = 'main', int $expireMinutes = 60): string { $media = $this->getFirstMedia($collection); if (! $media) { return asset('einundzwanzig-alpha.jpg'); } return url()->temporarySignedRoute('media.signed', now()->addMinutes($expireMinutes), ['media' => $media]); } public function einundzwanzigPleb(): BelongsTo { return $this->belongsTo(EinundzwanzigPleb::class); } public function votes(): HasMany { return $this->hasMany(Vote::class); } }