Changeset 28064


Ignore:
Timestamp:
2013-08-15T14:33:35+12:00 (11 years ago)
Author:
sjm84
Message:

Added functionality to use prevmetavalue when setting index metadata

File:
1 edited

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) {
Note: See TracChangeset for help on using the changeset viewer.