Revision 4577
Added by walbridge about 16 years ago
src/perl/register-dataset.cgi | ||
---|---|---|
54 | 54 |
unless (open (METACAT_PROPERTIES, $metacatProps)) { |
55 | 55 |
print "Content-type: text/html\n\n"; |
56 | 56 |
print "Unable to locate Metacat properties. Working directory is set as '$workingDirectory', is this correct?"; |
57 |
exit(0);
|
|
57 |
exit(); |
|
58 | 58 |
} |
59 | 59 |
|
60 | 60 |
$properties->load(*METACAT_PROPERTIES); |
... | ... | |
116 | 116 |
unless (open (SKIN_PROPERTIES, $skinProps)) { |
117 | 117 |
print "Content-type: text/html\n\n"; |
118 | 118 |
print "Unable to locate skin properties at $skinProps. Is this path correct?"; |
119 |
exit(0);
|
|
119 |
exit(); |
|
120 | 120 |
} |
121 | 121 |
$skinProperties->load(*SKIN_PROPERTIES); |
122 | 122 |
} |
... | ... | |
147 | 147 |
my %siteLatDMS; |
148 | 148 |
my %siteLongDMS; |
149 | 149 |
|
150 |
while ( my ($key, $value) = each (%$spatial)) {
|
|
150 |
while (my ($key, $value) = each (%$spatial)) { |
|
151 | 151 |
my ($name, $lon, $lat) = split(/\|/, $value); |
152 | 152 |
my ($latd, $latm, $lats, $latdir) = split(/\|/, $lat); |
153 | 153 |
my ($lond, $lonm, $lons, $londir) = split(/\|/, $lon); |
... | ... | |
192 | 192 |
# Send back the login form..... |
193 | 193 |
my $session = CGI::Session->load() or die CGI::Session->errstr(); |
194 | 194 |
|
195 |
if($FORM::submission eq 'true'){
|
|
196 |
$$templateVars{'message'} = 'You must login to view your submissions.';
|
|
197 |
}
|
|
195 |
if ($FORM::submission eq 'true') {
|
|
196 |
$$templateVars{'message'} = 'You must login to view your submissions.';
|
|
197 |
} |
|
198 | 198 |
|
199 |
if ( $session->is_empty ) {
|
|
200 |
# no session found ... redirect to login page template
|
|
201 |
$template->process( $templates->{'login'}, $templateVars);
|
|
199 |
if ($session->is_empty) {
|
|
200 |
# no session found ... redirect to login page template
|
|
201 |
$template->process($templates->{'login'}, $templateVars); |
|
202 | 202 |
} else { |
203 |
# session found ... delete the session....
|
|
204 |
$session->delete();
|
|
205 |
$template->process( $templates->{'login'}, $templateVars);
|
|
203 |
# session found ... delete the session....
|
|
204 |
$session->delete();
|
|
205 |
$template->process($templates->{'login'}, $templateVars);
|
|
206 | 206 |
} |
207 |
exit(0);
|
|
207 |
exit();
|
|
208 | 208 |
} elsif ($FORM::stage =~ "logout") { |
209 |
handleLogoutRequest();
|
|
210 |
exit(0);
|
|
209 |
handleLogoutRequest();
|
|
210 |
exit();
|
|
211 | 211 |
} elsif ($FORM::stage =~ "login") { |
212 |
handleLoginRequest();
|
|
213 |
exit(0);
|
|
212 |
handleLoginRequest();
|
|
213 |
exit();
|
|
214 | 214 |
} elsif ($FORM::stage =~ "mod_accept") { |
215 |
handleModAccept();
|
|
216 |
exit(0);
|
|
215 |
handleModAccept();
|
|
216 |
exit();
|
|
217 | 217 |
} elsif ($FORM::stage =~ "mod_decline") { |
218 |
handleModDecline();
|
|
219 |
exit(0);
|
|
218 |
handleModDecline();
|
|
219 |
exit();
|
|
220 | 220 |
} elsif ($FORM::stage =~ "mod_revise") { |
221 |
handleModRevise();
|
|
222 |
exit(0);
|
|
221 |
handleModRevise();
|
|
222 |
exit();
|
|
223 | 223 |
} elsif ($FORM::stage =~ "read") { |
224 |
handleRead();
|
|
225 |
exit(0);
|
|
226 |
} elsif ($FORM::stage =~ "review_frame"){ |
|
227 |
handleReviewFrame();
|
|
228 |
exit(0);
|
|
229 |
}
|
|
224 |
handleRead();
|
|
225 |
exit();
|
|
226 |
} elsif ($FORM::stage =~ "review_frame") {
|
|
227 |
handleReviewFrame();
|
|
228 |
exit();
|
|
229 |
} |
|
230 | 230 |
|
231 | 231 |
print "Content-type: text/html\n\n"; |
232 | 232 |
|
233 | 233 |
if ($FORM::stage =~ "guide") { |
234 | 234 |
# Send back the information on how to fill the form |
235 | 235 |
$$templateVars{'section'} = "Guide on How to Complete Registry Entries"; |
236 |
$template->process( $template->{'guide'}, $templateVars);
|
|
237 |
exit(0);
|
|
236 |
$template->process($template->{'guide'}, $templateVars); |
|
237 |
exit(); |
|
238 | 238 |
|
239 | 239 |
} elsif ($FORM::stage =~ "insert") { |
240 | 240 |
# The user has entered the data. Do data validation and send back data |
241 | 241 |
# to confirm the data that has been entered. |
242 | 242 |
toConfirmData(); |
243 |
exit(0);
|
|
243 |
exit(); |
|
244 | 244 |
|
245 |
}elsif ($FORM::dataWrong =~ "No, go back to editing" && $FORM::stage =~ "confirmed") { |
|
245 |
} elsif ($FORM::dataWrong =~ "No, go back to editing" && $FORM::stage =~ "confirmed") {
|
|
246 | 246 |
# The user wants to correct the data that he has entered. |
247 | 247 |
# Hence show the data again in entryData form. |
248 | 248 |
confirmDataToReEntryData(); |
249 |
exit(0);
|
|
249 |
exit(); |
|
250 | 250 |
|
251 |
}elsif ($FORM::stage =~ "modify") { |
|
251 |
} elsif ($FORM::stage =~ "modify") {
|
|
252 | 252 |
# Modification of a file has been requested. |
253 | 253 |
# check if the user is logged in... |
254 | 254 |
my $session = CGI::Session->load() or die CGI::Session->errstr(); |
255 |
if ( $session->is_empty ) {
|
|
255 |
if ($session->is_empty) {
|
|
256 | 256 |
# no session found ... redirect to login page template |
257 |
$$templateVars{'message'} = 'You must login to modify your dataset.';
|
|
258 |
$template->process( $templates->{'login'}, $templateVars);
|
|
257 |
$$templateVars{'message'} = 'You must login to modify your dataset.';
|
|
258 |
$template->process($templates->{'login'}, $templateVars); |
|
259 | 259 |
} else { |
260 |
# Show the form will all the values filled in.
|
|
261 |
my @sortedSites;
|
|
262 |
foreach my $site (sort @sitelist) {
|
|
263 |
push(@sortedSites, $site);
|
|
264 |
}
|
|
265 |
$$templateVars{'siteList'} = \@sortedSites;
|
|
266 |
$$templateVars{'section'} = "Modification Form";
|
|
267 |
$$templateVars{'docid'} = $FORM::docid;
|
|
268 |
modifyData();
|
|
260 |
# Show the form will all the values filled in.
|
|
261 |
my @sortedSites;
|
|
262 |
foreach my $site (sort @sitelist) {
|
|
263 |
push(@sortedSites, $site);
|
|
264 |
}
|
|
265 |
$$templateVars{'siteList'} = \@sortedSites;
|
|
266 |
$$templateVars{'section'} = "Modification Form";
|
|
267 |
$$templateVars{'docid'} = $FORM::docid;
|
|
268 |
modifyData();
|
|
269 | 269 |
} |
270 |
exit(0);
|
|
270 |
exit(); |
|
271 | 271 |
|
272 |
}elsif ($FORM::stage =~ "delete_confirm") { |
|
272 |
} elsif ($FORM::stage =~ "delete_confirm") {
|
|
273 | 273 |
|
274 | 274 |
# Result from deleteData form. |
275 |
if($FORM::deleteData =~ "Delete document"){
|
|
276 |
# delete Data |
|
277 |
deleteData(1);
|
|
278 |
exit(0);
|
|
275 |
if ($FORM::deleteData =~ "Delete document") {
|
|
276 |
# delete Data
|
|
277 |
deleteData(1);
|
|
278 |
exit();
|
|
279 | 279 |
} else { |
280 |
$$templateVars{'status'} = "Cancel"; |
|
281 |
$$templateVars{'function'} = "cancel"; |
|
282 |
$template->process( $templates->{'response'}, $templateVars);
|
|
283 |
exit(0);
|
|
280 |
$$templateVars{'status'} = "Cancel";
|
|
281 |
$$templateVars{'function'} = "cancel";
|
|
282 |
$template->process($templates->{'response'}, $templateVars);
|
|
283 |
exit();
|
|
284 | 284 |
} |
285 | 285 |
|
286 |
}elsif ($FORM::stage =~ "delete") { |
|
286 |
} elsif ($FORM::stage =~ "delete") {
|
|
287 | 287 |
# Deletion of a file has been requested. |
288 | 288 |
# Ask for username and password using deleteDataForm |
289 | 289 |
$$templateVars{'docid'} = $FORM::docid; |
290 |
$template->process( $templates->{'deleteData'}, $templateVars);
|
|
291 |
exit(0);
|
|
290 |
$template->process($templates->{'deleteData'}, $templateVars); |
|
291 |
exit(); |
|
292 | 292 |
|
293 |
}elsif ($FORM::stage !~ "confirmed") { |
|
293 |
} elsif ($FORM::stage !~ "confirmed") {
|
|
294 | 294 |
# None of the stages have been reached and data is not being confirmed. |
295 |
|
|
295 |
|
|
296 | 296 |
# check if the user is logged in... |
297 | 297 |
my $session = CGI::Session->load() or die CGI::Session->errstr(); |
298 |
if ( $session->is_empty ) {
|
|
298 |
if ($session->is_empty) {
|
|
299 | 299 |
# no session found ... redirect to login page template |
300 | 300 |
$$templateVars{'showInstructions'} = 'true'; |
301 | 301 |
$$templateVars{'message'} = 'You must login to register your dataset.'; |
302 | 302 |
debug($templates->{'login'}); |
303 |
$template->process( $templates->{'login'}, $templateVars);
|
|
303 |
$template->process($templates->{'login'}, $templateVars); |
|
304 | 304 |
} else { |
305 | 305 |
|
306 |
# Hence, send back entry form for entry of data.
|
|
307 |
debug("Registry: Sending form");
|
|
308 |
my @sortedSites;
|
|
309 |
foreach my $site (sort @sitelist) {
|
|
310 |
push(@sortedSites, $site);
|
|
311 |
}
|
|
306 |
# Hence, send back entry form for entry of data.
|
|
307 |
debug("Registry: Sending form");
|
|
308 |
my @sortedSites;
|
|
309 |
foreach my $site (sort @sitelist) {
|
|
310 |
push(@sortedSites, $site);
|
|
311 |
}
|
|
312 | 312 |
|
313 |
if ($skinName eq 'nceas') {
|
|
314 |
my $projects = getProjectList($properties);
|
|
315 |
$$templateVars{'projects'} = $projects;
|
|
316 |
$$templateVars{'wg'} = \@FORM::wg;
|
|
317 |
}
|
|
318 |
|
|
313 |
if ($skinName eq 'nceas') {
|
|
314 |
my $projects = getProjectList($properties);
|
|
315 |
$$templateVars{'projects'} = $projects;
|
|
316 |
$$templateVars{'wg'} = \@FORM::wg;
|
|
317 |
}
|
|
318 |
|
|
319 | 319 |
$$templateVars{'modules'} = $modules; |
320 | 320 |
$$templateVars{'required'} = $required; |
321 | 321 |
$$templateVars{'templates'} = $templates; |
... | ... | |
326 | 326 |
$$templateVars{'section'} = "Entry Form"; |
327 | 327 |
$$templateVars{'docid'} = ""; |
328 | 328 |
debug("Registry: Sending form: ready to process template"); |
329 |
$template->process( $templates->{'entry'}, $templateVars);
|
|
329 |
$template->process($templates->{'entry'}, $templateVars); |
|
330 | 330 |
debug("Registry: Sending form: template processed"); |
331 | 331 |
} |
332 |
exit(0);
|
|
332 |
exit(); |
|
333 | 333 |
} |
334 | 334 |
|
335 | 335 |
# Confirm stage has been reached. Enter the data into metacat. |
... | ... | |
393 | 393 |
$$templateVars{'cfg'} = $skinName; |
394 | 394 |
$$templateVars{'function'} = "submitted"; |
395 | 395 |
$$templateVars{'section'} = "Submission Status"; |
396 |
$template->process( $templates->{'response'}, $templateVars);
|
|
397 |
exit(0);
|
|
396 |
$template->process($templates->{'response'}, $templateVars); |
|
397 |
exit(); |
|
398 | 398 |
} else { |
399 | 399 |
|
400 |
if($config->{'adminIsDocOwner'} eq 'true'){
|
|
400 |
if ($config->{'adminIsDocOwner'} eq 'true') {
|
|
401 | 401 |
debug("Registry: adminIsDocOwner is set."); |
402 | 402 |
$response = $metacat->login($username, $password); |
403 | 403 |
if (! $response) { |
... | ... | |
409 | 409 |
$$templateVars{'cfg'} = $skinName; |
410 | 410 |
$$templateVars{'function'} = "submitted"; |
411 | 411 |
$$templateVars{'section'} = "Submission Status"; |
412 |
$template->process( $templates->{'response'}, $templateVars);
|
|
413 |
exit(0);
|
|
412 |
$template->process($templates->{'response'}, $templateVars); |
|
413 |
exit(); |
|
414 | 414 |
} |
415 | 415 |
} |
416 | 416 |
|
417 |
debug( "Registry: A");
|
|
417 |
debug("Registry: A"); |
|
418 | 418 |
if ($FORM::docid eq "") { |
419 |
debug( "Registry: B1");
|
|
419 |
debug("Registry: B1"); |
|
420 | 420 |
# document is being inserted |
421 | 421 |
my $docStatus = "INCOMPLETE"; |
422 | 422 |
while ($docStatus eq "INCOMPLETE") { |
... | ... | |
472 | 472 |
# Create our HTML response and send it back |
473 | 473 |
$$templateVars{'function'} = "modified"; |
474 | 474 |
$$templateVars{'section'} = "Modification Status"; |
475 |
$template->process( $templates->{'response'}, $templateVars);
|
|
475 |
$template->process($templates->{'response'}, $templateVars); |
|
476 | 476 |
|
477 |
exit(0);
|
|
477 |
exit(); |
|
478 | 478 |
} |
479 | 479 |
} |
480 | 480 |
} |
... | ... | |
505 | 505 |
$$templateVars{'function'} = "submitted"; |
506 | 506 |
$$templateVars{'section'} = "Submission Status"; |
507 | 507 |
|
508 |
$template->process( $templates->{'response'}, $templateVars);
|
|
508 |
$template->process($templates->{'response'}, $templateVars); |
|
509 | 509 |
|
510 |
exit(0);
|
|
510 |
exit(); |
|
511 | 511 |
|
512 | 512 |
################################################################################ |
513 | 513 |
# |
... | ... | |
590 | 590 |
unless hasContent($FORM::origNamelast0); |
591 | 591 |
push(@invalidParams, "Dataset abstract is missing.") |
592 | 592 |
unless hasContent($FORM::abstract); |
593 |
if($modules->{'temporal'} eq 'true'){
|
|
594 |
push(@invalidParams, "Year of start date is missing.")
|
|
595 |
unless (hasContent($FORM::beginningYear) || $required->{'temporal'} ne 'true');
|
|
596 |
push(@invalidParams, "Year of stop date has been specified but year of start date is missing.")
|
|
597 |
if ((!hasContent($FORM::beginningYear)) && hasContent($FORM::endingYear));
|
|
593 |
if ($modules->{'temporal'} eq 'true') {
|
|
594 |
push(@invalidParams, "Year of start date is missing.")
|
|
595 |
unless (hasContent($FORM::beginningYear) || $required->{'temporal'} ne 'true');
|
|
596 |
push(@invalidParams, "Year of stop date has been specified but year of start date is missing.")
|
|
597 |
if ((!hasContent($FORM::beginningYear)) && hasContent($FORM::endingYear));
|
|
598 | 598 |
} |
599 | 599 |
push(@invalidParams, "Geographic description is missing.") |
600 | 600 |
unless (hasContent($FORM::geogdesc) || $required->{'spatial'} ne 'true'); |
601 | 601 |
|
602 |
if($FORM::beginningMonth eq "MM"){ |
|
603 |
#if (hasContent($FORM::beginningYear)){ |
|
604 |
# $FORM::beginningMonth = "01"; |
|
605 |
#} else { |
|
606 |
$FORM::beginningMonth = ""; |
|
607 |
#} |
|
602 |
if ($FORM::beginningMonth eq "MM") { |
|
603 |
$FORM::beginningMonth = ""; |
|
608 | 604 |
} |
609 |
if($FORM::beginningDay eq "DD"){ |
|
610 |
#if (hasContent($FORM::beginningYear)){ |
|
611 |
# $FORM::beginningDay = "01"; |
|
612 |
#} else { |
|
613 |
$FORM::beginningDay = ""; |
|
614 |
#} |
|
605 |
if ($FORM::beginningDay eq "DD") { |
|
606 |
$FORM::beginningDay = ""; |
|
615 | 607 |
} |
616 |
if($FORM::endingMonth eq "MM"){ |
|
617 |
#if (hasContent($FORM::endingYear)){ |
|
618 |
# $FORM::endingMonth = "01"; |
|
619 |
#} else { |
|
620 |
$FORM::endingMonth = ""; |
|
621 |
#} |
|
622 |
} |
|
623 |
if($FORM::endingDay eq "DD"){ |
|
624 |
#if (hasContent($FORM::endingYear)){ |
|
625 |
# $FORM::endingDay = "01"; |
|
626 |
#} else { |
|
627 |
$FORM::endingDay = ""; |
|
628 |
#} |
|
608 |
if ($FORM::endingMonth eq "MM") { |
|
609 |
$FORM::endingMonth = ""; |
|
629 | 610 |
} |
611 |
if ($FORM::endingDay eq "DD") { |
|
612 |
$FORM::endingDay = ""; |
|
613 |
} |
|
630 | 614 |
|
631 |
if (hasContent($FORM::beginningYear) && !($FORM::beginningYear =~ /[0-9]{4}/)){ |
|
632 |
push(@invalidParams, "Invalid year of start date specified.")
|
|
615 |
if (hasContent($FORM::beginningYear) && !($FORM::beginningYear =~ /[0-9]{4}/)) {
|
|
616 |
push(@invalidParams, "Invalid year of start date specified.")
|
|
633 | 617 |
} |
634 | 618 |
|
635 |
if (hasContent($FORM::endingYear) && !($FORM::endingYear =~ /[0-9]{4}/)){ |
|
636 |
push(@invalidParams, "Invalid year of stop date specified.")
|
|
619 |
if (hasContent($FORM::endingYear) && !($FORM::endingYear =~ /[0-9]{4}/)) {
|
|
620 |
push(@invalidParams, "Invalid year of stop date specified.")
|
|
637 | 621 |
} |
638 |
|
|
622 |
|
|
639 | 623 |
# If the "use site" coord. box is checked and if the site is in |
640 | 624 |
# the longitude hash ... && ($siteLatDMS{$FORM::site}) |
641 |
|
|
642 |
if($modules->{'spatial'} eq 'true'){ |
|
643 |
if (($FORM::useSiteCoord) && ($siteLatDMS{$FORM::site}) ) { |
|
644 |
|
|
645 |
$latDeg1 = $siteLatDMS{$FORM::site}[0]; |
|
646 |
$latMin1 = $siteLatDMS{$FORM::site}[1]; |
|
647 |
$latSec1 = $siteLatDMS{$FORM::site}[2]; |
|
648 |
$hemisphLat1 = $siteLatDMS{$FORM::site}[3]; |
|
649 |
$longDeg1 = $siteLongDMS{$FORM::site}[0]; |
|
650 |
$longMin1 = $siteLongDMS{$FORM::site}[1]; |
|
651 |
$longSec1 = $siteLongDMS{$FORM::site}[2]; |
|
652 |
$hemisphLong1 = $siteLongDMS{$FORM::site}[3]; |
|
653 |
|
|
654 |
} else { |
|
655 |
|
|
656 |
$latDeg1 = $FORM::latDeg1; |
|
657 |
$latMin1 = $FORM::latMin1; |
|
658 |
$latSec1 = $FORM::latSec1; |
|
659 |
$hemisphLat1 = $FORM::hemisphLat1; |
|
660 |
$longDeg1 = $FORM::longDeg1; |
|
661 |
$longMin1 = $FORM::longMin1; |
|
662 |
$longSec1 = $FORM::longSec1; |
|
663 |
$hemisphLong1 = $FORM::hemisphLong1; |
|
664 |
} |
|
665 | 625 |
|
666 |
if($latDeg1 > 90 || $latDeg1 < 0){ |
|
667 |
push(@invalidParams, "Invalid first latitude degrees specified."); |
|
668 |
} |
|
669 |
if($latMin1 > 59 || $latMin1 < 0){ |
|
670 |
push(@invalidParams, "Invalid first latitude minutes specified."); |
|
671 |
} |
|
672 |
if($latSec1 > 59 || $latSec1 < 0){ |
|
673 |
push(@invalidParams, "Invalid first latitude seconds specified."); |
|
674 |
} |
|
675 |
if($longDeg1 > 180 || $longDeg1 < 0){ |
|
676 |
push(@invalidParams, "Invalid first longitude degrees specified."); |
|
677 |
} |
|
678 |
if($longMin1 > 59 || $longMin1 < 0){ |
|
679 |
push(@invalidParams, "Invalid first longitude minutes specified."); |
|
680 |
} |
|
681 |
if($longSec1 > 59 || $longSec1 < 0){ |
|
682 |
push(@invalidParams, "Invalid first longitude seconds specified."); |
|
683 |
} |
|
626 |
if ($modules->{'spatial'} eq 'true') { |
|
627 |
if (($FORM::useSiteCoord) && ($siteLatDMS{$FORM::site})) { |
|
628 |
$latDeg1 = $siteLatDMS{$FORM::site}[0]; |
|
629 |
$latMin1 = $siteLatDMS{$FORM::site}[1]; |
|
630 |
$latSec1 = $siteLatDMS{$FORM::site}[2]; |
|
631 |
$hemisphLat1 = $siteLatDMS{$FORM::site}[3]; |
|
632 |
$longDeg1 = $siteLongDMS{$FORM::site}[0]; |
|
633 |
$longMin1 = $siteLongDMS{$FORM::site}[1]; |
|
634 |
$longSec1 = $siteLongDMS{$FORM::site}[2]; |
|
635 |
$hemisphLong1 = $siteLongDMS{$FORM::site}[3]; |
|
636 |
} else { |
|
637 |
$latDeg1 = $FORM::latDeg1; |
|
638 |
$latMin1 = $FORM::latMin1; |
|
639 |
$latSec1 = $FORM::latSec1; |
|
640 |
$hemisphLat1 = $FORM::hemisphLat1; |
|
641 |
$longDeg1 = $FORM::longDeg1; |
|
642 |
$longMin1 = $FORM::longMin1; |
|
643 |
$longSec1 = $FORM::longSec1; |
|
644 |
$hemisphLong1 = $FORM::hemisphLong1; |
|
645 |
} |
|
684 | 646 |
|
685 |
if(hasContent($FORM::latDeg2) && ($FORM::latDeg2 > 90 || $FORM::latDeg2 < 0)){ |
|
686 |
push(@invalidParams, "Invalid second latitude degrees specified."); |
|
687 |
} |
|
688 |
if(hasContent($FORM::latMin2) && ($FORM::latMin2 > 59 || $FORM::latMin2 < 0)){ |
|
689 |
push(@invalidParams, "Invalid second latitude minutes specified."); |
|
690 |
} |
|
691 |
if(hasContent($FORM::latSec2) && ($FORM::latSec2 > 59 || $FORM::latSec2 < 0)){ |
|
692 |
push(@invalidParams, "Invalid second latitude seconds specified."); |
|
693 |
} |
|
694 |
if(hasContent($FORM::latDeg2) && ($FORM::longDeg2 > 180 || $FORM::longDeg2 < 0)){ |
|
695 |
push(@invalidParams, "Invalid second longitude degrees specified."); |
|
696 |
} |
|
697 |
if(hasContent($FORM::latMin2) && ($FORM::longMin2 > 59 || $FORM::longMin2 < 0)){ |
|
698 |
push(@invalidParams, "Invalid second longitude minutes specified."); |
|
699 |
} |
|
700 |
if(hasContent($FORM::latSec2) && ($FORM::longSec2 > 59 || $FORM::longSec2 < 0)){ |
|
701 |
push(@invalidParams, "Invalid second longitude seconds specified."); |
|
702 |
} |
|
647 |
if ($latDeg1 > 90 || $latDeg1 < 0) { |
|
648 |
push(@invalidParams, "Invalid first latitude degrees specified."); |
|
649 |
} |
|
650 |
if ($latMin1 > 59 || $latMin1 < 0) { |
|
651 |
push(@invalidParams, "Invalid first latitude minutes specified."); |
|
652 |
} |
|
653 |
if ($latSec1 > 59 || $latSec1 < 0) { |
|
654 |
push(@invalidParams, "Invalid first latitude seconds specified."); |
|
655 |
} |
|
656 |
if ($longDeg1 > 180 || $longDeg1 < 0) { |
|
657 |
push(@invalidParams, "Invalid first longitude degrees specified."); |
|
658 |
} |
|
659 |
if ($longMin1 > 59 || $longMin1 < 0) { |
|
660 |
push(@invalidParams, "Invalid first longitude minutes specified."); |
|
661 |
} |
|
662 |
if ($longSec1 > 59 || $longSec1 < 0) { |
|
663 |
push(@invalidParams, "Invalid first longitude seconds specified."); |
|
664 |
} |
|
665 |
|
|
666 |
if (hasContent($FORM::latDeg2) && ($FORM::latDeg2 > 90 || $FORM::latDeg2 < 0)) { |
|
667 |
push(@invalidParams, "Invalid second latitude degrees specified."); |
|
668 |
} |
|
669 |
if (hasContent($FORM::latMin2) && ($FORM::latMin2 > 59 || $FORM::latMin2 < 0)) { |
|
670 |
push(@invalidParams, "Invalid second latitude minutes specified."); |
|
671 |
} |
|
672 |
if (hasContent($FORM::latSec2) && ($FORM::latSec2 > 59 || $FORM::latSec2 < 0)) { |
|
673 |
push(@invalidParams, "Invalid second latitude seconds specified."); |
|
674 |
} |
|
675 |
if (hasContent($FORM::latDeg2) && ($FORM::longDeg2 > 180 || $FORM::longDeg2 < 0)) { |
|
676 |
push(@invalidParams, "Invalid second longitude degrees specified."); |
|
677 |
} |
|
678 |
if (hasContent($FORM::latMin2) && ($FORM::longMin2 > 59 || $FORM::longMin2 < 0)) { |
|
679 |
push(@invalidParams, "Invalid second longitude minutes specified."); |
|
680 |
} |
|
681 |
if (hasContent($FORM::latSec2) && ($FORM::longSec2 > 59 || $FORM::longSec2 < 0)) { |
|
682 |
push(@invalidParams, "Invalid second longitude seconds specified."); |
|
683 |
} |
|
703 | 684 |
} |
704 |
|
|
685 |
|
|
705 | 686 |
# Check if latDeg1 and longDeg1 has values if useSiteCoord is used. |
706 | 687 |
# This check is required because some of the sites dont have lat |
707 | 688 |
# and long mentioned in the config file. |
708 | 689 |
|
709 | 690 |
|
710 |
if($modules->{'spatial'} eq 'true' && $required->{'spatial'} eq 'true'){
|
|
711 |
if ($FORM::useSiteCoord ) {
|
|
712 |
push(@invalidParams, "The Data Registry doesn't have latitude and longitude information for the site that you chose. Please go back and enter the spatial information.")
|
|
713 |
unless(hasContent($latDeg1) && hasContent($longDeg1));
|
|
714 |
}else{
|
|
715 |
push(@invalidParams, "Latitude degrees are missing.")
|
|
716 |
unless (hasContent($latDeg1) || $required->{'spatial'} ne 'true');
|
|
717 |
push(@invalidParams, "Longitude degrees are missing.")
|
|
718 |
unless (hasContent($longDeg1) || $required->{'spatial'} ne 'true');
|
|
719 |
}
|
|
720 |
push(@invalidParams,
|
|
721 |
"You must provide a geographic description if you provide latitude and longitude information.")
|
|
722 |
if ((hasContent($latDeg1) || (hasContent($longDeg1))) && (!hasContent($FORM::geogdesc)));
|
|
691 |
if ($modules->{'spatial'} eq 'true' && $required->{'spatial'} eq 'true') {
|
|
692 |
if ($FORM::useSiteCoord) {
|
|
693 |
push(@invalidParams, "The Data Registry doesn't have latitude and longitude information for the site that you chose. Please go back and enter the spatial information.")
|
|
694 |
unless(hasContent($latDeg1) && hasContent($longDeg1));
|
|
695 |
} else {
|
|
696 |
push(@invalidParams, "Latitude degrees are missing.")
|
|
697 |
unless (hasContent($latDeg1) || $required->{'spatial'} ne 'true');
|
|
698 |
push(@invalidParams, "Longitude degrees are missing.")
|
|
699 |
unless (hasContent($longDeg1) || $required->{'spatial'} ne 'true');
|
|
700 |
}
|
|
701 |
push(@invalidParams,
|
|
702 |
"You must provide a geographic description if you provide latitude and longitude information.")
|
|
703 |
if ((hasContent($latDeg1) || (hasContent($longDeg1))) && (!hasContent($FORM::geogdesc)));
|
|
723 | 704 |
} |
724 | 705 |
|
725 |
if($modules->{'method'} eq 'true'){ |
|
726 |
push(@invalidParams, |
|
727 |
"You must provide a method description if you provide a method title.") |
|
728 |
if (hasContent($FORM::methodTitle) && ( !(scalar(@FORM::methodPara) > 0) |
|
729 |
|| (! hasContent($FORM::methodPara[0])))); |
|
730 |
push(@invalidParams, |
|
731 |
"You must provide a method description if you provide an extent of study description.") |
|
732 |
if (hasContent($FORM::studyExtentDescription) && (!(scalar(@FORM::methodPara) > 0) |
|
733 |
|| (! hasContent($FORM::methodPara[0])))); |
|
734 |
push(@invalidParams, |
|
735 |
"You must provide both an extent of study description and a sampling description, or neither.") |
|
736 |
if ( |
|
737 |
(hasContent($FORM::studyExtentDescription) && !hasContent($FORM::samplingDescription)) || |
|
738 |
(!hasContent($FORM::studyExtentDescription) && hasContent($FORM::samplingDescription)) |
|
739 |
); |
|
706 |
if ($modules->{'method'} eq 'true') { |
|
707 |
push (@invalidParams, |
|
708 |
"You must provide a method description if you provide a method title.") |
|
709 |
if (hasContent($FORM::methodTitle) && (!(scalar(@FORM::methodPara) > 0) |
|
710 |
|| (! hasContent($FORM::methodPara[0])))); |
|
711 |
push(@invalidParams, |
|
712 |
"You must provide a method description if you provide an extent of study description.") |
|
713 |
if (hasContent($FORM::studyExtentDescription) && (!(scalar(@FORM::methodPara) > 0) |
|
714 |
|| (! hasContent($FORM::methodPara[0])))); |
|
715 |
push(@invalidParams, |
|
716 |
"You must provide both an extent of study description and a sampling description, or neither.") |
|
717 |
if ((hasContent($FORM::studyExtentDescription) && !hasContent($FORM::samplingDescription)) || |
|
718 |
(!hasContent($FORM::studyExtentDescription) && hasContent($FORM::samplingDescription))); |
|
740 | 719 |
} |
741 | 720 |
|
742 | 721 |
push(@invalidParams, "First name of data set contact is missing.") |
... | ... | |
745 | 724 |
push(@invalidParams, "Last name of data set contact is missing.") |
746 | 725 |
unless (hasContent($FORM::origNamelastContact) || |
747 | 726 |
$FORM::useOrigAddress); |
748 |
if($required->{'contactEmailAddress'} eq 'true'){
|
|
749 |
if($FORM::useOrigAddress){
|
|
750 |
push(@invalidParams, "Email address of data set owner is missing. This is required as it will be used as contact email address as specified by you.")
|
|
751 |
unless (hasContent($FORM::origEmail));
|
|
752 |
} else {
|
|
753 |
push(@invalidParams, "Email address of data set contact is missing.")
|
|
754 |
unless (hasContent($FORM::origEmailContact));
|
|
755 |
}
|
|
727 |
if ($required->{'contactEmailAddress'} eq 'true') {
|
|
728 |
if ($FORM::useOrigAddress) {
|
|
729 |
push(@invalidParams, "Email address of data set owner is missing. This is required as it will be used as contact email address as specified by you.")
|
|
730 |
unless (hasContent($FORM::origEmail));
|
|
731 |
} else {
|
|
732 |
push(@invalidParams, "Email address of data set contact is missing.")
|
|
733 |
unless (hasContent($FORM::origEmailContact));
|
|
734 |
}
|
|
756 | 735 |
} |
757 |
|
|
758 |
# scw: commented these out, don't seem to be matched to cfg setting |
|
759 |
#push(@invalidParams, "Data medium is missing.") |
|
760 |
#unless (hasContent($FORM::dataMedium) || $FORM::dataMedium =~ /elect/); |
|
761 |
#push(@invalidParams, "Usage rights are missing.") |
|
762 |
#unless (hasContent($FORM::useConstraints)); |
|
763 |
|
|
736 |
|
|
764 | 737 |
return \@invalidParams; |
765 | 738 |
} |
766 | 739 |
|
... | ... | |
798 | 771 |
|
799 | 772 |
my $returnVal = ""; |
800 | 773 |
|
801 |
foreach (split(//,$val)){ |
|
802 |
my $var = unpack "C*", $_; |
|
803 |
|
|
804 |
if($var<128 && $var>31){ |
|
805 |
$returnVal=$returnVal.$_; |
|
806 |
} elsif ($var<32){ |
|
807 |
if($var == 10){ |
|
808 |
$returnVal=$returnVal.$_; |
|
809 |
} |
|
810 |
if($var == 13){ |
|
811 |
$returnVal=$returnVal.$_; |
|
812 |
} |
|
813 |
if($var == 9){ |
|
814 |
$returnVal=$returnVal.$_; |
|
815 |
} |
|
816 |
} else { |
|
817 |
#$returnVal=$returnVal."&#".$var.";"; |
|
818 |
$returnVal=$returnVal.$_; |
|
819 |
} |
|
774 |
foreach (split(//,$val)) { |
|
775 |
my $var = unpack "C*", $_; |
|
776 |
|
|
777 |
if ($var < 128 && $var > 31) { |
|
778 |
$returnVal = $returnVal.$_; |
|
779 |
} elsif ($var < 32) { |
|
780 |
if ($var == 10) { |
|
781 |
$returnVal = $returnVal.$_; |
|
782 |
} |
|
783 |
if ($var == 13) { |
|
784 |
$returnVal = $returnVal.$_; |
|
785 |
} |
|
786 |
if ($var == 9) { |
|
787 |
$returnVal = $returnVal.$_; |
|
788 |
} |
|
789 |
} else { |
|
790 |
$returnVal=$returnVal.$_; |
|
791 |
} |
|
820 | 792 |
} |
821 |
|
|
822 |
#$returnVal =~ s/&/%26/g; |
|
793 |
|
|
823 | 794 |
return $returnVal; |
824 | 795 |
} |
825 | 796 |
|
... | ... | |
839 | 810 |
|
840 | 811 |
my $returnVal = ""; |
841 | 812 |
|
842 |
foreach (split(//,$val)){ |
|
813 |
foreach (split(//,$val)) {
|
|
843 | 814 |
my $var = unpack "C*", $_; |
844 | 815 |
|
845 |
if($var<128 && $var>31){
|
|
816 |
if($var < 128 && $var > 31) {
|
|
846 | 817 |
$returnVal=$returnVal.$_; |
847 |
} elsif ($var<32){
|
|
848 |
if($var == 10){ |
|
818 |
} elsif ($var < 32) {
|
|
819 |
if($var == 10) {
|
|
849 | 820 |
$returnVal=$returnVal.$_; |
850 | 821 |
} |
851 |
if($var == 13){
|
|
822 |
if ($var == 13) {
|
|
852 | 823 |
$returnVal=$returnVal.$_; |
853 | 824 |
} |
854 |
if($var == 9){
|
|
825 |
if ($var == 9) {
|
|
855 | 826 |
$returnVal=$returnVal.$_; |
856 | 827 |
} |
857 | 828 |
} else { |
... | ... | |
919 | 890 |
my $fileSize = stat($outFile)->size; |
920 | 891 |
if ($fileSize == 0) { |
921 | 892 |
push(@errorMessages, "file $fileName is zero bytes!"); |
922 |
debug( "Registry: file $fileName is zero bytes!");
|
|
893 |
debug("Registry: file $fileName is zero bytes!"); |
|
923 | 894 |
} |
924 | 895 |
|
925 | 896 |
# Now the file is on disk, send the object to Metacat |
926 | 897 |
my $session = CGI::Session->load(); |
927 |
if ( $session->is_empty ) {
|
|
898 |
if ($session->is_empty) {
|
|
928 | 899 |
push(@errorMessages, "Must be logged in to upload files."); |
929 |
debug( "Not logged in, cannot upload files.");
|
|
900 |
debug("Not logged in, cannot upload files."); |
|
930 | 901 |
return 0; |
931 | 902 |
} |
932 | 903 |
|
933 | 904 |
my $docid = newAccessionNumber($config->{'scope'}); |
934 | 905 |
my $uploadReturn = uploadData($outFile, $docid); |
935 | 906 |
if (!$uploadReturn) { |
936 |
debug( "Registry: uploading the data failed.");
|
|
907 |
debug("Registry: uploading the data failed."); |
|
937 | 908 |
} |
938 | 909 |
|
939 | 910 |
my $entityid = $fileHash."001"; |
... | ... | |
974 | 945 |
my $fileSize = stat($outFile)->size; |
975 | 946 |
if ($fileSize == 0) { |
976 | 947 |
push(@errorMessages, "file $fileName is zero bytes!"); |
977 |
debug( "Registry: file $fileName is zero bytes!");
|
|
948 |
debug("Registry: file $fileName is zero bytes!"); |
|
978 | 949 |
} |
979 | 950 |
|
980 | 951 |
# file is in Metacat, generate the pertinent EML elements |
... | ... | |
1148 | 1119 |
foreach my $origName (param()) { |
1149 | 1120 |
my $origNum = $origName; |
1150 | 1121 |
$origNum =~ s/origNamelast//; # get the index of the parameter 0 to 10 |
1151 |
if ( $origNum =~ /^([0-9]+)$/) {
|
|
1122 |
if ($origNum =~ /^([0-9]+)$/) { |
|
1152 | 1123 |
# do not generate EML for empty originator fields |
1153 | 1124 |
if (hasContent(param("origNamefirst" . $origNum))) { |
1154 | 1125 |
my $first = normalize(param("origNamefirst" . $origNum)); |
... | ... | |
1202 | 1173 |
my $entityList = ""; |
1203 | 1174 |
|
1204 | 1175 |
my $access = fileAccessElement(\%entityObjects); |
1205 |
while ( my ($docid, $data) = each(%entityObjects) ) {
|
|
1176 |
while (my ($docid, $data) = each(%entityObjects)) {
|
|
1206 | 1177 |
my $entityStub = qq|<otherEntity id="$data->{'entityid'}" scope="document"> |
1207 | 1178 |
<entityName>$data->{'fileName'}</entityName> |
1208 | 1179 |
<physical scope="document"> |
... | ... | |
1243 | 1214 |
'private' => 'deny', |
1244 | 1215 |
); |
1245 | 1216 |
|
1246 |
while ( my ($docid, $data) = each(%entityObjects) ) {
|
|
1217 |
while (my ($docid, $data) = each(%entityObjects)) {
|
|
1247 | 1218 |
my $defaultAccess = $accessRoles{$data->{'filePerm'}}; |
1248 | 1219 |
$accessList = qq| |
1249 | 1220 |
<access authSystem="knb" order="denyFirst"> |
... | ... | |
1267 | 1238 |
foreach my $kwName (param()) { |
1268 | 1239 |
my $kwNum = $kwName; |
1269 | 1240 |
$kwNum =~ s/keyword//; # get the index of the parameter 0, ..., 10 |
1270 |
if ( $kwNum =~ /^([0-9]+)$/ ){
|
|
1241 |
if ($kwNum =~ /^([0-9]+)$/) {
|
|
1271 | 1242 |
# don't generate xml for empty keyword fields |
1272 | 1243 |
# don't generate taxonomic keyword fields, those go in taxonomic coverage |
1273 | 1244 |
if (hasContent(param($kwName))) { |
... | ... | |
1656 | 1627 |
my $taxIndex = $trn; |
1657 | 1628 |
$taxIndex =~ s/taxonRankName//; # get the index of the parameter 0, ..., 10 |
1658 | 1629 |
my $trv = "taxonRankValue".$taxIndex; |
1659 |
if ( $taxIndex =~ /[0-9]+/ ){
|
|
1630 |
if ($taxIndex =~ /[0-9]+/) {
|
|
1660 | 1631 |
if (hasContent(param($trn)) && hasContent(param($trv))) { |
1661 |
if (! $foundFirstTaxon) {
|
|
1632 |
if (!$foundFirstTaxon) { |
|
1662 | 1633 |
$cov .= "<taxonomicCoverage>\n"; |
1663 | 1634 |
$foundFirstTaxon = 1; |
1664 | 1635 |
if (hasContent($FORM::taxaAuth)) { |
... | ... | |
1735 | 1706 |
$access .= allowElement(getUsername(), 'read', 'write'); |
1736 | 1707 |
} |
1737 | 1708 |
|
1738 |
if($config->{'publicReadable'} eq "true"){
|
|
1709 |
if ($config->{'publicReadable'} eq "true") {
|
|
1739 | 1710 |
$access .= allowElement('public', 'read'); |
1740 | 1711 |
} |
1741 | 1712 |
$access .= "</access>\n"; |
... | ... | |
1762 | 1733 |
$username = "uid=$FORM::username,o=$FORM::organization,dc=ecoinformatics,dc=org"; |
1763 | 1734 |
} else { |
1764 | 1735 |
my $session = CGI::Session->load(); |
1765 |
if ( !$session->is_empty ) {
|
|
1736 |
if (!$session->is_empty) {
|
|
1766 | 1737 |
$username = $session->param("username"); |
1767 | 1738 |
} |
1768 | 1739 |
} |
... | ... | |
1789 | 1760 |
my $tempfile; |
1790 | 1761 |
|
1791 | 1762 |
my $session = CGI::Session->load(); |
1792 |
if ( !$session->is_empty ) {
|
|
1763 |
if (!$session->is_empty) {
|
|
1793 | 1764 |
my $username = $session->param("username"); |
1794 | 1765 |
my $password = $session->param("password"); |
1795 | 1766 |
$metacat->login($username, $password); |
... | ... | |
1804 | 1775 |
$error ="Error in parsing the eml document"; |
1805 | 1776 |
push(@errorMessages, $error); |
1806 | 1777 |
} elsif ($doc=~ /<error/) { |
1807 |
if ( $doc=~ /public/){
|
|
1778 |
if ($doc=~ /public/) {
|
|
1808 | 1779 |
$error ="Error in reading the eml document. Please check if you are logged in."; |
1809 | 1780 |
push(@errorMessages, $error); |
1810 | 1781 |
} else { |
... | ... | |
1822 | 1793 |
return $xmldoc; |
1823 | 1794 |
} |
1824 | 1795 |
|
1825 |
|
|
1796 |
|
|
1826 | 1797 |
################################################################################ |
1827 | 1798 |
# |
1828 | 1799 |
# read the eml document and send back a form with values filled in. |
... | ... | |
1842 | 1813 |
$error = 1; |
1843 | 1814 |
$$templateVars{'function'} = "modification"; |
1844 | 1815 |
$$templateVars{'section'} = "Modification Status"; |
1845 |
$template->process( $templates->{'response'}, $templateVars);
|
|
1816 |
$template->process($templates->{'response'}, $templateVars); |
|
1846 | 1817 |
} else { |
1847 | 1818 |
$$templateVars{'form'} = 're_entry'; |
1848 |
$template->process( $templates->{'entry'}, $templateVars);
|
|
1819 |
$template->process($templates->{'entry'}, $templateVars); |
|
1849 | 1820 |
} |
1850 | 1821 |
} |
1851 | 1822 |
|
... | ... | |
1927 | 1898 |
} elsif ($results->size() < 1) { |
1928 | 1899 |
$error ="Following tag not found: title. Please use Morpho to edit this document"; |
1929 | 1900 |
push(@errorMessages, $error."\n"); |
1930 |
#if ($DEBUG == 1){ print $error;} |
|
1931 | 1901 |
} else { |
1932 | 1902 |
foreach $node ($results->get_nodelist) { |
1933 | 1903 |
$$templateVars{'title'} = findValue($node, '../title'); |
... | ... | |
2038 | 2008 |
|
2039 | 2009 |
$results = $doc->findnodes('//dataset/metadataProvider'); |
2040 | 2010 |
foreach $node ($results->get_nodelist) { |
2041 |
dontOccur($node, "./organizationName|./positionName|./onlineURL|./userId|./electronicMailAddress|./phone|./address",
|
|
2011 |
dontOccur($node, "./organizationName|./positionName|./onlineURL|./userId|./electronicMailAddress|./phone|./address", |
|
2042 | 2012 |
"organizationName, positionName, onlineURL, userId, electronicMailAddress, phone, address in metadataProvider"); |
2043 | 2013 |
|
2044 |
$tempResult = $node->findnodes('./individualName');
|
|
2014 |
$tempResult = $node->findnodes('./individualName');
|
|
2045 | 2015 |
if ($tempResult->size > 1) { |
2046 | 2016 |
errMoreThanOne("metadataProvider/indvidualName"); |
2047 | 2017 |
} else { |
... | ... | |
2141 | 2111 |
$count++; |
2142 | 2112 |
} |
2143 | 2113 |
$$templateVars{'keyCount'} = $count; |
2144 |
if($count > 0 ){
|
|
2114 |
if ($count > 0) {
|
|
2145 | 2115 |
$$templateVars{'hasKeyword'} = "true"; |
2146 | 2116 |
} |
2147 | 2117 |
|
... | ... | |
2172 | 2142 |
if ($childNodes->size() > 1) { |
2173 | 2143 |
$error ="The tag para in intellectualRights has children which cannot be shown using the form. Please use Morpho to edit this document"; |
2174 | 2144 |
push(@errorMessages, $error); |
2175 |
#if ($DEBUG == 1){ print $error."\n";} |
|
2176 | 2145 |
} else { |
2177 | 2146 |
#print $tempNode->nodeName().":".$tempNode->textContent(); |
2178 | 2147 |
#print "\n"; |
... | ... | |
2191 | 2160 |
if ($results->size() > 1) { |
2192 | 2161 |
errMoreThanOne("distribution/online"); |
2193 | 2162 |
} else { |
2194 |
foreach my $tempNode ($results->get_nodelist){ |
|
2163 |
foreach my $tempNode ($results->get_nodelist) {
|
|
2195 | 2164 |
$$templateVars{'url'} = findValue($tempNode, "url"); |
2196 | 2165 |
dontOccur($tempNode, "./connection", "/distribution/online/connection"); |
2197 | 2166 |
dontOccur($tempNode, "./connectionDefinition", "/distribution/online/connectionDefinition"); |
... | ... | |
2204 | 2173 |
} else { |
2205 | 2174 |
foreach my $tempNode ($results->get_nodelist) { |
2206 | 2175 |
my $temp = findValue($tempNode, "mediumName"); |
2207 |
if(substr($temp, 0, 5) eq "other"){
|
|
2176 |
if (substr($temp, 0, 5) eq "other") {
|
|
2208 | 2177 |
$$templateVars{'dataMedium'} = substr($temp, 0, 5); |
2209 | 2178 |
$$templateVars{'dataMediumOther'} = substr($temp, 5); |
2210 | 2179 |
} else { |
... | ... | |
2240 | 2209 |
$$templateVars{'beginningYear'} = $x; |
2241 | 2210 |
$$templateVars{'beginningMonth'} = $y; |
2242 | 2211 |
$$templateVars{'beginningDay'} = $z; |
2243 |
|
|
2212 |
|
|
2244 | 2213 |
$tempdate = findValue($tempNode, "rangeOfDates/endDate/calendarDate"); |
2245 | 2214 |
($x, $y, $z) = split("-", $tempdate); |
2246 | 2215 |
$$templateVars{'endingYear'} = $x; |
... | ... | |
2249 | 2218 |
|
2250 | 2219 |
$tempdate = ""; |
2251 | 2220 |
$tempdate = findValue($tempNode, "singleDateTime/calendarDate"); |
2252 |
if($tempdate ne ""){
|
|
2221 |
if ($tempdate ne "") {
|
|
2253 | 2222 |
($x, $y, $z) = split("-", $tempdate); |
2254 | 2223 |
$$templateVars{'beginningYear'} = $x; |
2255 | 2224 |
$$templateVars{'beginningMonth'} = $y; |
2256 | 2225 |
$$templateVars{'beginningDay'} = $z; |
2257 |
}
|
|
2258 |
|
|
2259 |
$$templateVars{'hasTemporal'} = "true";
|
|
2226 |
} |
|
2227 |
|
|
2228 |
$$templateVars{'hasTemporal'} = "true";
|
|
2260 | 2229 |
} |
2261 | 2230 |
} |
2262 | 2231 |
|
... | ... | |
2491 | 2460 |
if ($principal eq 'public' && $permission ne 'read') { $accessError = 1; } |
2492 | 2461 |
if ($principal eq $username && $permission ne 'all') { $accessError = 2; } |
2493 | 2462 |
if ($principal ne 'public' && $principal ne $username && $principal ne $moderators && $permission ne 'all') { $accessError = 3; } |
2494 |
if ($accessError == 3){ |
|
2463 |
if ($accessError == 3) {
|
|
2495 | 2464 |
my $session = CGI::Session->load(); |
2496 |
if ( !$session->is_empty ) {
|
|
2465 |
if (!$session->is_empty) {
|
|
2497 | 2466 |
my $username = $session->param("username"); |
2498 | 2467 |
my $password = $session->param("password"); |
2499 |
if($principal eq $username){
|
|
2468 |
if ($principal eq $username) {
|
|
2500 | 2469 |
$accessError = 0; |
2501 | 2470 |
} |
2502 | 2471 |
} |
... | ... | |
2531 | 2500 |
dontOccur($doc, "//protocol", "protocol"); |
2532 | 2501 |
$results = $doc->findnodes( |
2533 | 2502 |
'//additionalMetadata/moderatorComment'); |
2534 |
if($results->size == 0){
|
|
2535 |
dontOccur($doc, "//additionalMetadata", "additionalMetadata");
|
|
2503 |
if ($results->size == 0) {
|
|
2504 |
dontOccur($doc, "//additionalMetadata", "additionalMetadata"); |
|
2536 | 2505 |
} |
2537 | 2506 |
} |
2538 | 2507 |
|
... | ... | |
2591 | 2560 |
} else { |
2592 | 2561 |
|
2593 | 2562 |
$findType = $xmldoc->findnodes('//dataset/identifier'); |
2594 |
if($findType->size() > 0){ |
|
2595 |
# This is a eml beta6 document |
|
2596 |
# Delete the documents mentioned in triples also |
|
2597 |
|
|
2598 |
$findType = $xmldoc->findnodes('//dataset/triple'); |
|
2599 |
if($findType->size() > 0){ |
|
2600 |
foreach $node ($findType->get_nodelist){ |
|
2601 |
$pushDoc = findValue($node, 'subject'); |
|
2602 |
|
|
2603 |
# If the file is already in the @fileArray then do not add it |
|
2604 |
$alreadyInArray = 0; |
|
2605 |
foreach $element (@fileArray){ |
|
2606 |
if($element eq $pushDoc){ |
|
2607 |
$alreadyInArray = 1; |
|
2563 |
if ($findType->size() > 0) { |
|
2564 |
# This is a eml beta6 document |
|
2565 |
# Delete the documents mentioned in triples also |
|
2566 |
|
|
2567 |
$findType = $xmldoc->findnodes('//dataset/triple'); |
|
2568 |
if ($findType->size() > 0) { |
|
2569 |
foreach $node ($findType->get_nodelist) { |
|
2570 |
$pushDoc = findValue($node, 'subject'); |
|
2571 |
|
|
2572 |
# If the file is already in the @fileArray then do not add it |
|
2573 |
$alreadyInArray = 0; |
|
2574 |
foreach $element (@fileArray) { |
|
2575 |
if ($element eq $pushDoc) { |
|
2576 |
$alreadyInArray = 1; |
|
2577 |
} |
|
2578 |
} |
|
2579 |
|
|
2580 |
if (!$alreadyInArray) { |
|
2581 |
# If not already in array then delete the file. |
|
2582 |
push (@fileArray, $pushDoc); |
|
2583 |
$response = $metacat->delete($pushDoc); |
|
2584 |
|
|
2585 |
if (!$response) { |
|
2586 |
# Could not delete |
|
2587 |
push(@errorMessages, $metacat->getMessage()); |
|
2588 |
push(@errorMessages, "Failed during deleting $pushDoc. Please check if you are authorized to delete this document.\n"); |
|
2589 |
} |
|
2590 |
} |
|
2608 | 2591 |
} |
2609 | 2592 |
} |
2610 |
|
|
2611 |
if(!$alreadyInArray){ |
|
2612 |
# If not already in array then delete the file. |
|
2613 |
push (@fileArray, $pushDoc); |
|
2614 |
$response = $metacat->delete($pushDoc); |
|
2615 |
|
|
2616 |
if (! $response) { |
|
2617 |
# Could not delete |
|
2618 |
#push(@errorMessages, $response); |
|
2619 |
push(@errorMessages, $metacat->getMessage()); |
|
2620 |
push(@errorMessages, "Failed during deleting $pushDoc. Please check if you are authorized to delete this document.\n"); |
|
2621 |
} |
|
2622 |
} |
|
2623 |
} |
|
2624 | 2593 |
} |
2625 |
} |
|
2626 | 2594 |
} |
2627 |
|
|
2595 |
|
|
2628 | 2596 |
# Delete the main document. |
2629 |
if($deleteAll){
|
|
2630 |
$response = $metacat->delete($docid);
|
|
2597 |
if ($deleteAll) {
|
|
2598 |
$response = $metacat->delete($docid); |
|
2631 | 2599 |
if (! $response) { |
2632 |
# Could not delete |
|
2633 |
#push(@errorMessages, $response); |
|
2634 |
push(@errorMessages, $metacat->getMessage()); |
|
2635 |
push(@errorMessages, "Failed during deleting $docid. Please check if you are authorized to delete this document.\n"); |
|
2600 |
# Could not delete |
|
2601 |
push(@errorMessages, $metacat->getMessage()); |
|
2602 |
push(@errorMessages, "Failed during deleting $docid. Please check if you are authorized to delete this document.\n"); |
|
2636 | 2603 |
} |
2637 | 2604 |
} |
2638 | 2605 |
} |
2639 |
|
|
2606 |
|
|
2640 | 2607 |
if (scalar(@errorMessages)) { |
2641 |
# If any errors, print them in the response template |
|
2642 |
$$templateVars{'status'} = 'failure'; |
|
2643 |
$$templateVars{'errorMessages'} = \@errorMessages; |
|
2644 |
$error = 1; |
|
2608 |
# If any errors, print them in the response template
|
|
2609 |
$$templateVars{'status'} = 'failure';
|
|
2610 |
$$templateVars{'errorMessages'} = \@errorMessages;
|
|
2611 |
$error = 1;
|
|
2645 | 2612 |
} |
2646 |
|
|
2613 |
|
|
2647 | 2614 |
# Process the response template |
2648 |
if($deleteAll){ |
|
2649 |
|
|
2650 |
$$templateVars{'function'} = "deleted"; |
|
2651 |
$$templateVars{'section'} = "Deletion Status"; |
|
2652 |
$template->process( $templates->{'response'}, $templateVars); |
|
2615 |
if ($deleteAll) { |
|
2616 |
$$templateVars{'function'} = "deleted"; |
|
2617 |
$$templateVars{'section'} = "Deletion Status"; |
|
2618 |
$template->process($templates->{'response'}, $templateVars); |
|
2653 | 2619 |
} |
2654 | 2620 |
} |
2655 | 2621 |
|
... | ... | |
2662 | 2628 |
#debug("Registry: handling login request"); |
2663 | 2629 |
# Check if a session already exists |
2664 | 2630 |
my $session = CGI::Session->load() or die CGI::Session->errstr(); |
2665 |
if ( $session->is_empty ) {
|
|
2631 |
if ($session->is_empty) {
|
|
2666 | 2632 |
# no session found ... check if the login is correct |
2667 |
my $username = $FORM::username;
|
|
2668 |
my $password = $FORM::password;
|
|
2669 |
|
|
2633 |
my $username = $FORM::username;
|
|
2634 |
my $password = $FORM::password;
|
|
2635 |
|
|
2670 | 2636 |
my $metacat = Metacat->new($metacatUrl); |
2671 | 2637 |
my $returnVal = $metacat->login($username,$password); |
2672 | 2638 |
debug("Registry: Login was $returnVal for login attempt to $metacatUrl, with $username"); |
2673 |
if($returnVal > 0){
|
|
2639 |
if ($returnVal > 0) {
|
|
2674 | 2640 |
# valid username and passwd |
2675 | 2641 |
# create a new session and store username and passswd |
2676 | 2642 |
$session = new CGI::Session(); |
2677 | 2643 |
|
2678 | 2644 |
$session->param('username', $username); |
2679 | 2645 |
$session->param('password', $password); |
2680 |
|
|
2681 |
if($returnVal == 2 || $returnVal == 4){
|
|
2646 |
|
|
2647 |
if ($returnVal == 2 || $returnVal == 4) {
|
|
2682 | 2648 |
# is a moderator. store this information in the session |
2683 | 2649 |
$session->param('moderator', 'true'); |
2684 | 2650 |
} |
... | ... | |
2703 | 2669 |
$$templateVars{'errorMessages'} = \@errorMessages; |
2704 | 2670 |
$$templateVars{'cfg'} = $skinName; |
2705 | 2671 |
$$templateVars{'section'} = "Login Status"; |
2706 |
$template->process( $templates->{'response'}, $templateVars);
|
|
2672 |
$template->process($templates->{'response'}, $templateVars); |
|
2707 | 2673 |
} |
2708 | 2674 |
|
2709 |
exit(0);
|
|
2675 |
exit();
|
|
2710 | 2676 |
} else { |
2711 | 2677 |
# session found ... redirect to index page |
2712 | 2678 |
my $url = "$skinsDir/$skinName/index.html"; |
2713 | 2679 |
redirect($url); |
2714 |
exit(0);
|
|
2680 |
exit(); |
|
2715 | 2681 |
} |
2716 | 2682 |
} |
2717 | 2683 |
|
... | ... | |
2722 | 2688 |
################################################################################ |
2723 | 2689 |
sub handleLogoutRequest(){ |
2724 | 2690 |
print "Content-type: text/html\n\n"; |
2725 |
# Check if the session exists
|
|
2726 |
debug("Stage is logout");
|
|
2691 |
# Check if the session exists
|
|
2692 |
debug("Stage is logout");
|
|
2727 | 2693 |
my $session = CGI::Session->load(); |
2728 |
if ( $session->is_empty || $session->is_expired) {
|
|
2694 |
if ($session->is_empty || $session->is_expired) { |
|
2729 | 2695 |
# no session found ... send back to index.html page ... |
2730 | 2696 |
debug("Session empty or not found"); |
2731 | 2697 |
my $url = "$skinsDir/$skinName/index.html"; |
... | ... | |
2759 | 2725 |
my $userPass = $FORM::password; |
2760 | 2726 |
my $dname = "uid=$userDN,o=$userOrg,dc=ecoinformatics,dc=org"; |
2761 | 2727 |
|
2762 |
if($FORM::userLoggedIn eq 'true'){
|
|
2728 |
if ($FORM::userLoggedIn eq 'true') {
|
|
2763 | 2729 |
my $session = CGI::Session->load(); |
2764 |
if (!( $session->is_empty || $session->is_expired)) {
|
|
2730 |
if (!($session->is_empty || $session->is_expired)) { |
|
2765 | 2731 |
$dname = $session->param("username"); |
2766 | 2732 |
$userPass = $session->param("password"); |
2767 | 2733 |
} |
... | ... | |
2783 | 2749 |
|
2784 | 2750 |
# Check if the session exists |
2785 | 2751 |
my $session = CGI::Session->load(); |
2786 |
if ( $session->is_empty || $session->is_expired) {
|
|
2752 |
if ($session->is_empty || $session->is_expired) { |
|
2787 | 2753 |
# no session found ... send back to index.html page ... |
2788 | 2754 |
processResultTemplate($stage, 'failure', "Moderator is not logged in.\n"); |
2789 | 2755 |
$returnValue = -1; |
... | ... | |
2791 | 2757 |
|
2792 | 2758 |
# check if logged in user is moderator |
2793 | 2759 |
my $moderator = $session->param("moderator"); |
2794 |
if ( $moderator ne 'true') {
|
|
2760 |
if ($moderator ne 'true') { |
|
2795 | 2761 |
# no session found ... send back to index.html page ... |
2796 | 2762 |
debug("Logged in user is not moderator"); |
2797 | 2763 |
processResultTemplate($stage, 'failure', "Logged in user is not moderator.\n"); |
2798 | 2764 |
$returnValue = -1; |
2799 |
}
|
|
2765 |
} |
|
2800 | 2766 |
|
2801 |
if($returnValue eq 1){
|
|
2767 |
if ($returnValue eq 1) {
|
|
2802 | 2768 |
$modUsername = $session->param("username"); |
2803 | 2769 |
$modPassword = $session->param("password"); |
2804 | 2770 |
} |
... | ... | |
2814 | 2780 |
|
2815 | 2781 |
# Check if the session exists |
2816 | 2782 |
my $session = CGI::Session->load(); |
2817 |
if ( $session->is_empty || $session->is_expired) { |
|
2818 |
# no session found ... send back the regular read page ... |
|
2819 |
my $url = "$skinsDir/$skinName/index.html"; |
|
2820 |
redirect($url); |
|
2821 |
} else { |
|
2822 |
my $htmldoc = ""; |
|
2823 |
$htmldoc .= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">"; |
|
2824 |
$htmldoc .= "<html><head><title>Dataset Description: ".$docid."</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"></head>"; |
|
2825 |
$htmldoc .= "<frameset rows=\"150,*\" cols=\"*\" frameborder=\"NO\" border=\"0\" framespacing=\"0\">"; |
|
2826 |
$htmldoc .= "<frame src=\"$skinsDir/$skinName/header.jsp\" marginwidth=\"40\" name=\"topFrame\" scrolling=\"NO\" noresize>"; |
|
2827 |
$htmldoc .= "<frameset cols=\"200,*\" frameborder=\"NO\" border=\"0\" framespacing=\"0\">"; |
|
2828 |
$htmldoc .= "<body></body><frame src=\"$cgiUrl?cfg=$skinName&stage=review_frame&docid=".$docid."\" name=\"rightFrame\" scrolling=\"NO\" noresize></frame>"; |
|
2829 |
$htmldoc .= "<frame src=\"". $metacatUrl ."?action=read&qformat=".$skinName."&docid=".$docid."&insertTemplate=0\" name=\"mainFrame\">"; |
|
2830 |
$htmldoc .= "</frameset></frameset></html>"; |
|
2783 |
if ($session->is_empty || $session->is_expired) { |
|
2784 |
# no session found ... send back the regular read page ... |
|
2785 |
my $url = "$skinsDir/$skinName/index.html"; |
|
2786 |
redirect($url); |
|
2787 |
} else { |
|
2788 |
my $htmldoc = qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> |
|
2789 |
<html><head><title>Dataset Description: $docid</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head> |
|
2790 |
<frameset rows="150,*" cols="*" frameborder="NO" border="0" framespacing="0"> |
|
2791 |
<frame src="$skinsDir/$skinName/header.jsp" marginwidth="40" name="topFrame" scrolling="NO" noresize> |
|
2792 |
<frameset cols="200,*" frameborder="NO" border="0" framespacing="0"> |
|
2793 |
<body></body><frame src="$cgiUrl?cfg=$skinName&stage=review_frame&docid="$docid"" name="rightFrame" scrolling="NO" noresize></frame> |
|
2794 |
<frame src="$metacatUrl?action=read&qformat=$skinName&docid=$docid&insertTemplate=0" name="mainFrame"> |
|
2795 |
</frameset> |
|
2796 |
</frameset> |
|
2797 |
</html> |
|
2798 |
|; |
|
2799 |
print $htmldoc; |
|
2800 |
} |
|
2801 |
} |
|
2831 | 2802 |
|
2832 |
print $htmldoc; |
|
2833 |
} |
|
2834 |
} |
|
2835 |
|
|
2836 | 2803 |
sub handleReviewFrame { |
2837 |
print "Content-type: text/html\n\n";
|
|
2838 |
my $session = CGI::Session->load();
|
|
2839 |
if ( $session->is_empty || $session->is_expired) {
|
|
2840 |
return;
|
|
2841 |
}
|
|
2804 |
print "Content-type: text/html\n\n";
|
|
2805 |
my $session = CGI::Session->load();
|
|
2806 |
if ($session->is_empty || $session->is_expired) { |
|
2807 |
return;
|
|
2808 |
}
|
|
2842 | 2809 |
|
2843 |
my $moderator = $session->param("moderator");
|
|
2810 |
my $moderator = $session->param("moderator");
|
|
2844 | 2811 |
|
2845 |
$$templateVars{'reviewdocid'} = getReviewHistoryHTML($session->param("username"), $session->param("password"));
|
|
2846 |
$$templateVars{'docid'} = $FORM::docid;
|
|
2847 |
if ( $moderator eq 'true') {
|
|
2848 |
$$templateVars{'isModerator'} = "true";
|
|
2849 |
}
|
|
2850 |
$template->process( $templates->{'getReviews'}, $templateVars);
|
|
2812 |
$$templateVars{'reviewdocid'} = getReviewHistoryHTML($session->param("username"), $session->param("password"));
|
|
2813 |
$$templateVars{'docid'} = $FORM::docid;
|
|
2814 |
if ($moderator eq 'true') {
|
|
2815 |
$$templateVars{'isModerator'} = "true";
|
|
2816 |
}
|
|
2817 |
$template->process($templates->{'getReviews'}, $templateVars);
|
|
2851 | 2818 |
} |
2852 | 2819 |
|
2853 | 2820 |
sub getReviewHistoryHTML { |
2854 |
my $username = shift;
|
|
2855 |
my $password = shift;
|
|
2821 |
my $username = shift;
|
|
2822 |
my $password = shift;
|
|
2856 | 2823 |
|
2857 | 2824 |
my $metacat = Metacat->new($metacatUrl); |
2858 |
$metacat->login($username, $password);
|
|
2859 |
my $parser = XML::LibXML->new();
|
|
2860 |
my $docid = $FORM::docid;
|
|
2861 |
my ($x, $y, $z) = split(/\./, $docid);
|
|
2862 |
my $docidWithoutRev = $x.".".$y;
|
|
2863 |
my $reviewDocumentId = '';
|
|
2864 |
my $response = $metacat->squery("<pathquery><querytitle>Moderator-Search</querytitle><querygroup operator='INTERSECT'><queryterm searchmode='contains' casesensitive='false'><value>$docidWithoutRev</value><pathexpr>/reviewHistory/review/packageId</pathexpr></queryterm></querygroup></pathquery>");
|
|
2865 |
my $doc = $response->content();
|
|
2866 |
my $xmldoc = $parser->parse_string($doc);
|
|
2867 |
my $reviewHTML = '';
|
|
2825 |
$metacat->login($username, $password);
|
|
2826 |
my $parser = XML::LibXML->new(); |
|
2827 |
my $docid = $FORM::docid; |
|
2828 |
my ($x, $y, $z) = split(/\./, $docid); |
|
2829 |
my $docidWithoutRev = $x.".".$y; |
|
2830 |
my $reviewDocumentId = ''; |
|
2831 |
my $response = $metacat->squery("<pathquery><querytitle>Moderator-Search</querytitle><querygroup operator='INTERSECT'><queryterm searchmode='contains' casesensitive='false'><value>$docidWithoutRev</value><pathexpr>/reviewHistory/review/packageId</pathexpr></queryterm></querygroup></pathquery>"); |
|
2832 |
my $doc = $response->content(); |
|
2833 |
my $xmldoc = $parser->parse_string($doc); |
|
2834 |
my $reviewHTML = '';
|
|
2868 | 2835 |
|
2869 |
if ($xmldoc eq "" || $doc=~ /<error/) { |
|
2870 |
# not able to parse |
|
2871 |
return " Unable to search for review for the docid:".$docid; |
|
2872 |
} else { |
|
2873 |
my $findNodes = $xmldoc->findnodes('//resultset/document'); |
|
2874 |
if($findNodes->size() > 0){ |
|
2875 |
# found contact email address |
|
2876 |
my $node = ''; |
|
2877 |
foreach $node ($findNodes->get_nodelist) { |
|
2878 |
$reviewDocumentId = findValue($node,'docid'); |
|
2879 |
} |
|
2836 |
if ($xmldoc eq "" || $doc=~ /<error/) { |
|
2837 |
# not able to parse |
|
2838 |
return " Unable to search for review for the docid:".$docid; |
|
2839 |
} else { |
|
2840 |
my $findNodes = $xmldoc->findnodes('//resultset/document'); |
|
2841 |
if ($findNodes->size() > 0) { |
|
2842 |
# found contact email address |
|
2843 |
my $node = ''; |
|
2844 |
foreach $node ($findNodes->get_nodelist) { |
|
2845 |
$reviewDocumentId = findValue($node,'docid'); |
|
2880 | 2846 |
} |
2881 |
} |
|
2882 |
return $reviewDocumentId; |
|
2847 |
} |
|
2848 |
} |
|
2849 |
return $reviewDocumentId; |
|
2883 | 2850 |
} |
2884 | 2851 |
|
2885 | 2852 |
################################################################################ |
... | ... | |
2897 | 2864 |
debug("Stage is mod_accept"); |
2898 | 2865 |
|
2899 | 2866 |
my $isMod = isModerator("accept"); |
2900 |
if($isMod < 0){
|
|
2901 |
return;
|
|
2867 |
if ($isMod < 0) {
|
|
2868 |
return;
|
|
2902 | 2869 |
} |
2903 | 2870 |
# change the access rules |
2904 | 2871 |
## create the access block |
... | ... | |
2909 | 2876 |
$accessblock .= "<permission>all</permission>\n"; |
2910 | 2877 |
$accessblock .= "</allow>\n"; |
2911 | 2878 |
|
2912 |
foreach(split(":",$moderators)){
|
|
2879 |
foreach (split(":",$moderators)) {
|
|
2913 | 2880 |
$accessblock .= "<allow>\n"; |
2914 | 2881 |
$accessblock .= "<principal>".$_."</principal>\n"; |
2915 | 2882 |
$accessblock .= "<permission>all</permission>\n"; |
... | ... | |
2931 | 2898 |
# Log into metacat |
2932 | 2899 |
my $response = $metacat->login($modUsername, $modPassword); |
2933 | 2900 |
|
2934 |
if (! $response) {
|
|
2901 |
if (!$response) { |
|
2935 | 2902 |
# Could not login |
2936 | 2903 |
$errorMessage = $errorMessage." Failed during moderator login."; |
2937 | 2904 |
|
... | ... | |
2942 | 2909 |
my $docFromMetacat = $response->content(); |
2943 | 2910 |
my $xmldoc = $parser->parse_string($docFromMetacat); |
2944 | 2911 |
|
2945 |
if ($xmldoc eq "" || $docFromMetacat=~ /<error/) {
|
|
2946 |
# not able to parse
|
|
2947 |
$errorMessage = $errorMessage." Error in reading the following docid:".$docid;
|
|
2912 |
if ($xmldoc eq "" || $docFromMetacat=~ /<error/) {
|
|
2913 |
# not able to parse |
|
2914 |
$errorMessage = $errorMessage." Error in reading the following docid:".$docid; |
|
2948 | 2915 |
} else { |
2949 |
my ($emldoc, $temp) = split('<access authSystem=', $docFromMetacat);
|
|
2950 |
$emldoc .= $accessblock;
|
|
2951 |
$emldoc .= "</dataset>\n</eml:eml>\n";
|
|
2916 |
my ($emldoc, $temp) = split('<access authSystem=', $docFromMetacat);
|
|
2917 |
$emldoc .= $accessblock;
|
|
2918 |
$emldoc .= "</dataset>\n</eml:eml>\n";
|
|
2952 | 2919 |
|
2953 |
#debug("Document created by handleModAccept is " . $emldoc); |
|
2954 |
# update the document |
|
2955 |
my $docid = $FORM::docid; |
|
2956 |
|
|
2957 |
my $x; |
|
2958 |
my $y; |
|
2959 |
my $z; |
|
2960 |
|
|
2961 |
($x, $y, $z) = split(/\./, $docid); |
|
2962 |
$z++; |
|
2963 |
my $newDocid = "$x.$y.$z"; |
|
2964 |
|
|
2965 |
$emldoc =~ s/packageId=\"$docid\"/packageId=\"$newDocid\"/; |
|
2966 |
$response = $metacat->update($newDocid, $emldoc); |
|
2920 |
#debug("Document created by handleModAccept is " . $emldoc); |
|
2921 |
# update the document |
|
2922 |
my $docid = $FORM::docid; |
|
2967 | 2923 |
|
2968 |
if (! $response) { |
|
2969 |
debug("Error while updating in handleModAccept."); |
|
2970 |
#push(@errorMessages, $metacat->getMessage()); |
|
2971 |
$errorMessage = $errorMessage." Failed while updating the document with new access rules."; |
|
2972 |
} |
|
2924 |
my $x; |
|
2925 |
my $y; |
|
2926 |
my $z; |
|
2973 | 2927 |
|
2974 |
# get the contact email address from the |
|
2975 |
$xmldoc = $parser->parse_string($emldoc); |
|
2928 |
($x, $y, $z) = split(/\./, $docid); |
|
2929 |
$z++; |
|
2930 |
my $newDocid = "$x.$y.$z"; |
|
2976 | 2931 |
|
2977 |
if ($xmldoc eq "" || $xmldoc=~ /<error/) { |
|
2978 |
# not able to parse |
|
2979 |
$errorMessage = $errorMessage." Error in reading the docid:".$docid; |
|
2980 |
} else { |
|
2981 |
my $findNodes = $xmldoc->findnodes('//dataset/contact'); |
|
2982 |
if($findNodes->size() > 0){ |
|
2983 |
# found contact email address |
|
2984 |
my $node = ''; |
|
2985 |
foreach $node ($findNodes->get_nodelist) { |
|
2986 |
$contactEmailAddress = findValue($node,'electronicMailAddress'); |
|
2987 |
my $surName = findValue($node,'individualName/surName'); |
|
2988 |
my $givenName = findValue($node,'individualName/givenName'); |
|
2989 |
my $organizationName = findValue($node,'organizaitionName'); |
|
2990 |
|
|
2991 |
if($surName ne ''){ |
|
2992 |
$contactName = $givenName.' '.$surName; |
|
2993 |
} else { |
|
2994 |
$contactName = $organizationName; |
|
2995 |
} |
|
2996 |
} |
|
2997 |
} else { |
|
2998 |
$contactEmailAddress = ''; |
|
2999 |
} |
|
3000 |
$findNodes = $xmldoc->findnodes('//dataset/title'); |
|
3001 |
if($findNodes->size() > 0){ |
|
3002 |
# found title |
|
3003 |
my $node = ''; |
|
3004 |
foreach $node ($findNodes->get_nodelist) { |
|
3005 |
$title = findValue($node,'../title'); |
|
3006 |
} |
|
3007 |
} else { |
|
3008 |
$title = ''; |
|
3009 |
} |
|
2932 |
$emldoc =~ s/packageId=\"$docid\"/packageId=\"$newDocid\"/; |
|
2933 |
$response = $metacat->update($newDocid, $emldoc); |
|
3010 | 2934 |
|
3011 |
$findNodes = $xmldoc->findnodes('//dataset/access/allow'); |
|
3012 |
if($findNodes->size() > 0){ |
|
3013 |
# found title |
|
3014 |
my $node = ''; |
|
3015 |
foreach $node ($findNodes->get_nodelist) { |
|
3016 |
my $perm = findValue($node,'permission'); |
|
3017 |
if($perm ne 'all'){ |
|
3018 |
$userDN = findValue($node,'principal'); |
|
3019 |
} |
|
3020 |
} |
|
2935 |
if (! $response) { |
|
2936 |
debug("Error while updating in handleModAccept."); |
|
2937 |
#push(@errorMessages, $metacat->getMessage()); |
|
2938 |
$errorMessage = $errorMessage." Failed while updating the document with new access rules."; |
|
2939 |
} |
|
2940 |
|
|
2941 |
# get the contact email address from the |
|
2942 |
$xmldoc = $parser->parse_string($emldoc); |
|
2943 |
|
|
2944 |
if ($xmldoc eq "" || $xmldoc=~ /<error/) { |
|
2945 |
# not able to parse |
|
2946 |
$errorMessage = $errorMessage." Error in reading the docid:".$docid; |
|
2947 |
} else { |
|
2948 |
my $findNodes = $xmldoc->findnodes('//dataset/contact'); |
|
2949 |
if ($findNodes->size() > 0) { |
|
2950 |
# found contact email address |
|
2951 |
my $node = ''; |
|
2952 |
foreach $node ($findNodes->get_nodelist) { |
|
2953 |
$contactEmailAddress = findValue($node,'electronicMailAddress'); |
|
2954 |
my $surName = findValue($node,'individualName/surName'); |
|
2955 |
my $givenName = findValue($node,'individualName/givenName'); |
|
2956 |
my $organizationName = findValue($node,'organizaitionName'); |
|
2957 |
|
|
2958 |
if ($surName ne '') { |
|
2959 |
$contactName = $givenName.' '.$surName; |
|
3021 | 2960 |
} else { |
3022 |
$userDN = '';
|
|
2961 |
$contactName = $organizationName;
|
|
3023 | 2962 |
} |
2963 |
} |
|
2964 |
} else { |
|
2965 |
$contactEmailAddress = ''; |
|
2966 |
} |
|
2967 |
$findNodes = $xmldoc->findnodes('//dataset/title'); |
|
2968 |
if ($findNodes->size() > 0) { |
|
2969 |
# found title |
|
2970 |
my $node = ''; |
|
2971 |
foreach $node ($findNodes->get_nodelist) { |
|
2972 |
$title = findValue($node,'../title'); |
|
2973 |
} |
|
2974 |
} else { |
|
2975 |
$title = ''; |
|
2976 |
} |
|
3024 | 2977 |
|
3025 |
} |
|
3026 |
} |
|
2978 |
$findNodes = $xmldoc->findnodes('//dataset/access/allow'); |
|
2979 |
if ($findNodes->size() > 0) { |
|
2980 |
# found title |
|
2981 |
my $node = ''; |
|
2982 |
foreach $node ($findNodes->get_nodelist) { |
|
2983 |
my $perm = findValue($node,'permission'); |
|
2984 |
if ($perm ne 'all') { |
|
2985 |
$userDN = findValue($node,'principal'); |
|
2986 |
} |
|
2987 |
} |
|
2988 |
} else { |
|
2989 |
$userDN = ''; |
|
2990 |
} |
|
2991 |
} |
|
2992 |
} |
|
3027 | 2993 |
} |
2994 |
|
|
3028 | 2995 |
# send notification to the user and the moderator |
3029 | 2996 |
if ($errorMessage eq '') { |
3030 |
mod_sendNotification($title, $contactEmailAddress, $contactName, 'Document '.$FORM::docid.' Accepted');
|
|
3031 |
if($FORM::review ne ''){
|
|
3032 |
$errorMessage = mod_storeReview('accept', $metacat, $userDN);
|
|
3033 |
if ($errorMessage ne '') {
|
|
3034 |
processResultTemplate('accept', 'failure', $errorMessage);
|
|
3035 |
return;
|
|
3036 |
}
|
|
2997 |
modSendNotification($title, $contactEmailAddress, $contactName, 'Document '.$FORM::docid.' Accepted');
|
|
2998 |
if ($FORM::review ne '') {
|
|
2999 |
$errorMessage = modStoreReview('accept', $metacat, $userDN);
|
|
3000 |
if ($errorMessage ne '') { |
|
3001 |
processResultTemplate('accept', 'failure', $errorMessage); |
|
3002 |
return; |
|
3003 |
} |
|
3037 | 3004 |
} |
3038 |
# send notifications
|
|
3039 |
processResultTemplate('accept', 'success', $errorMessage);
|
|
3005 |
# send notifications
|
|
3006 |
processResultTemplate('accept', 'success', $errorMessage);
|
|
3040 | 3007 |
} else { |
3041 |
processResultTemplate('accept', 'failure', $errorMessage);
|
|
3008 |
processResultTemplate('accept', 'failure', $errorMessage);
|
|
3042 | 3009 |
} |
3043 | 3010 |
} |
3044 | 3011 |
|
... | ... | |
3057 | 3024 |
|
3058 | 3025 |
debug("Stage is mod_decline"); |
3059 | 3026 |
|
3060 |
if(isModerator('decline')<0){
|
|
3061 |
return;
|
|
3027 |
if (isModerator('decline') < 0) {
|
|
3028 |
return;
|
|
3062 | 3029 |
} |
3063 | 3030 |
|
3064 | 3031 |
# variables for contact information |
... | ... | |
3074 | 3041 |
#push(@errorMessages, $metacat->getMessage()); |
3075 | 3042 |
$errorMessage = $errorMessage." Failed during moderator login."; |
3076 | 3043 |
} else { |
3077 |
# read the document and get the contact name and address |
|
3078 |
my $parser = XML::LibXML->new(); |
|
3079 |
my $docid = $FORM::docid; |
|
3044 |
# read the document and get the contact name and address |
Also available in: Unified diff
CODE FORMATTING ONLY: Fix all the inconsistencies I found within the script to follow the standards used within 80% of the code: No tabs, 'if (eval) {' operator spacing, four spaces indentation, replace exit(0) with exit().