Esempio n. 1
0
 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;
 }
Esempio n. 2
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;
 }