Added AdressDB + AddressDB API

This commit is contained in:
Frank Schubert
2022-08-29 17:14:55 +02:00
parent 36b41b4e5a
commit 952f25797d
21 changed files with 1494 additions and 173 deletions

1
.gitignore vendored
View File

@@ -5,6 +5,7 @@ composer.lock
.idea
nbproject
config/config.php
scripts/import
todo
files/*
vendor/

View File

@@ -6,6 +6,7 @@ class ADBGemeinde extends mfBaseModel {
protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->table = "Gemeinde";
}

View File

@@ -0,0 +1,148 @@
<?php
class ADBGemeindeModel {
public $kennziffer;
public $code;
public $name;
public $create_by = null;
public $edit_by = null;
public $create = null;
public $edit = null;
public static function create(Array $data) {
$model = new ADBGemeinde();
foreach($data as $field => $value) {
if(property_exists(get_called_class(), $field)) {
$model ->$field = $value;
}
}
$me = mfValuecache::singleton()->get("me");
if(!$me) {
$me = new User();
$me->loadMe();
mfValuecache::singleton()->set("me", $me);
}
/*
if($model->create_by === null) {
$model->create_by = $me->id;
}
if($model->edit_by === null) {
$model->edit_by = $me->id;
}*/
return $model;
}
public static function getFirst($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$res = $db->select("Gemeinde", "*", "$where ORDER BY name,code,kennziffer LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new ADBGemeinde($data);
if($item->id) {
return $item;
} else {
return null;
}
}
return null;
}
public static function getAll() {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$res = $db->select("Gemeinde", "*", "1=1 ORDER BY name,code,kennziffer");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBGemeinde($data);
}
}
return $items;
}
public static function count($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM Gemeinde
WHERE $where
";
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter, $limit = false) {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT Gemeinde.* FROM Gemeinde
WHERE $where
ORDER BY name,code,kennziffer";
//mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
} elseif(is_numeric($count)) {
$sql .= " LIMIT ".$limit['count'];
}
}
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBGemeinde($data);
}
}
return $items;
}
private static function getSqlFilter($filter) {
$where = "1=1 ";
if(array_key_exists("code", $filter)) {
$code = $filter['code'];
if(is_numeric($code)) {
$where .= " AND Gemeinde.code=$code";
} elseif(is_array($code) && count($code)) {
$where .= " AND Gemeinde.code IN (". implode(",", $code).")";
}
}
if(array_key_exists("kennziffer", $filter)) {
$kennziffer = $filter['kennziffer'];
if(is_numeric($kennziffer)) {
$where .= " AND Gemeinde.kennziffer=$kennziffer";
} elseif(is_array($kennziffer) && count($kennziffer)) {
$where .= " AND Gemeinde.kennziffer IN (". implode(",", $kennziffer).")";
}
}
if(array_key_exists("name", $filter)) {
$name = FronkDB::singleton()->escape($filter['name']);
if($name) {
$where .= " AND Gemeinde.`name` like '%$name%'";
}
}
//var_dump($filter, $where);exit;
return $where;
}
}

View File

@@ -8,6 +8,7 @@ class ADBHausnummer extends mfBaseModel {
protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->table = "Hausnummer";
}
public function afterLoad() {

View File

@@ -0,0 +1,147 @@
<?php
class ADBHausnummerModel {
public $gemeinde_id;
public $kennziffer;
public $name;
public $plz;
public $create_by = null;
public $edit_by = null;
public $create = null;
public $edit = null;
public static function create(Array $data) {
$model = new ADBHausnummer();
foreach($data as $field => $value) {
if(property_exists(get_called_class(), $field)) {
$model ->$field = $value;
}
}
$me = mfValuecache::singleton()->get("me");
if(!$me) {
$me = new User();
$me->loadMe();
mfValuecache::singleton()->set("me", $me);
}
/*
if($model->create_by === null) {
$model->create_by = $me->id;
}
if($model->edit_by === null) {
$model->edit_by = $me->id;
}*/
return $model;
}
public static function getFirst($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$res = $db->select("Hausnummer", "*", "$where ORDER BY strasse_id,hausnummer LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new ADBHausnummer($data);
if($item->id) {
return $item;
} else {
return null;
}
}
return null;
}
public static function getAll() {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$res = $db->select("Hausnummer", "*", "1=1 ORDER BY strasse_id,hausnummer");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBHausnummer($data);
}
}
return $items;
}
public static function count($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM Hausnummer
WHERE $where
";
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter, $limit = false) {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT Hausnummer.* FROM Hausnummer
WHERE $where
ORDER BY strasse_id,hausnummer";
//mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
} elseif(is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['count'];
}
}
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBHausnummer($data);
}
}
return $items;
}
private static function getSqlFilter($filter) {
$where = "1=1 ";
if(array_key_exists("strasse_id", $filter)) {
$strasse_id = $filter['strasse_id'];
if(is_numeric($strasse_id)) {
$where .= " AND Hausnummer.strasse_id=$strasse_id";
} elseif(is_array($strasse_id) && count($strasse_id)) {
$where .= " AND Hausnummer.strasse_id IN (". implode(",", $strasse_id).")";
}
}
if(array_key_exists("hausnummer", $filter)) {
$hausnummer = FronkDB::singleton()->escape($filter['hausnummer']);
if($hausnummer) {
$where .= " AND Hausnummer.`hausnummer` = '$hausnummer'";
}
}
if(array_key_exists("hausnummer%", $filter)) {
$hausnummer = FronkDB::singleton()->escape($filter['hausnummer']);
if($hausnummer) {
$where .= " AND Hausnummer.`hausnummer` like '%$hausnummer%'";
}
}
//var_dump($filter, $where);exit;
return $where;
}
}

