Changeset 38233
- Timestamp:
- 2023-09-26T21:35:04+13:00 (8 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/cgiactions/modmetadataaction.pm
r38231 r38233 1666 1666 binmode($MOUT,":utf8"); 1667 1667 $parser->filter($xml_in, $MOUT, {metaname => $metaname, metapos => $metapos, metavalue => $metavalue, secid => $secid, metamode => $metamode}); 1668 close($MOUT); 1668 close($MOUT); 1669 1669 } 1670 1670 } … … 2666 2666 2667 2667 ## 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); 2670 2669 return $status; 2671 2670 } … … 3396 3395 $metaname = $metatable_rec->{'metaname'}; 3397 3396 #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; 3403 3404 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 } 3405 3418 } 3406 3419 } … … 3409 3422 # Catch error if set infodb entry failed 3410 3423 $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"; 3412 3425 $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"; 3414 3430 $global_mess .= "-" x 20; 3415 3431 } … … 3456 3472 } 3457 3473 3458 # Untested, based on also untestedexperimental _set_live_metadata_array3474 # Untested, based on also (probably) untested, experimental _set_live_metadata_array 3459 3475 # TODO: How can we delete at a dbkey with a particular value or at a particular metapos? 3460 3476 # Same question for sub remove_live_metadata … … 3768 3784 my $metavalue = undef; 3769 3785 3770 $s elf->remove_archives_metadata_entry($gsdl_cgi, $archive_dir, $infodbtype,3786 $status = $self->remove_archives_metadata_entry($gsdl_cgi, $archive_dir, $infodbtype, 3771 3787 $docid,$docid_secnum,$dv, $metaname,$metapos,$metavalue,$metamode); 3772 3788
Note:
See TracChangeset
for help on using the changeset viewer.