Changeset 19499
- Timestamp:
- 2009-05-18T11:01:40+12:00 (15 years ago)
- Location:
- gsdl/trunk/perllib
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
gsdl/trunk/perllib/GDBMUtils.pm
r18658 r19499 52 52 53 53 return $rec; 54 } 55 56 sub serializeHash 57 { 58 my ($hash) = @_; 59 60 my $shash = ""; 61 62 foreach my $metaname (keys %$hash) { 63 my $metavals = $hash->{$metaname}; 64 foreach my $metaval (@$metavals) { 65 # need to escape chars HTML entities ?? 66 $shash .= "<$metaname>$metaval\n"; 67 } 68 } 69 70 return $shash; 54 71 } 55 72 -
gsdl/trunk/perllib/cgiactions/baseaction.pm
r19293 r19499 29 29 30 30 use strict; 31 use serverutil;32 31 33 32 our $authenication_enabled = 0; … … 67 66 $err_mess .= "\nPossible actions are:\n"; 68 67 69 $err_mess .= " c ofiguration-check\n\n";68 $err_mess .= " check-installation\n\n"; 70 69 71 70 foreach my $a (keys %$action_table) { … … 94 93 # The check-installation command has no arguments 95 94 if ($action eq "check-installation") { 96 &serverutil::check_installation($gsdl_cgi,$iis6_mode);95 $self->check_installation($gsdl_cgi,$iis6_mode); 97 96 return; 98 97 } … … 157 156 158 157 # Locate and store optional args if present 159 my $opt_args = $action_table->{$action}->{'option -args'};158 my $opt_args = $action_table->{$action}->{'optional-args'}; 160 159 foreach my $oa (@$opt_args) { 161 160 if (defined $gsdl_cgi->{$oa}) { -
gsdl/trunk/perllib/cgiactions/imageaction.pm
r19293 r19499 37 37 "fit-screen" => { 'compulsory-args' => [ "pageWidth", "pageHeight", 38 38 "assocDir", "assocFile" ], 39 'optional-args' => [ ] },39 'optional-args' => [ "orientation" ] }, 40 40 41 41 }; … … 93 93 94 94 95 # don't user authenticate for now96 95 if ($baseaction::authentication_enabled) { 97 96 # Ensure the user is allowed to edit this collection … … 105 104 # # Make sure the collection isn't locked by someone else 106 105 # 107 &serverutil::lock_collection($gsdl_cgi, $username, $collect); 106 107 $self->lock_collection($username, $collect); 108 108 109 109 # look up additional args … … 113 113 my $assocDir = $self->{'assocDir'}; 114 114 my $assocFile = $self->{'assocFile'}; 115 116 my $orientation = $self->{'orientation'}; 117 $orientation = "portrait" if (!defined $orientation); 115 118 116 119 my $toplevel_assoc_dir … … 122 125 my $dst_height = $pageHeight; 123 126 124 my $dst_file = $dst_width."x".$dst_height."-".$assocFile; 127 my $opt_ls = ($orientation eq "landscape") ? "-r" : ""; 128 129 my $dst_file = $dst_width."x".$dst_height."$opt_ls-$assocFile"; 125 130 126 131 my $dst_full_assoc_filename … … 151 156 152 157 153 my $cmd = "convert \"$src_full_assoc_filename\" $resize \"$dst_full_assoc_filename\""; 158 my $cmd = "convert \"$src_full_assoc_filename\" "; 159 $cmd .= "-rotate 90 " if ($orientation eq "landscape"); 160 161 $cmd .= "$resize \"$dst_full_assoc_filename\""; 162 154 163 `$cmd`; 155 164 -
gsdl/trunk/perllib/cgiactions/metadataaction.pm
r19293 r19499 30 30 use cgiactions::baseaction; 31 31 32 use GDBMUtils; 33 use ghtml; 32 34 33 35 BEGIN { … … 43 45 my $action_table = 44 46 { 45 "get-live-metadata" => { 'compulsory-args' => [ "d", "metaname" ], 46 'optional-args' => [] }, 47 "set-live-metadata" => { 'compulsory-args' => [ "d", "metaname", "metavalue" ], 48 'optional-args' => [] }, 49 "set-import-metadata" => { 'compulsory-args' => [ "metaname", "metavalue" ], 50 'optional-args' => [ "d", "f", "metamode" ] 47 "get-live-metadata" => { 'compulsory-args' => [ "d", "metaname" ], 48 'optional-args' => [] }, 49 50 "get-metadata" => { 'compulsory-args' => [ "d", "metaname" ], 51 'optional-args' => [ "metapos" ] }, 52 53 "set-live-metadata" => { 'compulsory-args' => [ "d", "metaname", "metavalue" ], 54 'optional-args' => [ ] }, 55 56 "set-metadata" => { 'compulsory-args' => [ "d", "metaname", "metavalue" ], 57 'optional-args' => [ "metapos" ] }, 58 59 "set-import-metadata" => { 'compulsory-args' => [ "metaname", "metavalue" ], 60 'optional-args' => [ "d", "f", "metamode" ] 51 61 # metamode can be "accumulate", "override", or "unique-id" 52 } 62 }, 63 "remove-live-metadata" => { 'compulsory-args' => [ "d", "metaname" ], 64 'optional-args' => [ ] }, 65 66 "remove-metadata" => { 'compulsory-args' => [ "d", "metaname" ], 67 'optional-args' => [ "metapos" ] } 53 68 }; 54 69 … … 116 131 } 117 132 close(GIN); 118 133 134 chomp($metavalue); 135 119 136 $gsdl_cgi->generate_ok_message("$metavalue"); 120 137 } 121 138 } 139 140 141 142 sub get_metadata 143 { 144 my $self = shift @_; 145 146 my $username = $self->{'username'}; 147 my $collect = $self->{'collect'}; 148 my $gsdl_cgi = $self->{'gsdl_cgi'}; 149 my $gsdlhome = $self->{'gsdlhome'}; 150 151 152 if ($baseaction::authentication_enabled) { 153 # Ensure the user is allowed to edit this collection 154 &authenticate_user($gsdl_cgi, $username, $collect); 155 } 156 157 my $collect_dir = &util::filename_cat($gsdlhome, "collect"); 158 # $gsdl_cgi->checked_chdir($collect_dir); 159 160 161 # Make sure the collection isn't locked by someone else 162 $self->lock_collection($username, $collect); 163 164 # look up additional args 165 166 my $docid = $self->{'d'}; 167 my $metaname = $self->{'metaname'}; 168 my $metapos = $self->{'metapos'}; 169 170 my $collect_tail = $collect; 171 $collect_tail =~ s/^.*[\/\\]//; 172 173 my $gdbm_directory = &util::filename_cat($collect_dir,$collect,"index","text"); 174 my $gdbm_db = &util::filename_cat($gdbm_directory,"$collect_tail.gdb"); 175 176 my $doc_rec = GDBMUtils::gdbmRecordToHash($gdbm_db,$docid); 177 foreach my $k (keys %$doc_rec) { 178 my @escaped_v = (); 179 foreach my $v (@{$doc_rec->{$k}}) { 180 my $ev = &ghtml::unescape_html($v); 181 push(@escaped_v, $ev); 182 } 183 184 $doc_rec->{$k} = \@escaped_v; 185 } 186 187 $metapos = 0 if (!defined $metapos); 188 189 my $metavalue = $doc_rec->{$metaname}->[$metapos]; 190 191 $gsdl_cgi->generate_ok_message("$metavalue"); 122 192 123 193 } … … 175 245 $mess .= "System Error Message: $!\n"; 176 246 177 $gsdl_cgi->generate_error($mess 247 $gsdl_cgi->generate_error($mess); 178 248 } 179 249 else { 180 $gsdl_cgi->generate_ok_message("DB set successful: Key[$metaname]=$metavalue"); 181 } 182 183 } 250 $gsdl_cgi->generate_ok_message("set-live-metadata successful: Key[$metaname]=$metavalue"); 251 } 252 253 } 254 255 256 sub set_metadata 257 { 258 my $self = shift @_; 259 260 my $username = $self->{'username'}; 261 my $collect = $self->{'collect'}; 262 my $gsdl_cgi = $self->{'gsdl_cgi'}; 263 my $gsdlhome = $self->{'gsdlhome'}; 264 265 266 # don't user authenticate for now 267 if ($baseaction::authentication_enabled) { 268 # Ensure the user is allowed to edit this collection 269 &authenticate_user($gsdl_cgi, $username, $collect); 270 } 271 272 my $collect_dir = &util::filename_cat($gsdlhome, "collect"); 273 # $gsdl_cgi->checked_chdir($collect_dir); 274 275 276 # Make sure the collection isn't locked by someone else 277 $self->lock_collection($username, $collect); 278 279 # look up additional args 280 281 my $docid = $self->{'d'}; 282 my $metaname = $self->{'metaname'}; 283 my $metapos = $self->{'metapos'}; 284 my $metavalue = $self->{'metavalue'}; 285 286 my $collect_tail = $collect; 287 $collect_tail =~ s/^.*[\/\\]//; 288 289 my $gdbm_directory = &util::filename_cat($collect_dir,$collect,"index","text"); 290 my $gdbm_db = &util::filename_cat($gdbm_directory,"$collect_tail.gdb"); 291 292 my $doc_rec = GDBMUtils::gdbmRecordToHash($gdbm_db,$docid); 293 foreach my $k (keys %$doc_rec) { 294 my @escaped_v = (); 295 foreach my $v (@{$doc_rec->{$k}}) { 296 if ($k eq "contains") { 297 # protect quotes in ".2;".3 etc 298 $v =~ s/\"/\\\"/g; 299 push(@escaped_v, $v); 300 } 301 else { 302 my $ev = &ghtml::unescape_html($v); 303 $ev =~ s/\"/\\\"/g; 304 push(@escaped_v, $ev); 305 } 306 } 307 308 $doc_rec->{$k} = \@escaped_v; 309 } 310 311 ## print STDERR "**** metavalue = $metavalue\n"; 312 313 $metavalue =~ s/\"/\\\"/g; 314 315 if (defined $metapos) { 316 $doc_rec->{$metaname}->[$metapos] = $metavalue; 317 } 318 else { 319 $doc_rec->{$metaname} = [ $metavalue ]; 320 } 321 322 ## print STDERR "**** metavalue = $metavalue\n"; 323 324 my $serialized_doc_rec = GDBMUtils::serializeHash($doc_rec); 325 326 print STDERR "**** ser dr\n$serialized_doc_rec\n\n\n"; 327 328 my $cmd = "gdbmset \"$gdbm_db\" \"$docid\" \"$serialized_doc_rec\""; 329 330 my $status = system($cmd); 331 332 if ($status != 0) { 333 my $mess = "Failed to set metadata key: $docid\n"; 334 335 $mess .= "PATH: $ENV{'PATH'}\n"; 336 $mess .= "cmd = $cmd\n"; 337 $mess .= "Exit status: $status\n"; 338 $mess .= "System Error Message: $!\n"; 339 340 $gsdl_cgi->generate_error($mess); 341 } 342 else { 343 my $mess = "set-document-metadata successful: Key[$docid]\n"; 344 $mess .= " $metaname"; 345 $mess .= "->[$metapos]" if (defined $metapos); 346 $mess .= " = $metavalue"; 347 348 $gsdl_cgi->generate_ok_message($mess); 349 } 350 351 } 352 184 353 185 354 … … 374 543 375 544 545 546 547 548 sub remove_live_metadata 549 { 550 my $self = shift @_; 551 552 my $username = $self->{'username'}; 553 my $collect = $self->{'collect'}; 554 my $gsdl_cgi = $self->{'gsdl_cgi'}; 555 my $gsdlhome = $self->{'gsdlhome'}; 556 557 558 if ($baseaction::authentication_enabled) { 559 # Ensure the user is allowed to edit this collection 560 &authenticate_user($gsdl_cgi, $username, $collect); 561 } 562 563 my $collect_dir = &util::filename_cat($gsdlhome, "collect"); 564 # $gsdl_cgi->checked_chdir($collect_dir); 565 566 567 # Make sure the collection isn't locked by someone else 568 $self->lock_collection($username, $collect); 569 570 # look up additional args 571 572 my $docid = $self->{'d'}; 573 my $metaname = $self->{'metaname'}; 574 575 my $dbkey = "$docid.$metaname"; 576 577 my $collect_tail = $collect; 578 $collect_tail =~ s/^.*[\/\\]//; 579 580 my $gdbm_directory = &util::filename_cat($collect_dir,$collect,"index","text"); 581 my $gdbm_db = &util::filename_cat($gdbm_directory,"live-$collect_tail.gdb"); 582 583 my $cmd = "gdbmdel \"$gdbm_db\" \"$dbkey\""; 584 585 my $status = system($cmd); 586 587 if ($status != 0) { 588 my $mess = "Failed to set metadata key: $dbkey\n"; 589 590 $mess .= "PATH: $ENV{'PATH'}\n"; 591 $mess .= "cmd = $cmd\n"; 592 $mess .= "Exit status: $status\n"; 593 $mess .= "System Error Message: $!\n"; 594 595 $gsdl_cgi->generate_error($mess); 596 } 597 else { 598 $gsdl_cgi->generate_ok_message("DB remove successful: Key[$metaname]"); 599 } 600 601 } 602 603 604 sub remove_metadata 605 { 606 my $self = shift @_; 607 608 my $username = $self->{'username'}; 609 my $collect = $self->{'collect'}; 610 my $gsdl_cgi = $self->{'gsdl_cgi'}; 611 my $gsdlhome = $self->{'gsdlhome'}; 612 613 614 # don't user authenticate for now 615 if ($baseaction::authentication_enabled) { 616 # Ensure the user is allowed to edit this collection 617 &authenticate_user($gsdl_cgi, $username, $collect); 618 } 619 620 my $collect_dir = &util::filename_cat($gsdlhome, "collect"); 621 # $gsdl_cgi->checked_chdir($collect_dir); 622 623 624 # Make sure the collection isn't locked by someone else 625 $self->lock_collection($username, $collect); 626 627 # look up additional args 628 629 my $docid = $self->{'d'}; 630 my $metaname = $self->{'metaname'}; 631 my $metapos = $self->{'metapos'}; 632 633 my $collect_tail = $collect; 634 $collect_tail =~ s/^.*[\/\\]//; 635 636 my $gdbm_directory = &util::filename_cat($collect_dir,$collect,"index","text"); 637 my $gdbm_db = &util::filename_cat($gdbm_directory,"$collect_tail.gdb"); 638 639 my $doc_rec = GDBMUtils::gdbmRecordToHash($gdbm_db,$docid); 640 foreach my $k (keys %$doc_rec) { 641 my @escaped_v = (); 642 foreach my $v (@{$doc_rec->{$k}}) { 643 if ($k eq "contains") { 644 # protect quotes in ".2;".3 etc 645 $v =~ s/\"/\\\"/g; 646 push(@escaped_v, $v); 647 } 648 else { 649 my $ev = &ghtml::unescape_html($v); 650 $ev =~ s/\"/\\\"/g; 651 push(@escaped_v, $ev); 652 } 653 } 654 655 $doc_rec->{$k} = \@escaped_v; 656 } 657 658 $metapos = 0 if (!defined $metapos); 659 660 # consider check key is defined before deleting? 661 662 my $filtered_metadata = []; 663 my $num_metadata_vals = scalar(@{$doc_rec->{$metaname}}); 664 665 for (my $i=0; $i<$num_metadata_vals; $i++) { 666 my $metavalue = shift(@{$doc_rec->{$metaname}}); 667 668 if ($i != $metapos) { 669 push(@$filtered_metadata,$metavalue) 670 } 671 } 672 673 $doc_rec->{$metaname} = $filtered_metadata; 674 675 my $serialized_doc_rec = GDBMUtils::serializeHash($doc_rec); 676 677 my $cmd = "gdbmset \"$gdbm_db\" \"$docid\" \"$serialized_doc_rec\""; 678 679 my $status = system($cmd); 680 681 if ($status != 0) { 682 my $mess = "Failed to set metadata key: $docid\n"; 683 684 $mess .= "PATH: $ENV{'PATH'}\n"; 685 $mess .= "cmd = $cmd\n"; 686 $mess .= "Exit status: $status\n"; 687 $mess .= "System Error Message: $!\n"; 688 689 $gsdl_cgi->generate_error($mess); 690 } 691 else { 692 my $mess = "DB set (with item deleted) successful: Key[$docid]\n"; 693 $mess .= " $metaname"; 694 $mess .= "->[$metapos]" if (defined $metapos); 695 696 $gsdl_cgi->generate_ok_message($mess); 697 } 698 699 } 700 701 702 703 704 705 376 706 1;
Note:
See TracChangeset
for help on using the changeset viewer.