Files
thetool/application/Workflowvalue/Workflowvalue.php
2021-09-16 22:19:28 +02:00

143 lines
3.1 KiB
PHP

<?php
class Workflowvalue extends mfBaseModel {
private $item;
private $changer;
public $gps = [];
public $is_changed = false;
protected function afterLoad() {
if(!$this->id) {
return true;
}
if($this->getProperty("item")->type == "gps" && $this->value_string) {
$gps = explode(";", $this->value_string);
$this->gps = $gps;
}
}
public function setValue($value) {
$this->item = $this->getProperty("item");
if($this->item->type == "delimiter" || $this->item->type == "empty") {
return true;
}
$value_type = "string";
switch($this->item->type) {
case "string":
$value_type = "string";
break;
case "enum":
$value_type = "string";
break;
case "gps":
$value_type = "string";
break;
case "color":
$value_type = "string";
break;
case "date":
$value_type = "string";
break;
case "int":
$value_type = "int";
break;
case "bool":
$value_type = "int";
break;
case "file":
$value_type = "int";
break;
case "text":
$value_type = "text";
break;
}
if($this->item->type == "gps") {
if(is_array($value) && count($value) == 2) {
$lat = $value['lat'];
$long = $value['long'];
$value = "$lat;$long";
if($lat == null && $long == null) {
$value = null;
}
} else {
$value = null;
}
}
/*if($this->item->name == "customer_passive_finished") {
var_dump($value, $this->{"value_".$value_type});exit;
}*/
if($value === null) {
return true;
}
if($value_type == "int" && $this->{"value_".$value_type} == null && !$value) {
return true;
}
if($this->item->type == "bool" && $this->{"value_".$value_type} == null && $value == 0) {
return true;
}
if($value == null && $this->{"value_".$value_type} == null) {
return true;
}
$this->is_changed = true;
$me = new User();
$me->loadMe();
if($this->{"value_".$value_type} != $value) {
$this->{"value_".$value_type} = $value;
$this->changed = date('U');
$this->changed_by = $me->id;
}
if($this->new() == "new") {
$this->changed = date('U');
$this->changed_by = $me->id;
}
}
public function getProperty($name) {
if($this->$name == null) {
if($name == "item") {
$this->item = new Workflowitem($this->item_id);
return $this->item;
}
if($name == "changer") {
if($this->changed && $this->changed_by) {
$this->changer = new User($this->changed_by);
return $this->changer;
} else {
return new Address();
}
}
$classname = ucfirst($name);
$idfield = $name."_id";
$this->$name = new $classname($this->$idfield);
if($this->$name->id) {
return $this->$name;
} else {
return null;
}
}
return $this->$name;
}
}