Repository URL to install this package:
|
Version:
3.2.0 ▾
|
<?php
namespace Evsmash\Events;
use Evsmash\Core\Database\Eloquent;
use Evsmash\Core\Dec\Form;
use Evsmash\Core\Helpers\Arr;
use Evsmash\Shop\Schemas\EventsParameters as Schema;
class EventsParameter extends Eloquent {
public $timestamps = false;
// belongs to event
public function event() {
return $this->belongsTo('Evsmash\Shop\Events', 'event_id');
}
// fields
static public function fields($event) {
// check
if(!cfg('evsmash-events-events-parameters')) {
return false;
}
// categories
$categories = $event->categories()->pluck('id')->toArray();
// config
$config = cfg('evsmash-events-events-parameters');
// fields
$fields = [];
// all
if(isset($config['all'])) {
$fields = $config['all'];
}
// categories
foreach($categories as $id) {
// config
if(isset($config['category-'.$id])) {
$fields = array_merge($fields, $config['category-'.$id]);
}
}
return $fields;
}
// form
static public function form($event) {
// fields
$fields = EventsParameter::fields($event);
if(!$fields) {
return false;
}
// parameters
$parameters = $event->parameters()->pluck('value', 'param')->toArray();
// form
$form = [];
foreach($fields as $key => $details) {
// value
$value = null;
if(isset($parameters[$key])) {
$value = $parameters[$key];
}
// event
$event = new \stdClass;
$event->key = $key;
$event->label = $details['label'];
$event->field = $details['field'];
if(isset($details['options'])) {
$event->options = ['' => '---'] + $details['options'];
} else {
$event->options = [];
}
$event->value = $value;
// assign
$form[] = $event;
}
// output
return $form;
}
// set
static public function set($event, $data) {
// fields
$fields = EventsParameter::fields($event);
if(!$fields) {
return false;
}
// update
if(!empty($data)) {
foreach($data as $key => $value) {
// event
$element = EventsParameter::where('event_id', $event->id)->where('param', $key)->first();
if(is_null($element)) {
// insert
if(!empty($value)) {
$element = new EventsParameter;
$element->param = $key;
$element->value = $value;
$element->event_id = $event->id;
$element->save();
}
} else {
// update
$element->param = $key;
$element->value = $value;
$element->event_id = $event->id;
$element->save();
}
}
}
}
// array
static public function arr($event) {
// fields
$fields = EventsParameter::fields($event);
if(!$fields) {
return false;
}
// human
$human = [];
foreach($fields as $field) {
if(isset($field['options'])) {
foreach($field['options'] as $k => $v) {
$human[$k] = $v;
}
}
}
// parameters
$parameters = $event->parameters()->pluck('value', 'param')->toArray();
// output
$output = [];
foreach($fields as $key => $details) {
// value
if(isset($parameters[$key]) AND !empty($parameters[$key])) {
// event
$event = new \stdClass;
$event->label = t($details['label']);
$event->value = $parameters[$key];
$event->value_human = '';
if(isset($human[$parameters[$key]])) {
$event->value_human = $human[$parameters[$key]];
}
// assign
$output[$key] = $event;
}
}
return $output;
}
}