108 lines
2.5 KiB
PHP
108 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Filters\FileFilters;
|
|
use App\Filters\SmartBlockCriteriaFilters;
|
|
use Illuminate\Database\Eloquent\Collection;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class File extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $table = 'cc_files';
|
|
const CREATED_AT = 'utime';
|
|
const UPDATED_AT = 'mtime';
|
|
protected $fillable = [
|
|
'name',
|
|
'mime',
|
|
'ftype',
|
|
'filepath',
|
|
'import_status',
|
|
'currentlyaccessing',
|
|
'editedby',
|
|
'lptime',
|
|
'md5',
|
|
'track_title',
|
|
'artist_name',
|
|
'bit_rate',
|
|
'sample_rate',
|
|
'format',
|
|
'length',
|
|
'album_title',
|
|
'genre',
|
|
'comments',
|
|
'year',
|
|
'track_number',
|
|
'channels',
|
|
'url',
|
|
'bpm',
|
|
'rating',
|
|
'encoded_by',
|
|
'disc_number',
|
|
'mood',
|
|
'label',
|
|
'composer',
|
|
'encoder',
|
|
'checksum',
|
|
'lyrics',
|
|
'orchestra',
|
|
'conductor',
|
|
'lyricist',
|
|
'original_lyricist',
|
|
'radio_station_name',
|
|
'info_url',
|
|
'artist_url',
|
|
'audio_source_url',
|
|
'radio_station_url',
|
|
'buy_this_url',
|
|
'isrc_number',
|
|
'catalog_number',
|
|
'original_artist',
|
|
'copyright',
|
|
'report_datetime',
|
|
'report_location',
|
|
'report_organization',
|
|
'subject',
|
|
'contributor',
|
|
'language',
|
|
'file_exists',
|
|
'replay_gain',
|
|
'owner_id',
|
|
'cuein',
|
|
'cueout',
|
|
'silan_check',
|
|
'hidden',
|
|
'is_scheduled',
|
|
'is_playlist',
|
|
'filesize',
|
|
'description',
|
|
'artwork',
|
|
'track_type_id'
|
|
];
|
|
|
|
public function editedBy() {
|
|
return $this->belongsTo(User::class, 'editedby');
|
|
}
|
|
public function owner() {
|
|
return $this->belongsTo(User::class, 'owner_id');
|
|
}
|
|
public function track_type() {
|
|
return $this->belongsTo(TrackType::class, 'track_type_id');
|
|
}
|
|
|
|
public function scopeSearchFilter($query, $request) {
|
|
$filters = new FileFilters();
|
|
return $filters->apply($query, $request);
|
|
}
|
|
|
|
public function scopeSmartBlockFilter($query, Collection $filters) {
|
|
$class = new SmartBlockCriteriaFilters();
|
|
foreach ($filters as $filter) {
|
|
$query = $class->apply($query, $filter);
|
|
}
|
|
return $query;
|
|
}
|
|
}
|