View File

@@ -4,6 +4,7 @@ class ADBOrtschaft extends mfBaseModel {
protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->table = "Ortschaft";
}
public function find($search) {

View File

@@ -0,0 +1,157 @@
<?php
class ADBOrtschaftModel {
public $gemeinde_id;
public $kennziffer;
public $name;
public $plz;
public $create_by = null;
public $edit_by = null;
public $create = null;
public $edit = null;
public static function create(Array $data) {
$model = new ADBOrtschaft();
foreach($data as $field => $value) {
if(property_exists(get_called_class(), $field)) {
$model ->$field = $value;
}
}
$me = mfValuecache::singleton()->get("me");
if(!$me) {
$me = new User();
$me->loadMe();
mfValuecache::singleton()->set("me", $me);
}
/*
if($model->create_by === null) {
$model->create_by = $me->id;
}
if($model->edit_by === null) {
$model->edit_by = $me->id;
}*/
return $model;
}
public static function getFirst($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$res = $db->select("Ortschaft", "*", "$where ORDER BY name,kennziffer LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new ADBOrtschaft($data);
if($item->id) {
return $item;
} else {
return null;
}
}
return null;
}
public static function getAll() {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$res = $db->select("Ortschaft", "*", "1=1 ORDER BY name,kennziffer");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBOrtschaft($data);
}
}
return $items;
}
public static function count($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM Ortschaft
WHERE $where
";
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter, $limit = false) {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT Ortschaft.* FROM Ortschaft
WHERE $where
ORDER BY name,kennziffer";
//mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
} elseif(is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['count'];
}
}
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBOrtschaft($data);
}
}
return $items;
}
private static function getSqlFilter($filter) {
$where = "1=1 ";
if(array_key_exists("gemeinde_id", $filter)) {
$gemeinde_id = $filter['gemeinde_id'];
if(is_numeric($gemeinde_id)) {
$where .= " AND Ortschaft.gemeinde_id=$gemeinde_id";
} elseif(is_array($gemeinde_id) && count($gemeinde_id)) {
$where .= " AND Ortschaft.gemeinde_id IN (". implode(",", $gemeinde_id).")";
}
}
if(array_key_exists("kennziffer", $filter)) {
$kennziffer = $filter['kennziffer'];
if(is_numeric($kennziffer)) {
$where .= " AND Ortschaft.kennziffer=$kennziffer";
} elseif(is_array($kennziffer) && count($kennziffer)) {
$where .= " AND Ortschaft.kennziffer IN (". implode(",", $kennziffer).")";
}
}
if(array_key_exists("name", $filter)) {
$name = FronkDB::singleton()->escape($filter['name']);
if($name) {
$where .= " AND Ortschaft.`name` = '$name'";
}
}
if(array_key_exists("name%", $filter)) {
$name = FronkDB::singleton()->escape($filter['name%']);
if($name) {
$where .= " AND Ortschaft.`name` like '%$name%'";
}
}
//var_dump($filter, $where);exit;
return $where;
}
}

View File

@@ -4,6 +4,7 @@ class ADBPlz extends mfBaseModel {
protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->table = "Plz";
}
}

View File

@@ -0,0 +1,156 @@
<?php
class ADBPlzModel {
public $gemeinde_id;
public $plz;
public $plzstring;
public $create_by = null;
public $edit_by = null;
public $create = null;
public $edit = null;
public static function create(Array $data) {
$model = new ADBPlz();
foreach($data as $field => $value) {
if(property_exists(get_called_class(), $field)) {
$model ->$field = $value;
}
}
$me = mfValuecache::singleton()->get("me");
if(!$me) {
$me = new User();
$me->loadMe();
mfValuecache::singleton()->set("me", $me);
}
/*
if($model->create_by === null) {
$model->create_by = $me->id;
}
if($model->edit_by === null) {
$model->edit_by = $me->id;
}*/
return $model;
}
public static function getFirst($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$res = $db->select("Plz", "*", "$where ORDER BY gemeinde_id,plz LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new ADBPlz($data);
if($item->id) {
return $item;
} else {
return null;
}
}
return null;
}
public static function getAll() {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$res = $db->select("Plz", "*", "1=1 ORDER BY gemeinde_id,plz");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBPlz($data);
}
}
return $items;
}
public static function count($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM Plz
WHERE $where
";
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter, $limit = false) {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT Plz.* FROM Plz
WHERE $where
ORDER BY gemeinde_id,plz";
//mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
} elseif(is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['count'];
}
}
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBPlz($data);
}
}
return $items;
}
private static function getSqlFilter($filter) {
$where = "1=1 ";
if(array_key_exists("gemeinde_id", $filter)) {
$gemeinde_id = $filter['gemeinde_id'];
if(is_numeric($gemeinde_id)) {
$where .= " AND Plz.gemeinde_id=$gemeinde_id";
} elseif(is_array($gemeinde_id) && count($gemeinde_id)) {
$where .= " AND Plz.gemeinde_id IN (". implode(",", $gemeinde_id).")";
}
}
if(array_key_exists("plz", $filter)) {
$plz = $filter['plz'];
if(is_numeric($plz)) {
$where .= " AND Plz.plz=$plz";
} elseif(is_array($plz) && count($plz)) {
$where .= " AND Plz.plz IN (". implode(",", $plz).")";
}
}
if(array_key_exists("plzstring", $filter)) {
$plzstring = FronkDB::singleton()->escape($filter['plzstring']);
if($plzstring) {
$where .= " AND Plz.`plzstring` = '$plzstring'";
}
}
if(array_key_exists("plzstring%", $filter)) {
$plzstring = FronkDB::singleton()->escape($filter['plzstring%']);
if($plzstring) {
$where .= " AND Plz.`plzstring` like '%$plzstring%'";
}
}
//var_dump($filter, $where);exit;
return $where;
}
}

