コード例 #1
0
 function importIssues(&$journal, &$issueNodes, &$issues, &$errors, &$user, $isCommandLine)
 {
     $dependentItems = array();
     $errors = array();
     $issues = array();
     $hasErrors = false;
     foreach ($issueNodes as $issueNode) {
         $result = NativeImportDom::importIssue($journal, $issueNode, $issue, $issueErrors, $user, $isCommandLine, $dependentItems, false);
         if ($result) {
             // Success. Add this issue to the list of
             // successfully imported issues.
             $issues[] = $issue;
         } else {
             // Failure. Record the errors and keep trying
             // with the next issue, even though we will just
             // delete any successful issues, so that the
             // user can be presented with as many relevant
             // error messages as possible.
             $errors = array_merge($errors, $issueErrors);
             $hasErrors = true;
         }
     }
     if ($hasErrors) {
         // There were errors. Delete all the issues we've
         // successfully created.
         NativeImportDom::cleanupFailure($dependentItems);
         $issueDao =& DAORegistry::getDAO('IssueDAO');
         foreach ($issues as $issue) {
             $issueDao->deleteIssue($issue);
         }
         return false;
     }
     return true;
 }
コード例 #2
0
 function handleImport(&$context, &$doc, &$errors, &$issues, &$articles, $isCommandLine)
 {
     $errors = array();
     $issues = array();
     $articles = array();
     $user =& $context['user'];
     $journal =& $context['journal'];
     $rootNodeName = $this->getRootNodeName($doc);
     $this->import('NativeImportDom');
     switch ($rootNodeName) {
         case 'issues':
             return NativeImportDom::importIssues($journal, $doc->children, $issues, $errors, $user, $isCommandLine);
             break;
         case 'issue':
             $dependentItems = array();
             $result = NativeImportDom::importIssue($journal, $doc, $issue, $errors, $user, $isCommandLine, $dependentItems);
             if ($result) {
                 $issues = array($issue);
             }
             return $result;
             break;
         case 'articles':
             $section =& $context['section'];
             $issue =& $context['issue'];
             return NativeImportDom::importArticles($journal, $doc->children, $issue, $section, $articles, $errors, $user, $isCommandLine);
             break;
         case 'article':
             $section =& $context['section'];
             $issue =& $context['issue'];
             $result = NativeImportDom::importArticle($journal, $doc, $issue, $section, $article, $errors, $user, $isCommandLine);
             if ($result) {
                 $articles = array($article);
             }
             return $result;
             break;
         default:
             $errors[] = array('plugins.importexport.native.import.error.unsupportedRoot', array('rootName' => $rootNodeName));
             return false;
             break;
     }
 }
コード例 #3
0
 /**
  * Import issues from DuraCloud.
  * @param $user User
  * @param $journal Journal
  * @param $contentId string
  * @return array with result for each contentId (see importIssue)
  */
 function importIssues(&$user, &$journal, $contentIds)
 {
     // Get the file from DuraCloud.
     $dcc = $this->getDuraCloudConnection();
     $ds = new DuraStore($dcc);
     $result = array();
     $dependentItems = $errors = array();
     $nativeImportExportPlugin =& $this->getNativeImportExportPlugin();
     foreach ($contentIds as $contentId) {
         $content = $ds->getContent($this->getDuraCloudSpace(), $contentId);
         if (!$content) {
             $result[$contentId] = false;
             continue;
         }
         // Get and reset the resource
         $fp =& $content->getResource();
         fseek($fp, 0);
         // Parse the document
         $doc =& $nativeImportExportPlugin->getDocument($fp);
         // Import the issue
         $nativeImportExportPlugin->import('NativeImportDom');
         $issue = null;
         NativeImportDom::importIssue($journal, $doc, $issue, $errors, $user, false, $dependentItems);
         $result[$contentId] =& $issue;
         unset($issue, $fp);
     }
     return $result;
 }