File size: 1.59Kb
<?php
declare(strict_types=1);
namespace App\Models;
/**
* Class File
*
* @property int $id
* @property int $user_id
* @property int $story_id
* @property string $path
* @property string $name
* @property string $ext
* @property int $size
* @property int $created_at
*/
class File extends Model
{
/**
* Audio extensions
*/
public const AUDIO = ['mp3'];
/**
* Video extensions
*/
public const VIDEO = ['mp4'];
/**
* Image extensions
*/
public const IMAGES = ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'webp'];
/**
* Table name
*/
protected string $table = 'files.csv';
/**
* The attributes that should be cast.
*/
protected array $casts = [
'size' => 'int',
];
/**
* Является ли файл картинкой
*
* @return bool
*/
public function isImage(): bool
{
return in_array($this->ext, self::IMAGES, true);
}
/**
* Является ли файл аудио
*
* @return bool
*/
public function isAudio(): bool
{
return in_array($this->ext, self::AUDIO, true);
}
/**
* Является ли файл видео
*
* @return bool
*/
public function isVideo(): bool
{
return in_array($this->ext, self::VIDEO, true);
}
/**
* Delete file
*
* @return int
*/
public function delete(): int
{
if (file_exists(publicPath($this->path))) {
unlink(publicPath($this->path));
}
return parent::delete();
}
}