View File

@@ -1,10 +1,11 @@
<?php
class Strasse extends mfBaseModel {
class ADBStrasse extends mfBaseModel {
public $gemeinde = [];
protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->table = "Strasse";
}
public function afterLoad() {

View File

@@ -1,6 +1,6 @@
<?php
class StrasseController extends mfBaseController {
class ADBStrasseController extends mfBaseController {
protected function init() {
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);

View File

@@ -0,0 +1,166 @@
<?php
class ADBStrasseModel {
public $ortschaft_id;
public $gemeinde_id;
public $kennziffer;
public $name;
public $create_by = null;
public $edit_by = null;
public $create = null;
public $edit = null;
public static function create(Array $data) {
$model = new ADBStrasse();
foreach($data as $field => $value) {
if(property_exists(get_called_class(), $field)) {
$model ->$field = $value;
}
}
$me = mfValuecache::singleton()->get("me");
if(!$me) {
$me = new User();
$me->loadMe();
mfValuecache::singleton()->set("me", $me);
}
/*
if($model->create_by === null) {
$model->create_by = $me->id;
}
if($model->edit_by === null) {
$model->edit_by = $me->id;
}*/
return $model;
}
public static function getFirst($filter = false) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$res = $db->select("Strasse", "*", "$where ORDER BY gemeinde_id,kennziffer,name LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new ADBStrasse($data);
if($item->id) {
return $item;
} else {
return null;
}
}
return null;
}
public static function getAll() {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$res = $db->select("Strasse", "*", "1=1 ORDER BY gemeinde_id,name,kennziffer");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBStrasse($data);
}
}
return $items;
}
public static function count($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM Strasse
WHERE $where
";
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter, $limit = false) {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
//$sql = "SELECT MIN(id) as id, MIN(ortschaft_id) as ortschaft_id, gemeinde_id, MIN(kennziffer) as kennziffer, MIN(name) as name, MIN(`create`) as `create`, MIN(`edit`) as `edit` FROM Strasse
$sql = "SELECT Strasse.* FROM Strasse
WHERE $where
ORDER BY gemeinde_id,name,kennziffer";
//mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
} elseif(is_numeric($count)) {
$sql .= " LIMIT ".$limit['count'];
}
}
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBStrasse($data);
}
}
return $items;
}
private static function getSqlFilter($filter) {
$where = "1=1 ";
if(array_key_exists("gemeinde_id", $filter)) {
$gemeinde_id = $filter['gemeinde_id'];
if(is_numeric($gemeinde_id)) {
$where .= " AND Strasse.gemeinde_id=$gemeinde_id";
} elseif(is_array($gemeinde_id) && count($gemeinde_id)) {
$where .= " AND Strasse.gemeinde_id IN (". implode(",", $gemeinde_id).")";
}
}
if(array_key_exists("ortschaft_id", $filter)) {
$ortschaft_id = $filter['ortschaft_id'];
if(is_numeric($ortschaft_id)) {
$where .= " AND Strasse.ortschaft_id=$ortschaft_id";
} elseif(is_array($ortschaft_id) && count($ortschaft_id)) {
$where .= " AND Strasse.ortschaft_id IN (". implode(",", $ortschaft_id).")";
}
}
if(array_key_exists("kennziffer", $filter)) {
$kennziffer = $filter['kennziffer'];
if(is_numeric($kennziffer)) {
$where .= " AND Strasse.kennziffer=$kennziffer";
} elseif(is_array($kennziffer) && count($kennziffer)) {
$where .= " AND Strasse.kennziffer IN (". implode(",", $kennziffer).")";
}
}
if(array_key_exists("name", $filter)) {
$name = FronkDB::singleton()->escape($filter['name']);
if($name) {
$where .= " AND Strasse.`name` = '$name'";
}
}
if(array_key_exists("name%", $filter)) {
$name = FronkDB::singleton()->escape($filter['name%']);
if($name) {
$where .= " AND Strasse.`name` like '%$name%'";
}
}
//var_dump($filter, $where);exit;
return $where;
}
}

