$this->_execute_query ($query);
}
- public function setpwd ($user_name, $pwd) {
+ public function user_exists ($user_name) {
$usrname_escaped = mysql_real_escape_string ($user_name);
$query = sprintf ("SELECT COUNT(*) FROM %susers WHERE name LIKE '%s';",
$this->dbprefix, $usrname_escaped);
$res = mysql_fetch_array ($this->_execute_query ($query), MYSQL_NUM);
- if ($res [0] == 1) {
+ return ($res [0] == 1);
+ }
+
+ public function setpwd ($user_name, $pwd) {
+ $usrname_escaped = mysql_real_escape_string ($user_name);
+ if ($this->user_exists ($user_name)) {
$query = sprintf ("UPDATE %susers SET pwd='%s' WHERE name like '%s';",
- $this->dbprefix, md5 ($pwd), $usrname_escaped);
+ $this->dbprefix, md5 ($pwd), $usrname_escaped);
} else {
$query = sprintf ("INSERT INTO %susers VALUES ('%s', '%s');",
$this->dbprefix, $usrname_escaped, md5 ($pwd));
$query = sprintf ("INSERT INTO %sitems
(imgpath, title, description, location, date, user)
VALUES ('%s', '%s', '%s',
- GeomFromText('POINT(%s %s)'), NOW(), 'admin')",
+ GeomFromText('POINT(%s %s)'), NOW(), '%s')",
$this->dbprefix,
mysql_real_escape_string ($feature->imgpath),
mysql_real_escape_string ($feature->title),
mysql_real_escape_string ($feature->description),
$feature->lon,
- $feature->lat
+ $feature->lat,
+ mysql_real_escape_string ($feature->user)
);
$this->_execute_query ($query);
$id = mysql_insert_id ();
return new feature ($id, $feature->lon, $feature->lat,
$feature->imgpath, $feature->title,
- $feature->description);
+ $feature->description, $feature->date,
+ $feature->user);
}
}
public function getfeature ($id) {
$query = sprintf ("SELECT id, imgpath, title, description, AsText(location)
- AS location FROM %sitems WHERE id = '%s';",
+ AS location, UNIX_TIMESTAMP(date) AS date, user
+ FROM %sitems WHERE id = '%s';",
$this->dbprefix, mysql_real_escape_string ($id));
$row = mysql_fetch_assoc ($this->_execute_query ($query));
if ($row === false) {
return $this->_feature_frow_row ($row);
}
- public function listfeatures () {
+ public function listfeatures ($user) {
+ if ($user && ($user != "admin")) {
+ $from_user_query = sprintf (" WHERE user = '%s' ",
+ mysql_real_escape_string ($user));
+ } else {
+ $from_user_query = "";
+ }
+
$query = sprintf ("SELECT id, imgpath, title, description, AsText(location)
- AS location FROM %sitems;",
- $this->dbprefix);
+ AS location, UNIX_TIMESTAMP(date) AS date, user
+ FROM %sitems %s;",
+ $this->dbprefix, $from_user_query);
$features = array ();
$res = $this->_execute_query ($query);
return $features;
}
+ public function mostrecentfeatures ($num_features) {
+ $query = sprintf ("SELECT id, imgpath, title, description,
+ AsText(location) AS location, UNIX_TIMESTAMP(date)
+ AS date, user FROM %sitems ORDER BY date DESC",
+ $this->dbprefix);
+ if ($num_features) {
+ $query .= sprintf (" LIMIT %d", $num_features);
+ }
+ $features = array ();
+ $res = $this->_execute_query ($query);
+ while ($row = mysql_fetch_assoc ($res)) {
+ $feature = $this->_feature_frow_row ($row);
+ if (isset ($feature)) {
+ $features[] = $feature;
+ }
+ }
+ return $features;
+ }
+
public function imgpath_exists ($imgpath) {
$query = sprintf ("SELECT COUNT(*) FROM %sitems WHERE imgpath LIKE '%s';",
$this->dbprefix, mysql_real_escape_string ($imgpath));
return ($res [0] >= 1) ? true : false;
}
- public function mbr () {
- $maxlon = -180;
- $minlon = 180;
- $maxlat = -88;
- $minlat = 88;
-
- if (!$this->link) {
- return array ($minlon, $minlat, $maxlon, $maxlat);
- }
- try {
- $features = $this->listfeatures ();
- } catch (Exception $e) {
- return array ($minlon, $minlat, $maxlon, $maxlat);
- }
-
- if (count ($features) == 0) {
- return array ($minlon, $minlat, $maxlon, $maxlat);
- } else if (count ($features) == 1) {
- // in case there's only one feature, we show an area of at least
- // 4 x 4 degrees
- $feature = $features [0];
-
- $minlon = max ($feature->lon - 2, -180);
- $maxlon = min ($feature->lon + 2, 180);
- $minlat = max ($feature->lat - 2, -90);
- $maxlat = min ($feature->lat + 2, 90);
-
- return array ($minlon, $minlat, $maxlon, $maxlat);
- } else {
- foreach ($features as $feature) {
- $minlon = min ($feature->lon, $minlon);
- $minlat = min ($feature->lat, $minlat);
- $maxlon = max ($feature->lon, $maxlon);
- $maxlat = max ($feature->lat, $maxlat);
- }
-
- return array ($minlon, $minlat, $maxlon, $maxlat);
- }
- }
-
public function getdbname () {
return "Mysql";
}
$lat = $matches [2];
try {
$feature = new feature ($row ["id"], $lon, $lat, $row ["imgpath"],
- $row ["title"], $row ["description"]);
+ $row ["title"], $row ["description"],
+ $row ["date"], $row ["user"]);
} catch (Exception $e) {
return null;
}