と言っていいものか分からないが、行ったことをまとめておく。大したことはやっていない。SCORM受講ログの取得に十時間以上かかってしまったし、コースログの取得はPHPのmemory_limitとのたたかいであった。やはりPHPはパフォーマンスの問題がある。Try & Error の開発がしやすいこととのトレードオフなのだろうが…。
- ユーザ名を特定困難、識別可能な内部IDで出力する
[code]— course/lib.php.20151020 2015-10-20 11:26:45.000000000 +0900
+++ course/lib.php.20151016 2015-10-16 19:34:45.000000000 +0900
@@ -424,7 +424,7 @@
$link = new moodle_url("/iplookup/index.php?ip=$log->ip&user=$log->userid");
$row[] = $OUTPUT->action_link($link, $log->ip, new popup_action(‘click’, $link, ‘iplookup’, array(‘height’ => 440, ‘width’ => 700)));– $row[] = html_writer::link(new moodle_url("/user/view.php?id={$log->userid}&course={$log->course}"), $log->userid);
+ $row[] = html_writer::link(new moodle_url("/user/view.php?id={$log->userid}&course={$log->course}"), fullname($log, has_capability(‘moodle/site:viewfullnames’, context_course::instance($course->id))));$displayaction="$log->module $log->action";
if ($brokenurl) {
@@ -531,7 +531,7 @@
$link = new moodle_url("/iplookup/index.php?ip=$log->ip&user=$log->userid");
echo $OUTPUT->action_link($link, $log->ip, new popup_action(‘click’, $link, ‘iplookup’, array(‘height’ => 400, ‘width’ => 700)));
echo "</td>\n";
– $fullname = $log->userid;
+ $fullname = fullname($log, has_capability(‘moodle/site:viewfullnames’, context_course::instance($course->id)));
echo "<td class=\"r$row c3\" >\n";
echo " <a href=\"$CFG->wwwroot/user/view.php?id={$log->userid}\">$fullname</a>\n";
echo "</td>\n";
@@ -619,7 +619,7 @@$coursecontext = context_course::instance($course->id);
$firstField = format_string($courses[$log->course], true, array(‘context’ => $coursecontext));
– $fullname = $log->userid;
+ $fullname = fullname($log, has_capability(‘moodle/site:viewfullnames’, $coursecontext));
$actionurl = $CFG->wwwroot. make_log_url($log->module,$log->url);
$row = array($firstField, userdate($log->time, $strftimedatetime), $log->ip, $fullname, $log->module.’ ‘.$log->action.’ (‘.$actionurl.’)’, $log->info);
$csvexporter->add_data($row);
@@ -730,7 +730,7 @@
$myxls->write($row, 0, format_string($courses[$log->course], true, array(‘context’ => $coursecontext)), ”);
$myxls->write_date($row, 1, $log->time, $formatDate); // write_date() does conversion/timezone support. MDL-14934
$myxls->write($row, 2, $log->ip, ”);
– $fullname = $log->userid;
+ $fullname = fullname($log, has_capability(‘moodle/site:viewfullnames’, $coursecontext));
$myxls->write($row, 3, $fullname, ”);
$actionurl = $CFG->wwwroot. make_log_url($log->module,$log->url);
$myxls->write($row, 4, $log->module.’ ‘.$log->action.’ (‘.$actionurl.’)’, ”);
@@ -844,7 +844,7 @@
$myxls->write_string($row, 0, format_string($courses[$log->course], true, array(‘context’ => $coursecontext)));
$myxls->write_date($row, 1, $log->time);
$myxls->write_string($row, 2, $log->ip);
– $fullname = $log->userid;
+ $fullname = fullname($log, has_capability(‘moodle/site:viewfullnames’, $coursecontext));
$myxls->write_string($row, 3, $fullname);
$actionurl = $CFG->wwwroot. make_log_url($log->module,$log->url);
$myxls->write_string($row, 4, $log->module.’ ‘.$log->action.’ (‘.$actionurl.’)’);— mod/quiz/report/attemptsreport.php 2015-10-16 19:03:12.000000000 +0900
+++ mod/quiz/report/attemptsreport.php.20151016 2015-10-16 19:04:44.000000000 +0900
@@ -153,10 +153,10 @@
$headers[] = ”;
}
if (!$table->is_downloading()) {
– $columns[] = ‘userid’;
+ $columns[] = ‘username’;
$headers[] = get_string(‘name’);
} else {
– $columns[] = ‘userid’;
+ $columns[] = ‘username’;
$headers[] = get_string(‘name’);
}— mod/scorm/report/interactions/report.php.20151020 2015-10-20 11:21:52.000000000 +0900
+++ mod/scorm/report/interactions/report.php.20151016 2015-10-16 12:33:37.000000000 +0900
@@ -418,9 +418,9 @@
$row[] = $OUTPUT->user_picture($user, array(‘courseid’=>$course->id));
}
if (!$download) {
– $row[] = ‘<a href="’.$CFG->wwwroot.’/user/view.php?id=’.$scouser->userid.’&course=’.$course->id.’">’.$scouser->userid.'</a>’;
+ $row[] = ‘<a href="’.$CFG->wwwroot.’/user/view.php?id=’.$scouser->userid.’&course=’.$course->id.’">’.$scouser->username.'</a>’;
} else {
– $row[] = $scouser->userid;
+ $row[] = $scouser->username;
}
if (empty($timetracks->start)) {
$row[] = ‘-‘;— mod/scorm/report/basic/report.php.20151020 2015-10-20 11:04:48.000000000 +0900
+++ mod/scorm/report/basic/report.php.20151016 2015-10-16 11:02:03.000000000 +0900
@@ -121,7 +121,7 @@
$columns[]= ‘picture’;
$headers[]= ”;
}
– $columns[] = ‘userid’;
+ $columns[] = ‘username’;
$headers[] = get_string(‘name’);$columns[]= ‘attempt’;
@@ -383,9 +383,9 @@
$row[] = $OUTPUT->user_picture($user, array(‘courseid’=>$course->id));
}
if (!$download) {
– $row[] = ‘<a href="’.$CFG->wwwroot.’/user/view.php?id=’.$scouser->userid.’&course=’.$course->id.’">’.$scouser->userid.'</a>’;
+ $row[] = ‘<a href="’.$CFG->wwwroot.’/user/view.php?id=’.$scouser->userid.’&course=’.$course->id.’">’.$scouser->username.'</a>’;
} else {
– $row[] = $scouser->userid;
+ $row[] = $scouser->username;
}
if (empty($timetracks->start)) {
$row[] = ‘-‘;— mod/scorm/report/objectives/report.php.20151020 2015-10-20 11:23:52.000000000 +0900
+++ mod/scorm/report/objectives/report.php.20151016 2015-10-16 12:34:18.000000000 +0900
@@ -422,9 +422,9 @@
}
if (!$download) {
$row[] = ‘<a href="’.$CFG->wwwroot.’/user/view.php?id=’.$scouser->userid.
– ‘&course=’.$course->id.’">’.$scouser->userid.'</a>’;
+ ‘&course=’.$course->id.’">’.$scouser->username.'</a>’;
} else {
– $row[] = $scouser->userid;
+ $row[] = $scouser->username;
}
if (empty($timetracks->start)) {
$row[] = ‘-‘;
[/code] - 時刻処理に適したunixtime型で出力する
[code]— course/lib.php 2015-10-20 11:46:28.000000000 +0900
+++ course/lib.php.20151020 2015-10-20 11:26:45.000000000 +0900
@@ -558,7 +558,6 @@
$header = array();
$header[] = get_string(‘course’);
$header[] = get_string(‘time’);
– $header[] = get_string(‘time’);
$header[] = get_string(‘ip_address’);
$header[] = get_string(‘fullnameuser’);
$header[] = get_string(‘action’);
@@ -622,7 +621,7 @@
$firstField = format_string($courses[$log->course], true, array(‘context’ => $coursecontext));
$fullname = $log->userid;
$actionurl = $CFG->wwwroot. make_log_url($log->module,$log->url);
– $row = array($firstField, userdate($log->time, $strftimedatetime), $log->time, $log->ip, $fullname, $log->module.’ ‘.$log->action.’ (‘.$actionurl.’)’, $log->info);
+ $row = array($firstField, userdate($log->time, $strftimedatetime), $log->ip, $fullname, $log->module.’ ‘.$log->action.’ (‘.$actionurl.’)’, $log->info);
$csvexporter->add_data($row);
}
$csvexporter->download_file();— mod/quiz/report/attemptsreport_table.php 2015-10-20 11:20:12.000000000 +0900
+++ mod/quiz/report/attemptsreport_table.php.20151020 2015-10-20 11:01:19.000000000 +0900
@@ -163,7 +163,7 @@
*/
public function col_timestart($attempt) {
if ($attempt->attempt) {
– return $attempt->timestart;
+ return userdate($attempt->timestart, $this->strtimeformat);
} else {
return ‘-‘;
}
@@ -176,7 +176,7 @@
*/
public function col_timefinish($attempt) {
if ($attempt->attempt && $attempt->timefinish) {
– return $attempt->timefinish;
+ return userdate($attempt->timefinish, $this->strtimeformat);
} else {
return ‘-‘;
}
@@ -189,7 +189,7 @@
*/
public function col_duration($attempt) {
if ($attempt->timefinish) {
– return $attempt->timefinish – $attempt->timestart;
+ return format_time($attempt->timefinish – $attempt->timestart);
} else {
return ‘-‘;
}— mod/scorm/report/interactions/report.php 2015-10-20 11:23:34.000000000 +0900
+++ mod/scorm/report/interactions/report.php.20151020 2015-10-20 11:21:52.000000000 +0900
@@ -435,14 +435,14 @@
$row[] = $scouser->attempt;
}
if ($download ==’ODS’ || $download ==’Excel’ ) {
– $row[] = $timetracks->start;
+ $row[] = userdate($timetracks->start, get_string("strftimedatetime", "langconfig"));
} else {
– $row[] = $timetracks->start;
+ $row[] = userdate($timetracks->start);
}
if ($download ==’ODS’ || $download ==’Excel’ ) {
– $row[] = $timetracks->finish;
+ $row[] = userdate($timetracks->finish, get_string(‘strftimedatetime’, ‘langconfig’));
} else {
– $row[] = $timetracks->finish;
+ $row[] = userdate($timetracks->finish);
}
$row[] = scorm_grade_user_attempt($scorm, $scouser->userid, $scouser->attempt);
}— mod/scorm/report/basic/report.php 2015-10-20 11:12:59.000000000 +0900
+++ mod/scorm/report/basic/report.php.20151020 2015-10-20 11:04:48.000000000 +0900
@@ -399,14 +399,14 @@
$row[] = $scouser->attempt;
}
if ($download ==’ODS’ || $download ==’Excel’ ) {
– $row[] = $timetracks->start;
+ $row[] = userdate($timetracks->start, get_string("strftimedatetime", "langconfig"));
} else {
– $row[] = $timetracks->start;
+ $row[] = userdate($timetracks->start);
}
if ($download ==’ODS’ || $download ==’Excel’ ) {
– $row[] = $timetracks->finish;
+ $row[] = userdate($timetracks->finish, get_string(‘strftimedatetime’, ‘langconfig’));
} else {
– $row[] = $timetracks->finish;
+ $row[] = userdate($timetracks->finish);
}
$row[] = scorm_grade_user_attempt($scorm, $scouser->userid, $scouser->attempt);
}— mod/scorm/report/objectives/report.php 2015-10-20 11:24:46.000000000 +0900
+++ mod/scorm/report/objectives/report.php.20151020 2015-10-20 11:23:52.000000000 +0900
@@ -439,14 +439,14 @@
$row[] = $scouser->attempt;
}
if ($download ==’ODS’ || $download ==’Excel’ ) {
– $row[] = $timetracks->start;
+ $row[] = userdate($timetracks->start, get_string("strftimedatetime", "langconfig"));
} else {
– $row[] = $timetracks->start;
+ $row[] = userdate($timetracks->start);
}
if ($download ==’ODS’ || $download ==’Excel’ ) {
– $row[] = $timetracks->finish;
+ $row[] = userdate($timetracks->finish, get_string(‘strftimedatetime’, ‘langconfig’));
} else {
– $row[] = $timetracks->finish;
+ $row[] = userdate($timetracks->finish);
}
$row[] = scorm_grade_user_attempt($scorm, $scouser->userid, $scouser->attempt);
}
[/code]
1件のコメント