View File

@@ -0,0 +1,87 @@
<?php
class ADBWohneinheit extends mfBaseModel {
public $hausnummer;
protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->table = "Wohneinheit";
}
public static function parseHausnummerZusatz($text) {
$data = [];
$data['block'] = "";
$data['stock'] = "";
$data['stiege'] = "";
$data['tuer'] = "";
$data['zusatz'] = "";
$text = trim($text);
if(!$text) return $data;
$text = " ".$text;
$m = [];
if(preg_match('/(?:t(?:ü|ue)r|topp|door?)\s+(\d\d?|\w\w?)/i', $text, $m)) {
$data['tuer'] = $m[1];
$text = str_replace($m[0], "", $text);
}
if(preg_match('/(\d+)\.\s+(?:stock|geschoss|etage|level|floor)/i', $text, $m)) {
$data['stock'] = $m[1];
$text = str_replace($m[0], "", $text);
}
if(preg_match('/(?: stock(?:werk)?| geschoss| etage| level | floor)\s+(\d\d?|parterre|erdgescho(?:ss|ß))\.?/i', $text, $m)) {
$data['stock'] = $m[1];
$text = str_replace($m[0], "", $text);
}
if(preg_match('/(parterre|erdgescho(?:ss|ß))/i', $text, $m)) {
$data['stock'] = $m[1];
$text = str_replace($m[0], "", $text);
}
$text = trim(preg_replace('/\s{2,}/', "", $text));
if($text) {
$data['zusatz'] = $text;
}
return $data;
}
public function afterLoad() {
$this->hausnummer = new ADBHausnummer($this->hausnummer_id);
//$this->loadStatus();
//$this->loadProvider();
}
/*
public function loadStatus() {
if(!$this->id) {
return false;
}
$status = HausnummerStatus::singleton();
$this->status = $status->getObject($this->status_id);
}
public function loadProvider() {
if(!$this->id) {
return false;
}
$res = $this->db->select("HausnummerProvider", "*", "hausnummer_id=".$this->id);
if($this->db->num_rows($res)) {
while($data = $this->db->fetch_object($res)) {
$provider = new Provider($data->provider_id);
$this->providerlist[$provider->id] = $provider->name;
$this->providers[] = $provider;
}
}
return true;
}*/
}

View File

