1
0
Fork 0
forked from mirror/pixelfed
pixelfed/app/Media.php

107 lines
2.1 KiB
PHP
Raw Normal View History

2018-04-15 19:26:48 -06:00
<?php
namespace App;
2018-06-13 18:52:42 -06:00
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
2018-08-28 03:07:36 +00:00
use Storage;
2018-04-15 19:26:48 -06:00
class Media extends Model
{
2018-06-13 18:52:42 -06:00
use SoftDeletes;
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
2018-08-28 03:07:36 +00:00
2019-01-21 12:18:08 -07:00
public function status()
{
return $this->belongsTo(Status::class);
}
public function profile()
{
return $this->belongsTo(Profile::class);
}
2018-05-19 20:59:59 -06:00
public function url()
{
if($this->cdn_url) {
return $this->cdn_url;
}
2018-11-03 21:19:22 -06:00
if(!empty($this->remote_media) && $this->remote_url) {
return $this->remote_url;
2018-11-03 21:19:22 -06:00
}
2018-08-28 03:07:36 +00:00
return url(Storage::url($this->media_path));
2018-05-19 20:59:59 -06:00
}
public function thumbnailUrl()
{
if($this->thumbnail_url) {
return $this->thumbnail_url;
}
if($this->remote_url || $this->thumbnail_path) {
return url(Storage::url(
$this->remote_url ??
$this->thumbnail_path));
}
return url(Storage::url('public/no-preview.png'));
}
2018-10-09 19:24:42 -06:00
2019-01-21 12:18:08 -07:00
public function thumb()
{
return $this->thumbnailUrl();
}
2018-10-09 19:24:42 -06:00
public function mimeType()
{
return explode('/', $this->mime)[0];
}
public function activityVerb()
{
$verb = 'Image';
switch ($this->mimeType()) {
2018-12-12 14:24:52 -07:00
case 'audio':
$verb = 'Audio';
break;
2018-10-09 19:24:42 -06:00
case 'image':
2018-12-12 14:24:52 -07:00
$verb = 'Image';
2018-10-09 19:24:42 -06:00
break;
case 'video':
$verb = 'Video';
break;
default:
$verb = 'Document';
break;
}
return $verb;
}
2018-10-16 12:31:29 -06:00
public function getMetadata()
{
return json_decode($this->metadata, true, 3);
}
2018-11-03 21:19:22 -06:00
public function getModel()
{
if(empty($this->metadata)) {
return false;
}
$meta = $this->getMetadata();
if($meta && isset($meta['Model'])) {
return $meta['Model'];
}
}
2018-04-15 19:26:48 -06:00
}