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.
willaengine/app/SpUserFrame.php

135 lines
3.5 KiB

<?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;
}
}