@@ -0,0 +1,225 @@
<?php
class ADBWohneinheitModel {
public $hausnummer_id;
public $block;
public $stiege;
public $stock;
public $tuer;
public $nutzung;
public $create_by = null;
public $edit_by = null;
public $create = null;
public $edit = null;
public static function create(Array $data) {
$model = new ADBWohneinheit();
foreach($data as $field => $value) {
if(property_exists(get_called_class(), $field)) {
$model ->$field = $value;
}
}
$me = mfValuecache::singleton()->get("me");
if(!$me) {
$me = new User();
$me->loadMe();
mfValuecache::singleton()->set("me", $me);
}
/*
if($model->create_by === null) {
$model->create_by = $me->id;
}
if($model->edit_by === null) {
$model->edit_by = $me->id;
}*/
return $model;
}
public static function getFirst($filter) {
$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,stock,tuer LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new ADBWohneinheit($data);
if($item->id) {
return $item;
} else {
return null;
}
}
return null;
}
public static function getAll() {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$res = $db->select("Wohneinheit", "*", "1=1 ORDER BY hausnummer_id,block,stiege,stock,tuer");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBWohneinheit($data);
}
}
return $items;
}
public static function count($filter) {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM Wohneinheit
WHERE $where
";
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter, $limit = false) {
$items = [];
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT Wohneinheit.* FROM Wohneinheit
WHERE $where
ORDER BY hausnummer_id,block,stiege,stock,tuer";
//mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
} elseif(is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['count'];
}
}
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ADBWohneinheit($data);
}
}
return $items;
}
private static function getSqlFilter($filter) {
$where = "1=1 ";
if(array_key_exists("hausnummer_id", $filter)) {
$hausnummer_id = $filter['hausnummer_id'];
if(is_numeric($hausnummer_id)) {
$where .= " AND Wohneinheit.hausnummer_id=$hausnummer_id";
} elseif(is_array($hausnummer_id) && count($hausnummer_id)) {
$where .= " AND Wohneinheit.hausnummer_id IN (". implode(",", $hausnummer_id).")";
}
}
if(array_key_exists("num", $filter)) {
$num = $filter['num'];
if(is_numeric($num)) {
$where .= " AND Wohneinheit.num=$num";
} elseif(is_array($num) && count($num)) {
$where .= " AND Wohneinheit.num IN (". implode(",", $num).")";
}
}
if(array_key_exists("block", $filter)) {
$block = FronkDB::singleton()->escape($filter['block']);
if(strlen($block)) {
$where .= " AND Wohneinheit.`block` = '$block'";
} else {
$where .= " AND (Wohneinheit.`block` IS NULL OR Wohneinheit.`block` = '')";
}
}
if(array_key_exists("stock", $filter)) {
$stock = FronkDB::singleton()->escape($filter['stock']);
if(strlen($stock)) {
$where .= " AND Wohneinheit.`stock` = '$stock'";
} else {
$where .= " AND (Wohneinheit.`stock` IS NULL OR Wohneinheit.`stock` = '')";
}
}
if(array_key_exists("stiege", $filter)) {
$stiege = FronkDB::singleton()->escape($filter['stiege']);
if(strlen($stiege)) {
$where .= " AND Wohneinheit.`stiege` = '$stiege'";
} else {
$where .= " AND (Wohneinheit.`stiege` IS NULL OR Wohneinheit.`stiege` = '')";
}
}
if(array_key_exists("tuer", $filter)) {
$tuer = FronkDB::singleton()->escape($filter['tuer']);
if(strlen($tuer)) {
$where .= " AND Wohneinheit.`tuer` = '$tuer'";
} else {
$where .= " AND (Wohneinheit.`tuer` IS NULL OR Wohneinheit.`tuer` = '')";
}
}
if(array_key_exists("zusatz", $filter)) {
$zusatz = FronkDB::singleton()->escape($filter['zusatz']);
if(strlen($zusatz)) {
$where .= " AND Wohneinheit.`zusatz` = '$zusatz'";
} else {
$where .= " AND (Wohneinheit.`zusatz` IS NULL OR Wohneinheit.`zusatz` = '')";
}
}
if(array_key_exists("nutzung", $filter)) {
$nutzung = FronkDB::singleton()->escape($filter['nutzung']);
if(strlen($nutzung)) {
$where .= " AND Wohneinheit.`nutzung` = '$nutzung'";
} else {
$where .= " AND (Wohneinheit.`nutzung` IS NULL OR Wohneinheit.`nutzung` = '')";
}
}
if(array_key_exists("block%", $filter)) {
$block = FronkDB::singleton()->escape($filter['block']);
if($block) {
$where .= " AND Wohneinheit.`block` like '%$block%'";
}
}
if(array_key_exists("stock%", $filter)) {
$stock = FronkDB::singleton()->escape($filter['stock']);
if($stock) {
$where .= " AND Wohneinheit.`stock` like '%$stock%'";
}
}
if(array_key_exists("stiege%", $filter)) {
$stiege = FronkDB::singleton()->escape($filter['stiege']);
if($stiege) {
$where .= " AND Wohneinheit.`stiege` like '%$stiege%'";
}
}
if(array_key_exists("tuer%", $filter)) {
$tuer = FronkDB::singleton()->escape($filter['tuer']);
if($tuer) {
$where .= " AND Wohneinheit.`tuer` like '%$tuer%'";
}
}
if(array_key_exists("zusatz%", $filter)) {
$zusatz = FronkDB::singleton()->escape($filter['zusatz']);
if($zusatz) {
$where .= " AND Wohneinheit.`zusatz` like '%$zusatz%'";
}
}
//var_dump($filter, $where);exit;
return $where;
}
}

View File

