]> dev.renevier.net Git - syp.git/blobdiff - inc/db/mysql.php
multi user administration
[syp.git] / inc / db / mysql.php
index 8e3fcf85394d618b97c7d1bbd4e68e8ee7abf859..043e86d7818b853cd84951f4ae1ec9352e8cd5cf 100644 (file)
@@ -107,20 +107,22 @@ class mysqlConnection implements anydbConnection {
               $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->date);
+                                    $feature->description, $feature->date,
+                                    $feature->user);
         }
     }
 
@@ -134,8 +136,8 @@ class mysqlConnection implements anydbConnection {
 
     public function getfeature ($id) {
         $query = sprintf ("SELECT id, imgpath, title, description, AsText(location)
-                           AS location, UNIX_TIMESTAMP(date) AS date 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) {
@@ -144,10 +146,18 @@ class mysqlConnection implements anydbConnection {
         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, UNIX_TIMESTAMP(date) AS date 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);
@@ -163,7 +173,7 @@ class mysqlConnection implements anydbConnection {
     public function mostrecentfeatures ($num_features) {
         $query = sprintf ("SELECT id, imgpath, title, description,
                            AsText(location) AS location, UNIX_TIMESTAMP(date)
-                           AS date FROM %sitems ORDER BY date DESC",
+                           AS date, user FROM %sitems ORDER BY date DESC",
                            $this->dbprefix);
         if ($num_features) {
             $query .= sprintf (" LIMIT %d", $num_features);
@@ -186,46 +196,6 @@ class mysqlConnection implements anydbConnection {
         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";
     }
@@ -247,7 +217,7 @@ class mysqlConnection implements anydbConnection {
         try {
             $feature = new feature ($row ["id"], $lon, $lat, $row ["imgpath"],
                                     $row ["title"], $row ["description"],
-                                    $row ["date"]);
+                                    $row ["date"], $row ["user"]);
         } catch (Exception $e) {
             return null;
         }