public static function handleFormPost($source_ext_id, $source_id, $field_ids) { $fields = DAO_CustomField::getBySource($source_ext_id); if (is_array($field_ids)) { foreach ($field_ids as $field_id) { if (!isset($fields[$field_id])) { continue; } switch ($fields[$field_id]->type) { case Model_CustomField::TYPE_MULTI_LINE: case Model_CustomField::TYPE_SINGLE_LINE: case Model_CustomField::TYPE_URL: @($field_value = DevblocksPlatform::importGPC($_POST['field_' . $field_id], 'string', '')); if (0 != strlen($field_value)) { DAO_CustomFieldValue::setFieldValue($source_ext_id, $source_id, $field_id, $field_value); } else { DAO_CustomFieldValue::unsetFieldValue($source_ext_id, $source_id, $field_id); } break; case Model_CustomField::TYPE_DROPDOWN: @($field_value = DevblocksPlatform::importGPC($_POST['field_' . $field_id], 'string', '')); if (0 != strlen($field_value)) { DAO_CustomFieldValue::setFieldValue($source_ext_id, $source_id, $field_id, $field_value); } else { DAO_CustomFieldValue::unsetFieldValue($source_ext_id, $source_id, $field_id); } break; case Model_CustomField::TYPE_MULTI_PICKLIST: @($field_value = DevblocksPlatform::importGPC($_POST['field_' . $field_id], 'array', array())); if (!empty($field_value)) { DAO_CustomFieldValue::setFieldValue($source_ext_id, $source_id, $field_id, $field_value); } else { DAO_CustomFieldValue::unsetFieldValue($source_ext_id, $source_id, $field_id); } break; case Model_CustomField::TYPE_CHECKBOX: @($field_value = DevblocksPlatform::importGPC($_POST['field_' . $field_id], 'integer', 0)); $set = !empty($field_value) ? 1 : 0; DAO_CustomFieldValue::setFieldValue($source_ext_id, $source_id, $field_id, $set); break; case Model_CustomField::TYPE_MULTI_CHECKBOX: @($field_value = DevblocksPlatform::importGPC($_POST['field_' . $field_id], 'array', array())); if (!empty($field_value)) { DAO_CustomFieldValue::setFieldValue($source_ext_id, $source_id, $field_id, $field_value); } else { DAO_CustomFieldValue::unsetFieldValue($source_ext_id, $source_id, $field_id); } break; case Model_CustomField::TYPE_DATE: @($field_value = DevblocksPlatform::importGPC($_POST['field_' . $field_id], 'string', '')); @($date = strtotime($field_value)); if (!empty($date)) { DAO_CustomFieldValue::setFieldValue($source_ext_id, $source_id, $field_id, $date); } else { DAO_CustomFieldValue::unsetFieldValue($source_ext_id, $source_id, $field_id); } break; case Model_CustomField::TYPE_NUMBER: case Model_CustomField::TYPE_WORKER: @($field_value = DevblocksPlatform::importGPC($_POST['field_' . $field_id], 'string', '')); if (0 != strlen($field_value)) { DAO_CustomFieldValue::setFieldValue($source_ext_id, $source_id, $field_id, intval($field_value)); } else { DAO_CustomFieldValue::unsetFieldValue($source_ext_id, $source_id, $field_id); } break; } } } return true; }
public static function _doBulkSetCustomFields($source_extension, $custom_fields, $ids) { $fields = DAO_CustomField::getAll(); if (!empty($custom_fields)) { foreach ($custom_fields as $cf_id => $params) { if (!is_array($params) || !isset($params['value'])) { continue; } $cf_val = $params['value']; // Data massaging switch ($fields[$cf_id]->type) { case Model_CustomField::TYPE_DATE: $cf_val = intval(@strtotime($cf_val)); break; case Model_CustomField::TYPE_CHECKBOX: case Model_CustomField::TYPE_NUMBER: $cf_val = 0 == strlen($cf_val) ? '' : intval($cf_val); break; } // If multi-selection types, handle delta changes if (Model_CustomField::TYPE_MULTI_PICKLIST == $fields[$cf_id]->type || Model_CustomField::TYPE_MULTI_CHECKBOX == $fields[$cf_id]->type) { if (is_array($cf_val)) { foreach ($cf_val as $val) { $op = substr($val, 0, 1); $val = substr($val, 1); if (is_array($ids)) { foreach ($ids as $id) { if ($op == '+') { DAO_CustomFieldValue::setFieldValue($source_extension, $id, $cf_id, $val, true); } elseif ($op == '-') { DAO_CustomFieldValue::unsetFieldValue($source_extension, $id, $cf_id, $val); } } } } } // Otherwise, set/unset as a single field } else { if (is_array($ids)) { foreach ($ids as $id) { if (0 != strlen($cf_val)) { DAO_CustomFieldValue::setFieldValue($source_extension, $id, $cf_id, $cf_val); } else { DAO_CustomFieldValue::unsetFieldValue($source_extension, $id, $cf_id); } } } } } } }