mirror of
https://github.com/CAcertOrg/cats.git
synced 2024-11-22 05:14:04 +00:00
Merge branch 'bug-1140' into release
This commit is contained in:
commit
aae47d592b
2 changed files with 624 additions and 581 deletions
|
@ -14,6 +14,7 @@ class Quiz
|
||||||
var $rawToPass;
|
var $rawToPass;
|
||||||
var $question;
|
var $question;
|
||||||
var $percentTest;
|
var $percentTest;
|
||||||
|
var $testPassed;
|
||||||
|
|
||||||
function Quiz(){
|
function Quiz(){
|
||||||
$this->topicID=0;
|
$this->topicID=0;
|
||||||
|
@ -85,8 +86,7 @@ class Quiz
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
$_SESSION['values']['questionList']=$this->questionList;
|
$_SESSION['values']['questionList']=$this->questionList;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
echo "<h5>".Class_Quiz_01." </h5>";
|
echo "<h5>".Class_Quiz_01." </h5>";
|
||||||
$value ="notEnoughQuestions";
|
$value ="notEnoughQuestions";
|
||||||
return $value;
|
return $value;
|
||||||
|
@ -212,7 +212,6 @@ class Quiz
|
||||||
}
|
}
|
||||||
|
|
||||||
function FillInTheBlanks($i,$value,$question) {
|
function FillInTheBlanks($i,$value,$question) {
|
||||||
|
|
||||||
echo '<td class="answer" valign="top" colspan="2">';
|
echo '<td class="answer" valign="top" colspan="2">';
|
||||||
$correctAns=$this->question->getCorrectAnswerFillInTheBlanks($question); // korrekte Antworen ermitteln
|
$correctAns=$this->question->getCorrectAnswerFillInTheBlanks($question); // korrekte Antworen ermitteln
|
||||||
$numberOfAnswers=$this->questionList[$i]['numberOfAnswers'];
|
$numberOfAnswers=$this->questionList[$i]['numberOfAnswers'];
|
||||||
|
@ -236,7 +235,6 @@ class Quiz
|
||||||
}
|
}
|
||||||
echo"</select>";
|
echo"</select>";
|
||||||
}
|
}
|
||||||
|
|
||||||
else if((strstr($array[$k],']'))){
|
else if((strstr($array[$k],']'))){
|
||||||
$array[$k]=str_replace("]",'', $array[$k]); // Klammer entfernen
|
$array[$k]=str_replace("]",'', $array[$k]); // Klammer entfernen
|
||||||
echo $array[$k];
|
echo $array[$k];
|
||||||
|
@ -250,9 +248,7 @@ class Quiz
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function evaluateQuiz() {
|
function evaluateQuiz() {
|
||||||
|
|
||||||
echo"<div>";
|
echo"<div>";
|
||||||
echo "<fieldset>";
|
echo "<fieldset>";
|
||||||
|
|
||||||
|
@ -270,19 +266,24 @@ class Quiz
|
||||||
}
|
}
|
||||||
$this->topicID=$this->questionList[$i]['t_id'];
|
$this->topicID=$this->questionList[$i]['t_id'];
|
||||||
switch($this->questionList[$i]['qt_id']){
|
switch($this->questionList[$i]['qt_id']){
|
||||||
case 1: {$this->evaluateSingleSelection($i,$value);
|
case 1: {
|
||||||
|
$this->evaluateSingleSelection($i,$value);
|
||||||
|
|
||||||
break;}
|
break;
|
||||||
case 2: {$this->evaluateMultipleChoice($i,$value);
|
}
|
||||||
|
case 2: {
|
||||||
break;}
|
$this->evaluateMultipleChoice($i,$value);
|
||||||
case 3: { $this->evaluateSingleSelection($i,$value); // Kann die selbe Maske verwendet werden
|
break;
|
||||||
|
}
|
||||||
break;}
|
case 3: {
|
||||||
case 4:{ //$this->getDBAnswers();
|
$this->evaluateSingleSelection($i,$value); // Kann die selbe Maske verwendet werden
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:{
|
||||||
|
//$this->getDBAnswers();
|
||||||
$this->evaluateFillInTheBlanks($i,$value,$question);
|
$this->evaluateFillInTheBlanks($i,$value,$question);
|
||||||
|
break;
|
||||||
break;}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -384,8 +385,6 @@ class Quiz
|
||||||
}
|
}
|
||||||
|
|
||||||
function evaluateFillInTheBlanks($i,$value,$question){
|
function evaluateFillInTheBlanks($i,$value,$question){
|
||||||
|
|
||||||
|
|
||||||
$addSlashes= preg_quote($question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird
|
$addSlashes= preg_quote($question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird
|
||||||
$array=explode('\\',$addSlashes); // String teilen
|
$array=explode('\\',$addSlashes); // String teilen
|
||||||
// Was Benutzer markiert hat
|
// Was Benutzer markiert hat
|
||||||
|
@ -463,7 +462,17 @@ function checkAnswers($correct,$value) {
|
||||||
$date= date("Y-m-d H:i:s" ,$timestamp); // aktuelles Datum und Uhrzeit berechnen
|
$date= date("Y-m-d H:i:s" ,$timestamp); // aktuelles Datum und Uhrzeit berechnen
|
||||||
$correctAnswers=$this->questionLimit-count($this->wrongQuestions);
|
$correctAnswers=$this->questionLimit-count($this->wrongQuestions);
|
||||||
$wrongAnswers=count($this->wrongQuestions);
|
$wrongAnswers=count($this->wrongQuestions);
|
||||||
$sql="INSERT INTO learnprogress (user_id,root,date,t_id,number,correct,wrong,percentage) VALUES ('".mysql_real_escape_string($_SESSION['profile']['id'])."','".mysql_real_escape_string($_SESSION['profile']['root'])."','$date',".intval($this->topicID).",".intval($this->questionLimit).",".intval($correctAnswers).",".intval($wrongAnswers).",".mysql_real_escape_string($this->percentTest).")";
|
$passed=$this->testPassed;
|
||||||
|
$sql="INSERT INTO learnprogress (user_id,root,date,t_id,number,correct,wrong,percentage,passed)
|
||||||
|
VALUES ('".mysql_real_escape_string($_SESSION['profile']['id'])."',
|
||||||
|
'".mysql_real_escape_string($_SESSION['profile']['root'])."',
|
||||||
|
'$date',
|
||||||
|
".intval($this->topicID).",
|
||||||
|
".intval($this->questionLimit).",
|
||||||
|
".intval($correctAnswers).",
|
||||||
|
".intval($wrongAnswers).",
|
||||||
|
".mysql_real_escape_string($this->percentTest).",
|
||||||
|
".intval($passed).")";
|
||||||
$query = mysql_query($sql);
|
$query = mysql_query($sql);
|
||||||
$this->lp_id = mysql_insert_id();
|
$this->lp_id = mysql_insert_id();
|
||||||
$this->insertAnswersIncorrect();
|
$this->insertAnswersIncorrect();
|
||||||
|
@ -485,6 +494,7 @@ function checkAnswers($correct,$value) {
|
||||||
|
|
||||||
$percentTest=round($percentTest, 2);
|
$percentTest=round($percentTest, 2);
|
||||||
$this->percentTest=$percentTest;
|
$this->percentTest=$percentTest;
|
||||||
|
$this->testPassed=0;
|
||||||
if($this->rawToPass > 0 && $this->rawToPass <= $percentTest)$value="".Class_Quiz_08."";
|
if($this->rawToPass > 0 && $this->rawToPass <= $percentTest)$value="".Class_Quiz_08."";
|
||||||
else $value="".Class_Quiz_09."";
|
else $value="".Class_Quiz_09."";
|
||||||
|
|
||||||
|
@ -497,6 +507,7 @@ function checkAnswers($correct,$value) {
|
||||||
//createLearnProgress();
|
//createLearnProgress();
|
||||||
|
|
||||||
if($this->rawToPass > 0 && $this->rawToPass <= $percentTest) {
|
if($this->rawToPass > 0 && $this->rawToPass <= $percentTest) {
|
||||||
|
$this->testPassed=1;
|
||||||
// Test has been passed, maybe a paper/PDF-certificate can be requested
|
// Test has been passed, maybe a paper/PDF-certificate can be requested
|
||||||
if ($_SERVER['SSL_CLIENT_S_DN_CN']=="CAcert WoT User") {
|
if ($_SERVER['SSL_CLIENT_S_DN_CN']=="CAcert WoT User") {
|
||||||
// Sorry, we cannot issue certificates for anonymous users
|
// Sorry, we cannot issue certificates for anonymous users
|
||||||
|
|
|
@ -7,6 +7,8 @@ class Progress
|
||||||
var $incorrect_answers;
|
var $incorrect_answers;
|
||||||
var $percentArray;
|
var $percentArray;
|
||||||
var $maximum;
|
var $maximum;
|
||||||
|
var $passed;
|
||||||
|
var $totalresult=array();
|
||||||
|
|
||||||
function Progress() {
|
function Progress() {
|
||||||
$this->progress=array();
|
$this->progress=array();
|
||||||
|
@ -15,6 +17,7 @@ class Progress
|
||||||
$this->topic=0;
|
$this->topic=0;
|
||||||
$this->lp_id=0;
|
$this->lp_id=0;
|
||||||
$this->percentArray=array();
|
$this->percentArray=array();
|
||||||
|
$this->passed=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setTopic($t_id){
|
function setTopic($t_id){
|
||||||
|
@ -29,7 +32,7 @@ class Progress
|
||||||
$this->progress=$value;
|
$this->progress=$value;
|
||||||
}
|
}
|
||||||
function getProgress(){
|
function getProgress(){
|
||||||
$sql= "SELECT lp_id,date,number,correct,wrong FROM learnprogress WHERE user_id='".mysql_real_escape_string($_SESSION['profile']['id'])."' AND t_id='".mysql_real_escape_string($this->topic)."' AND root ='".mysql_real_escape_string($_SESSION['profile']['root'])."' order by date";
|
$sql= "SELECT lp_id,date,number,correct,wrong, passed FROM learnprogress WHERE user_id='".mysql_real_escape_string($_SESSION['profile']['id'])."' AND t_id='".mysql_real_escape_string($this->topic)."' AND root ='".mysql_real_escape_string($_SESSION['profile']['root'])."' order by date";
|
||||||
$query = mysql_query($sql) OR die(mysql_error());
|
$query = mysql_query($sql) OR die(mysql_error());
|
||||||
$i=1;
|
$i=1;
|
||||||
while($progress =mysql_fetch_array($query,MYSQL_BOTH )){
|
while($progress =mysql_fetch_array($query,MYSQL_BOTH )){
|
||||||
|
@ -38,6 +41,7 @@ class Progress
|
||||||
$this->progress[$i]['number']=$progress['number']; // in arra speichern
|
$this->progress[$i]['number']=$progress['number']; // in arra speichern
|
||||||
$this->progress[$i]['correct']=$progress['correct'];
|
$this->progress[$i]['correct']=$progress['correct'];
|
||||||
$this->progress[$i]['wrong']=$progress['wrong'];
|
$this->progress[$i]['wrong']=$progress['wrong'];
|
||||||
|
$this->progress[$i]['passed']=$progress['passed'];
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,6 +53,8 @@ class Progress
|
||||||
}
|
}
|
||||||
|
|
||||||
function showTable() {
|
function showTable() {
|
||||||
|
$this->totalresult['count']=0;
|
||||||
|
$this->totalresult['passed']=0;
|
||||||
if(count($this->progress)==0) echo "<div class='h8'>".Global_07."</div>";
|
if(count($this->progress)==0) echo "<div class='h8'>".Global_07."</div>";
|
||||||
else {
|
else {
|
||||||
echo"<br /> <br />";
|
echo"<br /> <br />";
|
||||||
|
@ -58,9 +64,13 @@ class Progress
|
||||||
echo"<td class='th th_pos_date'>".Global_04."</td>";
|
echo"<td class='th th_pos_date'>".Global_04."</td>";
|
||||||
echo"<td class='th th_count'>".Class_Progress_01."</td>";
|
echo"<td class='th th_count'>".Class_Progress_01."</td>";
|
||||||
echo"<td class='th th_count'>".Global_03."</td>";
|
echo"<td class='th th_count'>".Global_03."</td>";
|
||||||
|
echo"<td class='th th_count'>".Statistic_04."</td>";
|
||||||
echo "<td class='th th_buttons'></td>";
|
echo "<td class='th th_buttons'></td>";
|
||||||
echo"</tr>";
|
echo"</tr>";
|
||||||
for ($i=1;$i<=count($this->progress);$i++){
|
for ($i=1;$i<=count($this->progress);$i++){
|
||||||
|
if (1==$this->progress[$i]['passed']) {
|
||||||
|
$this->totalresult['passed']+=1;
|
||||||
|
}
|
||||||
echo "<tr>";
|
echo "<tr>";
|
||||||
echo"<td class='td'>$i</td>";
|
echo"<td class='td'>$i</td>";
|
||||||
echo"<td class='td'>".$this->progress[$i]['date']."</td>";
|
echo"<td class='td'>".$this->progress[$i]['date']."</td>";
|
||||||
|
@ -72,10 +82,22 @@ class Progress
|
||||||
}
|
}
|
||||||
$percent=round ($percent,2);
|
$percent=round ($percent,2);
|
||||||
echo "<td class='td'>$percent %</td>";
|
echo "<td class='td'>$percent %</td>";
|
||||||
echo"<td class='td'> <a href='?site=progress&action=showIncorrectAnswers&lp_id=".$this->progress[$i]['lp_id']."&t_id=$this->topic'><img src='images/details.png' class='linkimage' alt='' /></a></td>";
|
echo "<td class='td'>".$this->getPassedImage($this->progress[$i]['passed'])."</td>";
|
||||||
|
echo "<td class='td'> <a href='?site=progress&action=showIncorrectAnswers&lp_id=";
|
||||||
|
echo $this->progress[$i]['lp_id']."&t_id=$this->topic'><img src='images/details.png' class='linkimage' alt='' /></a></td>";
|
||||||
echo "</tr>";
|
echo "</tr>";
|
||||||
}
|
}
|
||||||
|
$this->totalresult['count']=$i-1;
|
||||||
|
echo "<tr>";
|
||||||
|
echo "<td class='td' colspan='6' align='center'>".Statistic_04.' '.$this->totalresult['passed'].'/'.$this->totalresult['count']."</td>";
|
||||||
|
echo "</tr>\n";
|
||||||
echo"</table>";
|
echo"</table>";
|
||||||
|
if ($this->totalresult['passed'] > 0) {
|
||||||
|
echo "<form class='info' action='index.php?site=start_test&action=requestCert' method='post'>";
|
||||||
|
echo "<input type='hidden' name='t_id' value='$this->topic' />";
|
||||||
|
echo "<input name='submit' class='Button_middle' type='submit' value='".Class_Quiz_11_RequestCert."' />";
|
||||||
|
echo "</form>";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,8 +188,7 @@ class Progress
|
||||||
|
|
||||||
echo"<td class='question_incorrect' valign='top'>".$questionText."</td>";
|
echo"<td class='question_incorrect' valign='top'>".$questionText."</td>";
|
||||||
|
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
echo "<td class='question_incorrect' valign='top'>". $question['question']."</td>";
|
echo "<td class='question_incorrect' valign='top'>". $question['question']."</td>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -203,10 +224,21 @@ class Progress
|
||||||
$answer=str_replace("]",'', $answer); // Klammer entfernen
|
$answer=str_replace("]",'', $answer); // Klammer entfernen
|
||||||
$key = array_search($answer, $array);
|
$key = array_search($answer, $array);
|
||||||
$answer=str_replace("[",'', $answer); // Klammer entfernen
|
$answer=str_replace("[",'', $answer); // Klammer entfernen
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $questionText;
|
return $questionText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getPassedImage($passed){
|
||||||
|
// returns the image depending on the status of a test result
|
||||||
|
$img="<img src='images/details.png' alt='' />";
|
||||||
|
if (0==$passed) {
|
||||||
|
$img="<img src='images/wrong.png' alt='' />";
|
||||||
|
}
|
||||||
|
if (1==$passed) {
|
||||||
|
$img="<img src='images/correct.png' alt='' />";
|
||||||
|
}
|
||||||
|
return $img;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in a new issue