- Timestamp:
- 2023-09-25T23:02:24+13:00 (9 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/cgiactions/modmetadataaction.pm
r38193 r38217 1507 1507 my $gsdl_cgi = $self->{'gsdl_cgi'}; 1508 1508 my $infodbtype = $self->{'infodbtype'}; 1509 1509 1510 1510 1511 1511 # Obtain the collect and archive dir … … 1522 1522 my $metavalue = $self->{'metavalue'}; 1523 1523 1524 my $status = $self->set_archives_metadata_entry($gsdl_cgi,$archive_dir, $infodbtype, 1525 $docid,$dv, $metaname,$metapos,$metavalue,$metamode,$prevmetavalue); 1524 my $metamode = $self->{'metamode'}; 1525 1526 my $dv = $self->{'dv'}; 1527 1528 my $status = $self->remove_archives_metadata_entry($gsdl_cgi,$archive_dir, $infodbtype, 1529 $docid,$docid_secnum,$dv, $metaname,$metapos,$metavalue,$metamode); 1526 1530 1527 1531 if ($status == 0) … … 1549 1553 { 1550 1554 my $self = shift @_; 1551 my ($gsdl_cgi, $archive_dir, $infodbtype, $docid, $d v, $metaname, $metapos, $metavalue, $metamode) = @_;1555 my ($gsdl_cgi, $archive_dir, $infodbtype, $docid, $docid_secnum, $dv, $metaname, $metapos, $metavalue, $metamode) = @_; 1552 1556 1553 1557 $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/)); … … 1563 1567 $metapos = 0; 1564 1568 } 1565 1566 my $metamode = $self->{'metamode'}; 1569 1567 1570 $metamode = undef if(defined $metamode && ($metamode =~ m/^\s*$/)); 1568 1571 … … 1573 1576 my $doc_file = $doc_rec->{'doc-file'}->[0]; 1574 1577 1575 # check if request if for file-level doc-version history 'nminus-<n>' version 1576 my $dv = $self->{'dv'}; 1578 # check if request if for file-level doc-version history 'nminus-<n>' version 1577 1579 if (defined $dv && ($dv ne "")) { 1578 1580 # Need to insert '_fldv_history/nminus-<n>' into doc_filename … … 2274 2276 my $metamode = $self->{'metamode'}; 2275 2277 2276 $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid, $metaname, $metapos, $metavalue, $metamode);2278 my $metadata_xml_filename = $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid, $metaname, $metapos, $metavalue, $metamode); 2277 2279 2278 2280 # any errors would have been reported inside the remove_import_metadata_entry … … 2341 2343 $self->remove_from_metadata_xml($gsdl_cgi, $metadata_xml_filename, $metaname, $metapos, $metavalue, $import_tailname, $metamode); # metamode has no meaning for removing meta, but is used by set_meta when overriding All 2342 2344 2343 return $ error_message;2345 return $metadata_xml_filename; 2344 2346 } 2345 2347 … … 2616 2618 my $self = shift @_; 2617 2619 my ($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue) = @_; 2618 2620 my $gsdl_cgi = $self->{'gsdl_cgi'}; 2621 2619 2622 $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/)); 2620 2623 $metavalue = undef if(defined $metavalue && ($metavalue =~ m/^\s*$/)); # necessary to force fallback to undef here … … 3298 3301 3299 3302 3300 ############################# ################################3303 ############################# REMOVE METADATA ARRAY METHODS ############################ 3301 3304 3302 3305 … … 3383 3386 my $metavalue = $doc_array_rec->{'metavalue'}; 3384 3387 # remove-import-metadata and remove-archives-metadata recognise metamode option 3385 # but not remove-index-metadata 3388 # but not remove-index-metadata (nor remove-live-metadata) 3386 3389 #my $metamode = $doc_array_rec->{'metamode'} || $self->{'metamode'}; 3387 3390 … … 3399 3402 $status = $self->remove_index_metadata_entry($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue); # how do we use metamode in set_meta_entry? 3400 3403 3401 #if($metamode eq "override") { # now, having overridden the metavalue for the first,3402 ## need to accumulate subsequent metavals for this metaname, else the just-assigned3403 ## metavalue for this metaname will be lost3404 #$metamode = "accumulate";3405 #}3406 3404 } 3407 3405 } … … 3499 3497 push(@all_docids,$docid); 3500 3498 3499 my $dbkey = ""; 3501 3500 my $metaname = $doc_array_rec->{'metaname'}; 3502 3501 if(defined $metaname) { 3503 my$dbkey = "$docid.$metaname";3502 $dbkey = "$docid.$metaname"; 3504 3503 3505 3504 # Remove the key … … 3513 3512 foreach my $metatable_rec ( @$metatable ) { 3514 3513 $metaname = $metatable_rec->{'metaname'}; 3515 my$dbkey = "$docid.$metaname";3514 $dbkey = "$docid.$metaname"; 3516 3515 3517 3516 my $cmd = "gdbmdel \"$infodb_file_path\" \"$dbkey\""; … … 3626 3625 my $doc_array = decode_json $json_str; 3627 3626 3628 #my $global_status = 0;3629 #my $global_mess = "";3627 my $global_status = 0; 3628 my $global_mess = ""; 3630 3629 3631 3630 my @all_docids = (); … … 3635 3634 my $status = -1; 3636 3635 my $docid = $doc_array_rec->{'docid'}; 3636 3637 my $metadata_xml_filename = undef; 3637 3638 3638 3639 my ($docid_root,$docid_secnum); … … 3654 3655 my $metamode = $doc_array_rec->{'metamode'} || $self->{'metamode'} || undef; # see set_import_meta_array for fallback 3655 3656 3656 $ self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid3657 $metadata_xml_filename = $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid 3657 3658 3658 3659 } elsif (defined $doc_array_rec->{'metatable'}) { # if no metaname, we expect a metatable … … 3666 3667 if(defined $metapositions) { 3667 3668 foreach my $metapos ( @$metapositions ) { 3668 $metavalue = undef;3669 my $metavalue = undef; 3669 3670 3670 $ self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid3671 $metadata_xml_filename = $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid 3671 3672 3672 3673 #if($metamode eq "override") { # now, having overridden the first metavalue of the metaname, … … 3682 3683 foreach my $metavalue ( @$metavals ) { 3683 3684 $metavalue =~ s/<(.*?)>/<$1>/g; 3684 $metapos = undef;3685 my $metapos = undef; 3685 3686 3686 3687 $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid … … 3695 3696 } 3696 3697 } 3698 3699 # errors would have caused a call to die, so can't report those 3700 if (defined $metadata_xml_filename) { 3701 3702 $global_mess .= "remove-import-metadata successful: Key[$docid] -> $metadata_xml_filename\n"; 3703 } 3697 3704 } 3698 3705 … … 3700 3707 # always a success message, as any failure would have caused a call to die within remove_import_metadata_entry 3701 3708 my $mess = "remove-import-metadata-array successful: Keys[ ".join(", ",@all_docids)."]\n"; 3709 $mess .= $global_mess . "\n"; 3702 3710 $gsdl_cgi->generate_ok_message($mess); 3703 3711 } … … 3732 3740 foreach my $doc_array_rec ( @$doc_array ) { 3733 3741 my $status = -1; 3734 my $docid = $doc_array_rec->{'docid'}; 3742 my $full_docid = $doc_array_rec->{'docid'}; 3743 my ($docid, $docid_secnum) = ($full_docid =~ m/^(.*?)(\..*)?$/); 3744 # usercomments meta are at root and so docid_secnum will be undef which is acceptable 3735 3745 my $dv = $doc_array_rec->{'dv'}; 3736 3746 3737 push(@all_docids,$ docid);3747 push(@all_docids,$full_docid); 3738 3748 3739 3749 my $metaname = $doc_array_rec->{'metaname'}; … … 3745 3755 3746 3756 $status = $self->remove_archives_metadata_entry($gsdl_cgi,$archive_dir,$infodbtype, 3747 $docid,$dv, $metaname,$metapos,$metavalue,$metamode);3757 $docid, $docid_secnum, $dv, $metaname,$metapos,$metavalue,$metamode); 3748 3758 3749 3759 } elsif (defined $doc_array_rec->{'metatable'}) { # if no metaname, we expect a metatable … … 3756 3766 if(defined $metapositions) { 3757 3767 foreach my $metapos ( @$metapositions ) { 3758 $metavalue = undef;3768 my $metavalue = undef; 3759 3769 3760 3770 $self->remove_archives_metadata_entry($gsdl_cgi, $archive_dir, $infodbtype, 3761 $docid,$dv, $metaname, $metapos, $metavalue,$metamode);3771 $docid,$docid_secnum,$dv, $metaname,$metapos,$metavalue,$metamode); 3762 3772 3763 3773 #if($metamode eq "override") { # now, having overridden the first metavalue of the metaname, … … 3773 3783 foreach my $metavalue ( @$metavals ) { 3774 3784 $metavalue =~ s/<(.*?)>/<$1>/g; 3775 $metapos = undef;3785 my $metapos = undef; 3776 3786 3777 3787 $status = $self->remove_archives_metadata_entry($gsdl_cgi,$archive_dir,$infodbtype, … … 3790 3800 # Catch error if set infodb entry failed 3791 3801 $global_status = $status; 3792 $global_mess .= "Failed to remove archives metadata key: $ docid\n";3802 $global_mess .= "Failed to remove archives metadata key: $full_docid\n"; 3793 3803 $global_mess .= "Exit status: $status\n"; 3794 3804 $global_mess .= "System Error Message: $!\n";
Note:
See TracChangeset
for help on using the changeset viewer.