MDL-41269 add separate ip column to standard log table

This commit is contained in:
Petr Škoda 2014-01-30 16:22:52 +08:00
parent 770eac9805
commit 81fbecc049
3 changed files with 20 additions and 7 deletions

View File

@ -63,8 +63,10 @@ class store implements \tool_log\log\writer, \core\log\sql_reader {
$data['other'] = serialize($data['other']);
if (CLI_SCRIPT) {
$data['origin'] = 'cli';
$data['ip'] = null;
} else {
$data['origin'] = getremoteaddr();
$data['origin'] = 'web';
$data['ip'] = getremoteaddr();
}
$data['realuserid'] = \core\session\manager::is_loggedinas() ? $_SESSION['USER']->realuser : null;
$dataobj[] = $data;
@ -80,7 +82,7 @@ class store implements \tool_log\log\writer, \core\log\sql_reader {
$records = $DB->get_records_select('logstore_standard_log', $selectwhere, $params, $sort, '*', $limitfrom, $limitnum);
foreach ($records as $data) {
$extra = array('origin' => $data->origin, 'realuserid' => $data->realuserid);
$extra = array('origin' => $data->origin, 'ip' => $data->ip, 'realuserid' => $data->realuserid);
$data = (array)$data;
$id = $data['id'];
$data['other'] = unserialize($data['other']);
@ -88,6 +90,7 @@ class store implements \tool_log\log\writer, \core\log\sql_reader {
$data['other'] = array();
}
unset($data['origin']);
unset($data['ip']);
unset($data['realuserid']);
unset($data['id']);

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<XMLDB PATH="admin/tool/log/store/standard/db" VERSION="20131222" COMMENT="XMLDB file for Moodle admin/tool/log/store/standard"
<XMLDB PATH="admin/tool/log/store/standard/db" VERSION="20140130" COMMENT="XMLDB file for Moodle admin/tool/log/store/standard"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../lib/xmldb/xmldb.xsd"
>
@ -23,7 +23,8 @@
<FIELD NAME="relateduserid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
<FIELD NAME="other" TYPE="text" NOTNULL="false" SEQUENCE="false"/>
<FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
<FIELD NAME="origin" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="IP address, cli, cron"/>
<FIELD NAME="origin" TYPE="char" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="cli, cron, ws, etc."/>
<FIELD NAME="ip" TYPE="char" LENGTH="45" NOTNULL="false" SEQUENCE="false" COMMENT="IP address"/>
<FIELD NAME="realuserid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="real user id when logged-in-as"/>
</FIELDS>
<KEYS>
@ -34,4 +35,4 @@
</INDEXES>
</TABLE>
</TABLES>
</XMLDB>
</XMLDB>

View File

@ -350,11 +350,12 @@ abstract class base implements \IteratorAggregate {
/**
* Create fake event from legacy log data.
*
* @param stdClass $legacy
* @param \stdClass $legacy
* @return base
*/
public static final function restore_legacy($legacy) {
$classname = get_called_class();
/** @var base $event */
$event = new $classname();
$event->restored = true;
$event->triggered = true;
@ -417,7 +418,15 @@ abstract class base implements \IteratorAggregate {
$event->data['relateduserid'] = ($legacy->userid ? $legacy->userid : null);
$event->data['timecreated'] = $legacy->time;
$event->logextra = array('origin'=>$legacy->ip, 'realuserid'=>null);
$event->logextra = array();
if ($legacy->ip) {
$event->logextra['origin'] = 'web';
$event->logextra['ip'] = $legacy->ip;
} else {
$event->logextra['origin'] = 'cli';
$event->logextra['ip'] = null;
}
$event->logextra['realuserid'] = null;
$event->data['other'] = (array)$legacy;