Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
evsmash/banners / libs / Banner.php
Size: Mime:
<?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;

	}

}