|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/lecturebazaar.com/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Astrotomic\Translatable\Contracts\Translatable as TranslatableContract;
use Astrotomic\Translatable\Translatable;
use App\Models\Traits\SequenceContent;
class File extends Model implements TranslatableContract
{
use Translatable;
use SequenceContent;
public $timestamps = false;
protected $table = 'files';
protected $guarded = ['id'];
static $accessibility = [
'free', 'paid'
];
static $videoTypes = ['mp4', 'mkv', 'avi', 'mov', 'wmv', 'avchd', 'flv', 'f4v', 'swf', 'mpeg-2', 'webm', 'video'];
static $fileTypes = [
'pdf', 'powerpoint', 'sound', 'video', 'image', 'archive', 'document', 'project'
];
static $fileSources = [
'upload', 'youtube', 'vimeo', 'external_link', 'google_drive', 'iframe', 's3', 'secure_host'
];
static $Active = 'active';
static $Inactive = 'inactive';
static $fileStatus = ['active', 'inactive'];
public $translatedAttributes = ['title', 'description'];
public function getTitleAttribute()
{
return getTranslateAttributeValue($this, 'title');
}
public function getDescriptionAttribute()
{
return getTranslateAttributeValue($this, 'description');
}
public function chapter()
{
return $this->belongsTo('App\Models\WebinarChapter', 'chapter_id', 'id');
}
public function learningStatus()
{
return $this->hasOne('App\Models\CourseLearning', 'file_id', 'id');
}
public function personalNote()
{
return $this->morphOne('App\Models\CoursePersonalNote', 'targetable');
}
public function isVideo()
{
return (in_array($this->file_type, self::$videoTypes));
}
public function getFileDuration()
{
$duration = 0;
if ($this->storage == 'upload') {
$file_path = public_path($this->file);
$getID3 = new \getID3;
$file = $getID3->analyze($file_path);
if (!empty($file) and !empty($file['playtime_seconds'])) {
$duration = $file['playtime_seconds'];
}
}
return convertMinutesToHourAndMinute($duration);
}
public function getIconByType($type = null)
{
$icon = 'file';
if (empty($type)) {
$type = $this->file_type;
}
if (!empty($type)) {
if (in_array($type, ['pdf', 'powerpoint', 'document'])) {
$icon = 'file-text';
} else if (in_array($type, ['sound'])) {
$icon = 'volume-2';
} else if (in_array($type, ['video'])) {
$icon = 'film';
} else if (in_array($type, ['image'])) {
$icon = 'image';
} else if (in_array($type, ['archive'])) {
$icon = 'archive';
}
}
return $icon;
}
public function getVolume()
{
return $this->volume . ' MB';
}
public function checkPassedItem()
{
$result = false;
if (auth()->check()) {
$check = $this->learningStatus()->where('user_id', auth()->id())->count();
$result = ($check > 0);
}
return $result;
}
}