Changeset 31589
- Timestamp:
- 2017-04-07T10:33:58+12:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/cgiactions/metadataaction.pm
r30058 r31589 127 127 #REMOVE METHODS 128 128 "remove-import-metadata" => { 129 'compulsory-args' => [ "d", "metaname", "metavalue" ], #TODO: add f argument 130 'optional-args' => [ "metapos" ] }, # only provide metapos arg for SIMPLE collections 129 'compulsory-args' => [ "d", "metaname" ], #TODO: add f argument 130 'optional-args' => [ "metapos", "metavalue", "metamode" ] }, # only provide metapos arg for SIMPLE collections. 131 # Metavalue is now an optional arg for remove_import_metadata() based on what the implementation did, which allowed metavalue to be undefined, and if so, used metapos. 131 132 132 133 "remove-archives-metadata" => { 133 134 'compulsory-args' => [ "d", "metaname" ], #TODO: add f argument 134 'optional-args' => [ "metapos", "metavalue" ] },135 'optional-args' => [ "metapos", "metavalue", "metamode" ] }, 135 136 136 137 "remove-live-metadata" => { … … 144 145 "remove-metadata" => { # generic remove-meta function. The 'where' param can be set to any combination of index|archives|import|live. docid d is still compulsory for setting index, archives and live meta 145 146 'compulsory-args' => [ "d", "metaname" ], 146 'optional-args' => [ "where", "metapos", "metavalue" ] },147 'optional-args' => [ "where", "metapos", "metavalue", "metamode" ] }, # metamode is optional since remove-metadata can call any of remove_import_meta and remove_archives_meta, remove_index_meta, of which the first two accept metamode as an optional param 147 148 148 149 #INSERT METHODS … … 263 264 264 265 my $where = $self->{'where'}; 265 if (!$where) { 266 if (!$where || ($where =~ m/^\s*$/)) { # 0, "0", "" and undef are all false. All else is true. 267 # What is truth in perl: http://www.berkeleyinternet.com/perl/node11.html 268 # and http://www.perlmonks.org/?node_id=33638 269 266 270 $where = "index"; # default behaviour is to get the values from index 267 271 } … … 757 761 758 762 # Obtain the specified metadata value 759 $metapos = 0 if (!defined $metapos );763 $metapos = 0 if (!defined $metapos || ($metapos =~ m/^\s*$/)); 760 764 my $metavalue = $doc_rec->{$metaname}->[$metapos]; 761 765 $gsdl_cgi->generate_ok_message("$metavalue"); … … 782 786 my $metaname = $self->{'metaname'}; 783 787 my $metapos = $self->{'metapos'}; 784 $metapos = 0 if (!defined $metapos ); # gets the first value by default since metapos defaults to 0788 $metapos = 0 if (!defined $metapos || ($metapos =~ m/^\s*$/)); # gets the first value by default since metapos defaults to 0 785 789 786 790 my $infodbtype = $self->{'infodbtype'}; … … 910 914 my $metaname = $self->{'metaname'}; 911 915 my $metapos = $self->{'metapos'}; 912 $metapos = 0 if (!defined $metapos );916 $metapos = 0 if (!defined $metapos || ($metapos =~ m/^\s*$/)); 913 917 914 918 my $arcinfo_doc_filename = &dbutil::get_infodb_file_path($infodbtype, "archiveinf-doc", $archive_dir); … … 1170 1174 1171 1175 my $import_file = $self->{'f'}; 1172 if ((!defined $docid ) && (!defined $import_file)) {1173 $gsdl_cgi->generate_error("No docid (d=...) or import file (f=) specified."); 1176 if ((!defined $docid || $docid =~ m/^\s*$/) && (!defined $import_file || $import_file =~ m/^\s*$/)) { 1177 $gsdl_cgi->generate_error("No docid (d=...) or import file (f=) specified."); # at least d or f must be specified 1174 1178 } 1175 1179 … … 1182 1186 my $metamode = $self->{'metamode'}; 1183 1187 if ((!defined $metamode) || ($metamode =~ m/^\s*$/)) { 1184 # make "accumulate" the default (less destructive, as won't actually1188 # make "accumulate" the default (less destructive, as it won't actually 1185 1189 # delete any existing values) 1186 1190 $metamode = "accumulate"; … … 1190 1194 my $metapos = $self->{'metapos'}; # don't force undef to 0. Undef has meaning when metamode=override 1191 1195 my $prevmetavalue = $self->{'prevmetavalue'}; 1196 $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/)); 1197 $prevmetavalue = undef if(defined $prevmetavalue && ($prevmetavalue =~ m/^\s*$/)); 1192 1198 1193 1199 my $arcinfo_doc_filename = &dbutil::get_infodb_file_path($infodbtype, "archiveinf-doc", $archive_dir); … … 1227 1233 # Don't append "|| undef", since if metapos=0 it will then be set to undef 1228 1234 1235 $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/)); 1236 $prevmetavalue = undef if(defined $prevmetavalue && ($prevmetavalue =~ m/^\s*$/)); 1237 1229 1238 my $metamode = $self->{'metamode'}; 1230 1239 if ((!defined $metamode) || ($metamode =~ m/^\s*$/)) { 1231 # make "accumulate" the default (less destructive, as won't actually1240 # make "accumulate" the default (less destructive, as it won't actually 1232 1241 # delete any existing values) 1233 1242 $metamode = "accumulate"; … … 1284 1293 my $prevmetavalue = $self->{'prevmetavalue'}; 1285 1294 1295 $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/)); 1296 $prevmetavalue = undef if(defined $prevmetavalue && ($prevmetavalue =~ m/^\s*$/)); 1297 1286 1298 print STDERR "SETTING INDEX METADATA ENTRY\n"; 1287 1299 my $status = $self->set_index_metadata_entry($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue,$metamode,$prevmetavalue); 1288 1300 print STDERR "DONE SETTING INDEX METADATA ENTRY\n"; 1289 1301 if ($status != 0) { … … 1351 1363 1352 1364 my $where = $self->{'where'}; 1353 if(!$where ) {1365 if(!$where || ($where =~ m/^\s*$/)) { 1354 1366 $self->set_index_metadata(@_); # call the full version of set_index_meta for the default behaviour 1355 1367 return; … … 1424 1436 1425 1437 my $where = $self->{'where'}; 1426 if(!$where ) {1438 if(!$where || ($where =~ m/^\s*$/)) { 1427 1439 $self->set_index_metadata_array(@_); # default behaviour is the full version of set_index_meta_array 1428 1440 return; … … 2206 2218 my $metaname = $self->{'metaname'}; 2207 2219 my $metapos = $self->{'metapos'}; 2208 2209 my $metavalue = $self->{'metavalue'} || undef; # necessary to force fallback to undef here 2220 my $metavalue = $self->{'metavalue'}; 2221 2222 $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/)); 2223 $metavalue = undef if(defined $metavalue && ($metavalue =~ m/^\s*$/)); # necessary to force fallback to undef here 2210 2224 2211 2225 # if the user hasn't told us what to delete, not having given a metavalue or metapos, … … 2219 2233 } 2220 2234 2221 my $metamode = $self->{'metamode'} || undef; 2235 my $metamode = $self->{'metamode'}; 2236 $metamode = undef if(defined $metamode && ($metamode =~ m/^\s*$/)); 2222 2237 2223 2238 my $arcinfo_doc_filename = &dbutil::get_infodb_file_path($infodbtype, "archiveinf-doc", $archive_dir); … … 2792 2807 2793 2808 if ((!defined $metamode) || ($metamode =~ m/^\s*$/)) { 2794 # make "accumulate" the default (less destructive, as won't actually2809 # make "accumulate" the default (less destructive, as it won't actually 2795 2810 # delete any existing values) 2796 2811 $metamode = "accumulate"; … … 2810 2825 my $metamode = $metatable_rec->{'metamode'} || $doc_array_rec->{'metamode'} || $self->{'metamode'}; 2811 2826 if ((!defined $metamode) || ($metamode =~ m/^\s*$/)) { 2812 # make "accumulate" the default (less destructive, as won't actually2827 # make "accumulate" the default (less destructive, as it won't actually 2813 2828 # delete any existing values) 2814 2829 $metamode = "accumulate"; … … 2950 2965 my $metapos = $self->{'metapos'}; 2951 2966 my $metavalue = $self->{'metavalue'}; 2952 if(defined $metavalue) { 2967 2968 $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/)); 2969 $metavalue = undef if(defined $metavalue && ($metavalue =~ m/^\s*$/)); 2970 2971 if(defined $metavalue) { # metavalue is now a compulsory arg for remove_import_metadata() 2953 2972 $metavalue =~ s/<(.*?)>/<$1>/g; 2954 2973 } elsif (!defined $metapos) { # if given no metavalue or metapos to delete, default to deleting the 1st 2955 2974 $metapos = 0; 2956 2975 } 2957 my $metamode = $self->{'metamode'} || undef; 2976 my $metamode = $self->{'metamode'}; 2977 $metamode = undef if(defined $metamode && ($metamode =~ m/^\s*$/)); 2958 2978 2959 2979 # import works with metadata.xml which can have inherited metadata … … 3196 3216 3197 3217 my $where = $self->{'where'}; 3198 if(!$where ) {3218 if(!$where || ($where =~ m/^\s*$/)) { 3199 3219 $self->remove_index_metadata(@_); # call the full version of set_index_meta for the default behaviour 3200 3220 return; … … 3251 3271 my $metaname = $self->{'metaname'}; 3252 3272 my $metapos = $self->{'metapos'}; 3253 my $metavalue = $self->{'metavalue'} || undef; # necessary to force fallback to undef here 3273 my $metavalue = $self->{'metavalue'}; 3274 3275 $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/)); 3276 $metavalue = undef if(defined $metavalue && ($metavalue =~ m/^\s*$/)); # necessary to force fallback to undef here 3254 3277 3255 3278 # To people who know $collect_tail please add some comments 3279 # -> In collection groups, I think collect_tailname is the subcollection name, 3280 # e.g. colgroup-name/col-tail-name 3256 3281 # Obtain the path to the database 3257 3282 my $collect_tail = $collect; … … 3380 3405 # Check additional args 3381 3406 my $docid = $self->{'d'}; 3382 if (!defined($docid) ) {3407 if (!defined($docid) || ($docid =~ m/^\s*$/)) { 3383 3408 $gsdl_cgi->generate_error("No document id is specified: d=..."); 3384 3409 } 3385 3410 my $metaname = $self->{'metaname'}; 3386 if (!defined($metaname) ) {3411 if (!defined($metaname) || ($metaname =~ m/^\s*$/)) { 3387 3412 $gsdl_cgi->generate_error("No metaname is specified: metadataname=..."); 3388 3413 } 3389 3414 my $metavalue = $self->{'metavalue'}; 3390 if (!defined($metavalue) || $metavalue eq "") {3415 if (!defined($metavalue) || ($metavalue =~ m/^\s*$/)) { 3391 3416 $gsdl_cgi->generate_error("No metavalue or empty metavalue is specified: metadataname=..."); 3392 3417 } 3393 # make "accumulate" the default (less destructive, as won't actually3418 # make "accumulate" the default (less destructive, as it won't actually 3394 3419 # delete any existing values) 3395 3420 my $metamode = "accumulate";
Note:
See TracChangeset
for help on using the changeset viewer.