Application->recallObject('lang.current'); $add_fields = Array(); $options_a = Array('type' => 'int','error_field' => $field_name,'master_field' => $field_name,'format' => '%d' ); $options_b = Array('type' => 'double','error_field' => $field_name,'master_field' => $field_name,'format' => '%0.2f' ); switch( $regional->GetDBField('UnitSystem') ) { case 2: // US/UK $field_options_copy = $field_options; unset($field_options_copy['min_value_exc']); $add_fields[$field_name.'_a'] = kUtil::array_merge_recursive($field_options_copy, $options_a); $add_fields[$field_name.'_b'] = kUtil::array_merge_recursive($field_options_copy, $options_b); break; default: } $add_fields = kUtil::array_merge_recursive($add_fields, $object->getVirtualFields()); $object->setVirtualFields($add_fields); } } /** * Used for split fields like timestamp -> date, time * Called from DBItem Validate (before validation) to get back master field value from its sub_fields * * @param string $field * @param mixed $value * @param Array $options * @param kDBItem $object */ function UpdateMasterFields($field, $value, &$options, &$object) { if( !isset($options['master_field']) ) { if ($value == -1) return; // for infinity setting, otherwise infinity is incorrectly converted back to Kg $regional =& $this->Application->recallObject('lang.current'); switch( $regional->GetDBField('UnitSystem') ) { case 2: // US/UK $major = $this->TypeCast($object->GetDBField($field.'_a'), $options); $minor = $this->TypeCast($object->GetDBField($field.'_b'), $options); if($major === '' && $minor === '') { $value = null; } elseif($major === null && $minor === null) { $fields = $object->getFields(); unset($fields[$field]); $object->setFields($fields); return; } else { $value = kUtil::Pounds2Kg($major, $minor); } break; default: } $object->SetDBField($field, $value); } } function UpdateSubFields($field, $value, &$options, &$object) { if( !isset($options['master_field']) ) { $regional =& $this->Application->recallObject('lang.current'); switch( $regional->GetDBField('UnitSystem') ) { case 2: // US/UK if($value === null) { $major = null; $minor = null; } else { list($major,$minor) = kUtil::Kg2Pounds($value); /*$major = floor( $value / 0.5 ); $minor = ($value - $major * 0.5) * 32;*/ } $object->SetDBField($field.'_a', $major); $object->SetDBField($field.'_b', $minor); break; default: } } } }