From 3186c1241270c669896ed030fb2cca95504f65d5 Mon Sep 17 00:00:00 2001 From: Andrew Robert Nicols Date: Thu, 15 Nov 2012 09:35:37 +0000 Subject: [PATCH] MDL-36640 Logging: Correct testing of log->info. log->info sometimes contains additional information which can be looked up from other tables. This should only be attempted if the field is numeric, but the CSV, XLS, and ODS outputs were not making this check. There is an additional case for the print_mnet_log function which has not been covered - this is because the mnet logging is currently broken beyond the scope of this bug rendering this section untestable. These issues are raised in MDL-36642. --- course/lib.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/course/lib.php b/course/lib.php index 7d2ed99bfa2..a22373d7eb7 100644 --- a/course/lib.php +++ b/course/lib.php @@ -594,7 +594,7 @@ function print_log_csv($course, $user, $date, $order='l.time DESC', $modname, $ld = $DB->get_record('log_display', array('module'=>$log->module, 'action'=>$log->action)); $ldcache[$log->module][$log->action] = $ld; } - if ($ld && !empty($log->info)) { + if ($ld && is_numeric($log->info)) { // ugly hack to make sure fullname is shown correctly if (($ld->mtable == 'user') and ($ld->field == $DB->sql_concat('firstname', "' '" , 'lastname'))) { $log->info = fullname($DB->get_record($ld->mtable, array('id'=>$log->info)), true); @@ -694,7 +694,7 @@ function print_log_xls($course, $user, $date, $order='l.time DESC', $modname, $ld = $DB->get_record('log_display', array('module'=>$log->module, 'action'=>$log->action)); $ldcache[$log->module][$log->action] = $ld; } - if ($ld && !empty($log->info)) { + if ($ld && is_numeric($log->info)) { // ugly hack to make sure fullname is shown correctly if (($ld->mtable == 'user') and ($ld->field == $DB->sql_concat('firstname', "' '" , 'lastname'))) { $log->info = fullname($DB->get_record($ld->mtable, array('id'=>$log->info)), true); @@ -808,7 +808,7 @@ function print_log_ods($course, $user, $date, $order='l.time DESC', $modname, $ld = $DB->get_record('log_display', array('module'=>$log->module, 'action'=>$log->action)); $ldcache[$log->module][$log->action] = $ld; } - if ($ld && !empty($log->info)) { + if ($ld && is_numeric($log->info)) { // ugly hack to make sure fullname is shown correctly if (($ld->mtable == 'user') and ($ld->field == $DB->sql_concat('firstname', "' '" , 'lastname'))) { $log->info = fullname($DB->get_record($ld->mtable, array('id'=>$log->info)), true);