Quellcode durchsuchen

[svn r11884] Fix multiple bugs in reporting (and bugs linked with exercises)

Julian Prud'homme vor 18 Jahren
Ursprung
Commit
f5d0eb8422

+ 119 - 126
main/exercice/exercice.php

@@ -24,7 +24,7 @@
 *	@author Olivier Brouckaert, original author
 *	@author Denes Nagy, HotPotatoes integration
 *	@author Wolfgang Schneider, code/html cleanup
-* 	@version $Id: exercice.php 11767 2007-03-29 09:22:59Z elixir_julian $
+* 	@version $Id: exercice.php 11884 2007-04-05 12:46:00Z elixir_julian $
 */
 
 
@@ -138,6 +138,123 @@ a.invisible:hover
 -->
 </style>';
 
+if ($show=='result' && $_REQUEST['comments']=='update' && $is_allowedToEdit)
+{
+	$id  = $_GET['exeid'];
+	$emailid = $_GET['emailid'];
+	$test  = $_GET['test'];
+	$from = $_SESSION[_user]['mail'];
+	$from_name = $_SESSION[_user]['firstName']." ".$_SESSION[_user]['lastName'];
+	$url = $_SESSION['checkDokeosURL'].'claroline/exercice/exercice.php?'.api_get_cidreq().'&show=result';
+
+	foreach ($_POST as $key=>$v)
+	{
+		$keyexp = explode('_',$key);
+		if ($keyexp[0] == "marks")
+		{
+			$sql = "select question from $TBL_QUESTIONS where id = '$keyexp[1]'";
+			$result =api_sql_query($sql, __FILE__, __LINE__);
+			$ques_name = mysql_result($result,0,"question");
+
+			$query = "update `$TABLETRACK_ATTEMPT` set marks = '$v' where question_id = $keyexp[1] and exe_id=$id";
+			api_sql_query($query, __FILE__, __LINE__);
+
+			$qry = 'SELECT sum(marks) as tot
+					FROM `'.$TABLETRACK_ATTEMPT.'` where exe_id = '.intval($id).'
+					GROUP BY question_id';
+
+			$res = api_sql_query($qry,__FILE__,__LINE__);
+			$tot = mysql_result($res,0,'tot');
+
+			$totquery = "update `$TBL_TRACK_EXERCICES` set exe_result = $tot where exe_Id=$id";
+			api_sql_query($totquery, __FILE__, __LINE__);
+
+		}
+		else
+		{
+		  $query = "update `$TABLETRACK_ATTEMPT` set teacher_comment = '$v' where question_id = $keyexp[1] and exe_id = $id ";
+		   api_sql_query($query, __FILE__, __LINE__);
+		}
+
+	}
+
+	$qry = 'SELECT DISTINCT question_id, marks
+			FROM `'.$TABLETRACK_ATTEMPT.'` where exe_id = '.intval($id).'
+			GROUP BY question_id';
+
+	$res = api_sql_query($qry,__FILE__,__LINE__);
+	$tot = 0;
+	while($row = mysql_fetch_assoc($res))
+	{
+		$tot += $row ['marks'];
+	}
+
+	$totquery = "update `$TBL_TRACK_EXERCICES` set exe_result = $tot where exe_Id=$id";
+
+	api_sql_query($totquery, __FILE__, __LINE__);
+$subject = "Examsheet viewed/corrected/commented by teacher";
+$message = "<html>
+<head>
+<style type='text/css'>
+<!--
+.body{
+font-family: Verdana, Arial, Helvetica, sans-serif;
+font-weight: Normal;
+color: #000000;
+}
+.style8 {font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; color: #006699; }
+.style10 {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	font-weight: bold;
+}
+.style16 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
+-->
+</style>
+</head>
+<body>
+<DIV>
+  <p>Dear Student, </p>
+  <p class='style10'> Your following attempt has been viewed/commented/corrected by teacher </p>
+  <table width='417'>
+    <tr>
+      <td width='229' valign='top' bgcolor='E5EDF8'>&nbsp;&nbsp;<span class='style10'>Question</span></td>
+      <td width='469' valign='top' bgcolor='#F3F3F3'><span class='style16'>#ques_name#</span></td>
+
+    </tr>
+    <tr>
+      <td width='229' valign='top' bgcolor='E5EDF8'>&nbsp;&nbsp;<span class='style10'>Test</span></td>
+       <td width='469' valign='top' bgcolor='#F3F3F3'><span class='style16'>#test#</span></td>
+
+    </tr>
+  </table>
+  <p>Click the link below to access   your account and view your commented Examsheet. <A href='#url#'>#url#</A><BR>
+    <BR>
+  Regards </p>
+  </DIV>
+  </body>
+  </html>
+";
+$message = "<p>You attempt for the test #test# has been viewed/commented/corrected by the teacher. Click the link below to access  your account and view your Examsheet. <A href='#url#'>#url#</A></p>
+<BR>";
+$mess= str_replace("#test#",$test,$message);
+//$message= str_replace("#ques_name#",$ques_name,$mess);
+$message = str_replace("#url#",$url,$mess);
+$mess = stripslashes($message);
+$headers  = " MIME-Version: 1.0 \r\n";
+$headers .= "User-Agent: Dokeos/1.6";
+$headers .= "Content-Transfer-Encoding: 7bit";
+$headers .= 'From: '.$from_name.' <'.$from.'>' . "\r\n";
+$headers="From:$from_name\r\nReply-to: $to\r\nContent-type: text/html; charset=iso-8859-15";
+//mail($emailid, $subject, $mess,$headers);
+
+if($_GET['origin']=='tests'){
+	//Redirect to the reporting		
+	header('location: ../mySpace/myStudents.php?student='.$_GET['student'].'&details=true&course='.$_GET['course']);
+}
+
+}
+
 if($show!='result')
 {
 	$nameTools=get_lang('Exercices');
@@ -679,133 +796,9 @@ if($show == 'test'){
 // if tracking is enabled
 if($_configuration['tracking_enabled'])
 {
-	?>
- <h3><?php
- //add link to breadcrumb
- //$interbreadcrumb[]=array("url" => "exercice.php","name" => get_lang('StudentScore'));
 
- //echo $is_allowedToEdit?get_lang('StudentResults'):get_lang('YourResults'); ?></h3>
-
-	<?php
 	if($show == 'result'){
-			if($is_allowedToEdit)
-		{
-		if ($_REQUEST['comments']=='update')
-				{
-
-					$id  = $_GET['exeid'];
-					$emailid = $_GET['emailid'];
-					$test  = $_GET['test'];
-					$from = $_SESSION[_user]['mail'];
-					$from_name = $_SESSION[_user]['firstName']." ".$_SESSION[_user]['lastName'];
-					$url = $_SESSION['checkDokeosURL'].'claroline/exercice/exercice.php?'.api_get_cidreq().'&show=result';
-
-					foreach ($_POST as $key=>$v)
-						{
-						$keyexp = explode('_',$key);
-						if ($keyexp[0] == "marks")
-							{
-							$sql = "select question from $TBL_QUESTIONS where id = '$keyexp[1]'";
-							$result =api_sql_query($sql, __FILE__, __LINE__);
-							$ques_name = mysql_result($result,0,"question");
-
-							$query = "update `$TABLETRACK_ATTEMPT` set marks = '$v' where question_id = $keyexp[1] and exe_id=$id";
-							api_sql_query($query, __FILE__, __LINE__);
-
-							$qry = 'SELECT sum(marks) as tot
-									FROM `'.$TABLETRACK_ATTEMPT.'` where exe_id = '.intval($id).'
-									GROUP BY question_id';
-
-							$res = api_sql_query($qry,__FILE__,__LINE__);
-							$tot = mysql_result($res,0,'tot');
-
-							$totquery = "update `$TBL_TRACK_EXERCICES` set exe_result = $tot where exe_Id=$id";
-							api_sql_query($totquery, __FILE__, __LINE__);
-
-							}
-						else
-						  {
-						  $query = "update `$TABLETRACK_ATTEMPT` set teacher_comment = '$v' where question_id = $keyexp[1] and exe_id = $id ";
-						   api_sql_query($query, __FILE__, __LINE__);
-							}
-
-
-						}
-
-						$qry = 'SELECT DISTINCT question_id, marks
-								FROM `'.$TABLETRACK_ATTEMPT.'` where exe_id = '.intval($id).'
-								GROUP BY question_id';
-
-						$res = api_sql_query($qry,__FILE__,__LINE__);
-						$tot = 0;
-						while($row = mysql_fetch_assoc($res))
-						{
-							$tot += $row ['marks'];
-						}
-
-						$totquery = "update `$TBL_TRACK_EXERCICES` set exe_result = $tot where exe_Id=$id";
-
-						api_sql_query($totquery, __FILE__, __LINE__);
-				$subject = "Examsheet viewed/corrected/commented by teacher";
-				$message = "<html>
-<head>
-<style type='text/css'>
-<!--
-.body{
-font-family: Verdana, Arial, Helvetica, sans-serif;
-font-weight: Normal;
-color: #000000;
-}
-.style8 {font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; color: #006699; }
-.style10 {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 12px;
-	font-weight: bold;
-}
-.style16 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
--->
-</style>
-</head>
-<body>
-<DIV>
-  <p>Dear Student, </p>
-  <p class='style10'> Your following attempt has been viewed/commented/corrected by teacher </p>
-  <table width='417'>
-    <tr>
-      <td width='229' valign='top' bgcolor='E5EDF8'>&nbsp;&nbsp;<span class='style10'>Question</span></td>
-      <td width='469' valign='top' bgcolor='#F3F3F3'><span class='style16'>#ques_name#</span></td>
-
-    </tr>
-    <tr>
-      <td width='229' valign='top' bgcolor='E5EDF8'>&nbsp;&nbsp;<span class='style10'>Test</span></td>
-       <td width='469' valign='top' bgcolor='#F3F3F3'><span class='style16'>#test#</span></td>
-
-    </tr>
-  </table>
-  <p>Click the link below to access   your account and view your commented Examsheet. <A href='#url#'>#url#</A><BR>
-    <BR>
-  Regards </p>
-  </DIV>
-  </body>
-  </html>
-";
-$message = "<p>You attempt for the test #test# has been viewed/commented/corrected by the teacher. Click the link below to access  your account and view your Examsheet. <A href='#url#'>#url#</A></p>
-    <BR>";
-				$mess= str_replace("#test#",$test,$message);
-				//$message= str_replace("#ques_name#",$ques_name,$mess);
-				$message = str_replace("#url#",$url,$mess);
-				$mess = stripslashes($message);
-				$headers  = " MIME-Version: 1.0 \r\n";
-				$headers .= "User-Agent: Dokeos/1.6";
-				$headers .= "Content-Transfer-Encoding: 7bit";
-				$headers .= 'From: '.$from_name.' <'.$from.'>' . "\r\n";
-				$headers="From:$from_name\r\nReply-to: $to\r\nContent-type: text/html; charset=iso-8859-15";
-			//mail($emailid, $subject, $mess,$headers);
-
-
-
-				}
-				}
+		
 		?>
 
 		<table class="data_table">

+ 23 - 10
main/exercice/exercise_show.php

@@ -30,7 +30,7 @@
 */
 
 // name of the language file that needs to be included
-$language_file='exercice';
+$language_file=array('exercice','tracking');
 
 // including the global dokeos file
 include('../inc/global.inc.php');
@@ -49,13 +49,8 @@ define('MATCHING',		4);
 define('FREE_ANSWER', 5);
 define('HOTSPOT', 6);
 
-
-
-
-$this_section=SECTION_COURSES;
 api_protect_course_script();
 
-
 // Database table definitions
 $TBL_EXERCICE_QUESTION 	= Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
 $TBL_EXERCICES         	= Database::get_course_table(TABLE_QUIZ_TEST);
@@ -108,9 +103,19 @@ if ( empty ( $objExercise ) ) {
     $objExercise = $_SESSION['objExercise'];
 }
 $is_allowedToEdit=$is_courseAdmin;
-$nameTools=get_lang('Exercice');
+$nameTools=get_lang('CorrectTest');
 
-$interbreadcrumb[]=array("url" => "exercice.php","name" => get_lang('Exercices'));
+if($origin=='' || $origin!='tests'){
+	$interbreadcrumb[]=array("url" => "exercice.php","name" => get_lang('Exercices'));
+	$this_section=SECTION_COURSES;
+}
+else{
+	unset($_cid);
+	$interbreadcrumb[] = array ("url" => "../mySpace/index.php", "name" => get_lang('MySpace'));
+	$interbreadcrumb[] = array ("url" => "../mySpace/student.php", "name" => get_lang("MyStudents"));
+ 	$interbreadcrumb[] = array ("url" => "../mySpace/myStudents.php?student=".$_GET['student'].'&details=true&course='.$_GET['cidReq'].'', "name" => get_lang("StudentDetails"));
+ 	$this_section = "session_my_space";
+}
 
 Display::display_header($nameTools,"Exercise");
 //echo "<pre>";
@@ -851,8 +856,16 @@ $totalWeighting+=$questionWeighting;
 			if($is_allowedToEdit)
 			{
 		?>
-
-			 <form name="myform" id="myform" action="exercice.php?show=result&comments=update&exeid=<?php echo $id; ?>&test=<?php echo $test; ?>&emailid=<?php echo $emailId;?>" method="post">
+		
+		<?php
+			if($origin=='tests'){
+				echo ' <form name="myform" id="myform" action="exercice.php?show=result&comments=update&exeid='.$id.'&test='.$test.'&emailid='.$emailId.'&origin=tests&student='.$_GET['student'].'&details=true&course='.$_GET['cidReq'].'" method="post">';
+			}
+			else{
+				echo ' <form name="myform" id="myform" action="exercice.php?show=result&comments=update&exeid='.$id.'&test='.$test.'&emailid='.$emailId.'" method="post">';
+			}
+		?>
+			
 			 <input type="submit" value="<?php echo get_lang('Ok'); ?>" onclick="getFCK('<?php echo $strids; ?>','<?php echo $marksid; ?>');"/>
 			 </form>
 		<?php } ?>

+ 5 - 1
main/exercice/unique_answer.class.php

@@ -144,7 +144,11 @@ class UniqueAnswer extends Question {
 		$renderer->setElementTemplate('{element}&nbsp;','lessAnswers');
 		$renderer->setElementTemplate('{element}','moreAnswers');
 		$form -> addElement ('html', '</div></div>');
-
+		
+		//We check the first radio button to be sure a radio button will be check 
+		if($correct==0){
+			$correct=1;
+		}
 		$defaults['correct'] = $correct;
 		$form -> setDefaults($defaults);
 

+ 18 - 3
main/inc/lib/tracking.lib.php

@@ -104,7 +104,7 @@ class Tracking {
 		return $nb_seconds;
 	}
 	
-	function get_last_connection_date($student_id)
+	function get_last_connection_date($student_id, $warning_message=false)
 	{
 		$tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
 		$sql = 'SELECT login_date FROM '.$tbl_track_login.' 
@@ -114,7 +114,22 @@ class Tracking {
 		$rs = api_sql_query($sql);
 		if($last_login_date = mysql_result($rs,0,0))
 		{
-			return $last_login_date;
+			if(!$warning_message){
+				return format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($last_login_date));
+			}
+			else{
+				$timestamp=strtotime($last_login_date);
+				$currentTimestamp=mktime();
+			
+				//If the last connection is > than 7 days, the text is red
+				//345600 = 7 days in seconds 
+				if($currentTimestamp-$timestamp>345600){
+					return '<span style="color: #F00;">'.format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($last_login_date)).'</span>';
+				}
+				else{
+					return format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($last_login_date));
+				}
+			}
 		}
 		else
 		{
@@ -133,7 +148,7 @@ class Tracking {
 		$rs = api_sql_query($sql);
 		if($last_login_date = mysql_result($rs,0,0))
 		{
-			return $last_login_date;
+			return format_locale_date(get_lang('dateTimeFormatLong'),strtotime($last_login_date));
 		}
 		else
 		{

+ 5 - 9
main/mySpace/myStudents.php

@@ -481,7 +481,7 @@ if(!empty($_GET['student']))
 							<?php echo $progress ?>
 						</td>
 						<td align="center">
-							<?php if($start_time!='') echo date('Y-m-d',$start_time); else echo '-'; ?>
+							<?php if($start_time!='') echo format_locale_date(get_lang('DateFormatLongWithoutDay'),$start_time); else echo '-'; ?>
 						</td>
 						<td align="center">
 							<?php
@@ -561,9 +561,8 @@ if(!empty($_GET['student']))
 								 WHERE exe_user_id = ".$_GET['student']."
 								 AND exe_cours_id = '".$a_infosCours['code']."'
 								 AND exe_exo_id = ".$a_exercices['id']."
-								 ORDER BY exe_date DESC LIMIT 1"
-									;
-							
+								 ORDER BY exe_date DESC LIMIT 1";
+
 					$resultScore = api_sql_query($sqlScore);
 					$score = 0; 
 					while($a_score = mysql_fetch_array($resultScore))
@@ -604,7 +603,7 @@ if(!empty($_GET['student']))
 							<td align='center'>
 						 ";
 					if($a_essais['essais']>0)
-						echo		'<a href="../exercice/exercise_show.php?id='.$exe_id.'&cidReq='.$a_infosCours['code'].'"> <img src="'.api_get_path(WEB_IMG_PATH).'quiz.gif" border="0"> </a>';
+						echo		'<a href="../exercice/exercise_show.php?id='.$a_exercices['id'].'&cidReq='.$a_infosCours['code'].'&student='.$_GET['student'].'&origin=tests"> <img src="'.api_get_path(WEB_IMG_PATH).'quiz.gif" border="0"> </a>';
 					echo "	</td>
 						  </tr>
 						 ";
@@ -717,7 +716,6 @@ if(!empty($_GET['student']))
 			$csv_content[] = array(get_lang('Course'),get_lang('Time'),get_lang('Progress'),get_lang('Score'));
 			foreach($a_courses as $course_code)
 			{
-				
 				$course_infos = CourseManager :: get_course_information($course_code);
 				$time_spent_on_course = api_time_to_hms(Tracking :: get_time_spent_on_the_course($a_infosUser['user_id'], $course_code));
 				$progress = Tracking :: get_avg_student_progress($a_infosUser['user_id'], $course_code).' %';
@@ -761,9 +759,7 @@ if(!empty($_GET['student']))
 	if(!empty($_GET['details']) && $_GET['origin'] != 'tracking_course' && $_GET['origin'] != 'user_course')
 	{
 ?>
-		<div align="left">
-			<a href="<?php echo $_SERVER['PHP_SELF']; ?>?student=<?php echo $a_infosUser['user_id']; ?>#infosStudent"><?php echo get_lang('Back'); ?></a>
-		</div>
+		
 		<br /><br />
 <?php
 		}

+ 1 - 1
main/mySpace/session.php

@@ -90,7 +90,7 @@ if($nb_sessions > 0)
 		$row = array();
 		$row[] = $session['name'];
 		$row[] = $session['status'];
-		$row[] = get_lang('From').' '.format_locale_date("%B %Y %d",strtotime($session['date_start'])).' '.get_lang('To').' '.format_locale_date("%B %Y %d",strtotime($session['date_end']));
+		$row[] = get_lang('From').' '.format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($session['date_start'])).' '.get_lang('To').' '.format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($session['date_end']));
 		if($export_csv)
 		{
 			$csv_content[] = $row;

+ 5 - 12
main/mySpace/student.php

@@ -144,22 +144,15 @@ if($isCoach)
 			$row[] = $student_datas['lastname'];
 			$row[] = 	$student_datas['firstname'];
 			$row[] = api_time_to_hms($avg_time_spent);
-			$row[] = $avg_student_progress.' %';
-			$row[] = $avg_student_score.' %';		
+			$row[] = round($avg_student_progress,2).' %';
+			$row[] = round($avg_student_score,2).' %';		
 			$row[] = $total_assignments;
 			$row[] = $total_messages;
 			
-			$string_date=Tracking :: get_last_connection_date($student_id);
-			$timestamp=strtotime($string_date);
-			$currentTimestamp=mktime();
+			$string_date=Tracking :: get_last_connection_date($student_id,true);
+			
+			$row[] = $string_date;
 			
-			//If the last connection is > than 7 days, the text is red
-			if($currentTimestamp-$timestamp>345600){
-				$row[] = '<span style="color: #F00;">'.$string_date.'</span>';
-			}
-			else{
-				$row[] = $string_date;
-			}
 			
 			if($export_csv)
 			{