/** * 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; }