fieldname, $this->fieldvalue, $this->tablename, $this->fieldvalue)) ->fetchAll(PDO::FETCH_NUM) as $row) { $res[$row[0]] = array( 'name' => $row[0], 'value' => $row[1], 'deleted' => $row[2] == '1' ? true : false ); } } else { foreach (MTrackDB::q(sprintf("select %s from %s where deleted != '1'", $this->fieldname, $this->tablename))->fetchAll(PDO::FETCH_NUM) as $row) { $res[$row[0]] = $row[0]; } } return $res; } function __construct($name = null) { if ($name !== null) { list($row) = MTrackDB::q(sprintf( "select %s, deleted from %s where %s = ?", $this->fieldvalue, $this->tablename, $this->fieldname), $name) ->fetchAll(); if (isset($row[0])) { $this->name = $name; $this->value = $row[0]; $this->deleted = $row[1]; $this->new = false; return; } throw new Exception("unable to find $this->tablename with name = $name"); } $this->deleted = false; } function save(MTrackChangeset $CS) { if ($this->new) { MTrackDB::q(sprintf('insert into %s (%s, %s, deleted) values (?, ?, ?)', $this->tablename, $this->fieldname, $this->fieldvalue), $this->name, $this->value, (int)$this->deleted); $old = null; } else { list($row) = MTrackDB::q( sprintf('select %s, deleted from %s where %s = ?', $this->fieldname, $this->tablename, $this->fieldvalue), $this->name)->fetchAll(); $old = $row[0]; MTrackDB::q(sprintf('update %s set %s = ?, deleted = ? where %s = ?', $this->tablename, $this->fieldvalue, $this->fieldname), $this->value, (int)$this->deleted, $this->name); } $CS->add($this->tablename . ":" . $this->name . ":" . $this->fieldvalue, $old, $this->value); } } /// various enumerations..