`dateline` INT(20) UNSIGNED NOT NULL,
`userid` INT(10) UNSIGNED NOT NULL,
`language` VARCHAR(255) NOT NULL,
- `arguments` MEDIUMTEXT NOT NULL,
+ `arguments` MEDIUMTEXT NOT NULL,
+ `field` VARCHAR(255) NOT NULL,
`original` MEDIUMTEXT NOT NULL,
`changed` MEDIUMTEXT NOT NULL,
PRIMARY KEY (`historyid`)
}
// ######################### Start log_action ########################
-function log_action($bugid, $language, $arguments, $original = array(), $changed = array())
+function log_action($bugid, $language, $arguments, $field = '', $original = '', $changed = '', $logdiff = true)
{
global $bugsys;
+ if ($logdiff)
+ {
+ if ($original === $changed)
+ {
+ return;
+ }
+ }
+
$bugsys->db->query("
INSERT INTO " . TABLE_PREFIX . "history
- (bugid, dateline, userid, language, arguments, original, changed)
+ (bugid, dateline, userid, language, arguments, field, original, changed)
VALUES
- (" . intval($bugid) . ", " . time() . ", " . $bugsys->userinfo['userid'] . ",
+ (" . intval($bugid) . ", " . LOG_TIME . ", " . $bugsys->userinfo['userid'] . ",
'" . $bugsys->escape($language) . "', '" . $bugsys->escape(serialize($arguments)) . "',
- '" . $bugsys->escape(serialize($original)) . "', '" . $bugsys->escape(serialize($changed)) . "'
+ '" . $bugsys->escape($field) . "', '" . $bugsys->escape($original) . "',
+ '" . $bugsys->escape($changed) . "'
)"
);
}
unset($database, $servername, $username, $password, $usepconnect, $tableprefix, $cookieprefix);
+define('LOG_TIME', time());
+
require_once('./includes/functions_datastore.php');
require_once('./includes/functions.php');
$fetchtemplates = array(
'history',
+ 'history_group',
'history_bit'
);
// ###################################################################
-$logs = $db->query("SELECT history.*, user.* FROM " . TABLE_PREFIX . "history LEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = history.userid) WHERE bugid = $bug[bugid]");
-while ($log = $db->fetch_array($logs))
+$logs_fetch = $db->query("
+ SELECT history.*, user.userid, user.email, user.displayname, user.showemail
+ FROM " . TABLE_PREFIX . "history AS history
+ LEFT JOIN " . TABLE_PREFIX . "user AS user
+ ON (user.userid = history.userid)
+ WHERE bugid = $bug[bugid]"
+);
+while ($log = $db->fetch_array($logs_fetch))
{
$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)
+ $logs["$log[dateline]"]["$log[historyid]"] = $log;
+ ksort($logs["$log[dateline]"]);
+}
+
+ksort($logs);
+
+foreach ($logs AS $dateline => $logitems)
+{
+ $rowspan = 3;
+ $changes = '';
+ foreach ($logitems AS $log)
{
- $log['changes'] .= "[$key] \"$value\" => \"{$log['final'][$key]}\"\n";
+ $rowspan++;
+ eval('$changes .= "' . $template->fetch('history_bit') . '";');
}
-
- eval('$history .= "' . $template->fetch('history_bit') . '";');
+ eval('$history .= "' . $template->fetch('history_group') . '";');
}
eval('$template->flush("' . $template->fetch('history') . '");');
-<table border="1" cellspacing="2" cellpadding="4" width="100%">
-<tr style="background-color: #EEEEEE">
- <td width="45%">History Entry (entryid: $log[historyid])</td>
- <td>$log[user]</td>
- <td align="right">$log[date]</td>
-</tr>
-<tr>
- <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>
+ <td width="20%"><em>$log[field]</em></td>
+ <td width="15%">$log[original]</td>
+ <td width="15%">$log[changed]</td>
</tr>
-</table>
-<br />
-
--- /dev/null
+<table border="1" cellspacing="2" cellpadding="4" width="100%">
+<tr style="background-color: #EEEEEE">
+ <td width="50%">
+ <strong><span style="float: right">$log[date]</span>
+ History Entry (entryid: $log[historyid])</strong>
+ <div>$log[user]</div>
+ </td>
+ <td colspan="3"><strong>Changes</strong></td>
+</tr>
+<tr>
+ <td rowspan="$rowspan" valign="top">$log[formatted]</td>
+ $changes
+</tr>
+</table>
+<br />
+