Example #1
0
 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;
 }
Example #2
0
 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);
                         }
                     }
                 }
             }
         }
     }
 }