Пример #1
0
function print_log_ods($course, $user, $date, $order = 'l.time DESC', $modname, $modid, $modaction, $groupid)
{
    global $CFG, $DB;
    require_once "{$CFG->libdir}/odslib.class.php";
    if (!($logs = build_logs_array($course, $user, $date, $order, '', '', $modname, $modid, $modaction, $groupid))) {
        return false;
    }
    $courses = array();
    if ($course->id == SITEID) {
        $courses[0] = '';
        if ($ccc = get_courses('all', 'c.id ASC', 'c.id,c.shortname')) {
            foreach ($ccc as $cc) {
                $courses[$cc->id] = $cc->shortname;
            }
        }
    } else {
        $courses[$course->id] = $course->shortname;
    }
    $count = 0;
    $ldcache = array();
    $tt = getdate(time());
    $today = mktime(0, 0, 0, $tt["mon"], $tt["mday"], $tt["year"]);
    $strftimedatetime = get_string("strftimedatetime");
    $nroPages = ceil(count($logs) / (EXCELROWS - FIRSTUSEDEXCELROW + 1));
    $filename = 'logs_' . userdate(time(), get_string('backupnameformat', 'langconfig'), 99, false);
    $filename .= '.ods';
    $workbook = new MoodleODSWorkbook('-');
    $workbook->send($filename);
    $worksheet = array();
    $headers = array(get_string('course'), get_string('time'), get_string('ip_address'), get_string('fullnameuser'), get_string('action'), get_string('info'));
    // Creating worksheets
    for ($wsnumber = 1; $wsnumber <= $nroPages; $wsnumber++) {
        $sheettitle = get_string('logs') . ' ' . $wsnumber . '-' . $nroPages;
        $worksheet[$wsnumber] =& $workbook->add_worksheet($sheettitle);
        $worksheet[$wsnumber]->set_column(1, 1, 30);
        $worksheet[$wsnumber]->write_string(0, 0, get_string('savedat') . userdate(time(), $strftimedatetime));
        $col = 0;
        foreach ($headers as $item) {
            $worksheet[$wsnumber]->write(FIRSTUSEDEXCELROW - 1, $col, $item, '');
            $col++;
        }
    }
    if (empty($logs['logs'])) {
        $workbook->close();
        return true;
    }
    $formatDate =& $workbook->add_format();
    $formatDate->set_num_format(get_string('log_excel_date_format'));
    $row = FIRSTUSEDEXCELROW;
    $wsnumber = 1;
    $myxls =& $worksheet[$wsnumber];
    foreach ($logs['logs'] as $log) {
        if (isset($ldcache[$log->module][$log->action])) {
            $ld = $ldcache[$log->module][$log->action];
        } else {
            $ld = $DB->get_record('log_display', array('module' => $log->module, 'action' => $log->action));
            $ldcache[$log->module][$log->action] = $ld;
        }
        if ($ld && !empty($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);
            } else {
                $log->info = $DB->get_field($ld->mtable, $ld->field, array('id' => $log->info));
            }
        }
        // Filter log->info
        $log->info = format_string($log->info);
        $log->info = strip_tags(urldecode($log->info));
        // Some XSS protection
        if ($nroPages > 1) {
            if ($row > EXCELROWS) {
                $wsnumber++;
                $myxls =& $worksheet[$wsnumber];
                $row = FIRSTUSEDEXCELROW;
            }
        }
        $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
        $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 = fullname($log, has_capability('moodle/site:viewfullnames', $coursecontext));
        $myxls->write_string($row, 3, $fullname);
        $myxls->write_string($row, 4, $log->module . ' ' . $log->action);
        $myxls->write_string($row, 5, $log->info);
        $row++;
    }
    $workbook->close();
    return true;
}
Пример #2
0
function get_activity_start_date($course, $user, $modname, $modaction, $modid)
{
    $date = 0;
    $group = 0;
    $groupid = 0;
    $limitfrom = '';
    $limitnum = '';
    $start_date = null;
    $logs = build_logs_array($course, $user, $date, $order = "l.time ASC", $limitfrom, $limitnum, $modname, $modid, $modaction, $groupid);
    $log = $logs['logs'];
    if (count($log) > 0) {
        // var_dump($log);
        $log = array_shift($log);
        $date_string = $log->time;
        $start_date = new DateTime("@" . $date_string);
        // print_r($start_date);
    }
    return $start_date;
}
// Group to display
if ($hostid == $CFG->mnet_localhost_id) {
    if (!($course = get_record('course', 'id', $id))) {
        echo ERROR;
        error('That\'s an invalid course id' . $id);
    }
    $context = get_context_instance(CONTEXT_COURSE, $course->id);
} else {
    $course_stub = array_pop(get_records_select('mnet_log', " hostid='{$hostid}' AND course='{$id}' ", '', '*', '', '1'));
    $course->id = $id;
    $course->shortname = $course_stub->coursename;
    $course->fullname = $course_stub->coursename;
    $context = get_context_instance(CONTEXT_COURSE, $course->id);
}
require_capability('moodle/site:viewreports', $context);
if (!($logs = build_logs_array($course, $user, $date, 'l.time DESC', 0, '', $modname, $modid, $modaction, $group))) {
    exit;
}
$courses = array();
if ($course->id == SITEID) {
    $courses[0] = '';
    if ($ccc = get_courses('all', 'c.id ASC', 'c.id,c.shortname')) {
        foreach ($ccc as $cc) {
            $courses[$cc->id] = $cc->shortname;
        }
    }
} else {
    $courses[$courseid] = $course->shortname;
}
$totalcount = $logs['totalcount'];
$count = 0;
 public function get_activity_start_date($course, $user, $grade_item)
 {
     $date = 0;
     $group = 0;
     $groupid = 0;
     $limitfrom = '';
     $limitnum = '';
     $start_date = null;
     $modaction = "";
     $modname = '';
     $modid = $grade_item->iteminstance;
     $user = $user->id;
     if ($grade_item->itemtype == 'mod') {
         $instances = get_fast_modinfo($this->course->id)->get_instances_of($grade_item->itemmodule);
         $cm = $instances[$grade_item->iteminstance];
         $modid = $cm->id;
     }
     $logs = build_logs_array($course, $user, $date, $order = "l.time ASC", $limitfrom, $limitnum, $modname, $modid, $modaction, $groupid);
     $log = $logs['logs'];
     // var_dump($logs);
     if (count($log) > 0) {
         $log = array_shift($log);
         $date_string = $log->time;
         $start_date = new DateTime("@" . $date_string);
         // print_r($start_date);
     }
     return $start_date;
 }
