--- C:/mantis/mantisbt-1.2.1-official/bug_report.php Fri Apr 23 14:28:34 2010 +++ C:/mantis/mantisbt-1.2.1-patches/bug_report.php Fri Jun 04 11:21:34 2010 @@ -104,18 +104,24 @@ $t_def = custom_field_get_definition( $t_id ); # Produce an error if the field is required but wasn't posted - if ( !gpc_isset_custom_field( $t_id, $t_def['type'] ) && - ( $t_def['require_report'] || - $t_def['type'] == CUSTOM_FIELD_TYPE_ENUM || - $t_def['type'] == CUSTOM_FIELD_TYPE_LIST || - $t_def['type'] == CUSTOM_FIELD_TYPE_MULTILIST || - $t_def['type'] == CUSTOM_FIELD_TYPE_RADIO ) ) { + if ( $t_def['require_report'] + && $t_def['type'] != CUSTOM_FIELD_TYPE_CHECKBOX + && !gpc_isset_custom_field($t_id, $t_def['type']) + ) { error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) ); trigger_error( ERROR_EMPTY_FIELD, ERROR ); } - if ( !custom_field_validate( $t_id, gpc_get_custom_field( "custom_field_$t_id", $t_def['type'], NULL ) ) ) { - error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) ); - trigger_error( ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR ); + if(gpc_isset_custom_field($t_id, $t_def['type'])) { + $t_custom_field_value = gpc_get_custom_field("custom_field_$t_id", $t_def['type'], NULL); + if ( $t_def['display_report'] + && !custom_field_validate( + $t_id, + $t_custom_field_value + ) + ) { + error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) ); + trigger_error( ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR ); + } } } @@ -135,13 +141,21 @@ # Handle custom field submission foreach( $t_related_custom_field_ids as $t_id ) { + $t_def = custom_field_get_definition( $t_id ); # Do not set custom field value if user has no write access. - if( !custom_field_has_write_access( $t_id, $t_bug_id ) ) { + if ( !$t_def['display_report'] + || !custom_field_has_write_access( $t_id, $t_bug_id ) + ) { continue; } - $t_def = custom_field_get_definition( $t_id ); - if( !custom_field_set_value( $t_id, $t_bug_id, gpc_get_custom_field( "custom_field_$t_id", $t_def['type'], '' ), false ) ) { + $t_custom_field_value = gpc_get_custom_field( "custom_field_$t_id", $t_def['type'], ''); + if ( empty($t_custom_field_value) + && !$t_def['require_report'] + ) { + continue; + } + if(!custom_field_set_value($t_id, $t_bug_id, $t_custom_field_value, false)) { error_parameters( lang_get_defaulted( custom_field_get_field( $t_id, 'name' ) ) ); trigger_error( ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR ); }