r4601 - trunk/src/perl

walbridge at ecoinformatics.org walbridge at ecoinformatics.org
Wed Nov 19 18:57:59 PST 2008


Author: walbridge
Date: 2008-11-19 18:57:59 -0800 (Wed, 19 Nov 2008)
New Revision: 4601

Modified:
   trunk/src/perl/register-dataset.cgi
Log:
updated handleModAccept to be EML 2.1.0 compliant, streamlined document generation to use EML creation functions.

Modified: trunk/src/perl/register-dataset.cgi
===================================================================
--- trunk/src/perl/register-dataset.cgi	2008-11-20 02:26:45 UTC (rev 4600)
+++ trunk/src/perl/register-dataset.cgi	2008-11-20 02:57:59 UTC (rev 4601)
@@ -2892,29 +2892,8 @@
     if ($isMod < 0) {
         return;
     }
-    # change the access rules
-    ## create the access block
-    my $accessblock = '';
-    $accessblock .= "<access authSystem=\"knb\" order=\"denyFirst\">\n";
-    $accessblock .= "<allow>\n";
-    $accessblock .= "<principal>$username</principal>\n";
-    $accessblock .= "<permission>all</permission>\n";
-    $accessblock .= "</allow>\n";
 
-    foreach (split(":",$moderators)) {
-        $accessblock .= "<allow>\n";
-        $accessblock .= "<principal>".$_."</principal>\n";
-        $accessblock .= "<permission>all</permission>\n";
-        $accessblock .= "</allow>\n";
-    }
-
-    $accessblock .= "<allow>\n";
-    $accessblock .= "<principal>public</principal>\n";
-    $accessblock .= "<permission>read</permission>\n";
-    $accessblock .= "</allow>\n";
-    $accessblock .= "</access>\n";
-
-    ## read the document from 
+    # read the document from 
     my $parser = XML::LibXML->new();
     my $title = '';
     my $contactEmailAddress = '';
@@ -2932,19 +2911,27 @@
         $response = $metacat->read($docid);
         my $docFromMetacat = $response->content();
         my $xmldoc = $parser->parse_string($docFromMetacat);
+        my $dataElem = '';
 
         if ($xmldoc eq "" || $docFromMetacat=~ /<error/) {
             # not able to parse
             $errorMessage = $errorMessage." Error in reading the following docid:".$docid;
         } else {
+            my $emldoc = '';
             $xmldoc = transformEml($xmldoc);
-            
+          
+            # pull out existing dataset entry 
             $results = $xmldoc->findnodes('//dataset');
+            foreach my $r ($results->get_nodelist) {
+                $dataElem .= $r->toString();
+            }
+            
+            $emldoc .= EMLStart();
+            # TODO SCW: make sure this replacement works as expected
+            $emldoc .= accessElement("true");
+            $emldoc .= $dataElem;
+            $emldoc .= EMLEnd();
 
-            my ($emldoc, $temp) = split('<access authSystem=', $docFromMetacat);
-            $emldoc .= $accessblock;
-            $emldoc .= "</dataset>\n</eml:eml>\n";
-
             #debug("Document created by handleModAccept is " . $emldoc);
             # update the document
             my $newDocid = incrementRevision($docid);
@@ -2995,7 +2982,7 @@
                     $title = '';
                 }
 
-                $findNodes = $xmldoc->findnodes('//dataset/access/allow');
+                $findNodes = $xmldoc->findnodes('//access/allow');
                 if ($findNodes->size() > 0) {
                     # found title
                     my $node = '';



More information about the Metacat-cvs mailing list