diff --git a/admin/tool/log/store/standard/classes/log/store.php b/admin/tool/log/store/standard/classes/log/store.php index b10dbc4ff02..ac4786b9262 100644 --- a/admin/tool/log/store/standard/classes/log/store.php +++ b/admin/tool/log/store/standard/classes/log/store.php @@ -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']); diff --git a/admin/tool/log/store/standard/db/install.xml b/admin/tool/log/store/standard/db/install.xml index dddadb382bd..0c75dbd6507 100644 --- a/admin/tool/log/store/standard/db/install.xml +++ b/admin/tool/log/store/standard/db/install.xml @@ -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> \ No newline at end of file diff --git a/lib/classes/event/base.php b/lib/classes/event/base.php index 4795ffa2cee..df6329ab56b 100644 --- a/lib/classes/event/base.php +++ b/lib/classes/event/base.php @@ -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;