Changeset 425 for trunk/info/info/alkisn/alkisfkt.php
- Timestamp:
- 12/30/21 17:49:00 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/info/info/alkisn/alkisfkt.php
r422 r425 6 6 7 7 Version: 8 2016-02-24 Version f uer norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus.8 2016-02-24 Version fÃŒr norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus. 9 9 .... 10 10 2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] fÃŒr Einsatz hinter Gateway mit Ãnderung des Pfades (Docker/QWC2) … … 12 12 2020-12-15 Input-Validation und Strict Comparisation (===) 13 13 2020-12-16 Sonderfall QWC2 API-Gateway-Umleitung bei Selbstverlinkung 14 2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 15 Footer: Umschalter fÃŒr SchlÃŒssel und Debug unabhÀngig benutzbar. Authentifizierung aus QWC2 nicht hier behandeln. 16 2021-12-30 Bestandsnachweis recursiv ÃŒber alle Buchungs-Ebenen 17 18 ++ ToDo: 19 - Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen 14 20 */ 15 21 … … 17 23 // Aus der Server-Variable den Pfad entfernen. 18 24 global $pfadlos_selbstlink; 19 If ($pfadlos_selbstlink === 1) { // pfad-lose Selbstverlinkung hinter einer Umleitung. z.B. QWC2 API-Gateway 20 // Pfad entfernen 25 If ($pfadlos_selbstlink === 1) { // Selbstverlinkung ohne Pfad z.B. hinter QWC2 API-Gateway (Umleitung) 21 26 $mod=strrchr($_SERVER['PHP_SELF'], '/'); 22 27 $mod=substr($mod, 1); … … 29 34 function darf_ich() { 30 35 // Am Anfang jedes Moduls aufrufen um $customer zu fÃŒllen. 31 // Nach EinfÃŒhrung eines automatisch einloggenden anonymen Mapbender-Gast-Benutzers muss dieser bei der Authentifizierung ausgeschlossen werden. 32 global $auth, $customer, $mb_guest_user, $debug; 33 34 if ($auth === "") { // nicht prÃŒfen 35 // if ($debug > 1) {echo "\n<p class='dbg'>keine Berechtigungs-PrÃŒfung</p>";} 36 $customer = "(unbekannt)"; 37 return 1; // alles erlaubt 38 36 // Der automatisch einloggende anonyme Gast-Benutzers muss bei der Authentifizierung ausgeschlossen werden. 37 global $auth, $customer, $mb_guest_user, $dbg; 38 39 if ($auth === "") { // nicht prÃŒfen 40 $customer = ""; // dann anonym 41 return 1; // alles erlaubt 39 42 } elseif ($auth === "mapbender") { 40 41 // if ($debug > 1) {echo "\n<p class='dbg' Berechtigungs-Prüfung Mapbender</p>";}42 43 $customer = ""; 43 44 include '/opt/gdi/mapbender/http/php/mb_validateSession.php'; 44 45 45 46 if (!isset($_SESSION)) { // keine (passende) Session 46 if ($d ebug > 1) {echo "\n<p class='dbg'>Session nicht gesetzt</p>";}47 if ($dbg > 1) {echo "\n<p class='dbg'>Session nicht gesetzt</p>";} 47 48 } elseif ( !isset($_SESSION["mb_user_name"]) ) { 48 if ($d ebug > 1) {echo "\n<p class='dbg'>username nicht gesetzt</p>";}49 if ($dbg > 1) {echo "\n<p class='dbg'>username nicht gesetzt</p>";} 49 50 } else { 50 51 $customer = $_SESSION["mb_user_name"]; // angemeldeter Benutzer 51 52 } 52 //if ($debug > 1) {echo "\n<p class='dbg'>Customer '".$customer."'</p>";}53 53 if ($customer == "") { // Wer bin ich? 54 54 echo "<p class='stop2'>Aufruf nur aus Mapbender erlaubt.</p>"; … … 60 60 return 1; // echter User, ist erlaubt 61 61 } 62 63 } elseif ($auth === "qwc2") {64 65 if ($debug > 1) {echo "\n<p class='dbg'>Berechtigungs-PrÃŒfung QWC2 -GEPLANT-</p>";}66 67 // BAUSTELLE: Hier den Code einfÃŒgen um im QWC2 die Berechtigung zu prÃŒfen und den Benutzer auszulesen.68 // Guggs du: https://git.sourcepole.ch/krz_dt/qwc2/-/issues/7869 70 $customer = "(Unbekannt)";71 echo "<p class='stop2'>Berechtigungsprüfung fÃŒr QWC2 ist noch nicht möglich.</p>";72 return 1; // vorlÀufig erlaubt73 74 62 } else { 75 76 echo "\n<p class='stop2'>Die Berechtigungs-PrÃŒfung ist falsch konfiguriert</p>"; 63 echo "\n<p class='stop2'>Die Berechtigungs-Prüfung ist falsch konfiguriert</p>"; 77 64 return 0; // verboten 78 65 } … … 80 67 81 68 function footer($gmlid, $link, $append) { 82 // Einen Seitenfu ssausgeben.69 // Einen Seitenfuà ausgeben. 83 70 // Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor 84 71 // Den URL-Parameter "&showkey=j/n" umschalten lassen. 85 // $append wird angeh aengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, <yp=m/p/o bei Lage86 global $gkz, $showkey, $hilfeurl, $debug, $ customer;87 88 echo " <footer>";72 // $append wird angehÀngt wenn gefÃŒllt. Anwendung: &eig=j bei FSNW, <yp=m/p/o bei Lage 73 global $gkz, $showkey, $hilfeurl, $debug, $dbg, $customer; 74 75 echo "\n<footer>"; 89 76 // S c r e e n - F o o t 90 echo "\n <div class='confbereich noprint'>"91 ."\n\t <table class='outer'>\n\t<tr>";77 echo "\n\t<div class='confbereich noprint'>" 78 ."\n\t\t<table class='outer'>\n\t\t<tr>"; 92 79 93 80 // Spalte 1: Info Benutzerkennung 94 if (isset($customer) ) { // ÃŒber global von fkt. darf_ich()95 echo "\n\t\t <td title='Info'><i>Benutzer: ".$customer."</i></td>";81 if (isset($customer) and $customer != '') { // ÃŒber global von fkt. darf_ich() 82 echo "\n\t\t\t<td title='Info'><i>Benutzer: ".$customer."</i></td>"; 96 83 } else { 97 echo "\n\t\t <td> </td>";84 echo "\n\t\t\t<td> </td>"; 98 85 } 99 86 100 87 // Spalte 2: Umschalter 101 echo "\n\t\t<td title='Konfiguration'>"; 102 $mylink ="\n\t\t\t<a class='keyswitch' href='".$link."gkz=".$gkz."&gmlid=".$gmlid.$append; 88 echo "\n\t\t\t<td title='Konfiguration'>"; 89 $mylink ="\n\t\t\t\t<a class='keyswitch' href='".$link."gkz=".$gkz."&gmlid=".$gmlid.$append; 90 103 91 if ($showkey) { // Umschalten SchlÃŒssel ein/aus 104 echo $mylink."&showkey=n' title='Verschlüsselungen ausblenden'>Schlüssel aus</a>"; 92 echo $mylink."&showkey=n"; 93 if ($debug > 0 and $dbg == 0) {echo "&nodebug=j";} 94 echo "' title='Verschlüsselungen ausblenden'>Schlüssel aus</a>"; 95 $mylink.="&showkey=j"; 105 96 } else { 106 echo $mylink."&showkey=j' title='Verschlüsselungen anzeigen'>Schlüssel ein</a>"; 107 } 108 if ($debug > 0) { // FÃŒr Entwickler temporÀr eine Ansicht OHNE debug 109 echo "<br>".$mylink."&nodebug=j' title='Debug-Ausgaben temporär abschalten'>Ansicht ohne Testausgaben</a>"; 110 } 111 echo "\n\t\t</td>"; 112 113 // Spalte 3 114 echo "\n\t\t<td title='Hilfe'>" 115 ."\n\t\t\t<p class='nwlink'>\n\t\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t\t</p>\n\t\t</td>" 116 ."\n\t</tr>\n\t</table>" 117 ."\n</div>\n"; 97 echo $mylink."&showkey=j"; 98 if ($debug > 0 and $dbg == 0) {echo "&nodebug=j";} 99 echo "' title='Verschlüsselungen anzeigen'>Schlüssel ein</a>"; 100 $mylink.="&showkey=n"; 101 } 102 103 if ($debug > 0) { // nur fÃŒr Entwicklung 104 if ($dbg > 0) { // temporÀr eine Ansicht OHNE debug 105 echo "<br>".$mylink."&nodebug=j' title='Debug-Ausgaben temporär abschalten'>Testausgaben aus</a>"; 106 } else { // Abschaltung beenden 107 echo "<br>".$mylink."' title='Debug-Ausgaben wie konfiguriert'>Testausgaben ein</a>"; 108 } 109 } 110 111 echo "\n\t\t\t</td>"; 112 113 // Spalte 3: Dokumentation 114 echo "\n\t\t\t<td title='Hilfe'>" 115 ."\n\t\t\t\t<p class='nwlink'>\n\t\t\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t\t\t</p>\n\t\t\t</td>" 116 ."\n\t\t</tr>\n\t\t</table>" 117 ."\n\t</div>"; 118 118 119 119 // P r i n t - F o o t 120 if (isset($customer) ) {121 echo "\n <p class='onlyprint'><i>Benutzer: ".$customer."</i></p>";122 } 123 124 echo " </footer>";120 if (isset($customer) and $customer != '') { 121 echo "\n\t<p class='onlyprint'><i>Benutzer: ".$customer."</i></p>"; 122 } 123 124 echo "\n</footer>\n"; 125 125 return 0; 126 } 127 128 function UnqKatAmt($t1, $t2){ 129 // Wenn der Datenbestand aus NBA-Verfahren mehrerer KatasterÀmter gemixt wurde, dann muss beim SQL-JOIN auf einige SchlÃŒsseltabellen 130 // zusÀtzlich dafÃŒr gesort werden, dass nur die SchlÃŒssel des gleichen Katasteramtes verwendet werden. Sont bekommt man redundante Treffer. 131 // Benötigt den Alias der zu verbindenden Tabellen. 132 // Liefert einen String zum EinfÃŒgen hinter "JOIN .. ON". 133 global $katAmtMix; // aus Conf 134 if ($katAmtMix){ 135 return "AND substr(".$t1.".gml_id,1,6) = substr(".$t2.".gml_id,1,6) "; 136 } else { 137 return ""; 138 } 126 139 } 127 140 … … 150 163 // $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) 151 164 // $trtyp: Tabellen-Zeilen-Typ. Werte: 1="mit GS-Link", 2="ohne GS-Link", 3="ohne GS-Link +Zeile einfÀrben" 152 global $gkz, $d ebug, $showkey, $bartgrp, $barttypgrp, $stufe;165 global $gkz, $dbg, $showkey, $bartgrp, $barttypgrp, $stufe, $katAmtMix; 153 166 154 167 $sqlbs="SELECT sh.gml_id AS hgml, sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " // Buchungs-Stelle herrschend … … 156 169 ."FROM ax_buchungsstelle sh " 157 170 ."JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon " 158 ."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk " 171 ."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ".UnqKatAmt("z","b") 159 172 ."LEFT JOIN ax_buchungsart_buchungsstelle a ON sh.buchungsart = a.wert " // entschl. Buchungsart 160 173 ."LEFT JOIN ax_blattart_buchungsblatt w ON b.blattart = w.wert " // entschl. Blatt-Art … … 166 179 if (!$resbs) { 167 180 echo "\n<p class='err'>Fehler bei 'Buchungsstelle ausgeben'.</p>"; 168 if ($d ebug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlbs."'", $sqlbs), ENT_QUOTES, "UTF-8")."</p>";}181 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlbs."'", $sqlbs), ENT_QUOTES, "UTF-8")."</p>";} 169 182 } 170 183 $gezeigt = 0; // Funktionswert default 171 172 if ($rowbs = pg_fetch_assoc($resbs)) { // ein Treffer 184 if ($dbg > 0) { 185 $zeianz=pg_num_rows($resbs); 186 if ($zeianz > 1){ 187 echo "\n<p class='err'>Die Abfrage liefert mehr als eine (".$zeianz.") Buchung!</p>"; 188 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlbs), ENT_QUOTES, "UTF-8")."</p>";} 189 } 190 } 191 if ($rowbs = pg_fetch_assoc($resbs)) { // EIN Treffer 173 192 $blattkeyber=$rowbs["blattart"]; // Schluessel von Blatt-Art des GB 174 if ($blattkeyber != '5000' or $d ebug > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen193 if ($blattkeyber != '5000' or $dbg > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen 175 194 $gezeigt = 1; // Funktionswert nach Treffer 176 195 $hgml=$rowbs["hgml"]; // GML-ID der (herrschenden) BuchungsStelle … … 218 237 } 219 238 220 // ++ +mehr Abstand oben zur Zeile in .css?239 // ++ mehr Abstand oben zur Zeile in .css? 221 240 echo "\n\t<tr>" // Buchungsart als Zwischenzeile 222 241 ."\n\t\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Buchungsart:</td>" // 1 223 242 ."\n\t\t<td colspan='2' title='".$barttitle."'>"; // 2-3 224 if ($showkey) {echo "<span class='key' >(".$bartkey.")</span> ";}243 if ($showkey) {echo "<span class='key' title='Buchungsart'>(".$bartkey.")</span> ";} 225 244 echo "<span class='wichtig'>".$bart."</span>" 226 245 ."</td>" … … 232 251 echo "\n\t<tr>" // Zeile mit 4 Spalten fÃŒr Buchung und EigentÃŒmer 233 252 ."\n\t\t<td class='ll'><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Buchung:"; // 1 234 if ($showkey and $d ebug > 2) {echo "<br><span class='key'>Stufe ".$stufe."<br>".$hgml."</span> ";}253 if ($showkey and $dbg > 2) {echo "<br><span class='key'>Stufe ".$stufe."<br>".$hgml."</span> ";} 235 254 echo "</td>\n\t\t<td colspan='2'>"; // 2-3 236 255 … … 244 263 ."\n\t\t\t\t<td class='head'>Bezirk</td>" 245 264 ."\n\t\t\t\t<td class='head'>"; 246 if ($showkey) {echo "<span class='key' >".$blattkeyber."</span> ";}265 if ($showkey) {echo "<span class='key' title='Blattart'>(".$blattkeyber.")</span> ";} 247 266 echo $blattartber."</td>" 248 267 ."\n\t\t\t\t<td class='head'>Lfd-Nr</td>" … … 255 274 } 256 275 echo "\n\t\t\t\t<td title='Grundbuchbezirk'>"; 257 if ($showkey) {echo "<span class='key' >".$rowbs["bezirk"]."</span><br>";}276 if ($showkey) {echo "<span class='key' title='GB-Bezirk-Schlüssel'>".$rowbs["bezirk"]."</span><br>";} 258 277 echo $beznam."</td>" 259 278 ."\n\t\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>" … … 275 294 echo "\n\t\t<td>"; // 4 276 295 echo "\n\t\t\t<p class='nwlink noprint'>"; 277 // 278 if ($showkey) {echo "<span class='key' >".$blattkeyber."</span> ";}296 // Bestand 297 if ($showkey) {echo "<span class='key' title='Blattart'>(".$blattkeyber.")</span> ";} 279 298 $url="alkisbestnw.php?gkz=".$gkz."&gmlid=".$gbgml; 280 299 if ($showkey) {$url.="&showkey=j";} … … 283 302 ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>" 284 303 ."</a>"; 285 // 304 // Buchung 286 305 if ($trtyp === 1) { 287 306 echo "<br>"; 288 if ($showkey) {echo "<span class='key' >".$bartkey."</span> ";}307 if ($showkey) {echo "<span class='key' title='Buchungsart'>(".$bartkey.")</span> ";} 289 308 $url="alkisgsnw.php?gkz=".$gkz."&gmlid=".$hgml; 290 309 if ($showkey) {$url.="&showkey=j";} … … 305 324 pg_free_result($resbs); 306 325 307 //if ($d ebug > 1) {echo "\n<p class='dbg'>Ende function buchung_anzg(), Return = ". $gezeigt ."</p>";}326 //if ($dbg > 1) {echo "\n<p class='dbg'>Ende function buchung_anzg(), Return = ". $gezeigt ."</p>";} 308 327 309 328 return $gezeigt; // 1 wenn eine Buchung ausgegeben wurde … … 318 337 // $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) 319 338 // $gsanfrd: In einem GS-Nachw. die GML-ID der in de URL angeforderten Buchungsstelle (-> Hervorhebung) 320 global $d ebug, $gezeigt;339 global $dbg, $gezeigt; 321 340 322 341 // sh=Buchungstelle herrschend >(Recht)an> sd=Buchungstelle dienend >istBestandteilVon> BLATT -> Bezirk … … 332 351 if (!$resber) { 333 352 echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>"; 334 if ($d ebug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmls."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}353 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmls."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 335 354 } 336 355 $an=0; … … 370 389 } 371 390 372 function bnw_fsdaten($lfdnr, $gml_bs, $ba, $anteil, $bvnraus, $bartkey, $bartstory) { 373 /* Bestandsnachweis - Flurstuecksdaten 374 Die Tabellenzeilen mit den Flurstuecksdaten zu EINER Buchungsstelle im Bestandsnachweis ausgeben. 375 Die Funktion wird je einmal aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall). 376 Weiterere Aufrufe ggf. bei Erbbaurecht fÃŒr die mit "an" verknuepften Buchungsstellen. 377 Tabellenkopf wird im aufrufenden Programm ausgegeben. */ 378 global $debug, $gkz, $showkey, $filtkreis, $filtgem, $trclass; 379 380 // F L U R S T U E C K 391 function bnw_bszeile_h() { 392 /* Bestandsnachweis - Buchungs-Stellen-Zeile ausgeben - herrschend. 393 Die GB-Daten hierzu stehen bereits im Kopf und bleiben in der Tab. leer */ 394 global $dbg, $gkz, $showkey, $trclass, $lfdnr, $bartkey, $bart, $bartstory, $anteil; 395 396 $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 397 echo "\n<tr class='".$trclass."'>" 398 ."\n\t<td id='bvnr".$bvnr."'><span class='wichtig'>".$bvnr."</span></td>" // Sprungmarke=BVNR auf dem GB-Blatt 399 ."\n\t<td class='dien' title='".$bartstory."'>"; 400 if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} 401 echo $bart."</td>" 402 ."\n\t<td class='dien'>".$anteil."</td>" 403 ."\n\t<td> </td>" 404 ."\n\t<td> </td>" 405 ."\n\t<td> </td>" 406 ."\n\t<td> </td>" 407 ."\n\t<td> </td>\n</tr>"; 408 } 409 410 function bnw_bszeile_d($bezkey, $beznam, $blatt, $blattartkey, $blattart, $lfdnran, $gbgml, $gml_bsan, $ebene, $und) { 411 /* Bestandsnachweis - Buchungsstellen-Zeile ausgeben - dienend 412 Eine Folge-Zeile fÃŒr eine dienende Buchung ausgeben. */ 413 global $gkz, $showkey, $trclass, $bartkey, $bart, $bartstory, $anteil; 414 415 $bvnr=str_pad($lfdnran, 4, "0", STR_PAD_LEFT); 416 $filler=str_repeat(" ", $ebene - 2); // 3 und 4 EinrÃŒcken 417 if ($und){$filler.="und ";}; // Unterscheidung Hierarchie (Ebene wechselt) von Liste (gleiche Ebene) 418 echo "\n<tr class='".$trclass."'>" 419 ."\n\t<td title='Ebene ".$ebene."'>".$filler."an</td>" 420 ."\n\t<td class='dien' title='".$bartstory."'>"; // Sp.2 Buchungsart 421 if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} 422 echo $bart."</td>" 423 ."\n\t<td class='dien'>".$anteil."</td>"; // Sp.3 Anteil 424 425 // Sp.4 GB-Bezirk 426 echo "\n\t<td class='dien' title='Grundbuch-Bezirk'>"; 427 if ($showkey) {echo "<span class='key'>".$bezkey."</span> ";} 428 echo htmlentities($beznam, ENT_QUOTES, "UTF-8") 429 ."</td>" 430 ."\n\t<td class='dien' title='".$blattart."'>".$blatt."</td>" // Sp.5 431 ."\n\t<td class='dien' title='Bestandsverzeichnis-Nummer'>".$bvnr."</td>" // Sp.6 432 ."\n\t<td class='dien'></td>"; 433 434 echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; // Sp.8 Link 435 436 // Link Bestand Blatt 437 if ($showkey) {echo "<span class='key'>".$blattartkey."</span>";} // Blatt-Art 438 echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&gmlid=".$gbgml; 439 if ($showkey) {echo "&showkey=j";} 440 echo "#bvnr".$lfdnran."' title='Zum Grundbuchnachweis des dienenden Blattes'>".$blattart 441 ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 442 443 if ($bartkey < 2000){ 444 // Link Buchung BVNR nur fÃŒr GrundstÃŒck usw. 445 echo "<br>\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&gmlid=".$gml_bsan; 446 if ($showkey) {echo "&showkey=j";} 447 echo "' title='Grundstücksnachweis'>Buchung <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''></a>"; 448 } 449 450 echo "\n\t\t</p>" 451 ."\n\t</td>\n</tr>"; 452 } 453 454 function bnw_bsdaten($gml_h, $ebene) { 455 /* Bestandsnachweis - Buchungsstellen-Daten 456 "dienende" Buchungsstellen suchen. Miteigentumsanteil, Erbbaurecht usw. 457 Return: gml_id der dienenden Buchungsstelle wenn gefunden? Sonst Leerstring */ 458 global $dbg, $bartkey, $bart, $bartstory, $anteil; 459 460 // dann "dienende" Buchungsstellen 461 // sh=herrschend sd=dienend 462 // ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes) 463 // ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an) 464 // - "zu" kommt in der Praxis (NRW) nicht vor, wird hier nicht berÃŒcksichtigt 465 466 if ($ebene > 5) {echo "\n<p class='err'>Ungewöhnlich tiefe Schachtelung ".$ebene." der Buchungs-Stellen.</p>";} 467 468 $sql ="SELECT sd.gml_id, sd.buchungsart, sd.zaehler, sd.nenner, sd.laufendenummer AS lfd, sd.beschreibungdesumfangsderbuchung AS udb, " 469 ."sd.nummerimaufteilungsplan AS nrap, sd.beschreibungdessondereigentums AS sond, " 470 ."wb.beschreibung AS bart, wb.dokumentation, " 471 ."b.gml_id as gbgml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, " 472 ."bb.beschreibung AS blattartv, z.bezeichnung AS beznam " 473 ."FROM ax_buchungsstelle sh " 474 ."JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) " 475 ."JOIN ax_buchungsblatt b ON b.gml_id=sd.istbestandteilvon " 476 ."LEFT JOIN ax_buchungsart_buchungsstelle wb ON sd.buchungsart = wb.wert " 477 ."LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk ".UnqKatAmt("b","z") 478 ."LEFT JOIN ax_blattart_buchungsblatt bb ON b.blattart = bb.wert " 479 ."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL " 480 ."ORDER BY sd.laufendenummer;"; 481 $v=array($gml_h); // gml_id "herrschende" B-Stelle 482 $resan=pg_prepare("", $sql); 483 $resan=pg_execute("", $v); 484 if (!$resan) { 485 echo "\n<p class='err'>Fehler bei 'dienende Buchungsstelle'.</p>"; 486 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gml_bs."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 487 } 488 $zeianz=pg_num_rows($resan); // Zeilen-Anzahl = Returnwert 489 //if ($dbg > 0) {echo "\n<p class='dbg'>Auf Ebene ".$ebene.": Anzahl diennende Buchungs-Stellen = ".$zeianz.".</p>";} 490 $und = false; // mehrfaches "Recht an" auf gleicher Ebene 491 while($row= pg_fetch_assoc($resan)) { 492 $gml_bsan=$row["gml_id"]; // id der dien. BS 493 $blatt=ltrim($row["blatt"], "0"); 494 495 // als Global-Var zur Sub-Function: 496 $bartkey=$row["buchungsart"]; 497 $bart=$row["bart"]; // Buchungsart, entschlÃŒsselt 498 $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); 499 if ($row["zaehler"] == "") {$anteil = "";} 500 else {$anteil = $row["zaehler"]."/".$row["nenner"];} 501 502 // Zeile ausgeben Buchungsstelle dienend 503 bnw_bszeile_d($row["bezirk"], $row["beznam"], $blatt, $row["blattart"], $row["blattartv"], $row["lfd"], $row["gbgml"], $gml_bsan, $ebene, $und); 504 $und = true; 505 if ($row["nrap"] != "") { // Nr im Auft.Plan 506 echo "\n<tr>\n\t<td colspan=3></td><td class='nrap' colspan=4>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td><td></td>\n</tr>"; 507 } 508 if ($row["sond"] != "") { // Sondereigentumsbeschreibung 509 echo "\n<tr>\n\t<td></td><td class='sond' colspan=6 title='Sondereigentums-Beschreibung'>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td><td></td>\n</tr>"; 510 } 511 512 // Rekursiver Aufruf der gleichen Function, weitere Ebene dienend? 513 $tiefer = bnw_bsdaten($gml_bsan, ($ebene + 1)); 514 If ($tiefer == 0) { // Wenn nicht, dann kann es FlurstÃŒcke dazu geben 515 $fscnt= bnw_fsdaten($gml_bsan, false); // FlurstÃŒcksdaten 516 } 517 } 518 pg_free_result($resan); 519 return $zeianz; 520 } 521 522 function bnw_fsdaten($gml_bs, $mit_buchung_link) { 523 /* Bestandsnachweis - FlurstÃŒcksdaten 524 Die Tabellenzeilen mit den FlurstÃŒcksdaten zu EINER Buchungsstelle im Bestandsnachweis ausgeben. 525 Die Funktion wird entweder aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall) 526 oder bei Erbbaurecht fÃŒr die mit "an" verknÃŒpften Buchungsstellen der untersten Ebene (dienende Buchung). 527 Der Tabellenkopf wird im aufrufenden Programm ausgegeben. 528 Return: Anzahl der ausgegebenen FlurstÃŒcke */ 529 global $dbg, $gkz, $showkey, $filtkreis, $filtgem, $trclass, $katAmtMix, $lfdnr, $altlfdnr, $bartkey, $bart, $bartstory, $anteil; 530 381 531 $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche " 382 ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 532 ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 383 533 ."WHERE f.endet IS NULL AND g.endet IS NULL AND f.istgebucht = $1 "; 384 534 if ($filtgem === '') { // ungefiltert … … 392 542 $resf = pg_execute("", $v); 393 543 if (!$resf) {echo "\n<p class='err'>Fehler bei Flurstück</p>";} 394 395 if($bvnraus) { // nur bei direkten Buchungen die lfdNr ausgeben 396 $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 397 } else { 398 $bvnr=""; 399 } 400 $altbvnr=""; // ++ besser mit "$j === 0" steuern? 401 $j=0; 544 $zeianz=pg_num_rows($resf); 402 545 while($rowf = pg_fetch_assoc($resf)) { 403 $flur= $rowf["flurnummer"];404 546 $fskenn=$rowf["zaehler"]; 405 547 if ($rowf["nenner"] != "") { // Bruch … … 409 551 410 552 echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck 411 // Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS 412 if($bvnr === $altbvnr) { // gleiches Grundstueck, leer lassen 413 echo "\n\t<td> </td>" 414 ."\n\t<td> </td>" 415 ."\n\t<td> </td>"; 416 } else { // Sprungmarke, BVNR 417 echo "\n\t<td id='bvnr".$bvnr."'>"; // Sprungmarke 418 // echo "\n\t\t<a id='bvnr".$bvnr."'></a>"; 419 echo "<span class='wichtig'>".$bvnr."</span>" 420 ."\n\t</td>"; 421 422 echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart 423 if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} // Schluessel 424 echo $ba; // entschluesselt 425 echo "</td>" 426 ."\n\t<td> </td>"; // Anteil 427 } 428 429 // Sp. 4-7 aus Flurstueck 430 echo "\n\t<td>"; 431 if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";} 432 echo $rowf["bezeichnung"]."</td>" 433 ."\n\t<td>".$flur."</td>" 434 ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span>" 435 ."</td>" 436 ."\n\t<td class='flag'>".$flae."</td>"; // "width" hier (flaG) erweiterbar, weil in andere Zeile die Buchungsart steht 437 echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 438 // if($bvnr != $altbvnr) { 439 if($j === 0) { 440 echo "\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&gmlid=".$gml_bs; 441 if ($showkey) {echo "&showkey=j";} 442 echo "' title='Grundstücksnachweis'>Buchung " 443 ."<img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''>" 444 ."</a>"; 445 446 } 447 echo "\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&gmlid=".$rowf["gml_id"]."&eig=n"; 448 if ($showkey) {echo "&showkey=j";} 449 echo "' title='Flurstücksnachweis'>Flurstück " 450 ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>" 451 ."</a>" 452 ."\n\t\t</p>\n\t</td>" 453 ."\n</tr>"; 454 $altbvnr=$bvnr; 455 $j++; 553 554 // Sp. 1-3 der Tab. Daten aus Buchungsstelle, nicht aus FS 555 if($lfdnr === $altlfdnr) { // gleiches GrundstÃŒck, leer lassen 556 echo "\n\t<td> </td>" 557 ."\n\t<td> </td>" 558 ."\n\t<td> </td>"; 559 } else { // Sprungmarke, BVNR 560 $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 561 echo "\n\t<td id='bvnr".$bvnr."'>"; // Sprungmarke 562 echo "<span class='wichtig'>".$bvnr."</span>" 563 ."\n\t</td>"; 564 echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart 565 if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} 566 echo $bart; 567 echo "</td>" 568 ."\n\t<td> </td>"; // Anteil 569 $altlfdnr=$lfdnr; 570 } 571 572 // Sp. 4-7 aus FlurstÃŒck 573 echo "\n\t<td>"; 574 if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";} 575 echo $rowf["bezeichnung"]."</td>" 576 ."\n\t<td>".$rowf["flurnummer"]."</td>\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>" 577 ."\n\t<td class='fla'>".$flae."</td>"; 578 echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 579 580 // Buchung BVNR 581 If ($mit_buchung_link == true) { // nur bei GrundstÃŒck 582 echo "\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&gmlid=".$gml_bs; 583 if ($showkey) {echo "&showkey=j";} 584 echo "' title='Grundstücksnachweis'>Buchung <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''></a> "; 585 $mit_buchung_link = false; // nur in erster Zeile 586 } 587 // Flurstk. 588 echo "\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&gmlid=".$rowf["gml_id"]."&eig=n"; 589 if ($showkey) {echo "&showkey=j";} 590 echo "' title='Flurstücksnachweis'>Flurstück " 591 ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>" 592 ."\n\t\t</p>\n\t</td>\n</tr>"; 456 593 } 457 594 pg_free_result($resf); 458 return $ j;595 return $zeianz; 459 596 } 460 597 … … 469 606 // Schleife 1: N a m e n s n u m m e r 470 607 // Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt 471 global $d ebug, $gkz, $showkey;608 global $dbg, $gkz, $showkey; 472 609 473 610 if ($lnkclass == "") { … … 484 621 ."LEFT JOIN ax_eigentuemerart_namensnummer we ON n.eigentuemerart = we.wert " 485 622 ."WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;"; 486 // +++ LEFT JOIN bis ax_Person statt Person als Schleife zu holen, 487 // VerknÃŒpfungsfeld "benennt" ist leer bei "Beschrieb der Rechtsgemeinschaft". 623 // VerknÃŒpfungsfeld "benennt" ist leer bei "Beschrieb der Rechtsgemeinschaft". 488 624 489 625 $v = array($gmlid); // GB-Blatt … … 493 629 if (!$resn) { 494 630 echo "\n<p class='err'>Fehler bei Eigentümer</p>"; // kein Fehler bei Blattarten > 1000 495 //if ($d ebug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sqln )."</p>";}631 //if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sqln )."</p>";} 496 632 } 497 633 … … 501 637 $namnum=kurz_namnr($rown["lfd"]); 502 638 $rechtsg=$rown["adr"]; 639 $eiartkey=$rown["eigentuemerart"]; // Key 640 $eiart=$rown["eiartv"]; // Value 641 // if ($dbg > 1) {echo "\n<p class='dbg'>Eigentü:merart = '".$eiartkey."' = '".$eiart."'</p>";} 642 503 643 echo "\n\t<tr>"; 504 644 if($n === 0) { // erste EigentÃŒmer-Zeile zu einer Buchung … … 527 667 528 668 // Schleife 2: P e r s o n 529 // +++ bei SQL Namensnummer oben gleich mit JOIN dazu holen, statt dieser Schleife530 669 // Beziehung: ax_person <benennt< ax_namensnummer 531 670 $sqlp="SELECT nachnameoderfirma, vorname, geburtsname, to_char(cast(geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, namensbestandteil, akademischergrad " … … 537 676 if (!$resp) { 538 677 echo "\n\t<p class='err'>Fehler bei Person</p>"; 539 if ($d ebug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqlp)."</p>";}678 if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqlp)."</p>";} 540 679 } 541 680 … … 550 689 if ($rowp["geburtsname"] != "") {$diePerson.=", geb. ".$rowp["geburtsname"];} 551 690 $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute 552 $eiartkey=$rown["eigentuemerart"]; // Key553 $eiart=$rown["eiartv"]; // Value554 691 555 692 echo "\n\t\t\t<p class='geig' title='Eigentümerart: ".$eiart."'>".$diePerson."</p>\n\t\t</td>"; // 3 - Person in Sp.3 hinter NamNum (Sp.2) 556 693 echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>"; // 4 557 if ($showkey AND $eiartkey != '') {echo "<span class='key' title='Eigentümerart'> ".$eiartkey."</span> ";}694 if ($showkey AND $eiartkey != '') {echo "<span class='key' title='Eigentümerart'>(".$eiartkey.")</span> ";} 558 695 echo "\n\t\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&gmlid=".$gmlpers; 559 696 if ($showkey) {echo "&showkey=j";} 560 if ($eiartkey == ="") {$eiart="Eigentümer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt697 if ($eiartkey == "") {$eiart="Eigentümer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt 561 698 echo $lnknach."' title='vollständiger Name und Adresse eines Eigentümers'>".$eiart 562 ." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t\t</p>"699 ." \n\t\t\t\t\t<img src='ico/Eigentuemer.png' width='16' height='16' alt=''>\n\t\t\t\t</a>\n\t\t\t</p>" 563 700 ."\n\t\t</td>" // 4 564 701 ."\n\t</tr>"; … … 573 710 if (!$resa) { 574 711 echo "\n\t<p class='err'>Fehler bei Adressen</p>"; 575 if ($d ebug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqla)."</p>";}712 if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqla)."</p>";} 576 713 } 577 714 $j=0; … … 628 765 629 766 if ($i === 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler 630 if ($rechtsg === 9999) { 631 if ($debug > 1) {echo "\n\t\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";} 632 } else { 767 if ($dbg > 1) {echo "\n\t\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";} 768 if ($rechtsg !== '9999') { 633 769 echo "\n<p class='err'>(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)</p>"; 634 770 } … … 646 782 // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile im JOIN mehrfach aufzulisten 647 783 // Anwendung: FS-Nachweis BodenschÀtzung 648 global $d ebug;784 global $dbg; 649 785 650 786 if ($bez === 'e') {$tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc';} … … 657 793 if (!$res) { 658 794 echo "\n<p class='err'>Fehler bei Werteliste.</p>"; 659 if ($d ebug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}795 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 660 796 return; 661 797 } … … 668 804 if ($i === 0) { 669 805 echo "(kein Treffer)"; 670 if ($d ebug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}806 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 671 807 } 672 808 return; … … 676 812 // Tabelle im Kopf von FlurstÃŒck und FS-Historie. 2 Z./Sp. Entstehung/FortfÃŒhrung 677 813 // Parameter: Die DB-Spalten "zeitpunktderentstehung", "zeigtaufexternes_art" und "zeigtaufexternes_name" 678 global $d ebug, $showkey;679 680 // if ($d ebug > 2) {echo "<p class='dbg'>function fortfuehrungen<br>1: ".$dbzeart."<br>2: ".$dbzename."</p>";}814 global $dbg, $showkey; 815 816 // if ($dbg > 2) {echo "<p class='dbg'>function fortfuehrungen<br>1: ".$dbzeart."<br>2: ".$dbzename."</p>";} 681 817 682 818 echo "\n\t<table class='fsd'>" // FS-Daten 2 Spalten
Note: See TracChangeset
for help on using the changeset viewer.