table = $table; if ($column_or_db && is_object($column_or_db)) { $this->db = $column_or_db; $col = $column; } else { $this->db = $db; $col = $column_or_db; } if ($id && !$col) $this->load($id); if ($id && $col) $this->loadByColumn($id,$col); $path = substr($_SERVER['HTTP_REFERER'], strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'])+strlen($_SERVER['SERVER_NAME'])+1); $pos = 0; $this->rootPath = ''; while (($pos = strpos($path, '/', $pos)) !== false) { $this->rootPath .= '../'; $pos++; } } protected function postLoad() {} protected function load($id) { $sql = sprintf("SELECT * FROM %s WHERE %s = %d LIMIT 1", $this->table, $this->idcolumn, $id); $this->data = $this->db->fetchObject($sql); if ($this->data) { $idcolumn = $this->idcolumn; $this->id = $this->data->$idcolumn; $this->postLoad(); return true; } return false; } protected function loadByColumn($id,$column) { $sql = sprintf("SELECT * FROM %s WHERE %s = %s", $this->table, $column, $this->db->quote($id)); $this->data = $this->db->fetchObject($sql); if ($this->data) { $idcolumn = $this->idcolumn; $this->id = $this->data->$idcolumn; $this->postLoad(); } } public function id() { return $this->id; } public function fetch() { return $this->data; } public function modify($column, $value=false, $id=false) { if (!is_array($column) && $value !== false) $column = array($column => $value); elseif (!is_array($column) || $value !== false) throw Exception('modify called with wrong parameters'); if ($this->db->update($this->table, $column, $this->idcolumn.'='.($id === false ? $this->id : $id))) return $id === false ? $this->load($this->id) : true; else return false; } public function delete($id=false) { $this->db->delete($this->table, $this->idcolumn, $id === false ? $this->id : $id); } public function getAttribute($attr) { if ($this->data === false) return NULL; if (property_exists($this->data, $attr)) return $this->data->$attr; return NULL; } public function quote($string) { return $this->db->quote($string); } public function execute($sql) { return $this->db->execute($sql); } public function fetchValue($sql) { return $this->db->fetchValue($sql); } public function fetchAssoc($sql) { return $this->db->fetchAssoc($sql); } public function fetchAssocList($sql) { return $this->db->fetchAssocList($sql); } public function fetchObject($sql) { return $this->db->fetchObject($sql); } public function fetchObjectList($sql) { return $this->db->fetchObjectList($sql); } }