Changeset 37249
- Timestamp:
- 2023-02-02T13:24:03+13:00 (14 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/cgiactions/modmetadataaction.pm
r37218 r37249 155 155 #INSERT METHODS 156 156 "insert-metadata" => { 157 'compulsory-args' => [ "d", "metaname", "metavalue" ], 158 'optional-args' => [ ] } 157 'compulsory-args' => [ "d", "metaname", "metavalue" ], 158 'optional-args' => [ ] }, 159 160 161 #INC METHODS 162 "inc-fldv-nminus1" => { 163 'compulsory-args' => [ "d" ], 164 'optional-args' => [ ] } 159 165 }; 160 166 … … 3119 3125 } 3120 3126 3127 3128 3129 3130 sub inc_fldv_nminus1 3131 { 3132 my $self = shift @_; 3133 3134 my $username = $self->{'username'}; 3135 my $collect = $self->{'collect'}; 3136 my $gsdl_cgi = $self->{'gsdl_cgi'}; 3137 my $infodbtype = $self->{'infodbtype'}; 3138 3139 # Obtain the collect dir 3140 my $site = $self->{'site'}; 3141 my $collect_dir = $gsdl_cgi->get_collection_dir($site); 3142 3143 my $archive_dir = &util::filename_cat($collect_dir, $collect, "archives"); 3144 3145 # look up additional args 3146 my $docid = $self->{'d'}; 3147 3148 3149 my $arcinfo_doc_filename = &dbutil::get_infodb_file_path($infodbtype, "archiveinf-doc", $archive_dir); 3150 my $doc_rec = &dbutil::read_infodb_entry($infodbtype, $arcinfo_doc_filename, $docid); 3151 3152 # This now stores the full pathname [is this still true??] 3153 my $doc_file = $doc_rec->{'doc-file'}->[0]; 3154 3155 my ($unused_doc_tailname, $doc_dirname) = File::Basename::fileparse($doc_file); 3156 my $doc_full_dirname = &util::filename_cat($archive_dir,$doc_dirname); 3157 3158 my $fldv_full_dirname = &util::filename_cat($doc_full_dirname,$FLDV_HISTORY_DIR); 3159 3160 my $had_error = 0; 3161 my $had_error_mess = undef; 3162 3163 if (-d $fldv_full_dirname) { 3164 my $fldv_filtered_dirs = &FileUtils::readDirectoryFiltered($fldv_full_dirname,undef,"^nminus-\\d+\$"); 3165 3166 my @sorted_fldv_filtered_dirs = sort { 3167 my ($a_num) = ($a =~ m/(\d+)$/); 3168 my ($b_num) = ($b =~ m/(\d+)$/); 3169 3170 # sort into descending order 3171 return $b_num <=> $a_num; 3172 } @$fldv_filtered_dirs; 3173 3174 ## shuffle all the nminus-<n> folders down by one 3175 3176 3177 foreach my $nminus_n (@sorted_fldv_filtered_dirs) { 3178 3179 my $nminus_n_full_dir = &FileUtils::filenameConcatenate($fldv_full_dirname,$nminus_n); 3180 if (-d $nminus_n_full_dir) { 3181 3182 my ($n) = ($nminus_n =~ m/(\d+)$/); 3183 my $new_n = $n + 1; 3184 3185 my $new_full_dir_plus1 = &FileUtils::filenameConcatenate($fldv_full_dirname,"nminus-$new_n"); 3186 3187 my $move_ok = &FileUtils::renameDirectory($nminus_n_full_dir,$new_full_dir_plus1, 3188 { 'strict' => 1 } ); 3189 3190 if (!$move_ok) { 3191 $had_error_mess = "Error: Failed to move '$nminus_n' to nminus-$new_n in $fldv_full_dirname\n"; 3192 $had_error = 1; 3193 last; 3194 } 3195 3196 } 3197 else { 3198 print STDERR "Warning: skipping $nminus_n_full_dir as it is not a directory\n"; 3199 } 3200 } 3201 } 3202 3203 if (!$had_error) { 3204 ### Now need to copy everything top level in doc dir into nminus-1 3205 3206 my $nminus_1_full_dir = &FileUtils::filenameConcatenate($fldv_full_dirname,"nminus-1"); 3207 3208 my $copy_ok = &FileUtils::copyFilesRefRecursive([$doc_full_dirname],$nminus_1_full_dir, 3209 { 'strict' => 1, 'exclude_filter_re' => "^$FLDV_HISTORY_DIR\$" } ); 3210 3211 if (!$copy_ok) { 3212 $had_error_mess = "Error: Failed to clone document $docid to form 'nminus-1' directory in $fldv_full_dirname"; 3213 $had_error = 1; 3214 } 3215 } 3216 3217 if ($had_error) { 3218 $gsdl_cgi->generate_error($had_error_mess); 3219 } 3220 else { 3221 $gsdl_cgi->generate_ok_message("Successfully incremented the File-Level Document-Version History for $docid"); 3222 } 3223 } 3224 3225 3121 3226 # not returning 1; here since this file is conditionally included by metadataction.pm 3122 3227 # and not otherwise meant to be used on its own
Note:
See TracChangeset
for help on using the changeset viewer.