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

(-)a/C4/Biblio.pm (-12 / +16 lines)
Lines 2142-2147 sub TransformHtmlToMarc { Link Here
2142
    my $record = MARC::Record->new();
2142
    my $record = MARC::Record->new();
2143
    my $i      = 0;
2143
    my $i      = 0;
2144
    my @fields;
2144
    my @fields;
2145
#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!
2145
    while ( $params[$i] ) {    # browse all CGI params
2146
    while ( $params[$i] ) {    # browse all CGI params
2146
        my $param    = $params[$i];
2147
        my $param    = $params[$i];
2147
        my $newfield = 0;
2148
        my $newfield = 0;
Lines 2181-2199 sub TransformHtmlToMarc { Link Here
2181
2182
2182
                # > 009, deal with subfields
2183
                # > 009, deal with subfields
2183
            } else {
2184
            } else {
2184
                while ( defined $params[$j] && $params[$j] =~ /_code_/ ) {    # browse all it's subfield
2185
                # browse subfields for this tag (reason for _code_ match)
2185
                    my $inner_param = $params[$j];
2186
                while(defined $params[$j] && $params[$j] =~ /_code_/) {
2186
                    if ($newfield) {
2187
                    last unless defined $params[$j+1];
2187
                        if ( $cgi->param( $params[ $j + 1 ] ) ne '' ) {         # only if there is a value (code => value)
2188
                    #if next param ne subfield, then it was probably empty
2188
                            $newfield->add_subfields( $cgi->param($inner_param) => $cgi->param( $params[ $j + 1 ] ) );
2189
                    #try next param by incrementing j
2189
                        }
2190
                    if($params[$j+1]!~/_subfield_/) {$j++; next; }
2190
                    } else {
2191
                    my $fval= $cgi->param($params[$j+1]);
2191
                        if ( $cgi->param( $params[ $j + 1 ] ) ne '' ) {         # creating only if there is a value (code => value)
2192
                    #check if subfield value not empty and field exists
2192
                            $newfield = MARC::Field->new( $tag, $ind1, $ind2, $cgi->param($inner_param) => $cgi->param( $params[ $j + 1 ] ), );
2193
                    if($fval ne '' && $newfield) {
2193
                        }
2194
                        $newfield->add_subfields( $cgi->param($params[$j]) => $fval);
2195
                    }
2196
                    elsif($fval ne '') {
2197
                        $newfield = MARC::Field->new( $tag, $ind1, $ind2, $cgi->param($params[$j]) => $fval );
2194
                    }
2198
                    }
2195
                    $j += 2;
2199
                    $j += 2;
2196
                }
2200
                } #end-of-while
2201
                $i= $j-1; #update i for outer loop accordingly
2197
            }
2202
            }
2198
            push @fields, $newfield if ($newfield);
2203
            push @fields, $newfield if ($newfield);
2199
        }
2204
        }
2200
- 

Return to bug 3264