/**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * Update a Bistum entity
  */
 public function updateAction()
 {
     if ($this->request->hasArgument('uUID')) {
         $uuid = $this->request->getArgument('uUID');
     }
     if (empty($uuid)) {
         $this->throwStatus(400, 'Required uUID not provided', null);
     }
     $bistumObj = $this->bistumRepository->findByIdentifier($uuid);
     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->update($bistumObj);
         // Fetch Bistum Urls
         $bistumHasUrls = $bistumObj->getBistumHasUrls();
         $bistumHasGND = false;
         // Update 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)) {
                 if (!empty($bistumHasUrls)) {
                     foreach ($bistumHasUrls as $i => $bistumHasUrl) {
                         $urlObj = $bistumHasUrl->getUrl();
                         $urlTypObj = $urlObj->getUrltyp();
                         $urlTyp = $urlTypObj->getName();
                         if ($urlTyp == "GND") {
                             $urlObj->setUrl($gnd);
                             if (!empty($gnd_label)) {
                                 $urlObj->setBemerkung($gnd_label);
                             }
                             $this->urlRepository->update($urlObj);
                             $bistumHasGND = true;
                         }
                     }
                 }
                 if (!$bistumHasGND) {
                     $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)) {
                 foreach ($bistumHasUrls as $i => $bistumHasUrl) {
                     $urlObj = $bistumHasUrl->getUrl();
                     $urlTypObj = $urlObj->getUrltyp();
                     $urlTyp = $urlTypObj->getName();
                     if ($urlTyp == "Wikipedia") {
                         $urlObj->setUrl($wikipedia);
                         if (!empty($wikipedia_label)) {
                             $urlObj->setBemerkung($wikipedia_label);
                         }
                         $this->urlRepository->update($urlObj);
                         $bistumHasWiki = true;
                     }
                 }
                 if (!$bistumHasWiki) {
                     $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 ($bistumHasUrls as $i => $bistumHasUrl) {
                         $urlObj = $bistumHasUrl->getUrl();
                         $urlTypObj = $urlObj->getUrltyp();
                         $urlTyp = $urlTypObj->getName();
                         if ($urlTyp != "Wikipedia" && $urlTyp != "GND") {
                             $this->bistumHasUrlRepository->remove($bistumHasUrl);
                             $this->urlRepository->remove($urlObj);
                         }
                     }
                     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(200, null, null);
     } else {
         $this->throwStatus(400, 'Entity Bistum not available', null);
     }
 }