Changeset 37214
- Timestamp:
- 2023-01-29T23:42:13+13:00 (15 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/cgiactions/metadataaction.pm
r37207 r37214 87 87 'compulsory-args' => [ "d", "metaname" ], 88 88 'optional-args' => [ "dv", "metapos" ] }, 89 90 "get-archives-assocfiles" => { 91 'compulsory-args' => [ "d", "assocname" ], 92 'optional-args' => [ "dv" ] }, 89 93 90 94 "get-index-metadata" => { … … 920 924 921 925 my $doc_filename = &util::filename_cat($archive_dir, $doc_file); 922 926 927 923 928 $gsdl_cgi->generate_ok_message($self->get_metadata_from_archive_xml($gsdl_cgi, $doc_filename, $metaname, $metapos, $docid_secnum)); 924 925 929 } 926 930 … … 967 971 $gsdl_cgi->generate_ok_message($self->get_metadata_from_archive_xml($gsdl_cgi, $doc_filename, $metaname, $metapos, $docid_secnum)); 968 972 973 } 974 975 sub get_archives_assocfiles 976 { 977 my $self = shift @_; 978 979 my $username = $self->{'username'}; 980 my $collect = $self->{'collect'}; 981 my $gsdl_cgi = $self->{'gsdl_cgi'}; 982 my $infodbtype = $self->{'infodbtype'}; 983 984 # Obtain the collect and archive dir 985 my $site = $self->{'site'}; 986 my $collect_dir = $gsdl_cgi->get_collection_dir($site); 987 988 my $archive_dir = &util::filename_cat($collect_dir, $collect, "archives"); 989 990 # look up additional args 991 my $docid = $self->{'d'}; 992 993 my $assocname = $self->{'assocname'}; 994 995 my $arcinfo_doc_filename = &dbutil::get_infodb_file_path($infodbtype, "archiveinf-doc", $archive_dir); 996 my $doc_rec = &dbutil::read_infodb_entry($infodbtype, $arcinfo_doc_filename, $docid); 997 998 my $doc_file = $doc_rec->{'doc-file'}->[0]; 999 1000 # check if request if for file-level doc-version history 'nminus-<n>' version 1001 my $dv = $self->{'dv'}; 1002 if (defined $dv && ($dv ne "")) { 1003 # Need to insert '_fldv_history/nminus-<n>' into doc_filename 1004 1005 my ($doc_tailname, $doc_dirname) = File::Basename::fileparse($doc_file); 1006 $doc_file = &util::filename_cat($doc_dirname,$FLDV_HISTORY_DIR,$dv,$doc_tailname); 1007 } 1008 1009 my $doc_filename = &util::filename_cat($archive_dir, $doc_file); 1010 1011 1012 # In the following the repeated calls to $self->get_metadata_from_archive_xml() with increasing $metapos 1013 # get the job done, but is not very efficient 1014 # => candidate for refactoring 1015 1016 my $json_result_str .= "["; 1017 1018 1019 my $metapos = 0; 1020 my $metavalue = $self->get_metadata_from_archive_xml($gsdl_cgi, $doc_filename, "gsdlassocfile", $metapos, ""); 1021 1022 my $found_file = undef; 1023 my $found_mimetype = undef; 1024 1025 while (defined $metavalue && $metavalue ne "") { 1026 1027 my ($assoc_file,$assoc_mimetype) = ($metavalue =~ m/^(.+?):(.+?):(?:.*)$/); # only need first two fields, third one might be section??? 1028 1029 if ($assoc_file eq $assocname) { 1030 $found_file = $assoc_file; 1031 $found_mimetype = $assoc_mimetype; 1032 last; 1033 } 1034 1035 $metapos++; 1036 $metavalue = $self->get_metadata_from_archive_xml($gsdl_cgi, $doc_filename, "gsdlassocfile", $metapos, ""); 1037 } 1038 1039 if (defined $found_file) { 1040 1041 my ($unused_tailname, $doc_dirname) = File::Basename::fileparse($doc_file); 1042 1043 if (defined $dv && ($dv ne "")) { 1044 # Need to insert '_fldv_history/nminus-<n>' into doc_filename 1045 1046 $found_file = &util::filename_cat($doc_dirname,$FLDV_HISTORY_DIR,$dv,$found_file); 1047 } 1048 else { 1049 $found_file = &util::filename_cat($doc_dirname,$found_file); 1050 } 1051 1052 my $found_filename = &util::filename_cat($archive_dir, $found_file); 1053 1054 $gsdl_cgi->generate_file($found_mimetype,$found_filename); 1055 } 1056 else { 1057 1058 $gsdl_cgi->generate_error("Failed to find associated file $assocname in 'archives' for $docid"); 1059 } 969 1060 } 970 1061
Note:
See TracChangeset
for help on using the changeset viewer.