Browse Source

reports: scorm module

arnaud 14 years ago
parent
commit
cc59da47b5
2 changed files with 126 additions and 2 deletions
  1. 124 0
      main/reports/modules/scorm.php
  2. 2 2
      main/reports/reports.lib.php

+ 124 - 0
main/reports/modules/scorm.php

@@ -0,0 +1,124 @@
+<?php 
+
+$reports_modules['scorm'] = array ();
+
+
+function reports_modules_scorm_init() {
+}
+
+function reports_modules_scorm_init_forEachCourses($course_code, $course_id, $course_db) {
+	global $reports_modules;
+	
+	$reports_modules_scorm_toolid = reports_getToolId(TOOL_LEARNPATH);
+
+	// package level
+	array_push($reports_modules['scorm'], 
+	  array('keys_query' =>  
+		'select '.$course_id.' as course_id, '.
+		$reports_modules_scorm_toolid.' as tool_id, '.
+		'lp.id as child_id, lp.name as child_name, '.
+		"'".$course_db."'".' as course_db from '.
+		Database::get_course_table(TABLE_LP_MAIN, $course_db).
+		' lp',
+		'values_query_function' => 'reports_modules_scorm_packageVal'));		
+
+	// sco level
+	array_push($reports_modules['scorm'], 
+	  array('keys_query' =>  
+		'select '.$course_id.' as course_id, '.
+		$reports_modules_scorm_toolid.' as tool_id, '.
+		'lp.id as child_id, lp.name as child_name, '.
+		'lpi.id as subchild_id, lpi.title as subchild_name, '.
+		"'".$course_db."'".' as course_db from '.
+		Database::get_course_table(TABLE_LP_MAIN, $course_db).
+		' lp,'.
+		Database::get_course_table(TABLE_LP_ITEM, $course_db).
+		' lpi where lp.id = lpi.lp_id',
+		'values_query_function' => 'reports_modules_scorm_scoVal'));		
+
+	// objectives level
+	array_push($reports_modules['scorm'], 
+	  array('keys_query' =>  
+		'select distinct '.$course_id.' as course_id, '.
+		$reports_modules_scorm_toolid.' as tool_id, '.
+		'lp.id as child_id, lp.name as child_name, '.
+		'lpi.id as subchild_id, '.
+		'lpi.title as subchild_name, '.
+		'null as subsubchild_id, '.
+		'lpivo.objective_id as subsubchild_name, '.
+		"'".$course_db."'".' as course_db from '.
+		Database::get_course_table(TABLE_LP_MAIN, $course_db).
+		' lp,'.
+		Database::get_course_table(TABLE_LP_ITEM, $course_db).
+		' lpi, '.
+		Database::get_course_table(TABLE_LP_ITEM_VIEW, $course_db).
+		' lpiv, '.
+		Database::get_course_table(TABLE_LP_IV_OBJECTIVE, $course_db).
+		' lpivo '.
+		'where lp.id = lpi.lp_id '.
+		'and lpi.id = lpiv.lp_item_id '.
+		'and lpiv.id = lpivo.lp_iv_id ',
+		'values_query_function' => 'reports_modules_scorm_objVal'));		
+}
+
+function reports_modules_scorm_packageVal($scorm, $key_id) {
+	return array('type'=> 'sql', 'sql' => 
+			'select '.$key_id.', user_id as uid, '.
+			'session_id, view_count as attempt, null as score, '.
+			'progress as progress, '.
+			'null as time from '.
+			Database::get_course_table(TABLE_LP_VIEW, $scorm['course_db']).
+			' where lp_id = '.$scorm['child_id']);
+}
+
+function reports_modules_scorm_scoVal($scorm, $key_id) {
+	return array('type'=> 'sql', 'sql' => 
+			'select '.$key_id.', lpv.user_id as uid, '.
+			'lpv.session_id, lpiv.view_count as attempt, '.
+			'lpiv.score as score, '.
+			'(case lpiv.status '.
+				'when "incomplete" then 0 '.
+				'when "completed" then 1 '.
+				'when "passed" then 2 '.
+				'when "failed" then 3 '.
+				'when "browsed" then 4 '.
+				'when "not attempted" then 5 '.
+				'else 6 '.
+			'end) as progress, '.
+			'lpiv.total_time as time from '.
+			Database::get_course_table(TABLE_LP_VIEW, $scorm['course_db']).
+			' lpv, '.
+			Database::get_course_table(TABLE_LP_ITEM_VIEW, $scorm['course_db']).
+			' lpiv '.
+			' where lpv.lp_id = '.$scorm['child_id'].
+			' and lpiv.lp_item_id = '.$scorm['subchild_id'].
+			' and lpiv.lp_view_id = lpv.id');
+}
+
+function reports_modules_scorm_objectiveVal($scorm, $key_id) {
+	return array('type'=> 'sql', 'sql' => 
+			'select '.$key_id.', lpv.user_id as uid, '.
+			'lpv.session_id, lpiv.view_count as attempt, '.
+			'lpivo.score_row as score, '.
+			'(case lpivo.status '.
+				'when "incomplete" then 0 '.
+				'when "completed" then 1 '.
+				'when "passed" then 2 '.
+				'when "failed" then 3 '.
+				'when "browsed" then 4 '.
+				'when "not attempted" then 5 '.
+				'else 6 '.
+			'end) as progress, '.
+			'null as time from '.
+			Database::get_course_table(TABLE_LP_VIEW, $scorm['course_db']).
+			' lpv, '.
+			Database::get_course_table(TABLE_LP_ITEM_VIEW, $scorm['course_db']).
+			' lpiv, '.
+			Database::get_course_table(TABLE_LP_IV_OBJECTIVE, $scorm['course_db']).
+			' lpivo '.
+			' where lpv.lp_id = '.$scorm['child_id'].
+			' and lpiv.lp_item_id = '.$scorm['subchild_id'].
+			' and lpivo.objective_id = '.$scorm['subsubchild_name'].
+			' and lpiv.lp_view_id = lpv.id'.
+			' and lpivo.lp_iv_id=lpiv.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','course');
+$reports_enabled_modules = array('quiz','course','scorm');
 
-$reports_enabled_templates = array('exercicesMultiCourses', 'courseTime');
+$reports_enabled_templates = array('exercicesMultiCourses', 'courseTime','scorm');
 
 
 // load templates