2e004ad39db52c2ac05e34ca81a392a272b0dce7
bernd Ein paar neue Klassen

bernd authored 17 years ago

1) <?php
2) 
3) require_once('inc/db_connect.php');
4) require_once('inc/base.php');
5) require_once('inc/debug.php');
6) 
7) 
8) abstract class KeksData
9) {
10)   protected $default_table;
11)   
bernd Cookie einen eindeutigen Na...

bernd authored 17 years ago

12)   protected $raw_data = array();
bernd Ein paar neue Klassen

bernd authored 17 years ago

13)   protected $data = array();
bernd Cookie einen eindeutigen Na...

bernd authored 17 years ago

14)   protected $changes = array();
bernd Ein paar neue Klassen

bernd authored 17 years ago

15) 
16)   function __get($key)
17)   {
18)     if (array_key_exists($key, $this->data))
19)       return $this->data[$key];
20)     elseif (isset($this->$key))
21)       return $this->$key;
22)     // else werfe fehler
23)   }
24) 
25)   function __set($key, $value)
26)   {
bernd Cookie einen eindeutigen Na...

bernd authored 17 years ago

27)     if (array_key_exists($key, $this->raw_data))
28)     {
29)       $this->raw_data[$key] = $value;
30)       $this->changes[$key] = $value;
31)       $this->parse($this->raw_data);
32)     }
33)     elseif (array_key_exists($key, $this->data))
34)       return false;
bernd Ein paar neue Klassen

bernd authored 17 years ago

35)     elseif (isset($this->$key))
36)       $this->$key = $value;
37)     else
38)       $this->data[$key] = $value;
39)   }
40) 
41)   protected function setup()
42)   {
43)     $fields = array();
44)     $res = db_query("DESCRIBE {$this->default_table}");
45)     while ($f = mysql_fetch_object($res))
46)     {
47)       $fields[$f->Field] = $f->Default;
48)     }
49)     $this->data = $fields;
bernd Domain-Klasse benutzen

bernd authored 17 years ago

50)     $this->data['id'] = NULL;
bernd Ein paar neue Klassen

bernd authored 17 years ago

51)   }
52) 
53) 
54)   function getData($fields, $restriction = NULL, $table = NULL)
55)   {
56)     $where = '';
57)     if ($restriction)
58)       $where = 'WHERE '.$restriction;
59)     if (! $table)
60)       $table = $this->default_table;
61)     if (is_array($fields))
62)       $fields = implode(',', $fields);
63)     
64)     $res = db_query("SELECT {$fields} FROM {$table} {$where}");
65)     $return = array();
66)     while ($arr = mysql_fetch_assoc($res))
67)       array_push($return, $arr);
68)     return $return;
69)   }
70) 
71) 
72)   function loadByID($id)
73)   {
74)     $id = (int) $id;
bernd Cookie einen eindeutigen Na...

bernd authored 17 years ago

75)     DEBUG("requested to load ID »{$id}«");
bernd Ein paar neue Klassen

bernd authored 17 years ago

76)     $res = $this->getData('*', "id={$id} LIMIT 1");
bernd Domain-Klasse benutzen

bernd authored 17 years ago

77)     if (count($res) < 1)
78)       return false;
bernd Ein paar neue Klassen

bernd authored 17 years ago

79)     $this->parse($res[0]);
80)   }
81) 
82) 
bernd Cookie einen eindeutigen Na...

bernd authored 17 years ago

83)   function save()
84)   {
85)     $upd = array();
86)     foreach ($this->changes as $key => $value)
87)     {
88)       $value = mysql_real_escape_string($value);
89)       array_push($upd, "`{$key}`='{$value}'");
90)     }
91)     db_query("UPDATE {$this->default_table} SET ".implode(', ', $upd)." WHERE id={$this->data['id']};");
92)   }
93)