View | Details | Raw Unified | Return to bug 3264
Collapse All | Expand All

(-)a/C4/Biblio.pm (-12 / +16 lines)
Lines 2137-2142 sub TransformHtmlToMarc { Link Here
2137
    my $record = MARC::Record->new();
2137
    my $record = MARC::Record->new();
2138
    my $i      = 0;
2138
    my $i      = 0;
2139
    my @fields;
2139
    my @fields;
2140
#FIXME This code assumes that the CGI params will be in the same order as the fields in the template; this is no absolute guarantee!
2140
    while ( $params[$i] ) {    # browse all CGI params
2141
    while ( $params[$i] ) {    # browse all CGI params
2141
        my $param    = $params[$i];
2142
        my $param    = $params[$i];
2142
        my $newfield = 0;
2143
        my $newfield = 0;
Lines 2176-2194 sub TransformHtmlToMarc { Link Here
2176
2177
2177
                # > 009, deal with subfields
2178
                # > 009, deal with subfields
2178
            } else {
2179
            } else {
2179
                while ( defined $params[$j] && $params[$j] =~ /_code_/ ) {    # browse all it's subfield
2180
                # browse subfields for this tag (reason for _code_ match)
2180
                    my $inner_param = $params[$j];
2181
                while(defined $params[$j] && $params[$j] =~ /_code_/) {
2181
                    if ($newfield) {
2182
                    last unless defined $params[$j+1];
2182
                        if ( $cgi->param( $params[ $j + 1 ] ) ne '' ) {         # only if there is a value (code => value)
2183
                    #if next param ne subfield, then it was probably empty
2183
                            $newfield->add_subfields( $cgi->param($inner_param) => $cgi->param( $params[ $j + 1 ] ) );
2184
                    #try next param by incrementing j
2184
                        }
2185
                    if($params[$j+1]!~/_subfield_/) {$j++; next; }
2185
                    } else {
2186
                    my $fval= $cgi->param($params[$j+1]);
2186
                        if ( $cgi->param( $params[ $j + 1 ] ) ne '' ) {         # creating only if there is a value (code => value)
2187
                    #check if subfield value not empty and field exists
2187
                            $newfield = MARC::Field->new( $tag, $ind1, $ind2, $cgi->param($inner_param) => $cgi->param( $params[ $j + 1 ] ), );
2188
                    if($fval ne '' && $newfield) {
2188
                        }
2189
                        $newfield->add_subfields( $cgi->param($params[$j]) => $fval);
2190
                    }
2191
                    elsif($fval ne '') {
2192
                        $newfield = MARC::Field->new( $tag, $ind1, $ind2, $cgi->param($params[$j]) => $fval );
2189
                    }
2193
                    }
2190
                    $j += 2;
2194
                    $j += 2;
2191
                }
2195
                } #end-of-while
2196
                $i= $j-1; #update i for outer loop accordingly
2192
            }
2197
            }
2193
            push @fields, $newfield if ($newfield);
2198
            push @fields, $newfield if ($newfield);
2194
        }
2199
        }
2195
- 

Return to bug 3264