@@ -1,111 +1,209 @@
<?php
class AddressDB {
private $log;
private $db;
private $log;
public $data;
public function __contruct() {
public function __construct() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->log = mfLoghandler::singleton();
}
public function findAddress($search) {
if(!is_array($search)) {
public function import($input) {
if(!$input) {
return false;
}
$gemeinde_name = $search['gemeinde_name'];
$ort_name = $search['ort_name'];
$plz = $search['plz'];
$strasse_name = $search['strasse_name'];
$hausnummer = $search['hausnummer'];
$block = $search['block'];
$stiege = $search['stiege'];
$stock = $search['stock'];
$tuer = $search['tuee'];
/*
if($gemeinde_id < 1 || $strasse_id < 1 || !$hausnummer
|| $gemeinde_id > pow(2, 30) || $strasse_id > pow(2, 30) || strlen($hausnummer) > 32) {
$this->redirect('Check','',['status' => 'error']);
}*/
$hausnummerMatch = true;
$gemeinde = new Gemeinde($gemeinde_id);
$strasse = new Strasse($strasse_id);
// try exact hausnummer
$res = $this->db()->select("view_adresseProvider", "*", "gemeinde = '".$gemeinde->name."' AND strasse = '".$strasse->name."' AND hausnummer = '$hausnummer'");
if(!$this->db()->num_rows($res)) {
$hausnummerMatch = false;
// check for anschlüsse in the same street
$res = $this->db()->select("view_adresseProvider", "*", "gemeinde = '".$gemeinde->name."' AND strasse = '".$strasse->name."'");
if(!$this->db()->num_rows($res)) {
// XXX: if breitband stmk
$this->layout()->setTemplate("Check/Result/Fail");
// xdsl anzeigen
return $this->checkVull($request);
if(is_string($input)) {
if(!file_exists($input)) {
return false;
}
$file = fopen($input, "r");
if(!$file) {
return false;
}
$input = $file;
}
// if multiple hausnummern, anschluss in street available, or multiple providers
if($this->db()->num_rows($res)) {
$addresses = [];
$providers = [];
$homeProvider = false;
$multipleAddress = false;
while($data = $this->db()->fetch_object($res)) {
$addresses[] = new Hausnummer($data->id);
if($data->provider_id == HOME_PROVIDER_ID) {
$homeProvider = true;
}
if(!in_array($data->provider, $providers)) {
$providers[$data->provider_id] = $data->provider;
}
if($data->hausnummer != $hausnummer) {
$multipleAddress = true;
}
}
$pc = new ProductController();
if($homeProvider && $multipleAddress) {
$this->layout()->set("debug", "multi hausnummern, homeprovider");
$this->layout()->setTemplate("Check/Result/Street");
return true;
}
if($homeProvider) {
$this->layout()->set("debug", "single hausnummer, homeprovider");
$this->layout()->setTemplate("Check/Result/Success");
$this->layout()->set("productsPrivate", $pc->getProducts(1, "fiber", "privat"));
$this->layout()->set("productsBusiness", $pc->getProducts(1, "fiber", "business"));
if($data->status == 1) {
$this->layout()->set("debug", "single hausnummer, homeprovider, rohr am grundstück");
$this->layout()->setTemplate("Check/Result/Street");
}
return true;
}
if(!$homeProvider) {
$this->layout()->set("providers", $providers);
$this->layout()->set("debug", "single hausnummer, partner provider");
$this->layout()->setTemplate("Check/Result/SuccessPartner");
return true;
}
return true;
} /*elseif($this->db()->num_rows($res) == 1 && $hausnummerMatch) {
// exactly 1 match
$data = $this->db()->fetch_object($res);
$address = new Hausnummer($data->id);
$this->layout()->set("adresse", $address);
$this->layout()->set("debug", "single address, only homeprovider");
$this->layout()->setTemplate("Check/Result/Success");
return true;
}*/
if(!is_resource($input)) {
return false;
}
$gem_kz = "";
$gem_name = "";
$ort_kz = "";
$plz_name = "";
$ort_name = "";
$strasse_building = "";
$strasse = "";
$hausnummer_name = "";
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
if($i == 1) continue;
//var_dump($csv);
if(trim($csv[0])) {
$gem_kz = trim($csv[0]);
$gem_name = trim($csv[1]);
$ort_kz = trim($csv[2]);
$plz_name = trim($csv[3]);
$ort_name = trim($csv[4]);
$strasse_building = trim($csv[5]);
$strasse_name = trim($csv[6]);
//echo "strasse: $strasse\n";
//echo "strasse_building: $strasse_building\n";
$hausnummer_name = preg_replace('/^'.$strasse_name.'\s+/', "", $strasse_building);
//echo "$strasse_name $hausnummer_name\n";
}
$strasse_we = trim($csv[7]);
$nutzung = trim($csv[8]);
$we_num = trim($csv[11]);
if(!$strasse_we) {
echo "Adresse Wohneinheit fehlt.\n";
continue;
}
//echo "strasse_we: $strasse_we\n";
if($strasse_building == $strasse_we) {
$addresszusatz = "";
} else {
$addresszusatz = preg_replace('/^'.$strasse_building.'\s+/', "", $strasse_we);
}
$hausnummer_zusatz = ADBWohneinheit::parseHausnummerZusatz($addresszusatz);
//var_dump($hausnummer_zusatz);
echo "$gem_name $plz_name $ort_name $strasse_name $hausnummer_name ";
foreach($hausnummer_zusatz as $key => $value) {
if($value) {
if($key == "zusatz") {
echo $value;
continue;
}
echo ucfirst($key)." ".$value;
}
}
echo " ($nutzung)\n";
$gemeinde = ADBGemeindeModel::getFirst(['kennziffer' => $gem_kz]);
if(!$gemeinde) {
$gemeinde = new ADBGemeinde();
$gemeinde->kennziffer = $gem_kz;
$gemeinde->code = $gem_kz;
$gemeinde->name = $gem_name;
$gemeinde_id = $gemeinde->save();
if(!$gemeinde_id) {
}
}
$ort = ADBOrtschaftModel::getFirst(['kennziffer' => $ort_kz]);
if(!$ort) {
$ort = new ADBOrtschaft();
$ort->gemeinde_id = $gemeinde->id;
$ort->kennziffer = $ort_kz;
$ort->name = $ort_name;
$ort->plz = $plz_name;
$ort_id = $ort->save();
if(!$ort_id) {
die("Error creating Ortschaft $ort_kz $ort_name!\n");
}
}
$plz = ADBPlzModel::getFirst(['gemeinde_id' => $gemeinde->id, 'plz' => $plz_name]);
if(!$plz) {
$plz = new ADBPlz();
$plz->gemeinde_id = $gemeinde->id;
$plz->plz = $plz_name;
$plz->plzstring = $plz_name;
$plz_id = $plz->save();
if(!$plz) {
die("Error creating Plz $plz_name!\n");
}
}
//var_dump($plz);exit;
$strasse = ADBStrasseModel::getFirst(['gemeinde_id' => $gemeinde->id, 'ortschaft_id' => $ort->id, 'name' => $strasse_name]);
if(!$strasse) {
$strasse = new ADBStrasse();
$strasse->ortschaft_id = $ort->id;
$strasse->gemeinde_id = $gemeinde->id;
$strasse->name = $strasse_name;
$strasse_id = $strasse->save();
if(!$strasse_id) {
die("error creating Strasse $strasse_name (gemeinde ".$gemeinde->id.", ort ".$ort->id.")");
}
}
//var_dump($strasse);exit;
$hausnummer = ADBHausnummerModel::getFirst(['strasse_id' => $strasse->id, 'hausnummer' => $hausnummer_name]);
if(!$hausnummer) {
$hausnummer = new ADBHausnummer();
$hausnummer->strasse_id = $strasse->id;
$hausnummer->hausnummer = $hausnummer_name;
$hausnummer_id = $hausnummer->save();
if(!$hausnummer_id) {
die("error creating Hausnummer $strasse_name $hausnummer_name");
}
}
//var_dump($hausnummer);exit;
$we_search = [
'hausnummer_id' => $hausnummer->id,
'num' => $we_num,
'block' => $hausnummer_zusatz['block'],
'stiege' => $hausnummer_zusatz['stiege'],
'stock' => $hausnummer_zusatz['stock'],
'tuer' => $hausnummer_zusatz['tuer'],
'zusatz' => $hausnummer_zusatz['zusatz'],
'nutzung' => $nutzung
];
/*if($hausnummer_name == "12a") {
var_dump($we_search);exit;
}*/
$wohneinheit = ADBWohneinheitModel::getFirst($we_search);
if(!$wohneinheit) {
$wohneinheit = new ADBWohneinheit();
$wohneinheit->hausnummer_id = $hausnummer->id;
$wohneinheit->num = $we_num;
$wohneinheit->block = ($hausnummer_zusatz['block']) ? $hausnummer_zusatz['block'] : null;
$wohneinheit->stiege = ($hausnummer_zusatz['stiege']) ? $hausnummer_zusatz['stiege'] : null;
$wohneinheit->stock = ($hausnummer_zusatz['stock']) ? $hausnummer_zusatz['stock'] : null;
$wohneinheit->tuer = ($hausnummer_zusatz['tuer']) ? $hausnummer_zusatz['tuer'] : null;
$wohneinheit->zusatz = ($hausnummer_zusatz['zusatz']) ? $hausnummer_zusatz['zusatz'] : null;
$wohneinheit->nutzung = $nutzung;
$wohneinheit_id = $wohneinheit->save();
if(!$wohneinheit_id) {
die("error creating Wohneinheit $strasse_name $hausnummer_name ".implode(", ", $hausnummer_zusatz));
}
} else {
echo "XXXX wohneinheit gibts schon: $strasse_name $hausnummer_name ".implode(", ", $hausnummer_zusatz)."\n\n";
}
/*if($i > 10) {
exit;
}*/
}
return true;
}
}

View File

@@ -0,0 +1,120 @@
<?php
class AddressdbApicontroller extends mfBaseApicontroller {
protected function init() {
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->addRoute("/addressdb/findAddress", "find", "POST");
$this->addRoute("/addressdb/findStreet", "findStreet", "POST");
$this->addRoute("/addressdb/findZip", "findZip", "POST");
$this->addRoute("/addressdb/findCity", "findCity", "POST");
}
protected function findCity() {
$search = $this->db()->escape($this->post['search']);
if(!$search) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
}
$results = ADBOrtschaftModel::search(['name%' => $search], ['count' => 20]);
$cities = [];
foreach($results as $result) {
$cities[] = $result->name;
}
$citiesv= array_unique($cities);
return mfResponse::Ok(['cities' => $cities]);
}
protected function findZip() {
$search = $this->db()->escape($this->post['search']);
if(!$search) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
}
$results = ADBPlzModel::search(['plzstring%' => $search], ['count' => 20]);
$zips = [];
foreach($results as $result) {
$zips[] = $result->plz;
}
$zips = array_unique($zips);
return mfResponse::Ok(['zips' => $zips]);
}
protected function findStreet() {
$search = $this->db()->escape($this->post['search']);
if(!$search) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
}
$results = ADBStrasseModel::search(['name%' => $search], ['count' => 20]);
$streets = [];
foreach($results as $result) {
$streets[] = $result->name;
}
$streets = array_unique($streets);
return mfResponse::Ok(['streets' => $streets]);
}
protected function find() {
$search_street = $this->db()->escape($this->post['street']);
$search_zip = $this->db()->escape($this->post['zip']);
$search_city = $this->db()->escape($this->post['city']);
$search_housenumber = $this->db()->escape($this->post['housenumber']);
if(!$search_street) {
return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]);
}
$addresses = [];
$where = "1 = 1";
if($search_zip) {
$where .= " AND plz like '%$search_zip%'";
}
if($search_city) {
$where .= " AND ortschaft like '%$search_city%'";
}
if($search_street) {
$where .= " AND strasse like '%$search_street%'";
}
if($search_housenumber) {
$where .= " AND hausnummer like '%$search_housenumber%'";
}
//$res = $this->db()->select("view_wohneinheit_plz", "*", $where);
$sql = "SELECT * FROM view_wohneinheit WHERE $where ORDER BY plz, ortschaft, strasse, LENGTH(hausnummer), hausnummer, block, stiege, stock, LENGTH(tuer), tuer LIMIT 20";
//echo $sql;exit;
$res = $this->db()->query($sql);
if($this->db()->num_rows($res)) {
while($data = $this->db()->fetch_object($res)) {
$addresses[] = [
'zip' => $data->plz,
'city' => $data->ortschaft,
'street' => $data->strasse,
'housenumber' => $data->hausnummer,
'block' => $data->block,
'stock' => $data->stock,
'stiege' => $data->stiege,
'tuer' => $data->tuer,
'zusatz' => $data->zusatz
];
}
}
return mfResponse::Ok(['addresses' => $addresses]);
}
}

