Changeset 38233


Ignore:
Timestamp:
2023-09-26T21:35:04+13:00 (8 months ago)
Author:
anupama
Message:
  1. remove_index_metadata_array needed to process the metadatapositions array in metatable. 2. dbinfo should deal with questionmark-exclamation mark not many outer calls later, by which time that variable has been reset. 3. Another location where needs to be set from return value.
File:
1 edited

Legend:

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

    r38231 r38233  
    16661666            binmode($MOUT,":utf8");
    16671667            $parser->filter($xml_in, $MOUT, {metaname => $metaname, metapos => $metapos, metavalue => $metavalue, secid => $secid, metamode => $metamode});
    1668             close($MOUT);       
     1668            close($MOUT);
    16691669        }
    16701670    }
     
    26662666
    26672667    ## Use the dbutil set_entry method instead of assuming the database is gdbm
    2668     my $status = &dbutil::set_infodb_entry($infodbtype, $infodb_file_path, $docid, $doc_rec);
    2669 
     2668    my $status = &dbutil::set_infodb_entry($infodbtype, $infodb_file_path, $docid, $doc_rec);   
    26702669    return $status;
    26712670}
     
    33963395        $metaname  = $metatable_rec->{'metaname'};
    33973396        #my $metamode  = $metatable_rec->{'metamode'} || $doc_array_rec->{'metamode'} || $self->{'metamode'}; # metamode not used by remove_index_metadata
    3398         my $metapos = $metatable_rec->{'metapos'} || $doc_array_rec->{'metapos'} || $self->{'metapos'} || undef; # try most-to-least specific metapos setting, and fallback on undef
    3399         my $metavals = $metatable_rec->{'metavals'}; # a sub-subarray
    3400 
    3401         foreach my $metavalue ( @$metavals ) { # metavals is an array
    3402             $status = $self->remove_index_metadata_entry($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue); # how do we use metamode in set_meta_entry?
     3397       
     3398        #my $metapos = $metatable_rec->{'metapositions'} || $doc_array_rec->{'metapos'} || $self->{'metapos'} || undef; # try most-to-least specific metapos setting, and fallback on undef
     3399
     3400
     3401        my $metapositions = $metatable_rec->{'metapositions'} || undef; # a sub-subarray
     3402        if(defined $metapositions) {
     3403            my $metavalue = undef;
    34033404           
    3404         }           
     3405            foreach my $metapos ( @$metapositions ) { # metapositions is an array
     3406            $status = $self->remove_index_metadata_entry($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue); # how do we use metamode in set_meta_entry?
     3407           
     3408           }
     3409        } else {           
     3410            my $metavals = $metatable_rec->{'metavals'}; # a sub-subarray
     3411            next unless defined $metavals;
     3412            my $metapos = undef;
     3413           
     3414            foreach my $metavalue ( @$metavals ) { # metavals is an array
     3415            $status = $self->remove_index_metadata_entry($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue); # how do we use metamode in set_meta_entry?   
     3416            }
     3417        }
    34053418        }
    34063419    }
     
    34093422        # Catch error if set infodb entry failed
    34103423        $global_status = $status;
    3411         $global_mess .= "Failed to remove metadata key: $docid\n";
     3424        $global_mess .= "Failed to remove metadata key from index: $docid\n";
    34123425        $global_mess .= "Exit status: $status\n";
    3413         $global_mess .= "System Error Message: $!\n";
     3426        # Need to check the error message $! immediately after an IO call goes wrong
     3427        # not after returning from many nested calls
     3428        # https://stackoverflow.com/questions/1605195/inappropriate-ioctl-for-device
     3429        # $global_mess .= "System Error Message: $!\n";
    34143430        $global_mess .= "-" x 20;
    34153431    }
     
    34563472}
    34573473
    3458 # Untested, based on also untested experimental _set_live_metadata_array
     3474# Untested, based on also (probably) untested, experimental _set_live_metadata_array
    34593475# TODO: How can we delete at a dbkey with a particular value or at a particular metapos?
    34603476# Same question for sub remove_live_metadata
     
    37683784            my $metavalue = undef;
    37693785           
    3770             $self->remove_archives_metadata_entry($gsdl_cgi, $archive_dir, $infodbtype,
     3786            $status = $self->remove_archives_metadata_entry($gsdl_cgi, $archive_dir, $infodbtype,
    37713787                  $docid,$docid_secnum,$dv, $metaname,$metapos,$metavalue,$metamode);
    37723788           
Note: See TracChangeset for help on using the changeset viewer.