function execute($data, $row, $user, $courseid, $starttime = 0, $endtime = 0) { global $DB, $CFG; require_once $CFG->dirroot . "/blocks/configurable_reports/locallib.php"; list($uselegacyreader, $useinternalreader, $logtable) = cr_logging_info(); $sql = ''; if ($uselegacyreader) { $sql = "SELECT COUNT('x') AS numviews\n\t FROM {course_modules} cm\n\t JOIN {log} l ON l.cmid = cm.id\n\t WHERE cm.id = {$data->cmid} AND l.userid = {$row->id} AND l.action LIKE 'view%'\n\t GROUP BY cm.id"; } else { if ($useinternalreader) { $sql = "SELECT COUNT('x') AS numviews\n\t FROM {" . $logtable . "}\n\t WHERE contextinstanceid = {$data->cmid} AND contextlevel = " . CONTEXT_MODULE . " AND userid = {$row->id} AND crud = 'r'\n\t GROUP BY contextinstanceid"; } } if ($sql and $views = $DB->get_record_sql($sql)) { return $views->numviews; } return 0; }
function execute($data, $row, $user, $courseid, $starttime = 0, $endtime = 0) { global $DB, $CFG; $stat = '--'; $filter_starttime = optional_param('filter_starttime', 0, PARAM_RAW); $filter_endtime = optional_param('filter_endtime', 0, PARAM_RAW); // Do not apply filters in timeline report (filters yet applied) if ($starttime && $endtime) { $filter_starttime = 0; $filter_endtime = 0; } if ($filter_starttime and $filter_endtime) { $filter_starttime = make_timestamp($filter_starttime['year'], $filter_starttime['month'], $filter_starttime['day']); $filter_endtime = make_timestamp($filter_endtime['year'], $filter_endtime['month'], $filter_endtime['day']); } $starttime = $filter_starttime ? $filter_starttime : $starttime; $endtime = $filter_endtime ? $filter_endtime : $endtime; if ($data->stat == 'coursededicationtime') { $sql = "userid = ?"; $params = array($row->id); require_once $CFG->dirroot . "/blocks/configurable_reports/locallib.php"; list($uselegacyreader, $useinternalreader, $logtable) = cr_logging_info(); $logs = array(); if ($uselegacyreader) { if ($courseid != 1) { $sql .= " AND course = ?"; $params = array_merge($params, array($courseid)); } if ($starttime and $endtime) { $starttime = usergetmidnight($starttime) + 24 * 60 * 60; $endtime = usergetmidnight($endtime) + 24 * 60 * 60; $sql .= " AND time >= ? AND time <= ?"; $params = array_merge($params, array($starttime, $endtime)); } $logs = $DB->get_records_select("log", $sql, $params, "time ASC", "id,time"); } else { if ($useinternalreader) { if ($courseid != 1) { $sql .= " AND courseid = ?"; $params = array_merge($params, array($courseid)); } if ($starttime and $endtime) { $starttime = usergetmidnight($starttime) + 24 * 60 * 60; $endtime = usergetmidnight($endtime) + 24 * 60 * 60; $sql .= " AND timecreated >= ? AND timecreated <= ?"; $params = array_merge($params, array($starttime, $endtime)); } $logs = $DB->get_records_select($logtable, $sql, $params, "timecreated ASC", "id,timecreated as time"); } } // Code from Course Dedication Block if ($logs) { // This should be a config value in some where $limitinseconds = !empty($data->sessionlimittime) ? $data->sessionlimittime : 30 * 60; $previouslog = array_shift($logs); $previouslogtime = $previouslog->time; $sessionstart = $previouslogtime; $totaldedication = 0; foreach ($logs as $log) { if ($log->time - $previouslogtime > $limitinseconds) { $dedication = $previouslogtime - $sessionstart; $totaldedication += $dedication; $sessionstart = $log->time; } $previouslogtime = $log->time; } $dedication = $previouslogtime - $sessionstart; $totaldedication += $dedication; if ($totaldedication) { return format_time($totaldedication); } else { return 0; } } // Code from Course Dedication Block return 0; } switch ($data->stat) { case 'activityview': $total = 'statsreads'; $stattype = 'activity'; break; case 'activitypost': $total = 'statswrites'; $stattype = 'activity'; break; case 'logins': default: $total = 'statsreads'; $stattype = 'logins'; } $sql = "SELECT SUM({$total}) as total FROM {stats_user_daily} WHERE stattype = ? AND userid = ?"; $params = array($stattype, $row->id); if ($courseid != SITEID and $data->stat != 'logins') { $sql .= " AND courseid = ?"; $params[] = $courseid; } if ($starttime and $endtime) { $starttime = usergetmidnight($starttime) + 24 * 60 * 60; $endtime = usergetmidnight($endtime) + 24 * 60 * 60; $sql .= " AND timeend >= {$starttime} AND timeend <= {$endtime}"; $params = array_merge($params, array($starttime, $endtime)); } if ($res = $DB->get_records_sql($sql, $params)) { $res = array_shift($res); if ($res->total != NULL) { return $res->total; } else { return 0; } } return $stat; }