public function version_position_table($table, $version = null) { if (is_null($version)) { $version = versions_helper::get_version(); } $db = new Database(); $vs = new Database_Expression('(SELECT max(version) AS version FROM ' . $table . '_store LIMIT 1)'); $r = $db->where('version', $vs)->get($table . '_store')->as_array(false); foreach ($r as $p) { unset($p['id']); $p['version'] = $version; $db->insert($table . '_store', $p); } $sql = "CREATE OR REPLACE VIEW " . $table . " AS (SELECT * FROM " . $table . "_store WHERE version=" . $version . ")"; $db->query($sql); }
/** * delete * * @return void * @author Andy Bennett */ public function delete() { $pos = ORM::factory($this->object_plural . '_position')->where($this->object_name . '_id', $this->id)->find(); $ids = $pos->delete_which(); $version = versions_helper::get_version(); $db = new Database(); foreach ($ids as $id) { $tmp = $db->getwhere($this->table_name, array('id' => $id->{$this->object_name . '_id'}))->as_array(false); if (count($tmp)) { $arr = current($tmp); unset($arr['id']); $arr['state'] = 'D'; $arr['version'] = $version; $db->insert($this->table_name, $arr); } } $pos->delete($version); return $this->clear(); }
/** * delete * * @return void * @author Andy Bennett */ public function delete() { $model = ORM::factory($this->object_name); foreach ($this->as_array() as $k => $v) { if ($k == 'id') { continue; } $model->{$k} = $v; } $model->state = 'D'; $model->version = versions_helper::get_version(); $model->save(true); return $this->clear(); }