-
-
Notifications
You must be signed in to change notification settings - Fork 272
Expand file tree
/
Copy pathMessageFile.php
More file actions
116 lines (92 loc) · 2.99 KB
/
MessageFile.php
File metadata and controls
116 lines (92 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
namespace App;
use Movim\Model;
use Respect\Validation\Validator;
class MessageFile extends Model
{
protected $appends = ['preview', 'cleansize', 'host'];
public function message()
{
return $this->belongsTo(Message::class);
}
public function getCleansizeAttribute(): ?string
{
if ($this->size != null) {
return humanSize($this->size);
}
return null;
}
public function getPreviewAttribute(): ?array
{
if (typeIsPicture($this->type)
) {
return [
'thumb' => protectPicture($this->url),
'url' => $this->url,
'picture' => true,
'thumbnail_type' => $this->thumbnail_type,
'thumbnail_url' => $this->thumbnail_url,
];
}
$url = parse_url($this->url);
if (\array_key_exists('host', $url)) {
$this->host = $url['host'];
switch ($url['host']) {
case 'i.imgur.com':
$thumb = getImgurThumbnail($this->url);
if ($thumb) {
return [
'url' => $this->url,
'thumb' => $thumb,
'picture' => true
];
}
break;
}
}
return null;
}
public function getHostAttribute(): string
{
return parse_url($this->url, PHP_URL_HOST);
}
public function getIsPictureAttribute(): bool
{
return typeIsPicture($this->type);
}
public function getIsAudioAttribute(): bool
{
return typeIsAudio($this->type);
}
public function getIsVideoAttribute(): bool
{
return typeIsVideo($this->type);
}
public function import($file): bool
{
$upload = Upload::find($file->id);
if ($upload && $upload->uploaded && isMimeType($upload->type)) {
$this->name = (string)$upload->name;
if (isset($upload->size)) {
$this->size = (int)$upload->size;
}
$this->type = (string)$upload->type;
$this->url = $upload->geturl;
if (isset($file->thumbnail)
&& Validator::url()->isValid($file->thumbnail->uri)) {
$this->thumbnail_type = (string)$file->thumbnail->type;
$this->thumbnail_width = (int)$file->thumbnail->width;
$this->thumbnail_height = (int)$file->thumbnail->height;
$this->thumbnail_url = (string)$file->thumbnail->uri;
}
if (isset($file->thumbhash)) {
$this->thumbnail_type = 'image/thumbhash';
$this->thumbnail_url = (string)$file->thumbhash;
$this->thumbnail_width = (int)$file->thumbhashWidth;
$this->thumbnail_height = (int)$file->thumbhashHeight;
}
return true;
}
return false;
}
}