'integer', 'lecturer_id' => 'integer', 'library_id' => 'integer', ]; public static function getFeedItems() { return self::query() ->with([ 'media', 'lecturer', ]) ->where('news', true) ->where('approved', true) ->orderByDesc('created_at') ->get(); } protected static function booted() { static::creating(function ($model) { if (!$model->created_by) { $model->created_by = auth()->id(); } }); } 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(Manipulations::FIT_CROP, 300, 300) ->nonQueued(); $this->addMediaConversion('thumb') ->fit(Manipulations::FIT_CROP, 130, 130) ->width(130) ->height(130); } public function registerMediaCollections(): void { $this->addMediaCollection('main') ->singleFile() ->useFallbackUrl(asset('img/einundzwanzig.png')); $this->addMediaCollection('single_file') ->acceptsMimeTypes([ 'application/pdf', 'application/zip', 'application/octet-stream', 'application/x-zip-compressed', 'multipart/x-zip' ]) ->singleFile(); $this->addMediaCollection('images') ->useFallbackUrl(asset('img/einundzwanzig.png')); } public function createdBy(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } public function lecturer(): BelongsTo { return $this->belongsTo(Lecturer::class); } public function episode(): BelongsTo { return $this->belongsTo(Episode::class); } /* * This string will be used in notifications on what a new comment * was made. */ public function libraries(): BelongsToMany { return $this->belongsToMany(Library::class); } /* * This URL will be used in notifications to let the user know * where the comment itself can be read. */ public function commentableName(): string { return __('Library Item'); } public function commentUrl(): string { if ($this->type === 'markdown_article') { return url()->route('article.view', ['libraryItem' => $this]); } else { return url()->route('libraryItem.view', ['libraryItem' => $this]); } } public function toFeedItem(): CustomFeedItem { return CustomFeedItem::create() ->id('news/'.$this->slug) ->title($this->name) ->content($this->value) ->enclosure($this->getFirstMediaUrl('main')) ->enclosureLength($this->getFirstMedia('main')->size) ->enclosureType($this->getFirstMedia('main')->mime_type) ->summary($this->excerpt) ->updated($this->updated_at) ->image($this->getFirstMediaUrl('main')) ->link(url()->route('article.view', ['libraryItem' => $this])) ->authorName($this->lecturer->name); } }