dbconn = $dbconn; $this->owner_id = $owner_id; } function create($data) { $sql = "INSERT INTO PUBLIC." .$this->table_name." (name,description,owner_id) "."VALUES('". $this->cleanData($data['name'])."','". $this->cleanData($data['description'])."',".$this->owner_id.") RETURNING id"; $result = pg_query($this->dbconn, $sql); if(!$result){ return 0; } $row = pg_fetch_object($result); pg_free_result($result); if($row) { # insert into access groups $values = array(); foreach($data['accgrps'] as $group_id){ array_push($values, "(".$group_id.",".$row->id.")"); } $sql = "insert into public.map_access (access_group_id,map_id) values ".implode(',', $values); $ret = pg_query($this->dbconn, $sql); return $row->id; } return 0; //return pg_affected_rows(pg_query($this->dbconn, $sql)); } function getRows(){ $sql ="select * from public." .$this->table_name; if($this->owner_id != SUPER_ADMIN_ID){ $sql .= " WHERE owner_id = ".$this->owner_id; } $sql .= " ORDER BY id DESC"; return pg_query($this->dbconn, $sql); } function getById($id){ $sql ="select * from public." .$this->table_name . " where id='".intval($id)."'"; return pg_query($this->dbconn, $sql); } function getBy($k, $v){ $sql ="select * from public." .$this->table_name . " where ".$k."='".$v."'"; return pg_query($this->dbconn, $sql); } function getAccessGroups($id){ $rv = array(); $sql ="select id,name from public.access_groups WHERE id in (SELECT access_group_id from public.map_access where map_id='".intval($id)."')"; $result = pg_query($this->dbconn, $sql); while ($row = pg_fetch_assoc($result)) { $rv[$row['id']] = $row['name']; } return $rv; } function chainExec($sqls){ for($i=0; $i < count($sqls); $i++){ $result = pg_query($this->dbconn, $sqls[$i]); if(!$result) { return false; } $success = (pg_affected_rows($result) >= 0); pg_free_result($result); if(!$success){ return false; } } return true; } function delete($id) { $sqls = array( "delete from public.map_access where map_id='".intval($id)."'", "delete from public." .$this->table_name . " where id='".intval($id)."'"); return $this->chainExec($sqls); } function update($data) { # insert access groups $values = array(); foreach($data['accgrps'] as $group_id){ array_push($values, "(".$group_id.",".$data['id'].")"); } $sqls = array( "update public.".$this->table_name." set name='". $this->cleanData($data['name'])."', description='". $this->cleanData($data['description'])."' where id = '".intval($data['id'])."' ", "delete from public.map_access where map_id=".$data['id'], "insert into public.map_access (access_group_id,map_id) values ".implode(',', $values) ); return $this->chainExec($sqls); } function isOwnedByUs($id){ if($this->owner_id == SUPER_ADMIN_ID){ // if Super Admin return true; } $sql = "select * from public.".$this->table_name." where id=".$id." and owner_id=".$this->owner_id; $result = pg_query($this->dbconn, $sql); if(!$result){ return false; } $rv = (pg_num_rows($result) > 0); pg_free_result($result); return $rv; } function cleanData($val) { return pg_escape_string($this->dbconn, $val); } }