4 class MTrackEnumeration {
11 public $deleted = null;
14 function enumerate($all = false) {
17 foreach (MTrackDB::q(sprintf("select %s, %s, deleted from %s order by %s",
18 $this->fieldname, $this->fieldvalue, $this->tablename,
20 ->fetchAll(PDO::FETCH_NUM)
22 $res[$row[0]] = array(
25 'deleted' => $row[2] == '1' ? true : false
29 foreach (MTrackDB::q(sprintf("select %s from %s where deleted != '1'",
30 $this->fieldname, $this->tablename))->fetchAll(PDO::FETCH_NUM)
32 $res[$row[0]] = $row[0];
38 function __construct($name = null) {
40 list($row) = MTrackDB::q(sprintf(
41 "select %s, deleted from %s where %s = ?",
42 $this->fieldvalue, $this->tablename, $this->fieldname),
47 $this->value = $row[0];
48 $this->deleted = $row[1];
52 throw new Exception("unable to find $this->tablename with name = $name");
55 $this->deleted = false;
58 function save(MTrackChangeset $CS) {
60 MTrackDB::q(sprintf('insert into %s (%s, %s, deleted) values (?, ?, ?)',
61 $this->tablename, $this->fieldname, $this->fieldvalue),
62 $this->name, $this->value, (int)$this->deleted);
65 list($row) = MTrackDB::q(
66 sprintf('select %s, deleted from %s where %s = ?',
67 $this->fieldname, $this->tablename, $this->fieldvalue),
68 $this->name)->fetchAll();
70 MTrackDB::q(sprintf('update %s set %s = ?, deleted = ? where %s = ?',
71 $this->tablename, $this->fieldvalue, $this->fieldname),
72 $this->value, (int)$this->deleted, $this->name);
74 $CS->add($this->tablename . ":" . $this->name . ":" . $this->fieldvalue,
81 /// various enumerations..