Пример #1
0
 /**
  * Imports Faculties from Opus3 to Opus4 directly (without XML)
  * Faculty is also a DNB Institute
  *
  * @param DOMDocument $data XML-Document to be imported
  * @return array List of documents that have been imported
  */
 protected function importFaculties($data, $role)
 {
     $mapFaculties = $this->_config->migration->mapping->faculties;
     $fileFaculties = null;
     try {
         $fileFaculties = @fopen($mapFaculties, 'w');
         if (!$fileFaculties) {
             throw new Exception("Could not create '" . $mapFaculties . "' for Faculties.\n");
         }
     } catch (Exception $e) {
         $this->_logger->log($e->getMessage(), Zend_Log::ERR);
         return;
     }
     $mapGrantors = $this->_config->migration->mapping->grantors;
     $fileGrantors = null;
     try {
         $fileGrantors = @fopen($mapGrantors, 'w');
         if (!$fileGrantors) {
             throw new Exception("Could not create '" . $mapGrantors . "' for Grantors.\n");
         }
     } catch (Exception $e) {
         $this->_logger->log($e->getMessage(), Zend_Log::ERR);
         fclose($fileFaculties);
         return;
     }
     $classification = $this->transferOpusClassification($data);
     $subcoll = array();
     foreach ($classification as $class) {
         if (array_key_exists('fakultaet', $class) === false) {
             continue;
         }
         if (array_key_exists('nr', $class) === false) {
             continue;
         }
         /* Create a Collection for Faculty */
         $root = $role->getRootCollection();
         $coll = $root->addLastChild();
         $coll->setName($class['fakultaet']);
         $coll->setVisible(1);
         $root->store();
         $subcoll[$class["nr"]] = $coll->getId();
         /* Create a DNB-Institute for Faculty */
         $fac = new Opus_DnbInstitute();
         $fac->setName($this->uniname);
         /* Changed since Opus 4.4.1: faculty is stored in distinct field 'department'
          * See Issue #OPUSVIER-3041
          */
         $fac->setDepartment($class['fakultaet']);
         $fac->setCity($this->unicity);
         $fac->setIsGrantor('1');
         $fac->store();
         $this->_logger->log("Faculty imported: " . $class['fakultaet'], Zend_Log::DEBUG);
         // echo "Faculty imported: " . $class['fakultaet'] ."\t" . $class['nr'] . "\t" . $subcoll[$class["nr"]]
         // . "\n";
         fputs($fileFaculties, $class['nr'] . ' ' . $subcoll[$class["nr"]] . "\n");
         fputs($fileGrantors, $class['nr'] . ' ' . $fac->getId() . "\n");
     }
     fclose($fileFaculties);
     fclose($fileGrantors);
     return $subcoll;
 }