Browse Source

reports: course time spent

Arnaud Ligot 14 years ago
parent
commit
02a62b1824

+ 29 - 0
main/reports/modules/course.php

@@ -0,0 +1,29 @@
+<?php 
+
+$reports_modules['course'] = array ();
+
+
+function reports_modules_course_init() {
+}
+
+function reports_modules_course_init_forEachCourses($course_code, $course_id, $course_db) {
+	global $reports_modules;
+	
+//	$reports_modules_course_toolid = reports_getToolId(TOOL_QUIZ);
+
+	array_push($reports_modules['course'], 
+	  array('keys_query' =>  
+		'select '.$course_id.' as course_id, "'.$course_code.'" as course_code',
+		'values_query_function' => 'reports_modules_course_val'));		
+}
+
+function reports_modules_course_val($course, $key_id) {
+	return array('type'=> 'sql', 'sql' => 
+			'select '.$key_id.', user_id as uid, '.
+			'-1 as session_id, -1 as attempt, null as score, '.
+			'NULL as progress, '.
+			'(sum(logout_course_date) - sum(login_course_date)) as time from '.
+			Database::get_main_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS).
+			' where course_code = '."'".$course['course_code']."'".
+			' group by user_id');
+}

+ 2 - 2
main/reports/reports.lib.php

@@ -7,9 +7,9 @@ define ('REPORTS_PROGRESS_COMPLETED', 1);
 
 $reports_modules = array();
 
-$reports_enabled_modules = array('quiz');
+$reports_enabled_modules = array('quiz','course');
 
-$reports_enabled_templates = array('exercicesMultiCourses');
+$reports_enabled_templates = array('exercicesMultiCourses', 'courseTime');
 
 
 // load templates 

+ 41 - 0
main/reports/templates/courseTime.reports.php

@@ -0,0 +1,41 @@
+<?php
+
+$reports_template['courseTime'] = array(
+	'description' => 'Time spent by students in each courses',
+	'getSQL' => 'reports_template_courseTime_getSQL',
+	'wizard' => 
+'
+<span id="courseTime" class="step">
+	<span class="font_normal_07em_black">This test does not need any particular settings</span><br />
+	<input type="hidden" class="link" value="format" />
+</span>
+');
+
+function reports_template_courseTime_getSQL() {
+	// fetch columns
+	$result = array();
+	$query = 'select r.id as kid, c.title as course '.
+		'from '.
+		Database::get_main_table(TABLE_MAIN_REPORTS_KEYS).' r, '.
+		Database::get_main_table(TABLE_MAIN_COURSE).' c '.
+		'where r.course_id=c.id and r.tool_id is null and r.child_id is null'.
+		' order by c.title';
+	$columns = Database::query($query);
+	if (Database::num_rows($columns) == 0)
+		die('<b>'.get_lang('no data found: '.$query).'</b>');
+	$columns = Database::store_result($columns);
+
+	// fetch data
+	$query = 'select u.lastname Name, u.firstname Firstname';
+	foreach ($columns as $key => $column)
+		$query .= ', '.$function.'(k'.$key.'.time) as `'.
+				$column['course'].'` '; 
+	$query .= ' from '.Database::get_main_table(TABLE_MAIN_USER).' u ';
+	foreach ($columns as $key => $column) // fixme sessions
+		$query .= 'left outer join '.
+			Database::get_main_table(TABLE_MAIN_REPORTS_VALUES).
+			' k'.$key.
+			' on k'.$key.'.key_id = '.$column['kid'].
+				' and k'.$key.'.uid = u.user_id ';
+	return $query;
+}