Changeset 28064

Show
Ignore:
Timestamp:
15.08.2013 14:33:35 (6 years ago)
Author:
sjm84
Message:

Added functionality to use prevmetavalue when setting index metadata

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/cgiactions/metadataaction.pm

    r27366 r28064  
    10651065{ 
    10661066    my $self = shift @_; 
    1067     my ($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue,$metamode) = @_; 
     1067    my ($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue,$metamode,$prevmetavalue) = @_; 
    10681068     
    10691069    # To people who know $collect_tail please add some comments 
     
    10881088    } 
    10891089    $doc_rec->{$metaname}->[$metapos] = $metavalue; 
     1090    } 
     1091    elsif (defined $prevmetavalue) { 
     1092        my $array = $doc_rec->{$metaname}; 
     1093        my $length = @$array; 
     1094 
     1095        my $found = 0; 
     1096        for(my $i = 0; $i < $length; $i++){ 
     1097            if(defined $doc_rec->{$metaname}->[$i] && $doc_rec->{$metaname}->[$i] eq $prevmetavalue){ 
     1098                $doc_rec->{$metaname}->[$i] = $metavalue; 
     1099                $found = 1; 
     1100                last;                
     1101            } 
     1102        } 
     1103 
     1104        if($found == 0){ 
     1105            $doc_rec->{$metaname} = [ $metavalue ]; 
     1106        } 
    10901107    } 
    10911108    elsif (defined $metamode && $metamode eq "override") { 
     
    12461263    my $metavalue = $self->{'metavalue'}; 
    12471264    my $infodbtype = $self->{'infodbtype'}; 
    1248     my $metamode  = $self->{'metamode'};     
    1249  
    1250     my $status = $self->set_index_metadata_entry($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue,$metamode); 
     1265    my $metamode  = $self->{'metamode'}; 
     1266    my $prevmetavalue = $self->{'prevmetavalue'}; 
     1267 
     1268    my $status = $self->set_index_metadata_entry($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue,$metamode,$prevmetavalue); 
    12511269     
    12521270    if ($status != 0) {