2 namespace callnotifier;
4 class CallMonitor_Detailler_OpenGeoDb implements CallMonitor_Detailler
8 public function __construct()
11 'mysql:host=dojo;dbname=opengeodb',
15 \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
16 \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC
21 public function loadCallDetails(CallMonitor_Call $call)
23 if ($call->type == CallMonitor_Call::INCOMING) {
24 $call->fromLocation = $this->loadLocation($call->from);
26 $call->toLocation = $this->loadLocation($call->to);
30 protected function loadLocation($number)
32 //area codes in germany can be 3 to 6 numbers
33 //FIXME: what about international numbers?
34 for ($n = 3; $n <= 6; $n++) {
35 $areacode = substr($number, 0, $n);
36 $name = $this->getNameForAreaCode($areacode);
45 protected function getNameForAreaCode($areacode)
47 $stm = $this->db->query(
48 'SELECT loc_id FROM geodb_textdata'
49 . ' WHERE text_type = "500400000"'//area code
50 . ' AND text_val = ' . $this->db->quote($areacode)
54 //area code does not exist
58 $locId = $res['loc_id'];
59 $stm = $this->db->query(
60 'SELECT text_val FROM geodb_textdata'
61 . ' WHERE text_type = "500100000"'//name
62 . ' AND loc_id = ' . $this->db->quote($locId)
69 return $res['text_val'];