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" || $type == "fileupload") { $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('
', $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, $type); } array_multisort($customFieldsListOrdered, SORT_DESC, SORT_NUMERIC, $object->customFields); return $object; } public function syncMigrations() { } }