1 <?php # vim:ts=2:sw=2:et:
2 /* For licensing and copyright terms, see the file named LICENSE */
4 class MTrackChangeset {
12 /* used by the import script to allow batching */
13 static $use_txn = true;
15 static function get($cid) {
16 foreach (MTrackDB::q('select * from changes where cid = ?', $cid)
17 ->fetchAll() as $row) {
18 $CS = new MTrackChangeset;
20 $CS->who = $row['who'];
21 $CS->object = $row['object'];
22 $CS->reason = $row['reason'];
23 $CS->when = $row['changedate'];
26 throw new Exception("invalid changeset id $cid");
29 static function begin($object, $reason = '', $when = null) {
30 $CS = new MTrackChangeset;
32 $db = MTrackDB::get();
34 $db->beginTransaction();
37 $CS->who = MTrackAuth::whoami();
38 $CS->object = $object;
39 $CS->reason = $reason;
42 $CS->when = MTrackDB::unixtime(time());
44 "INSERT INTO changes (who, object, reason, changedate)
46 $CS->who, $CS->object, $CS->reason, $CS->when);
48 $CS->when = MTrackDB::unixtime($when);
50 "INSERT INTO changes (who, object, reason, changedate)
52 $CS->who, $CS->object, $CS->reason, $CS->when);
55 $CS->cid = MTrackDB::lastInsertId('changes', 'cid');
62 if ($this->count == 0) {
63 // throw new Exception("no changes were made as part of this changeset");
66 $db = MTrackDB::get();
71 function addentry($fieldname, $action, $old, $value = null)
73 MTrackDB::q("INSERT INTO change_audit
74 (cid, fieldname, action, oldvalue, value)
75 VALUES (?, ?, ?, ?, ?)",
76 $this->cid, $fieldname, $action, $old, $value);
80 function add($fieldname, $old, $new)
86 $this->addentry($fieldname, 'set', $old, $new);
90 $this->addentry($fieldname, 'deleted', $old, $new);
93 $this->addentry($fieldname, 'changed', $old, $new);
96 function setObject($object)
98 $this->object = $object;
99 MTrackDB::q('update changes set object = ? where cid = ?',
100 $this->object, $this->cid);
103 function setReason($reason)
105 $this->reason = $reason;
106 MTrackDB::q('update changes set reason = ? where cid = ?',
107 $this->reason, $this->cid);