Added AddressDB/Export; ADBHausnummer::unit_count is now recalculated
whenever a Wohneinheit is saved
This commit is contained in:
@@ -3,7 +3,7 @@ ob_end_flush();
|
||||
header("Content-type: text/csv");
|
||||
header('Content-disposition: attachment; filename="addressdb-export-'.date('Y-m-d_H-i-s').'.csv"');
|
||||
?>
|
||||
AddressDB_ID;Extref;Adrcd;OAID;Neztgebiet_Extref;Netzgebiet;GKZ;Gemeinde;OKZ;Ortschaft;SKZ;Strasse;PLZ;Hausnummer;Grundstueck;GPS Breite; GPS Laenge;Rollout;Rollout_Info;Freigabe;Nutzungseinheiten
|
||||
AddressDB_ID;Extref;Adrcd;OAID;Netzgebiet_Extref;Netzgebiet;GKZ;Gemeinde;OKZ;Ortschaft;PLZ;SKZ;Strasse;Hausnummer;Grundstueck;GPS Breite; GPS Laenge;Rollout;Rollout_Info;Freigabe;Nutzungseinheiten
|
||||
<?php
|
||||
|
||||
while($data = mysqli_fetch_object($res)):
|
||||
@@ -18,10 +18,9 @@ while($data = mysqli_fetch_object($res)):
|
||||
} else {
|
||||
$freigabe = "";
|
||||
}
|
||||
$unit_count = ADBWohneinheitModel::count(['hausnummer_id' => $data->id]);
|
||||
//$unit_count = 1;
|
||||
$unit_count = $data->unit_count;
|
||||
?>
|
||||
<?=$data->id?>;"<?=$data->extref?>";<?=$data->adrcd?>;"<?=$data->oaid?>";"<?=$netzgebiet->extref?>";"<?=$netzgebiet->name?>";<?=$gemeinde->kennziffer?>;"<?=$gemeinde->name?>";<?=$ortschaft->kennziffer?>;"<?=$ortschaft->name?>";<?=$strasse->kennziffer?>;"<?=$strasse->name?>";"<?=$plz->plz?>";"<?=$data->hausnummer?>";"<?=$data->grund_nr?>";<?=$data->gps_lat?>;<?=$data->gps_long?>;<?=$data->rollout?>;"<?=$data->rollout_info?>";"<?=$freigabe?>";<?=$unit_count?>;
|
||||
<?=$data->id?>;"<?=$data->extref?>";<?=$data->adrcd?>;"<?=$data->oaid?>";"<?=$netzgebiet->extref?>";"<?=$netzgebiet->name?>";<?=$gemeinde->kennziffer?>;"<?=$gemeinde->name?>";<?=$ortschaft->kennziffer?>;"<?=$ortschaft->name?>";"<?=$plz->plz?>";<?=$strasse->kennziffer?>;"<?=$strasse->name?>";"<?=$data->hausnummer?>";"<?=$data->grund_nr?>";<?=$data->gps_lat?>;<?=$data->gps_long?>;<?=$data->rollout?>;"<?=$data->rollout_info?>";"<?=$freigabe?>";<?=$unit_count?>;
|
||||
<?php
|
||||
flush();
|
||||
endwhile;
|
||||
@@ -145,6 +145,7 @@ class ADBHausnummerModel {
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
|
||||
// hack for AddressDBController::exportAction
|
||||
if($returnDBRessource) {
|
||||
return $res;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,20 @@ class ADBWohneinheit extends mfBaseModel {
|
||||
$this->table = "Wohneinheit";
|
||||
}
|
||||
|
||||
protected function afterSave() {
|
||||
if(!$this->id) return true;
|
||||
if(!$this->hausnummer_id) return true;
|
||||
|
||||
if(!defined("ADBWohneinheit_onSave_noAutoUnitCount") || !ADBWohneinheit_onSave_noAutoUnitCount) {
|
||||
$unit_count = ADBWohneinheitModel::count(['hausnummer_id' => $this->hausnummer_id]);
|
||||
$hausnummer = $this->getProperty("hausnummer");
|
||||
if($hausnummer->id) {
|
||||
$hausnummer->unit_count = $unit_count;
|
||||
$hausnummer->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function parseHausnummerZusatz($text) {
|
||||
|
||||
$data = [];
|
||||
|
||||
@@ -47,7 +47,14 @@ class ADBWohneinheitModel {
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$res = $db->select("Wohneinheit", "*", "$where ORDER BY hausnummer_id,block,stiege,LENGTH(stock),stock,LENGTH(tuer),tuer LIMIT 1");
|
||||
$sql = "SELECT Wohneinheit.* FROM Wohneinheit
|
||||
LEFT JOIN Hausnummer ON (Hausnummer.id = Wohneinheit.hausnummer_id)
|
||||
WHERE $where
|
||||
GROUP BY Wohneinheit.id
|
||||
ORDER BY hausnummer_id,block,stiege,LENGTH(stock),stock,LENGTH(tuer),tuer,num
|
||||
LIMIT 1";
|
||||
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
$item = new ADBWohneinheit($data);
|
||||
@@ -65,7 +72,7 @@ class ADBWohneinheitModel {
|
||||
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
|
||||
$res = $db->select("Wohneinheit", "*", "1=1 ORDER BY hausnummer_id,block,stiege,LENGTH(stock),stock,LENGTH(tuer),tuer");
|
||||
$res = $db->select("Wohneinheit", "*", "1=1 ORDER BY hausnummer_id,block,stiege,LENGTH(stock),stock,LENGTH(tuer),tuer,num");
|
||||
if($db->num_rows($res)) {
|
||||
while($data = $db->fetch_object($res)) {
|
||||
$items[] = new ADBWohneinheit($data);
|
||||
|
||||
@@ -364,6 +364,8 @@ class AddressDBController extends mfBaseController {
|
||||
$addressdb_filter['netzgebiet_id'] = $netzgebiet_ids;
|
||||
}
|
||||
|
||||
// Get mysqli resource from Model so layout can output data as it's retrieved
|
||||
// Fixes lousy performance and horrendous memory usage
|
||||
$res = ADBHausnummerModel::search($addressdb_filter, [], true);
|
||||
|
||||
$this->layout()->setTemplate("AddressDB/export.csv");
|
||||
|
||||
28
scripts/addressdb/update_hausnummer_unit_count.php
Normal file
28
scripts/addressdb/update_hausnummer_unit_count.php
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
//require 'vendor/autoload.php';
|
||||
require("../../config/config.php");
|
||||
|
||||
define('FRONKDB_SQLDEBUG',false);
|
||||
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
|
||||
|
||||
require_once(LIBDIR."/mvcfronk/mfRouter/mfRouter.php");
|
||||
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseModel.php");
|
||||
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
|
||||
|
||||
$i = 0;
|
||||
|
||||
foreach(ADBWohneinheitModel::getAll() as $unit) {
|
||||
$hausnummer = new ADBHausnummer($unit->hausnummer_id);
|
||||
if($hausnummer->id) {
|
||||
$unit_count = ADBWohneinheitModel::count(['hausnummer_id' => $unit->hausnummer_id]);
|
||||
$hausnummer->unit_count = $unit_count;
|
||||
if(!$hausnummer->save()) {
|
||||
echo "error saving hausnummer ".$hausnummer->id."\n";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
echo "Updated $i Wohneinheiten\n";
|
||||
Reference in New Issue
Block a user