Changeset 422 for trunk/info/info/alkisn/alkisfkt.php
- Timestamp:
- 06/24/21 15:59:16 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/info/info/alkisn/alkisfkt.php
r419 r422 3 3 4 4 ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo). 5 F unctions5 F u n c t i o n s 6 6 7 7 Version: 8 8 2016-02-24 Version fuer norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus. 9 2016-03-03 Hinweis auf Datenfehler wenn "ax_person" fehlt in function "eigentuemer" 10 2016-03-14 Kleine Korrekturen 11 2016-11-29 Gemeinsam genutzte Datenbanken ermöglichen (Filter Gemeinde) 12 2017-06-08 gestreifte Tabelle, Feinkorrekturen 13 2017-10-17 Deutsches Datumsformat fÃŒr Geburtsdatum der Person 14 2017-11-03 neue function werteliste() 15 2017-12-20 Default Anzeigewert "EigentÃŒmer" im Link fÃŒr leere EigentÃŒmerart, JÃŒngste Adresse zur Person verwenden. 16 2018-04-23 Berechtigte Buchungen im FS-Nachw. verbessern. Neue Spalte statt Ãberschriften fÃŒr "EigentÃŒmer" und "Berechtigte Buchungen". 17 2018-05-03 GrundstÃŒcksnachweis 18 2018-11-09 Umstellung Full-Schema 19 2018-11-19 EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen(). 20 2018-12-18 function fskenn_dbformat 21 22 ++ ToDo: Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen 9 .... 10 2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] fÃŒr Einsatz hinter Gateway mit Ãnderung des Pfades (Docker/QWC2) 11 2020-12-09 Entschl. BodenschÀtzung korrigiert in function werteliste() 12 2020-12-15 Input-Validation und Strict Comparisation (===) 13 2020-12-16 Sonderfall QWC2 API-Gateway-Umleitung bei Selbstverlinkung 23 14 */ 15 16 function selbstverlinkung() { 17 // Aus der Server-Variable den Pfad entfernen. 18 global $pfadlos_selbstlink; 19 If ($pfadlos_selbstlink === 1) { // pfad-lose Selbstverlinkung hinter einer Umleitung. z.B. QWC2 API-Gateway 20 // Pfad entfernen 21 $mod=strrchr($_SERVER['PHP_SELF'], '/'); 22 $mod=substr($mod, 1); 23 } else { // normaler Webserver, die Systemvariable ist korrekt 24 $mod=$_SERVER['PHP_SELF']; 25 } 26 return $mod; 27 } 28 29 function darf_ich() { 30 // 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 39 } elseif ($auth === "mapbender") { 40 41 // if ($debug > 1) {echo "\n<p class='dbg' Berechtigungs-Prüfung Mapbender</p>";} 42 $customer = ""; 43 include '/opt/gdi/mapbender/http/php/mb_validateSession.php'; 44 45 if (!isset($_SESSION)) { // keine (passende) Session 46 if ($debug > 1) {echo "\n<p class='dbg'>Session nicht gesetzt</p>";} 47 } elseif ( !isset($_SESSION["mb_user_name"]) ) { 48 if ($debug > 1) {echo "\n<p class='dbg'>username nicht gesetzt</p>";} 49 } else { 50 $customer = $_SESSION["mb_user_name"]; // angemeldeter Benutzer 51 } 52 //if ($debug > 1) {echo "\n<p class='dbg'>Customer '".$customer."'</p>";} 53 if ($customer == "") { // Wer bin ich? 54 echo "<p class='stop2'>Aufruf nur aus Mapbender erlaubt.</p>"; 55 return 0; 56 } elseif ($customer == $mb_guest_user) { // in conf festgelegt 57 echo "<p class='stop2'>Eine Anmeldung im Mapbender ist notwendig.</p>"; 58 return 0; // gast-User darf nix 59 } else { 60 return 1; // echter User, ist erlaubt 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/78 69 70 $customer = "(Unbekannt)"; 71 echo "<p class='stop2'>Berechtigungsprüfung fÃŒr QWC2 ist noch nicht möglich.</p>"; 72 return 1; // vorlÀufig erlaubt 73 74 } else { 75 76 echo "\n<p class='stop2'>Die Berechtigungs-PrÃŒfung ist falsch konfiguriert</p>"; 77 return 0; // verboten 78 } 79 } 24 80 25 81 function footer($gmlid, $link, $append) { … … 28 84 // Den URL-Parameter "&showkey=j/n" umschalten lassen. 29 85 // $append wird angehaengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, <yp=m/p/o bei Lage 30 global $gkz, $showkey, $hilfeurl, $auth, $debug; 31 32 // S c r e e n - Foot 86 global $gkz, $showkey, $hilfeurl, $debug, $customer; 87 88 echo "<footer>"; 89 // S c r e e n - F o o t 33 90 echo "\n<div class='confbereich noprint'>" 34 91 ."\n\t<table class='outer'>\n\t<tr>"; 35 92 36 93 // Spalte 1: Info Benutzerkennung 37 if ($auth == "mapbender") { 38 $customer=$_SESSION["mb_user_name"]; 94 if (isset($customer)) { // ÃŒber global von fkt. darf_ich() 39 95 echo "\n\t\t<td title='Info'><i>Benutzer: ".$customer."</i></td>"; 40 96 } else { … … 50 106 echo $mylink."&showkey=j' title='Verschlüsselungen anzeigen'>Schlüssel ein</a>"; 51 107 } 52 // TemporÀr eine Ansicht ohne Entwicklungsumgebung 53 if ($debug > 0) { 54 echo " | ".$mylink."&nodebug=j' title='Debug-Ausgaben temporär abschalten'>Ansicht ohne Testausgaben</a>"; 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>"; 55 110 } 56 111 echo "\n\t\t</td>"; … … 62 117 ."\n</div>\n"; 63 118 64 // P r i n t - Foot 65 if ($auth == "mapbender") { 66 // $customer=$_SESSION["mb_user_name"]; 67 echo "\n<p class='onlyprint'><i>Mapbender-Benutzer: ".$customer."</i></p>"; 68 } 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>"; 69 125 return 0; 70 126 } … … 110 166 if (!$resbs) { 111 167 echo "\n<p class='err'>Fehler bei 'Buchungsstelle ausgeben'.</p>"; 112 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sqlbs, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlbs."'</p>";} 113 } 114 $gezeigt=false; // Funktionswert 168 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlbs."'", $sqlbs), ENT_QUOTES, "UTF-8")."</p>";} 169 } 170 $gezeigt = 0; // Funktionswert default 171 115 172 if ($rowbs = pg_fetch_assoc($resbs)) { // ein Treffer 116 173 $blattkeyber=$rowbs["blattart"]; // Schluessel von Blatt-Art des GB 117 174 if ($blattkeyber != '5000' or $debug > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen 118 $gezeigt =true; // Funktionswert175 $gezeigt = 1; // Funktionswert nach Treffer 119 176 $hgml=$rowbs["hgml"]; // GML-ID der (herrschenden) BuchungsStelle 120 177 $bartkey=$rowbs["buchungsart"]; // Buchungsart SchlÃŒssel … … 137 194 switch ($barttyp) { // Text der Ãberschrift 138 195 case "E": 139 if ($eig == 'j') {$h3txt = "Buchung und Eigentum";}196 if ($eig === 'j') {$h3txt = "Buchung und Eigentum";} 140 197 else {$h3txt = "Buchung";} 141 198 break; 142 199 case "R": $h3txt = "Grundstücksgleiche Rechte"; break; 143 200 } 144 if ($barttypgrp == "" and $gml_fs != "") { // die erste Ãberschrift mit ID und Umschalter201 if ($barttypgrp === "" and $gml_fs != "") { // die erste Ãberschrift mit ID und Umschalter 145 202 echo "\n\t<tr>\n\t\t<td colspan='3'>\n\t\t\t<h3 id='gb'>".$h3txt."</h3>\n\t\t</td>"; // 1-3 146 203 echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>" // 4 147 ."\n\t\t\t\t<a href='". $_SERVER['PHP_SELF']."?gkz=".$gkz."&gmlid=".$gml_fs;204 ."\n\t\t\t\t<a href='".selbstverlinkung()."?gkz=".$gkz."&gmlid=".$gml_fs; 148 205 if ($showkey) {echo "&showkey=j";} 149 206 if ($eig=="j") { // Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb" … … 192 249 ."\n\t\t\t</tr>"; 193 250 194 if ($trtyp == 3) { // Treffer-Grundst. einfÀrben251 if ($trtyp === 3) { // Treffer-Grundst. einfÀrben 195 252 echo "\n\t\t\t<tr class='paa'>"; 196 253 } else { … … 205 262 ."\n\t\t\t</table>"; 206 263 207 if ($rowbs["zaehler"] <>"") {264 if ($rowbs["zaehler"] != "") { 208 265 echo "\n\t\t\t<p class='ant'>".$rowbs["zaehler"]."/".$rowbs["nenner"]." Anteil am Flurstück</p>"; 209 266 } … … 227 284 ."</a>"; 228 285 // Buchung 229 if ($trtyp == 1) {286 if ($trtyp === 1) { 230 287 echo "<br>"; 231 288 if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} … … 240 297 ."\n\t\t</td>" // 4 241 298 ."\n\t</tr>"; 242 if ($eig == "j") {299 if ($eig === "j") { 243 300 if ($jsfenster) {$lnkclass = "imFenster";} else {$lnkclass = "";} 244 301 $n = eigentuemer($gbgml, true, $lnkclass); // mit Adresse … … 247 304 } 248 305 pg_free_result($resbs); 249 return $gezeigt; // true wenn eine Buchung ausgegeben wurde 306 307 //if ($debug > 1) {echo "\n<p class='dbg'>Ende function buchung_anzg(), Return = ". $gezeigt ."</p>";} 308 309 return $gezeigt; // 1 wenn eine Buchung ausgegeben wurde 250 310 } 251 311 … … 272 332 if (!$resber) { 273 333 echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>"; 274 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities( $sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}334 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmls."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 275 335 } 276 336 $an=0; … … 279 339 $hgml=$rowan["hgml"]; // GML-ID der berechtigten Buchungs-Stelle 280 340 281 if ($hgml == $gsanfrd) {341 if ($hgml === $gsanfrd) { 282 342 $trtyp=3; // einfÀrben, o. Lnk. 283 343 } else { … … 322 382 ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 323 383 ."WHERE f.endet IS NULL AND g.endet IS NULL AND f.istgebucht = $1 "; 324 if ($filtgem == '') { // ungefiltert384 if ($filtgem === '') { // ungefiltert 325 385 $v=array($gml_bs); 326 386 } else { … … 338 398 $bvnr=""; 339 399 } 340 $altbvnr=""; // ++ besser mit "$j == 0" steuern?400 $altbvnr=""; // ++ besser mit "$j === 0" steuern? 341 401 $j=0; 342 402 while($rowf = pg_fetch_assoc($resf)) { … … 350 410 echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck 351 411 // Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS 352 if($bvnr == $altbvnr) { // gleiches Grundstueck, leer lassen412 if($bvnr === $altbvnr) { // gleiches Grundstueck, leer lassen 353 413 echo "\n\t<td> </td>" 354 414 ."\n\t<td> </td>" … … 377 437 echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 378 438 // if($bvnr != $altbvnr) { 379 if($j == 0) {439 if($j === 0) { 380 440 echo "\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&gmlid=".$gml_bs; 381 441 if ($showkey) {echo "&showkey=j";} … … 394 454 $altbvnr=$bvnr; 395 455 $j++; 396 } // Ende Loop Flurstueck456 } 397 457 pg_free_result($resf); 398 458 return $j; … … 433 493 if (!$resn) { 434 494 echo "\n<p class='err'>Fehler bei Eigentümer</p>"; // kein Fehler bei Blattarten > 1000 435 //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>". $sqln."<br>$1=gml= '".$gmlid."'</p>";}495 //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sqln )."</p>";} 436 496 } 437 497 … … 442 502 $rechtsg=$rown["adr"]; 443 503 echo "\n\t<tr>"; 444 if($n == 0) { // erste EigentÃŒmer-Zeile zu einer Buchung504 if($n === 0) { // erste EigentÃŒmer-Zeile zu einer Buchung 445 505 echo "\n\t\t<td class='ll'><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Eigentümer:</td>"; // 1 446 506 } else { // Folgezeile … … 477 537 if (!$resp) { 478 538 echo "\n\t<p class='err'>Fehler bei Person</p>"; 479 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>". $sqlp."<br>$1=gml= '".$gmlpers."'</p>";}539 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqlp)."</p>";} 480 540 } 481 541 … … 483 543 while($rowp = pg_fetch_assoc($resp)) { // Schleife weglassen: "benennt" ist KEIN Array! 484 544 $diePerson=""; //++ Anrede? 485 if ($rowp["akademischergrad"] <>"") {$diePerson=$rowp["akademischergrad"]." ";}545 if ($rowp["akademischergrad"] != "") {$diePerson=$rowp["akademischergrad"]." ";} 486 546 $diePerson.=$rowp["nachnameoderfirma"]; 487 if ($rowp["vorname"] <>"") {$diePerson.=", ".$rowp["vorname"];}488 if ($rowp["namensbestandteil"] <>"") {$diePerson.=". ".$rowp["namensbestandteil"];}489 if ($rowp["geburtsdatum"] <>"") {$diePerson.=", geb. ".$rowp["geburtsdatum"];}490 if ($rowp["geburtsname"] <>"") {$diePerson.=", geb. ".$rowp["geburtsname"];}547 if ($rowp["vorname"] != "") {$diePerson.=", ".$rowp["vorname"];} 548 if ($rowp["namensbestandteil"] != "") {$diePerson.=". ".$rowp["namensbestandteil"];} 549 if ($rowp["geburtsdatum"] != "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];} 550 if ($rowp["geburtsname"] != "") {$diePerson.=", geb. ".$rowp["geburtsname"];} 491 551 $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute 492 552 $eiartkey=$rown["eigentuemerart"]; // Key … … 498 558 echo "\n\t\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&gmlid=".$gmlpers; 499 559 if ($showkey) {echo "&showkey=j";} 500 if ($eiartkey == "") {$eiart="Eigentümer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt560 if ($eiartkey === "") {$eiart="Eigentümer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt 501 561 echo $lnknach."' title='vollständiger Name und Adresse eines Eigentümers'>".$eiart 502 562 ." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t\t</p>" … … 513 573 if (!$resa) { 514 574 echo "\n\t<p class='err'>Fehler bei Adressen</p>"; 515 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>". $sqla."<br>$1=gml= '".$gmlpers."'</p>";}575 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqla)."</p>";} 516 576 } 517 577 $j=0; 518 578 while($rowa = pg_fetch_assoc($resa)) { 519 579 $j++; 520 if ($j == 1) { // erste ("jÃŒngste") Adresse anzeigen580 if ($j === 1) { // erste ("jÃŒngste") Adresse anzeigen 521 581 $gmla=$rowa["gml_id"]; 522 582 $plz=$rowa["plz"]; // integer 523 if($plz == 0) {583 if($plz === 0) { 524 584 $plz=""; 525 585 } else { … … 567 627 pg_free_result($resp); 568 628 569 if ($i == 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler570 if ($rechtsg == 9999) {629 if ($i === 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler 630 if ($rechtsg === 9999) { 571 631 if ($debug > 1) {echo "\n\t\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";} 572 632 } else { … … 580 640 pg_free_result($resn); 581 641 return $n; 582 } // End function eigentuemer583 584 function werteliste ($ element, $bezeichnung,$sqlin) {642 } 643 644 function werteliste ($bez ,$sqlin) { 585 645 // Eine oder mehrere EntschlÃŒsselungen in eine Zeile ausgeben. 586 // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile mehrfach aufzulisten (JOIN) 587 // Anwendung: FS-Nachweis BodenschÀtzung "Klimastufe + WasserverhÀltnisse" 588 // 2018-11-09: Umstellung von "alkis_wertearten" auf individuelle Tabellen 589 646 // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile im JOIN mehrfach aufzulisten 647 // Anwendung: FS-Nachweis BodenschÀtzung 590 648 global $debug; 591 if ($element == 'ax_bodenschaetzung' AND $bezeichnung = 'entstehungsartoderklimastufewasserverhaeltnisse' ) { 592 $tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc'; 593 } elseif ($element == 'ax_bodenschaetzung' AND $bezeichnung = 'sonstigeangaben' ) { 594 $tabelle = 'ax_sonstigeangaben_bodenschaetzung'; 595 } 649 650 if ($bez === 'e') {$tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc';} 651 elseif ($bez === 's') {$tabelle = 'ax_sonstigeangaben_bodenschaetzung';} 652 596 653 $sql="SELECT wert, beschreibung FROM ".$tabelle." WHERE wert IN (".$sqlin.") ORDER BY wert LIMIT $1 ;"; 597 $v = array( 100);654 $v = array('9'); 598 655 $res = pg_prepare("", $sql); 599 656 $res = pg_execute("", $v); 600 657 if (!$res) { 601 658 echo "\n<p class='err'>Fehler bei Werteliste.</p>"; 602 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."< br>$1 = '".$sqlin."'</p>";}659 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 603 660 return; 604 661 } … … 609 666 } 610 667 pg_free_result($res); 611 if ($i == 0) {echo "(kein Treffer)";} 668 if ($i === 0) { 669 echo "(kein Treffer)"; 670 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 671 } 612 672 return; 613 673 } … … 669 729 $arr=explode("-", $fskennz, 4); // zerlegen 670 730 $zgemkg=trim($arr[0]); 671 if (strlen($zgemkg) == 20 and !isset($arr[1])) {731 if (strlen($zgemkg) === 20 and !isset($arr[1])) { 672 732 $fskzdb=$zgemkg; // ist schon Datenbank-Feldformat 673 733 } else { // Das Kennzeichen auseinander nehmen. 674 if (strlen($zgemkg) == 6) {734 if (strlen($zgemkg) === 6) { 675 735 $land=substr($zgemkg, 0, 2); 676 736 $zgemkg=substr($zgemkg, 2, 4); … … 687 747 $znenner=""; 688 748 } 689 if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen749 if (trim($znenner, " 0.") === "") { // kein Bruch oder nur Nullen 690 750 $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt 691 751 } else {
Note: See TracChangeset
for help on using the changeset viewer.