\App\Events\MediaFileDeletedEvent::class ]; protected $fillable = [ 'path', 'file_name', 'ext', 'disk_id', 'media_source_id', 'size', 'width', 'height', 'is_app_media', 'user_id', 'mime_type', 'description' ]; protected $hidden = [ 'path', 'ext', 'disk_id', 'disk', 'is_app_media', 'user_id' ]; public function getUrlAttribute() { return Storage::disk($this->disk->name)->url(trim($this->path, '/'). '/' . trim($this->file_name, '/')); } public function getFilePathAttribute() { return Storage::disk($this->disk->name)->path(trim($this->path, '/'). '/' . trim($this->file_name, '/')); } public function getFileNameWithPathAttribute() { return trim(trim($this->path, '/') . '/' . $this->file_name, '/'); } public function getYoutubeEmbedUrlAttribute() { $mediaSource = $this->mediaSource; if($mediaSource && 'youtube' == $mediaSource->name) { return "https://www.youtube.com/embed/$this->file_name"; } return ''; } /** * @param \Illuminate\Database\Query\Builder $query * * @return \Illuminate\Database\Query\Builder */ public function scopeUncategorized($query) { return $query->where('media_category_id', null); } /** * @param \Illuminate\Database\Query\Builder $query * * @return \Illuminate\Database\Query\Builder */ public function scopeCategory($query, $categoryId) { return $query->where('media_category_id', $categoryId); } /** * @param \Illuminate\Database\Query\Builder $query * * @return \Illuminate\Database\Query\Builder */ public function scopeIsAppMedia($query) { return $query->where('is_app_media', true); } /** * @param \Illuminate\Database\Query\Builder $query * * @return \Illuminate\Database\Query\Builder */ public function scopeUserMedia($query, $userId) { return $query->where('is_app_media', false)->where('user_id', $userId); } public function user() { return $this->belongsTo(User::class); } public function disk() { return $this->belongsTo(Disk::class); } public function mediaCategory() { return $this->belongsTo(MediaCategory::class); } public function mediaSource() { return $this->belongsTo(MediaSource::class); } }