} } } // get data $logusers = $userid; $logs = use_stats_extract_logs($from, time(), $userid, $course->id); $aggregate = use_stats_aggregate_logs($logs, 'module'); // get course structure $coursestructure = reports_get_course_structure($course->id, $items); // print result if ($output == 'html') { // time period form echo "<link rel=\"stylesheet\" href=\"reports.css\" type=\"text/css\" />"; include "selector_form.html"; $str = ''; $dataobject = training_reports_print_html($str, $coursestructure, $aggregate, $done); $dataobject->items = $items; $dataobject->done = $done; /* if (!empty($aggregate)){ foreach(array_keys($aggregate) as $module){ $dataobject->done += count($aggregate[$module]); } } */ if ($dataobject->done > $items) { $dataobject->done = $items; } training_reports_print_header_html($userid, $course->id, $dataobject); echo $str; $options['id'] = $course->id;
/** * a raster for html printing of a report structure. * * @param string ref $str a buffer for accumulating output * @param object $structure a course structure object. */ function training_reports_print_html(&$str, $structure, &$aggregate, &$done, $indent = '', $level = 1) { if (empty($structure)) { $str .= get_string('nostructure', 'report_trainingsessions'); return; } $indent = str_repeat(' ', $level); $suboutput = ''; // initiates a blank dataobject if (!isset($dataobject)) { $dataobject->elapsed = 0; $dataobject->events = 0; } if (is_array($structure)) { // if an array of elements produce sucessively each output and collect aggregates foreach ($structure as $element) { if (isset($element->instance) && empty($element->instance->visible)) { continue; } // non visible items should not be displayed $res = training_reports_print_html($str, $element, $aggregate, $done, $indent, $level); $dataobject->elapsed += $res->elapsed; $dataobject->events += $res->events; } } else { if (!isset($structure->instance) || !empty($structure->instance->visible)) { // non visible items should not be displayed // name is not empty. It is a significant module (non structural) if (!empty($structure->name)) { $str .= "<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" class=\"sessionreport\">"; $str .= "<tr class=\"sessionlevel{$level}\" valign=\"top\">"; $str .= "<td width=\"60%\" class=\"sessionitem\">"; $str .= $indent; if (debugging()) { $str .= '[' . $structure->type . '] '; } $str .= shorten_text($structure->name, 85); $str .= '</td>'; $str .= "<td width=\"40%\" class=\"reportvalue\" align=\"right\">"; if (isset($structure->id) && !empty($aggregate[$structure->type][$structure->id])) { $done++; $dataobject = $aggregate[$structure->type][$structure->id]; } if (!empty($structure->subs)) { $res = training_reports_print_html($suboutput, $structure->subs, $aggregate, $done, $indent, $level + 1); $dataobject->elapsed += $res->elapsed; $dataobject->events += $res->events; } $str .= training_reports_format_time($dataobject->elapsed, 'html'); $str .= ' (' . $dataobject->events . ')'; // plug here specific details $str .= '</td>'; $str .= '</tr>'; $str .= "</table>\n"; } else { // It is only a structural module that should not impact on level if (isset($structure->id) && !empty($aggregate[$structure->type][$structure->id])) { $dataobject = $aggregate[$structure->type][$structure->id]; } if (!empty($structure->subs)) { $res = training_reports_print_html($suboutput, $structure->subs, $aggregate, $done, $indent, $level); $dataobject->elapsed += $res->elapsed; $dataobject->events += $res->events; } } if (!empty($structure->subs)) { $str .= "<table width=\"100%\" class=\"trainingreport\">"; $str .= "<tr valign=\"top\">"; $str .= "<td colspan=\"2\">"; $str .= $suboutput; $str .= '</td>'; $str .= '</tr>'; $str .= "</table>\n"; } } } return $dataobject; }