You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.5 KiB
135 lines
3.5 KiB
5 years ago
|
<?php
|
||
|
|
||
|
namespace App;
|
||
|
|
||
|
use Illuminate\Database\Eloquent\Model;
|
||
|
use App\Appended\Classes\Specials\Assets\Traits\StaticImage;
|
||
|
use App\Appended\Classes\Specials\Assets\Traits\StaticLink;
|
||
|
use App\Appended\Classes\Specials\Assets\Traits\SetStaticData;
|
||
|
|
||
|
class SpUserFrame extends Model{
|
||
|
|
||
|
use StaticImage, SetStaticData, StaticLink;
|
||
|
|
||
|
// protected $with = ['frame'];
|
||
|
|
||
|
protected $fillable =['sp_frame_id', 'business_id', 'data', 'language_id'];
|
||
|
|
||
|
public $timestamps = false;
|
||
|
|
||
|
public function business(){
|
||
|
return $this->belongsTo('App\\Business');
|
||
|
}
|
||
|
|
||
|
public function frame()
|
||
|
{
|
||
|
return $this->belongsTo('App\\SpFrame','sp_frame_id');
|
||
|
}
|
||
|
|
||
|
public function parent()
|
||
|
{
|
||
|
return $this->belongsTo('App\\SpUserFrame', 'parent_id');
|
||
|
}
|
||
|
public function children()
|
||
|
{
|
||
|
return $this->hasMany('App\\SpUserFrame', 'parent_id');
|
||
|
}
|
||
|
|
||
|
public function user_pages()
|
||
|
{
|
||
|
return $this->belongsToMany('App\SpUserPage', 'user_page_frame')->withPivot('frame_order');
|
||
|
}
|
||
|
|
||
|
public function business_items()
|
||
|
{
|
||
|
return $this->morphedByMany('App\\BusinessItem', 'element', 'sp_user_elements');
|
||
|
}
|
||
|
public function news()
|
||
|
{
|
||
|
return $this->morphedByMany('App\\News', 'element', 'sp_user_elements');
|
||
|
}
|
||
|
public function categories()
|
||
|
{
|
||
|
return $this->morphedByMany('App\\Category', 'element', 'sp_user_elements');
|
||
|
}
|
||
|
public function posts()
|
||
|
{
|
||
|
return $this->morphedByMany('App\\Post', 'element', 'sp_user_elements');
|
||
|
}
|
||
|
|
||
|
public function products()
|
||
|
{
|
||
|
return $this->morphedByMany('App\\Product', 'element', 'sp_user_elements');
|
||
|
}
|
||
|
|
||
|
public function elements()
|
||
|
{
|
||
|
return $this->hasMany('App\\SpUserElement', 'sp_user_frame_id')->orderBy('element_order');
|
||
|
}
|
||
|
|
||
|
public function links()
|
||
|
{
|
||
|
return $this->morphMany('App\SpLink', 'linkable');
|
||
|
}
|
||
|
|
||
|
public function images()
|
||
|
{
|
||
|
return $this->morphToMany('App\Gallery','uploadable')->withPivot('image_role');
|
||
|
}
|
||
|
|
||
|
public function scopeSection($query, $frameTypeId, $userTemplateId, $masterPageId, $languageId)
|
||
|
{
|
||
|
return $query->where('language_id', $languageId)->where('sp_user_template_id', $userTemplateId)
|
||
|
->whereHas('frame', function ($q1) use ($frameTypeId, $masterPageId) {
|
||
|
$q1->where('sp_page_id', $masterPageId)->where('sp_frame_type_id', $frameTypeId);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
public function language()
|
||
|
{
|
||
|
return $this->belongsTo('App\\Language', 'language_id');
|
||
|
}
|
||
|
|
||
|
/*******************************************************
|
||
|
accessors and mutators
|
||
|
*******************************************************/
|
||
|
|
||
|
public function getDataAttribute($value)
|
||
|
{
|
||
|
return json_decode($value, true);
|
||
|
}
|
||
|
|
||
|
public function setDataAttribute($value)
|
||
|
{
|
||
|
$this->attributes['data'] = json_encode($value, JSON_UNESCAPED_UNICODE);
|
||
|
}
|
||
|
|
||
|
public function getFrameOrderAttribute()
|
||
|
{
|
||
|
return $this->pivot->frame_order;
|
||
|
}
|
||
|
|
||
|
public function getThumbnailAttribute()
|
||
|
{
|
||
|
if ($this->frame->title_image->isNotEmpty()) {
|
||
|
return $this->frame->title_image[0]->path;
|
||
|
}
|
||
|
return 'WM-Main/Assets/NoPreview/preview.png';
|
||
|
}
|
||
|
|
||
|
public function getTypeAttribute()
|
||
|
{
|
||
|
return $this->frame->frame_type->type;
|
||
|
}
|
||
|
|
||
|
public function getNameEnAttribute()
|
||
|
{
|
||
|
return $this->frame->name_en;
|
||
|
}
|
||
|
|
||
|
public function getNameFaAttribute()
|
||
|
{
|
||
|
return $this->frame->name_fa;
|
||
|
}
|
||
|
}
|