[go: up one dir, main page]

Menu

[r4]: / omgm / db.php  Maximize  Restore  History

Download this file

169 lines (127 with data), 5.1 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<?php
include_once("define.php");
class Db{
private $dbLink;
function __construct(){
$this->connect();
}
function __destruct(){
@mysql_close($this->dbLink);
}
public function deleteMap($mapId){
$sql = "DELETE FROM omgm_maps WHERE id=$mapId";
$this->query($sql);
}
public function deleteAllTiles(){
$sql = "DELETE FROM omgm_tiles";
$this->query($sql);
}
public function deleteTilesByMap($mapId){
$sql = "DELETE FROM omgm_tiles WHERE mapId=$mapId";
$this->query($sql);
}
public function deleteTilesAtZoom($zoom){
$sql = "DELETE FROM omgm_tiles WHERE zoom=$zoom";
$this->query($sql);
}
public function setNumTiles(&$maps){
$sql = "SELECT mapId, count(id) FROM omgm_tiles GROUP BY mapId";
$res = $this->query($sql);
while( $row = mysql_fetch_row($res) ){
$map = $maps[$row[0]];
if($map){
$map["totalTiles"] = $row[1];
$maps[$map["id"]] = $map;
}
}
}
public function getTilesByName($tileX, $tileY){
$sql = "SELECT * FROM omgm_tiles WHERE tileX = $tileX AND tileY = $tileY ORDER BY mapId";
$res = $this->query($sql);
$tiles = array();
while( $row = mysql_fetch_assoc($res)){
$tiles[] = $row;
}
return $tiles;
}
public function getTiles($mapId){
$sql = "SELECT * FROM omgm_tiles WHERE mapId = $mapId ORDER BY zoom, tileX, tileY";
$res = $this->query($sql);
$tiles = array();
while( $row = mysql_fetch_assoc($res)){
$tiles[] = $row;
}
return $tiles;
}
public function getMaps($sortDesc = false){
$sort = "ASC";
if($sortDesc){
$sort = "DESC";
}
$sql = "SELECT * FROM omgm_maps ORDER BY addedDate ".$sort;
$res = $this->query($sql);
$maps = array();
while( $row = mysql_fetch_assoc($res)){
$maps[$row["id"]] = $row;
}
return $maps;
}
public function setUnmerged($mapId, $tileX, $tileY){
$sql = "UPDATE omgm_tiles SET duplicate=0 WHERE mapId=$mapId AND tileX=$tileX AND tileY=$tileY";
$res = $this->query($sql);
if(!$res){
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
}
public function setMerged($mapId, $tileX, $tileY){
$sql = "UPDATE omgm_tiles SET duplicate=1 WHERE mapId=$mapId AND tileX=$tileX AND tileY=$tileY";
$res = $this->query($sql);
if(!$res){
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
}
public function addTile($mapId, $zoom, $tileX, $tileY){
$sql = "INSERT INTO omgm_tiles ";
$sql .= "(mapId, zoom, tileX, tileY, duplicate) ";
$sql .= "VALUES($mapId,$zoom,$tileX,$tileY,0)";
$res = $this->query($sql);
if(!$res){
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
}
public function addMap($bbox, $data){
$sql = "INSERT INTO omgm_maps ";
$sql .= "(name,epsg,contactName,contactInfo,addedDate,addedIp,south,west,north,east) ";
$sql .= "VALUES('".$data["name"]."', ".$data["epsg"].", '".$data["contactName"]."', ";
$sql .= "'".$data["contactInfo"]."', '".date("Y-m-d H:i:s",time())."', ";
$sql .= "'".$_SERVER["REMOTE_ADDR"]."',".$bbox["LL"]["LAT"].",".$bbox["LL"]["LNG"].",";
$sql .= $bbox["UR"]["LAT"].",".$bbox["UR"]["LNG"].")";
$res = $this->query($sql);
if(!$res){
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
$id = mysql_insert_id($this->dbLink);
return $id;
}
private function query($sql){
return @mysql_query($sql, $this->dbLink);
}
private function connect(){
$this->dbLink = mysql_connect(OMGMDBHOST, OMGMDBUSER, OMGMDBPASSWD)
or die("Unable to connect to SQL server. " . mysql_error());;
mysql_select_db(OMGMDB) or die("Unable to select database. " . mysql_error());
$create_table_query = "CREATE TABLE IF NOT EXISTS `omgm_maps` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(30) default NULL, `epsg` mediumint(8) unsigned NOT NULL, `contactName` varchar(35) default NULL, `contactInfo` varchar(50) default NULL, `addedDate` datetime NOT NULL, `addedIp` varchar(27) NOT NULL, `south` double NOT NULL, `west` double NOT NULL, `north` double NOT NULL, `east` double NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=48;";
mysql_query($create_table_query);
$create_table_query = "CREATE TABLE IF NOT EXISTS `omgm_tiles` ( `id` bigint(20) unsigned NOT NULL auto_increment, `mapId` mediumint(8) unsigned NOT NULL, `zoom` tinyint(3) unsigned NOT NULL, `tileX` int(11) NOT NULL, `tileY` int(11) NOT NULL, `duplicate` bit(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=19131;";
mysql_query($create_table_query);
}
}
?>