View File

@@ -1,71 +0,0 @@
<?php
class OrtApicontroller extends mfBaseApicontroller {
protected function init() {
//$this->addRoute("/home/getAll", "getHomes", "GET");
$this->addRoute("/ort/find", "findOrt", "POST");
//$this->addRoute("/home/:oanid/products", "getHomeProducts", "GET");
}
protected function findOrt() {
$search = $this->post['search'];
if(!$search) {
return mfResponse::BadRequest(['message' => "Suchbegriff darf nicht leer sein!"]);
}
$orte = [];
$ag = new ADBGemeinde();
$results = $ag->find($search);
//var_dump($results);exit;
foreach($results as $result) {
if(is_array($result->plz) && count($result->plz)) {
foreach($result->plz as $plz) {
$orte[] = ['plz' => $plz->plzstring, 'ort' => $result->name];
}
}
}
return mfResponse::Ok(['orte' => $orte]);
}
/*
protected function getHomes() {
$homes = [];
foreach(HomeModel::search(['operationalstate_id' => [5,3]]) as $home) {
$homes[] = $home->getApiArray();
}
return mfResponse::Ok(['homes' => $homes]);
}*/
/*
protected function validateOan($oan_id) {
$home = new Home();
$home->loadByOan($oan_id);
if(!$home->id) {
return mfResponse::NotFound(['oan_d' => $oan_id, 'isValid' => false]);
}
return mfResponse::Ok(['oan_d' => $oan_id, 'isValid' => true]);
}*/
/*
protected function getHomeProducts($oanid) {
$home = new Home();
$home->loadByOan($oanid);
if(!$home->id) {
return mfResponse::NotFound(['message' => "Home not found"]);
}
$products = [];
foreach(ProductModel::search(['provider_id' => $this->me->provider_id]) as $product) {
$products[] = $product->getApiArray();
}
return mfResponse::Ok(["products" => $products]);
}*/
}

