136 lines
3.3 KiB
PHP
136 lines
3.3 KiB
PHP
<?php
|
|
|
|
class ADBWohneinheit extends mfBaseModel {
|
|
private $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;
|
|
}*/
|
|
|
|
|
|
public function getProperty($name) {
|
|
if($this->$name == null) {
|
|
|
|
if($name == "hausnummer") {
|
|
$this->hausnummer = new ADBHausnummer($this->hausnummer_id);
|
|
return $this->hausnummer;
|
|
}
|
|
|
|
$classname = ucfirst($name);
|
|
$idfield = $name."_id";
|
|
$this->$name = new $classname($this->$idfield);
|
|
|
|
if($this->$name->id) {
|
|
return $this->$name;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return $this->$name;
|
|
}
|
|
|
|
public function __toString() {
|
|
$parts = [];
|
|
if($this->block) {
|
|
$parts[] = "Block ".$this->block;
|
|
}
|
|
if($this->stiege) {
|
|
$parts[] = "Stiege ".$this->stiege;
|
|
}
|
|
if($this->stock) {
|
|
if(is_numeric($this->stock)) {
|
|
$parts[] = $this->stock.". Stock";
|
|
} elseif(preg_match('/^(erdgescho(ss|ß)|parterre)$/i', $this->stock)) {
|
|
$parts[] = "Erdgeschoss";
|
|
} else {
|
|
$parts[] = "Stock ".$this->stock;
|
|
}
|
|
}
|
|
if($this->tuer) {
|
|
$parts[] = "Tür ".$this->tuer;
|
|
}
|
|
if($this->zusatz) {
|
|
$parts[] = $this->zusatz;
|
|
}
|
|
return implode(" ", $parts);
|
|
}
|
|
}
|