cover == null) { return asset('assets/upload/logo.svg'); } return \Storage::url('cover/optimized-' . $this->cover); } public function imgOriginalUrl() { if ($this->cover == null) { return asset('assets/upload/logo.svg');; } return \Storage::url('clips/' . $this->cover); } public function fileUrl() { if ($this->file == null) { return null; } return \Storage::url('clips/' . $this->file); } public function author() { return $this->belongsTo(\App\Models\User::class); } public function attachs(){ return $this->morphMany(Attachment::class,'attachable'); } public function webUrl(){ return route('client.clip',$this->slug); } public function comments() { return $this->morphMany(Comment::class, 'commentable'); } public function approvedComments() { return $this->morphMany(Comment::class, 'commentable')->where('status', 1); } public function markup(){ $app = config('app.name'); $logo = asset('upload/images/logo.png'); $desc = str_replace('"','',strip_tags($this->body)); $count = $this->comments()->count() ; return << { "@context": "https://schema.org", "@type": "VideoObject", "name": "{$this->title}", "description": "{$desc}", "thumbnailUrl": "{$this->imgUrl()}", "uploadDate": "{$this->updated_at}", "contentUrl": "{$this->fileUrl()}", "embedUrl": "{$this->webUrl()}", "interactionStatistic": { "@type": "InteractionCounter", "interactionType": "http://schema.org/PlayAction", "userInteractionCount": {$count} }, "publisher": { "@type": "Organization", "name": "$app", "logo": { "@type": "ImageObject", "url": "$logo" } } } RESULT; } public function tagsList(){ if ($this->tags()->count() == 0){ return getSetting('keyword'); }else{ return implode(',',$this->tags()->pluck('name')->toArray()); } } }