Refactor project structure

This commit is contained in:
Thilina Hasantha
2018-04-29 17:46:42 +02:00
parent 889baf124c
commit e3a7e18d9c
5513 changed files with 32 additions and 27 deletions

View File

@@ -0,0 +1,145 @@
<?php
/**
* Created by PhpStorm.
* User: Thilina
* Date: 8/20/17
* Time: 9:29 AM
*/
namespace Classes;
use Metadata\Common\Model\CustomFieldValue;
use Utils\LogManager;
class CustomFieldManager
{
public function addCustomField($type, $id, $name, $value)
{
if ($name[0] === '/') {
return;
}
$customFieldValue = new CustomFieldValue();
$customFieldValue->Load(
"type = ? and name = ? and object_id = ?",
array($type, $name, $id)
);
if ($customFieldValue->object_id != $id) {
$customFieldValue->name = $name;
$customFieldValue->object_id = $id;
$customFieldValue->type = $type;
$customFieldValue->created = date("Y-m-d H:i:s");
}
$customFieldValue->value = $value;
$customFieldValue->updated = date("Y-m-d H:i:s");
$ok = $customFieldValue->Save();
if (!$ok) {
LogManager::getInstance()->error("Error saving custom field: " . $customFieldValue->ErrorMsg());
return false;
}
return true;
}
public function getCustomFields($type, $id)
{
$customFieldValue = new CustomFieldValue();
$list = $customFieldValue->Find(
"type = ? and object_id = ?",
array($type, $id)
);
return $list;
}
public function enrichObjectCustomFields($table, $object)
{
$customFieldsList = BaseService::getInstance()->getCustomFields($table);
$customFieldsListOrdered = array();
$customFields = array();
foreach ($customFieldsList as $cf) {
$customFields[$cf->name] = $cf;
}
$customFieldValues = $this->getCustomFields($table, $object->id);
$object->customFields = array();
foreach ($customFieldValues as $cf) {
if (!isset($customFields[$cf->name])) {
continue;
}
$type = $customFields[$cf->name]->field_type;
$label = $customFields[$cf->name]->field_label;
$order = $customFields[$cf->name]->display_order;
$section = $customFields[$cf->name]->display_section;
$customFieldsListOrdered[] = $order;
if ($type == "text" || $type == "textarea") {
$object->customFields[$label] = $cf->value;
} elseif ($type == 'select' || $type == 'select2') {
$options = $customFields[$cf->name]->field_options;
if (empty($options)) {
continue;
}
$jsonOptions = json_decode($options);
foreach ($jsonOptions as $option) {
if ($option->value == $cf->value) {
$object->customFields[$label] = $option->label;
}
}
} elseif ($type == 'select2multi') {
$resArr = array();
$options = $customFields[$cf->name]->field_options;
if (empty($options) || empty($cf->value)) {
continue;
}
$jsonOptions = json_decode($options);
$jsonOptionsKeys = array();
foreach ($jsonOptions as $option) {
$jsonOptionsKeys[$option->value] = $option->label;
}
$valueList = json_decode($cf->value, true);
foreach ($valueList as $val) {
if (!isset($jsonOptionsKeys[$val])) {
$resArr[] = $val;
} else {
$resArr[] = $jsonOptionsKeys[$val];
}
}
$object->customFields[$label] = implode('<br/>', $resArr);
} elseif ($type == "date") {
if (!empty($cf->value)) {
$object->customFields[$label] = $cf->value;
} else {
$object->customFields[$label] = date("F j, Y", strtotime($cf->value));
}
} elseif ($type == "datetime") {
if (!empty($cf->value)) {
$object->customFields[$label] = $cf->value;
} else {
$object->customFields[$label] = date("F j, Y, g:i a", strtotime($cf->value));
}
} elseif ($type == "time") {
if (!empty($cf->value)) {
$object->customFields[$label] = $cf->value;
} else {
$object->customFields[$label] = date("g:i a", strtotime($cf->value));
}
}
$object->customFields[$label] = array($object->customFields[$label], $section);
}
array_multisort($customFieldsListOrdered, SORT_DESC, SORT_NUMERIC, $object->customFields);
return $object;
}
public function syncMigrations()
{
}
}