Repository URL to install this package:
|
Version:
3.4.2 ▾
|
<?php
namespace Evsmash\Banners;
use Evsmash\Core\Database\Eloquent;
use Evsmash\Core\Database\SoftDeleting;
use Evsmash\Core\Helpers\Date;
use Evsmash\Core\Helpers\H;
use Evsmash\Core\Simpy\Params;
use Evsmash\Core\System\Lang;
use Evsmash\Banners\Schemas\Banners as Schema;
class Banner extends Eloquent {
use SoftDeleting;
// validate
static public function validate() {
return Schema::validate();
}
// belongs to group
public function group() {
return $this->belongsTo('Evsmash\Banners\BannersGroup');
}
// params
public function scopeParams($query, $params = false) {
$scope = new Params();
$scope->scope($query, $params);
$scope->where('published');
$scope->where('group', 'group_id');
$scope->where('language');
$scope->search(['name', 'link', 'description']);
$scope->order(['group_id' => 'asc', 'sort' => 'asc']);
$scope->with(['group']);
return $scope->query;
}
// published
public function scopePublished($query, $params = false) {
// std
if(!cfg('evsmash-banners-scheduler-publish')) {
return $query->where('published', 1);
}
// scheduler
return $query->where('published', 1)->where(function ($query) {
$query->whereNull('start')->orWhere('start', '<', Date::now('Y-m-d H:i:s'));
})->where(function ($query) {
$query->whereNull('end')->orWhere('end', '>', Date::now('Y-m-d H:i:s'));
});
}
// get group
public function scopeGetgroup($query, $params = false) {
if(empty(!$params)) {
return $query->where('group_id', $params);
}
return $query->where('group_id', 1000);
}
// lang
public function scopeLang($query, $params = false) {
return $query->where('language', '')->orWhere('language', Lang::chosen());
}
// structure
static public function structure() {
$output = [];
foreach(Banner::with('group')->orderBy('group_id', 'asc')->get() as $row) {
if(empty($row->group_id)) {
$output[$row->id] = $row->name;
} else {
$output[$row->id] = '{'.H::assign($row->group, 'name').'} '.$row->name;
}
}
return collect($output);
}
// link final
public function getLinkFinalAttribute() {
if(!empty($this->link)) {
if(cfg('evsmash-banners-redirections')) {
return '/banner/'.$this->id;
} else {
if($this->external == 1) {
return 'https://'.$this->link;
} else {
return $this->link;
}
}
}
return false;
}
// link target
public function getLinkTargetAttribute() {
if($this->external == 1) {
return '_blank';
}
return false;
}
// link target
public function getLinkRelAttribute() {
if($this->external == 1) {
return 'nofollow noopener';
}
return false;
}
}