/** * Import Bistum table into the FLOW domain_model tabel subugoe_germaniasacra_domain_model_bistum * @return int */ public function importBistumAction() { if ($this->logger) { $start = microtime(true); } /** @var \Doctrine\DBAL\Connection $sqlConnection */ $sqlConnection = $this->entityManager->getConnection(); $tbl = 'subugoe_germaniasacra_domain_model_urltyp'; $sql = 'SELECT * FROM ' . $tbl . ' WHERE name = "GND"'; $gndurltyp = $sqlConnection->fetchAll($sql); if (count($gndurltyp) > 0) { $gndurltypUUID = $gndurltyp[0]['persistence_object_identifier']; } if (!isset($gndurltypUUID)) { $gndurlTypeName = "GND"; $urltypObject = new Urltyp(); $urltypObject->setName($gndurlTypeName); $this->urltypRepository->add($urltypObject); $this->persistenceManager->persistAll(); $gndurltypUUID = $urltypObject->getUUID(); } $sql = 'SELECT * FROM ' . $tbl . ' WHERE name = "Wikipedia"'; $wikiurltyp = $sqlConnection->fetchAll($sql); if (count($wikiurltyp) > 0) { $wikiurltypUUID = $wikiurltyp[0]['persistence_object_identifier']; } if (!isset($wikiurltypUUID)) { $wikiurlTypeName = "Wikipedia"; $urltypObject = new Urltyp(); $urltypObject->setName($wikiurlTypeName); $this->urltypRepository->add($urltypObject); $this->persistenceManager->persistAll(); $wikiurltypUUID = $urltypObject->getUUID(); } $sql = 'SELECT * FROM Bistum'; $Bistums = $sqlConnection->fetchAll($sql); if (isset($Bistums) and is_array($Bistums)) { $nBistum = 0; foreach ($Bistums as $Bistum) { $uid = $Bistum['ID']; $bistum = $Bistum['Bistum']; $kirchenprovinz = $Bistum['Kirchenprovinz']; $bemerkung = $Bistum['Bemerkung']; $erzbistum = $Bistum['ErzbistumAuswahlfeld']; $shapefile = $Bistum['Shapefile']; $ort = $Bistum['Bistumssitz']; $gnd = $Bistum['GND_Dioezese']; $wikipedia = $Bistum['Wikipedia_Dioezese']; $bistumObject = new Bistum(); $bistumObject->setUid($uid); $bistumObject->setBistum($bistum); $bistumObject->setKirchenprovinz($kirchenprovinz); $bistumObject->setBemerkung($bemerkung); if ($erzbistum == "Erzbistum") { $is_erzbistum = 1; } else { $is_erzbistum = 0; } $bistumObject->setIst_erzbistum($is_erzbistum); $bistumObject->setShapefile($shapefile); $ortObject = $this->ortRepository->findOneByUid($ort); if (is_object($ortObject)) { $bistumObject->setOrt($ortObject); } $this->bistumRepository->add($bistumObject); $this->persistenceManager->persistAll(); $bistumUUID = $bistumObject->getUUID(); $sql = 'SELECT * FROM Ort WHERE ID_Bistum=' . $uid . ''; $ortuids = $sqlConnection->fetchAll($sql); if (!empty($ortuids)) { foreach ($ortuids as $ortuid) { $ort = $this->ortRepository->findOneByUid($ortuid['ID']); $ortBistum = $this->bistumRepository->findByIdentifier($bistumUUID); $ort->setBistum($ortBistum); $this->ortRepository->update($ort); $this->persistenceManager->persistAll(); } } if (isset($gnd) && !empty($gnd)) { $gnd = str_replace("\t", " ", $gnd); $gnd = str_replace("http:// ", " ", $gnd); $gnd = str_replace(" http", ";http", $gnd); $gnd = str_replace(";", "#", $gnd); $gnds = explode("#", $gnd); if (isset($gnds) && is_array($gnds)) { $oldgnd = ""; foreach ($gnds as $gnd) { if (isset($gnd) && !empty($gnd)) { if ($gnd != $oldgnd) { $gnd = str_replace(" ", "", $gnd); $gnd = str_replace("# ", "", $gnd); $gndid = str_replace("http://d-nb.info/gnd/", "", $gnd); $gndbemerkung = $bistum . " [" . $gndid . "]"; $urlObject = new Url(); $urlObject->setUrl($gnd); $urlObject->setBemerkung($gndbemerkung); $gndurltypObject = $this->urltypRepository->findByIdentifier($gndurltypUUID); $urlObject->setUrltyp($gndurltypObject); $this->urlRepository->add($urlObject); $this->persistenceManager->persistAll(); $gndurlUUID = $urlObject->getUUID(); $oldgnd = $gnd; $bistumhasurlObject = new Bistumhasurl(); $bistumObject = $this->bistumRepository->findByIdentifier($bistumUUID); $bistumhasurlObject->setBistum($bistumObject); $gndurlObject = $this->urlRepository->findByIdentifier($gndurlUUID); $bistumhasurlObject->setUrl($gndurlObject); $this->bistumHasUrlRepository->add($bistumhasurlObject); $this->persistenceManager->persistAll(); } } } } } if (isset($wikipedia) && !empty($wikipedia)) { $wikipedia = str_replace("http:// ", " ", $wikipedia); $wikipedia = str_replace(";", "#", $wikipedia); $wikipedias = explode("#", $wikipedia); if (isset($wikipedias) && is_array($wikipedias)) { $oldwikipedia = ""; foreach ($wikipedias as $wikipedia) { if (isset($wikipedia) && !empty($wikipedia)) { if ($wikipedia != $oldwikipedia) { $wikipediabemerkung = str_replace("http://de.wikipedia.org/wiki/", "", $wikipedia); $wikipediabemerkung = str_replace("_", " ", $wikipediabemerkung); $wikipediabemerkung = rawurldecode($wikipediabemerkung); $urlObject = new Url(); $urlObject->setUrl($wikipedia); $urlObject->setBemerkung($wikipediabemerkung); $wikiurltypObject = $this->urltypRepository->findByIdentifier($wikiurltypUUID); $urlObject->setUrltyp($wikiurltypObject); $this->urlRepository->add($urlObject); $this->persistenceManager->persistAll(); $wikiurlUUID = $urlObject->getUUID(); $oldwikipedia = $wikipedia; $bistumhasurlObject = new Bistumhasurl(); $bistumObject = $this->bistumRepository->findByIdentifier($bistumUUID); $bistumhasurlObject->setBistum($bistumObject); $wikiurlObject = $this->urlRepository->findByIdentifier($wikiurlUUID); $bistumhasurlObject->setUrl($wikiurlObject); $this->bistumHasUrlRepository->add($bistumhasurlObject); $this->persistenceManager->persistAll(); } } } } } $nBistum++; } } if ($this->logger) { $end = microtime(true); $time = number_format($end - $start, 2); $this->logger->log('Bistum import completed in ' . round($time / 60, 2) . ' minutes.'); } return $nBistum; }
/** * Create a new Bistum entity */ public function createAction() { $bistumObj = new Bistum(); if (is_object($bistumObj)) { $bistumObj->setBistum($this->request->getArgument('bistum')); $bistumObj->setKirchenprovinz($this->request->getArgument('kirchenprovinz')); $bistumObj->setBemerkung($this->request->getArgument('bemerkung')); $bistumObj->setIst_erzbistum($this->request->hasArgument('ist_erzbistum')); $bistumObj->setShapefile($this->request->getArgument('shapefile')); if ($this->request->hasArgument('ort')) { $ortUUID = $this->request->getArgument('ort'); $ortObj = $this->ortRepository->findByIdentifier($ortUUID); if (is_object($ortObj)) { $bistumObj->setOrt($ortObj); } } $this->bistumRepository->add($bistumObj); // Add GND if set if ($this->request->hasArgument('gnd')) { $gnd = $this->request->getArgument('gnd'); if ($this->request->hasArgument('gnd_label')) { $gnd_label = $this->request->getArgument('gnd_label'); } if (empty($gnd_label)) { $gndid = str_replace('http://d-nb.info/gnd/', '', trim($gnd)); $gnd_label = $this->request->getArgument('bistum') . ' [' . $gndid . ']'; } if (isset($gnd) && !empty($gnd)) { $url = new Url(); $url->setUrl($gnd); if (!empty($gnd_label)) { $url->setBemerkung($gnd_label); } $urlTypObj = $this->urltypRepository->findOneByName('GND'); $url->setUrltyp($urlTypObj); $this->urlRepository->add($url); $urlUUID = $url->getUUID(); $urlObj = $this->urlRepository->findByIdentifier($urlUUID); $bistumhasurl = new BistumHasUrl(); $bistumhasurl->setBistum($bistumObj); $bistumhasurl->setUrl($urlObj); $this->bistumHasUrlRepository->add($bistumhasurl); } } //Update Wikipedia if set $bistumHasWiki = false; if ($this->request->hasArgument('wikipedia')) { $wikipedia = $this->request->getArgument('wikipedia'); if ($this->request->hasArgument('wikipedia_label')) { $wikipedia_label = $this->request->getArgument('wikipedia_label'); } if (empty($wikipedia_label)) { $wikipedia_label = str_replace('http://de.wikipedia.org/wiki/', '', trim($wikipedia)); $wikipedia_label = str_replace('_', ' ', $wikipedia_label); $wikipedia_label = rawurldecode($wikipedia_label); } if (isset($wikipedia) && !empty($wikipedia)) { $url = new Url(); $url->setUrl($wikipedia); if (!empty($wikipedia_label)) { $url->setBemerkung($wikipedia_label); } $urlTypObj = $this->urltypRepository->findOneByName('Wikipedia'); $url->setUrltyp($urlTypObj); $this->urlRepository->add($url); $urlUUID = $url->getUUID(); $urlObj = $this->urlRepository->findByIdentifier($urlUUID); $bistumhasurl = new BistumHasUrl(); $bistumhasurl->setBistum($bistumObj); $bistumhasurl->setUrl($urlObj); $this->bistumHasUrlRepository->add($bistumhasurl); } } // Add Url if set if ($this->request->hasArgument('url')) { $urlArr = $this->request->getArgument('url'); if (isset($urlArr) && !empty($urlArr)) { if ($this->request->hasArgument('url_typ')) { $urlTypArr = $this->request->getArgument('url_typ'); } if ($this->request->hasArgument('links_label')) { $linksLabelArr = $this->request->getArgument('links_label'); } if (isset($urlArr) && !empty($urlArr) && (isset($urlTypArr) && !empty($urlTypArr))) { foreach ($urlArr as $k => $url) { if (!empty($url)) { $urlObj = new Url(); $urlObj->setUrl($url); $urlTypObj = $this->urltypRepository->findByIdentifier($urlTypArr[$k]); $urlTyp = $urlTypObj->getName(); $urlObj->setUrltyp($urlTypObj); if (isset($linksLabelArr[$k]) && !empty($linksLabelArr[$k])) { $urlObj->setBemerkung($linksLabelArr[$k]); } else { $urlObj->setBemerkung($urlTyp); } $this->urlRepository->add($urlObj); $bistumhasurlObj = new BistumHasUrl(); $bistumhasurlObj->setBistum($bistumObj); $bistumhasurlObj->setUrl($urlObj); $this->bistumHasUrlRepository->add($bistumhasurlObj); } } } } } $this->persistenceManager->persistAll(); $this->throwStatus(201, null, null); } else { $this->throwStatus(400, 'Entity Bistum not available', null); } }