$navlinks = array();
$navlinks[] = array('name' => $strreports, 'link' => "{$CFG->wwwroot}/course/report.php?id={$course->id}", 'type' => 'misc');
$navlinks[] = array('name' => $strlogs, 'link' => "index.php?id={$course->id}", 'type' => 'misc');
$navigation = build_navigation($navlinks);
$printheader = print_header($course->shortname . ': ' . $strlogs, $course->fullname, $navigation, '', '', '', '', '', '', '', true);
// For moodle 1.8
/*print_header($course->shortname .': '. $strlogs, $course->fullname, 
  "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->
  <a href=\"$CFG->wwwroot/course/report.php?id=$course->id\">$strreports</a> ->
  <a href=\"index.php?id=$course->id\">$strlogs</a>",'','','','','','','', true);*/
$printheader = explode('</head>', $printheader);
$printheader[0] .= "<script type=\"text/javascript\" src=\"{$CFG->wwwroot}/course/report/log_timeline/api_timeline/timeline-api.js\"></script>\n";
echo implode('</head>', $printheader);
print_heading_modified(format_string($course->fullname) . " : {$userinfo} : {$dateinfo} (" . usertimezone() . ")", "title_timeline");
print_mnet_log_selector_form($hostid, $course, $user, $date, $modname, $modid, $modaction, $group, $showcourses, $showusers);
$logs = build_logs_array($course, $user, $date, '', 0, '', $modname, $modid, $modaction, $group);
if (!$logs) {
    notify("No logs found!");
} else {
    //Print the timeline
    $getaxml = "getxml.php?id=" . $id . "&hostid=" . $hostid . "&user="******"&date=" . $date . "&modname=" . $modname . "&modid=" . $modid . "&modaction=" . $modaction . "&group=" . $group;
    if ($height_timeline < 0) {
        $height_timeline = 500;
    }
    echo '<div id="my-timeline" style="height: ' . $height_timeline . 'px; border: 1px solid #aaa"></div>';
    ?>

<script type="text/javascript">
<!--
var file_xml="";
file_xml="<?php