Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / examples / restful / remote / lib / model.php
diff --git a/examples/restful/remote/lib/model.php b/examples/restful/remote/lib/model.php
new file mode 100644 (file)
index 0000000..cf0ef2f
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * @class Model
+ * Baseclass for Models in this imaginary ORM
+ */
+class Model {
+    public $id, $attributes;
+    static function create($params) {
+        $obj = new self($params);
+        $obj->save();
+        return $obj;
+    }
+    static function find($id) {
+        global $dbh;
+        $found = null;
+        foreach ($dbh->rs() as $rec) {
+            if ($rec['id'] == $id) {
+                $found = new self($rec);
+                break;
+            }
+        }
+        return $found;
+    }
+    static function update($id, $params) {
+        global $dbh;
+        $rec = self::find($id);
+        if ($rec == null) {
+            return $rec;
+        }
+        $rs = $dbh->rs();
+        foreach ($rs as $idx => $row) {
+            if ($row['id'] == $id) {
+                $rec->attributes = array_merge($rec->attributes, $params);
+                $dbh->update($idx, $rec->attributes);
+                break;
+            }
+        }
+        return $rec;
+    }
+    static function destroy($id) {
+        global $dbh;
+        $rec = null;
+        $rs = $dbh->rs();
+        foreach ($rs as $idx => $row) {
+            if ($row['id'] == $id) {
+                $rec = new self($dbh->destroy($idx));
+                break;
+            }
+        }
+        return $rec;
+    }
+    static function all() {
+        global $dbh;
+        return $dbh->rs();
+    }
+
+    public function __construct($params) {
+        $this->id = $params["id"] || null;
+        $this->attributes = $params;
+    }
+    public function save() {
+        global $dbh;
+        $this->attributes['id'] = $dbh->pk();
+        $dbh->insert($this->attributes);
+    }
+    public function to_hash() {
+        return $this->attributes;
+    }
+}
+