- Added before and after changes so we can array_diff_assoc() them to see individual changes
- Updated history viewer so we can see changes
$db->query("DELETE FROM " . TABLE_PREFIX . "attachment WHERE attachmentid = $attachment[attachmentid]");
+ log_action($bug['bugid'], 'log_kill_attachment', array($attachment['attachmentid']));
+
echo "<a href=\"showreport.php?bugid=$bug[bugid]\">attachment removed</a>";
}
)"
);
+ $attachmentid = $db->insert_id();
+ log_action($bug['bugid'], 'log_new_attachment', array($FILE['name'], $attachmentid));
+
// mark obsoletes
$obsoletes = $_POST['obsoletes'];
array_walk($obsoletes, 'intval');
$db->query("UPDATE " . TABLE_PREFIX . "attachment SET obsolete = 1 WHERE attachmentid IN (" . implode(',', $obsoletes) . ") AND !obsolete AND bugid = $bug[bugid]");
+ log_action($bug['bugid'], 'log_mark_obsoletes', array($attachmentid, $FILE['name'], implode(', ', $obsoletes)));
+
// handle comment stuff
if (can_perform('canpostcomments') AND trim($bugsys->in['comment']))
{
'" . nl2br($bugsys->in['comment_parsed']) . "'
)"
);
+
+ $commentid = $db->insert_id();
+
+ log_action($bug['bugid'], 'log_new_attachment_comment', array($attachmentid, $commentid));
}
// update the last post data
$db->query("UPDATE " . TABLE_PREFIX . "bug SET lastposttime = $time, lastpostby = " . $bugsys->userinfo['userid'] . " WHERE bugid = $bug[bugid]");
echo "<a href=\"showreport.php?bugid=$bug[bugid]\">attachment added</a>";
-
}
// ###################################################################
WHERE attachmentid = " . intval($bugsys->in['attachmentid'])
);
+ $hist[1] = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "attachment WHERE attachmentid = $attachment[attachmentid]");
+
+ $diff[0] = array_diff_assoc($attachment, $hist[1]);
+ $diff[1] = array_diff_assoc($hist[1], $attachment);
+
+ log_action($bug['bugid'], 'log_update_attachment', array($attachment['attachmentid'], intval($bugsys->in['obsolete'])));
+
echo "<a href=\"showreport.php?bugid=$bug[bugid]\">attachment updated</a>";
}
`userid` INT(10) UNSIGNED NOT NULL,
`language` VARCHAR(255) NOT NULL,
`arguments` MEDIUMTEXT NOT NULL,
+ `original` MEDIUMTEXT NOT NULL,
+ `changed` MEDIUMTEXT NOT NULL,
PRIMARY KEY (`historyid`)
);
\ No newline at end of file
WHERE commentid = $comment[commentid]"
);
+ log_action($bug['bugid'], 'log_update_comment', array($comment['commentid']));
+
echo "<a href=\"showreport.php?bugid=$bug[bugid]\">comment saved</a>";
}
exit;
}
+ $hist[0] = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = $bug[bugid]");
+
$db->query("
UPDATE " . TABLE_PREFIX . "bug
SET summary = '" . $bugsys->in['summary'] . "',
WHERE bugid = $bug[bugid]"
);
+ $hist[1] = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = $bug[bugid]");
+
+ $diff[0] = array_diff_assoc($hist[0], $hist[1]);
+ $diff[1] = array_diff_assoc($hist[1], $hist[0]);
+
+ log_action($bug['bugid'], 'log_update_bug', array(), $diff[0], $diff[1]);
+
if (!$bugsys->in['firstcomment'])
{
echo 'you need to enter some text in the first comment';
}
// ######################### Start log_action ########################
-function log_action($bugid, $language, $arguments)
+function log_action($bugid, $language, $arguments, $original = array(), $changed = array())
{
global $bugsys;
$bugsys->db->query("
INSERT INTO " . TABLE_PREFIX . "history
- (bugid, dateline, userid, language, arguments)
+ (bugid, dateline, userid, language, arguments, original, changed)
VALUES
(" . intval($bugid) . ", " . time() . ", " . $bugsys->userinfo['userid'] . ",
- '" . $bugsys->escape($language) . "', '" . $bugsys->escape(serialize($arguments)) . "'
+ '" . $bugsys->escape($language) . "', '" . $bugsys->escape(serialize($arguments)) . "',
+ '" . $bugsys->escape(serialize($original)) . "', '" . $bugsys->escape(serialize($changed)) . "'
)"
);
}
$log['formatted'] = call_user_func_array('phrase', array_merge(array($log['language']), unserialize($log['arguments'])));
$log['date'] = datelike('standard', $log['dateline']);
$log['user'] = construct_user_display($log);
+
+ $log['initial'] = unserialize($log['original']);
+ $log['final'] = unserialize($log['changed']);
+
+ foreach ($log['initial'] AS $key => $value)
+ {
+ $log['changes'] .= "[$key] \"$value\" => \"{$log['final'][$key]}\"\n";
+ }
+
eval('$history .= "' . $template->fetch('history_bit') . '";');
}
<table border="1" cellspacing="2" cellpadding="4" width="100%">
<tr style="background-color: #EEEEEE">
- <td>History Entry (entryid: $log[historyid])</td>
+ <td width="45%">History Entry (entryid: $log[historyid])</td>
<td>$log[user]</td>
<td align="right">$log[date]</td>
</tr>
<tr>
- <td colspan="3">$log[formatted]</td>
+ <td rowspan="3" valign="top">$log[formatted]</td>
+</tr>
+<tr>
+ <td colspan="2"><strong>Changes</strong></td>
+</tr>
+<tr>
+ <td colspan="2"><pre>$log[changes]</pre></td>
</tr>
</table>
<br />
+