Browse Source

Adding survey count in reporting (only for courses that are not included in a session) see BT#3139

Julio Montoya 13 years ago
parent
commit
12834af685
3 changed files with 120 additions and 62 deletions
  1. 75 24
      main/inc/lib/tracking.lib.php
  2. 0 1
      main/mySpace/myStudents.php
  3. 45 37
      main/tracking/courseLog.php

+ 75 - 24
main/inc/lib/tracking.lib.php

@@ -3515,11 +3515,12 @@ class TrackingCourseLog {
                 user.lastname       as col1,
                 user.firstname      as col2
                 FROM $tbl_user as user $url_table
-		$condition_user $url_condition";
+		        $condition_user $url_condition";
 
 		if (!in_array($direction, array('ASC','DESC'))) {
 			$direction = 'ASC';
 		}
+		
 		$column = intval($column);
 
 		if ($is_western_name_order) {
@@ -3541,6 +3542,26 @@ class TrackingCourseLog {
 		$users = array ();
 		$t = time();
 		$row = array();
+        
+        $course_info = api_get_course_info($course_code);
+        
+        $total_surveys = 0;
+        
+        if (empty($session_id)) {
+            $survey_user_list = array();
+            $survey_list = survey_manager::get_surveys($course_code, $session_id);
+            
+            $total_surveys = count($survey_list);
+            $survey_data = array();
+            foreach ($survey_list as $survey) {
+                $user_list = survey_manager::get_people_who_filled_survey($survey['survey_id'], false, $course_info['real_id']);
+                
+                foreach ($user_list as $user_id) {
+                    isset($survey_user_list[$user_id]) ? $survey_user_list[$user_id]++ : $survey_user_list[$user_id] = 1;
+                }
+            }
+        }
+        
 		while ($user = Database::fetch_array($res, 'ASSOC')) {
 			//$user['user_id'] = $user['user_id']
 			$user['official_code']  = $user['col0'];
@@ -3551,20 +3572,20 @@ class TrackingCourseLog {
 				$user['lastname']       = $user['col1'];
 				$user['firstname']      = $user['col2'];
 			}
-			$user['time'] = api_time_to_hms(Tracking::get_time_spent_on_the_course($user['user_id'], $course_code, $session_id));
-
-			$avg_student_score      = Tracking::get_avg_student_score($user['user_id'], $course_code, array(), $session_id);
+			$user['time']                = api_time_to_hms(Tracking::get_time_spent_on_the_course($user['user_id'], $course_code, $session_id));
+    
+			$avg_student_score           = Tracking::get_avg_student_score($user['user_id'], $course_code, array(), $session_id);
 
-			$avg_student_progress   = Tracking::get_avg_student_progress($user['user_id'], $course_code, array(), $session_id);
+			$avg_student_progress        = Tracking::get_avg_student_progress($user['user_id'], $course_code, array(), $session_id);
 			if (empty($avg_student_progress)) {
 				$avg_student_progress=0;
 			}
-			$user['average_progress'] = $avg_student_progress.'%';
+			$user['average_progress']   = $avg_student_progress.'%';
 
 			if (is_numeric($avg_student_score)) {
-				$user['student_score'] = $avg_student_score.'%';
+				$user['student_score']  = $avg_student_score.'%';
 			} else {
-				$user['student_score'] = $avg_student_score;
+				$user['student_score']  = $avg_student_score;
 			}
 			$user['count_assignments']  = Tracking::count_student_assignments($user['user_id'], $course_code, $session_id);
 			$user['count_messages']     = Tracking::count_student_messages($user['user_id'], $course_code, $session_id);
@@ -3572,31 +3593,61 @@ class TrackingCourseLog {
 			$user['last_connection']    = Tracking::get_last_connection_date_on_the_course($user['user_id'], $course_code, $session_id);
 
 			// we need to display an additional profile field
-			$user['additional']='';
+			$user['additional'] = '';
+            
 			if (isset($_GET['additional_profile_field']) AND is_numeric($_GET['additional_profile_field'])) {
 				if (isset($additional_user_profile_info[$user['user_id']]) && is_array($additional_user_profile_info[$user['user_id']])) {
 					$user['additional'] = implode(', ', $additional_user_profile_info[$user['user_id']]);
 				}
 			}
+
+            if (empty($session_id)) {
+                $user['survey'] = (isset($survey_user_list[$user['user_id']]) ? $survey_user_list[$user['user_id']] : 0) .' / '.$total_surveys;
+            }
+                        
 			$user['link'] = '<center><a href="../mySpace/myStudents.php?student='.$user['user_id'].'&details=true&course='.$course_code.'&origin=tracking_course&id_session='.$session_id.'"><img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a></center>';
 
 			// store columns in array $users
-			$user_row = array($user['official_code'],
-			$user['lastname'],
-			$user['firstname'],
-			$user['time'],
-			$user['average_progress'],
-			$user['student_score'],
-			$user['count_assignments'],
-			$user['count_messages'],
-			$user['first_connection'],
-			$user['last_connection'],
-			$user['additional'],
-			$user['link']);
-			$users[] = $user_row;
+			
+			$is_western_name_order = api_is_western_name_order();
+            $user_row = array();
+            
+            $user_row[]= $user['official_code'];
+            
+            if ($is_western_name_order) {
+                $user_row[]= $user['lastname'];
+                $user_row[]= $user['firstname'];
+            } else {
+                $user_row[]= $user['firstname'];
+                $user_row[]= $user['lastname'];
+            }
+            $user_row[]= $user['time'];
+            $user_row[]= $user['average_progress'];
+            $user_row[]= $user['student_score'];
+            $user_row[]= $user['count_assignments'];
+            $user_row[]= $user['count_messages'];
+            
+            if (empty($session_id)) {
+                $user_row[]= $user['survey'];
+            }
+            
+            $user_row[]= $user['first_connection'];
+            $user_row[]= $user['last_connection'];
+            $user_row[]= $user['additional'];
+            
+          
+            $user_row[]= $user['link'];
+     
+            $users[] = $user_row;
+            
 			if ($export_csv) {
-				unset($user_row[11]);
-				unset($user_row[12]);
+			    if (empty($session_id)) {
+				    unset($user_row[12]);
+				    unset($user_row[13]);
+                } else {
+                    unset($user_row[11]);
+                    unset($user_row[12]);
+                }
 				$csv_content[] = $user_row;
 			}
 		}

+ 0 - 1
main/mySpace/myStudents.php

@@ -20,7 +20,6 @@ require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/result.class.php';
 require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/linkfactory.class.php';
 require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/category.class.php';
 require_once api_get_path(LIBRARY_PATH).'attendance.lib.php';
-
 require_once api_get_path(SYS_CODE_PATH).'survey/survey.lib.php';
 
 $htmlHeadXtra[] = '<script type="text/javascript">

+ 45 - 37
main/tracking/courseLog.php

@@ -46,9 +46,10 @@ require_once api_get_path(SYS_CODE_PATH).'newscorm/learnpathList.class.php';
 require_once api_get_path(SYS_CODE_PATH).'newscorm/scorm.class.php';
 require_once api_get_path(SYS_CODE_PATH).'newscorm/scormItem.class.php';
 require_once api_get_path(LIBRARY_PATH).'export.lib.inc.php';
-require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
 require_once api_get_path(LIBRARY_PATH).'statsUtils.lib.inc.php';
 require_once api_get_path(SYS_CODE_PATH).'resourcelinker/resourcelinker.inc.php';
+require_once api_get_path(SYS_CODE_PATH).'survey/survey.lib.php';
+
 
 // Starting the output buffering when we are exporting the information.
 $export_csv = isset($_GET['export']) && $_GET['export'] == 'csv' ? true : false;
@@ -145,9 +146,7 @@ switch($_GET['studentlist']) {
         break;            
 }
 
-
 echo '<span style="float:right; padding-top:0px;">';
-
 echo '<a href="javascript: void(0);" onclick="javascript: window.print();">'.Display::return_icon('printer.png', get_lang('Print'),'','32').'</a>';
 
 if ($_GET['studentlist'] == 'false') {
@@ -213,8 +212,7 @@ if ($_GET['studentlist'] == 'false') {
             $lp_avg_progress = 0;
             foreach ($a_students as $student_id => $student) {
                 // get the progress in learning pathes
-                $lp_avg_progress += Tracking::get_avg_student_progress($student_id, $course_code, array($lp_id), $session_id);
-                
+                $lp_avg_progress += Tracking::get_avg_student_progress($student_id, $course_code, array($lp_id), $session_id);                
             }
             if ($nbStudents > 0) {
                 $lp_avg_progress = $lp_avg_progress / $nbStudents;
@@ -284,8 +282,7 @@ if ($_GET['studentlist'] == 'false') {
             $temp = array(get_lang('NoExercises', ''), '');
             $csv_content[] = $temp;
         }
-    }
-
+    }    
     echo '</table></div>';
     echo '<div class="clear"></div>';
 
@@ -484,6 +481,10 @@ if ($_GET['studentlist'] == 'false') {
     } else {
         $is_western_name_order = api_is_western_name_order();
     }
+    
+    //PERSON_NAME_DATA_EXPORT is buggy    
+    $is_western_name_order = api_is_western_name_order();
+    
     $sort_by_first_name = api_sort_by_first_name();
 
     $tracking_column = isset($_GET['tracking_column']) ? $_GET['tracking_column'] : 0;
@@ -524,10 +525,20 @@ if ($_GET['studentlist'] == 'false') {
         $table->set_header(5, get_lang('Score').'&nbsp;'.Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), array('align' => 'absmiddle', 'hspace' => '3px')), false, array('style' => 'width:110px;'));
         $table->set_header(6, get_lang('Student_publication'), false);
         $table->set_header(7, get_lang('Messages'), false);
-        $table->set_header(8, get_lang('FirstLogin'), false, 'align="center"');
-        $table->set_header(9, get_lang('LatestLogin'), false, 'align="center"');
-        $table->set_header(10, get_lang('AdditionalProfileField'), false);
-        $table->set_header(11, get_lang('Details'), false);        
+        
+        if (empty($session_id)) {
+            $table->set_header(8, get_lang('Survey'), false);
+            $table->set_header(9, get_lang('FirstLogin'), false, 'align="center"');
+            $table->set_header(10, get_lang('LatestLogin'), false, 'align="center"');
+            $table->set_header(11, get_lang('AdditionalProfileField'), false);
+            $table->set_header(12, get_lang('Details'), false);
+        } else {
+            $table->set_header(8, get_lang('FirstLogin'), false, 'align="center"');
+            $table->set_header(9, get_lang('LatestLogin'), false, 'align="center"');
+            $table->set_header(10, get_lang('AdditionalProfileField'), false);
+            $table->set_header(11, get_lang('Details'), false);
+         }
+
         $table->display();
 
     } else {
@@ -536,39 +547,36 @@ if ($_GET['studentlist'] == 'false') {
 
     // Send the csv file if asked.
     if ($export_csv) {
-        if ($is_western_name_order) {
-            $csv_headers = array (
-                get_lang('OfficialCode', ''),
-                get_lang('FirstName', ''),
-                get_lang('LastName', ''),
-                get_lang('TrainingTime', ''),
-                get_lang('CourseProgress', ''),
-                get_lang('Score', ''),
-                get_lang('Student_publication', ''),
-                get_lang('Messages', ''),
-                get_lang('FirstLogin', ''),
-                get_lang('LatestLogin', '')
-            );
+        $csv_headers = array();
+        
+        $csv_headers[] = get_lang('OfficialCode', '');
+        if ($is_western_name_order) {       
+            $csv_headers[] = get_lang('FirstName', '');
+            $csv_headers[] = get_lang('LastName', '');            
         } else {
-            $csv_headers = array (
-                get_lang('OfficialCode', ''),
-                get_lang('LastName', ''),
-                get_lang('FirstName', ''),
-                get_lang('TrainingTime', ''),
-                get_lang('CourseProgress', ''),
-                get_lang('Score', ''),
-                get_lang('Student_publication', ''),
-                get_lang('Messages', ''),
-                get_lang('FirstLogin', ''),
-                get_lang('LatestLogin', '')
-            );
+            $csv_headers[] = get_lang('LastName', '');   
+            $csv_headers[] = get_lang('FirstName', '');            
         }
+        $csv_headers[] = get_lang('TrainingTime', '');
+        $csv_headers[] = get_lang('CourseProgress', '');
+        $csv_headers[] = get_lang('Score', '');
+        $csv_headers[] = get_lang('Student_publication', '');
+        $csv_headers[] = get_lang('Messages', '');
+        
+        if (empty($session_id)) {
+            $csv_headers[] = get_lang('Survey');
+        }
+        
+        $csv_headers[] = get_lang('FirstLogin', '');
+        $csv_headers[] = get_lang('LatestLogin', '');
+    
 
         if (isset($_GET['additional_profile_field']) AND is_numeric($_GET['additional_profile_field'])) {
             $csv_headers[] = get_lang('AdditionalProfileField');
         }
         ob_end_clean();        
-        array_unshift($csv_content, $csv_headers); // Adding headers before the content.        
+        array_unshift($csv_content, $csv_headers); // Adding headers before the content.
+                
         Export::export_table_csv($csv_content, 'reporting_student_list');
         exit;
     }