View File

@@ -26,14 +26,22 @@ class FronkDB {
public static function singleton($host=false,$user=false,$pass=false,$db=false) {
$instance_name = $host.$user.$db;
if(!isset(self::$instances[$instance_name])) {
if(!$instance_name) {
$instance_name = "default";
}
if(!isset(self::$instances[$instance_name])) {
//echo "new FronkDB instance $instance_name\n";
$c = __CLASS__;
self::$instances[$instance_name] = new $c($host,$user,$pass,$db);
}
} else {
//echo "existing FronkDB instance $instance_name\n";
}
return self::$instances[$instance_name];
}
private function connect() {
//echo "FronkDB connection to ".$this->host." (".$this->user.", ".$this->db.")\n";
if(!$this->link) {
$this->link=mysqli_connect($this->host,$this->user,$this->pass,$this->db) or die("Error connecting to database...".mysqli_error($this->link));
}

View File

@@ -347,16 +347,15 @@ class mfBaseApicontroller {
$this->mfDBI=FronkDB::singleton();
}
return $this->mfDBI;
} else {
// else return a new instance
var_dump($args);
$dbhost=$args[0];
$dbuser=$args[1];
$dbpass=$args[2];
$dbname=$args[3];
return $this->getNewDBInstance($dbhost,$dbuser,$dbpass,$dbname);
$this->mfDBI = $this->getNewDBInstance($dbhost,$dbuser,$dbpass,$dbname);
}
return $this->mfDBI;
}

View File

@@ -0,0 +1,56 @@
#!/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");
$me = new User(1);
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$db->select("Strasse", "*");
if(!$db->num_rows($res)) {
die("Keine Strassen gefunden\n");
}
//echo "!!num rows: ".$db->num_rows($res)."\n";
$streets = [];
$toDelete = [];
$i = 0;
$c = 0;
while($data = $db->fetch_object($res)) {
$idx = $data->name."--".$data->gemeinde_id;
//echo "$idx\n";
if(array_key_exists($idx, $streets)) {
$toDelete[] = $data->id;
//echo "!!num rows: ".$db->num_rows($res)."\n";
} else {
$streets[$idx] = $data->id;
}
$i++;
}
//var_dump(count($toDelete));exit;
foreach($toDelete as $id) {
$s = new ADBStrasse($id);
if($s->id === $id) {
$s->delete();
$c++;
}
}
echo "Deleted $c duplicate streets ($i).\n";

19
scripts/addressdb_import.php Executable file
View File

@@ -0,0 +1,19 @@
#!/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");
$me = new User(1);
$filename = BASEDIR."/scripts/import/agwr_premstaetten_sample_v2.csv";
$adb = new AddressDB();
$adb->import($filename);