Merge branch 'bug-1140' into release

This commit is contained in:
Bernhard Fröhlich 2014-02-12 22:04:16 +01:00
commit aae47d592b
2 changed files with 624 additions and 581 deletions

View file

@ -1,6 +1,6 @@
<?php <?php
class Quiz class Quiz
{ {
var $topicID; var $topicID;
var $questionLimit; var $questionLimit;
@ -14,8 +14,9 @@ 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;
$this->questionLimit=0; $this->questionLimit=0;
$this->questionList= array(); $this->questionList= array();
@ -28,498 +29,508 @@ class Quiz
$this->rawToPass; $this->rawToPass;
$this->question=new Question(); $this->question=new Question();
$this->percentTest=0; $this->percentTest=0;
} }
function getQuestionLimit() { function getQuestionLimit() {
return $this->questionLimit; return $this->questionLimit;
} }
function setQuestionLimit($numOfQu){ function setQuestionLimit($numOfQu){
$this->questionLimit= $numOfQu; $this->questionLimit= $numOfQu;
} }
function setTopicID($id) { function setTopicID($id) {
$this->topicID=$id; $this->topicID=$id;
} }
function getTopicID(){ function getTopicID(){
return $this->topicID; return $this->topicID;
} }
function getAnswerList () { function getAnswerList () {
return $this->answerList; return $this->answerList;
} }
function setRawToPass($percentage){ function setRawToPass($percentage){
$this->rawToPass=$percentage; $this->rawToPass=$percentage;
} }
function generateQuestions(){ // Fragen werden random aus DB gelesen function generateQuestions(){ // Fragen werden random aus DB gelesen
$sqlGetQu=" SELECT q_id,qt_id,t_id,question,description FROM questions WHERE t_id =".intval($this->topicID)." AND active=".intval(1)." ORDER BY RAND()LIMIT ".intval($this->questionLimit).""; $sqlGetQu=" SELECT q_id,qt_id,t_id,question,description FROM questions WHERE t_id =".intval($this->topicID)." AND active=".intval(1)." ORDER BY RAND()LIMIT ".intval($this->questionLimit)."";
$queryGetQu = mysql_query($sqlGetQu); $queryGetQu = mysql_query($sqlGetQu);
$number=mysql_num_rows($queryGetQu); $number=mysql_num_rows($queryGetQu);
if($number== $this->questionLimit){ if($number== $this->questionLimit){
$i=1; // zähler $i=1; // zähler
while($questions =mysql_fetch_array($queryGetQu ,MYSQL_BOTH )) while($questions =mysql_fetch_array($queryGetQu ,MYSQL_BOTH ))
{ {
$this->questionList[$i]['q_id']=$questions['q_id']; // in arra speichern $this->questionList[$i]['q_id']=$questions['q_id']; // in arra speichern
$this->questionList[$i]['qt_id']=$questions['qt_id']; $this->questionList[$i]['qt_id']=$questions['qt_id'];
$this->questionList[$i]['t_id']=$questions['t_id']; $this->questionList[$i]['t_id']=$questions['t_id'];
$this->questionList[$i]['question']=stripslashes($questions['question']); $this->questionList[$i]['question']=stripslashes($questions['question']);
$this->questionList[$i]['description']=$questions['description']; $this->questionList[$i]['description']=$questions['description'];
$sqlGetNumber="SELECT count(a_id)as number FROM answers WHERE q_id=".intval($questions['q_id'])." GROUP BY q_id"; $sqlGetNumber="SELECT count(a_id)as number FROM answers WHERE q_id=".intval($questions['q_id'])." GROUP BY q_id";
$queryGetNumber = mysql_query($sqlGetNumber); $queryGetNumber = mysql_query($sqlGetNumber);
while($number =mysql_fetch_array( $queryGetNumber ,MYSQL_BOTH )) while($number =mysql_fetch_array( $queryGetNumber ,MYSQL_BOTH ))
{ {
$this->questionList[$i]['numberOfAnswers']=$number['number']; $this->questionList[$i]['numberOfAnswers']=$number['number'];
} }
if($this->questionList[$i]['description']==1) { if($this->questionList[$i]['description']==1) {
// beschreibung in Session speichern falls vorhanden // beschreibung in Session speichern falls vorhanden
$sql_desc="SELECT description FROM question_description WHERE q_id=".intval($questions['q_id']).""; $sql_desc="SELECT description FROM question_description WHERE q_id=".intval($questions['q_id'])."";
$query_desc=mysql_query($sql_desc); $query_desc=mysql_query($sql_desc);
$desc = mysql_fetch_assoc($query_desc); $desc = mysql_fetch_assoc($query_desc);
$this->questionList[$i]['description_text']=stripslashes($desc['description']); $this->questionList[$i]['description_text']=stripslashes($desc['description']);
} }
$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; }
} }
}
function getQuestionList() {
function getQuestionList() { return $this->questionList;
return $this->questionList; }
}
function setQuestions() {
function setQuestions() { $this->questionList=$_SESSION['values']['questionList'];
$this->questionList=$_SESSION['values']['questionList']; }
}
function getDBAnswers() { // Antworten zu den Frage aus DB holen
function getDBAnswers() { // Antworten zu den Frage aus DB holen for($i=1;$i<=$this->questionLimit;$i++){
for($i=1;$i<=$this->questionLimit;$i++){ $value= $this->questionList[$i]['q_id'];
$value= $this->questionList[$i]['q_id']; $sqlGetAns="SELECT a_id,answer,correct FROM answers WHERE q_id=".intval($value)." ORDER BY RAND()";
$sqlGetAns="SELECT a_id,answer,correct FROM answers WHERE q_id=".intval($value)." ORDER BY RAND()"; $queryGetAns = mysql_query($sqlGetAns);
$queryGetAns = mysql_query($sqlGetAns); $j=1; // Zähler
$j=1; // Zähler while($answers =mysql_fetch_array($queryGetAns ,MYSQL_BOTH )) {
while($answers =mysql_fetch_array($queryGetAns ,MYSQL_BOTH )) { $this->answerList[$value][$j]['q_id']= $value;
$this->answerList[$value][$j]['q_id']= $value; $this->answerList[$value][$j]['a_id']=$answers['a_id']; // in arra speichern
$this->answerList[$value][$j]['a_id']=$answers['a_id']; // in arra speichern $this->answerList[$value][$j]['answer']=stripslashes($answers['answer']);
$this->answerList[$value][$j]['answer']=stripslashes($answers['answer']); $this->answerList[$value][$j]['correct']=$answers['correct'];
$this->answerList[$value][$j]['correct']=$answers['correct']; $j++;
$j++; }
} }
} $_SESSION ['values'] ['answerList']= $this->answerList;
$_SESSION ['values'] ['answerList']= $this->answerList; }
}
function setAnswers(){
function setAnswers(){ $this->answerList=$_SESSION ['values']['answerList'];
$this->answerList=$_SESSION ['values']['answerList']; }
}
function setSelectedAnswers (){ function setSelectedAnswers (){
$this->selectedAnswers=$_SESSION ['values']['selectedAnswers']; $this->selectedAnswers=$_SESSION ['values']['selectedAnswers'];
} }
function showQuiz() { function showQuiz() {
echo "<form action='index.php?site=start_test&amp;action=evaluate' method='post'>"; echo "<form action='index.php?site=start_test&amp;action=evaluate' method='post'>";
echo "<fieldset>"; echo "<fieldset>";
echo " <legend>".Class_Quiz_02."</legend>"; echo " <legend>".Class_Quiz_02."</legend>";
echo "<table class='table_show_quiz'>"; echo "<table class='table_show_quiz'>";
for($i=1;$i<=$this->questionLimit;$i++) { for($i=1;$i<=$this->questionLimit;$i++) {
$value= $this->questionList[$i]['q_id']; // Value den Wert der q_id geben $value= $this->questionList[$i]['q_id']; // Value den Wert der q_id geben
$question=str_replace("\n", "<br>", $this->questionList[$i]['question']); $question=str_replace("\n", "<br>", $this->questionList[$i]['question']);
echo "<tr>"; echo "<tr>";
echo"<td class='nr' valign='top' >".Global_08." $i: </td>"; echo"<td class='nr' valign='top' >".Global_08." $i: </td>";
if($this->questionList[$i]['qt_id']!=4) { if($this->questionList[$i]['qt_id']!=4) {
echo"<td class='question' colspan='3'>$question </td> "; echo"<td class='question' colspan='3'>$question </td> ";
echo"</tr>"; echo"</tr>";
} // wenn der Typ nicht 4 ist anzeigen } // wenn der Typ nicht 4 ist anzeigen
if($this->questionList[$i]['qt_id']==1) $this->SingleSelection($i,$value); if($this->questionList[$i]['qt_id']==1) $this->SingleSelection($i,$value);
if($this->questionList[$i]['qt_id']==2) $this->MultipleChoice($i,$value); if($this->questionList[$i]['qt_id']==2) $this->MultipleChoice($i,$value);
if($this->questionList[$i]['qt_id']==3) $this->SingleSelection($i,$value); // Kann die selbe Maske verwendet werden if($this->questionList[$i]['qt_id']==3) $this->SingleSelection($i,$value); // Kann die selbe Maske verwendet werden
if($this->questionList[$i]['qt_id']==4) $this->FillInTheBlanks($i,$value,$question); if($this->questionList[$i]['qt_id']==4) $this->FillInTheBlanks($i,$value,$question);
} }
echo "<tr>"; echo "<tr>";
echo "<td class='evaluate' colspan='4'>"; echo "<td class='evaluate' colspan='4'>";
echo"<input type='hidden' name='t_id' value='$this->topicID'/>"; echo"<input type='hidden' name='t_id' value='$this->topicID'/>";
//echo"<input type='hidden' name='questionList' value='$questionList'/>"; //echo"<input type='hidden' name='questionList' value='$questionList'/>";
//echo"<input type='hidden' name='answerList' value='$answerList'/>"; //echo"<input type='hidden' name='answerList' value='$answerList'/>";
echo" <input name='submit' class='Button_right' type='submit' value='".Button_16."' /> "; echo" <input name='submit' class='Button_right' type='submit' value='".Button_16."' /> ";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</fieldset>";
echo"</form>";
}
function SingleSelection($i,$value){
for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++){ // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist
$answer=$this->answerList[$value][$j]['answer'];
$answerNumber=$this->answerList[$value][$j]['a_id'];
if($answer!=null) { // Wenn es eine Antwort gibt soll diese angezeigt werden
echo "<tr>";
echo "<td class='nr' valign='top' ></td>";
echo"<td class='choice' valign='top'><input type='radio' value='$answerNumber' name='selectedAnswers[$value]' /></td>";
if ($answer=='true') echo" <td class='answer' valign='top'>".Class_Answer_09."</td>";
else if ($answer=='false') echo" <td class='answer' valign='top'>".Class_Answer_10."</td>";
else echo" <td class='answer' valign='top'>$answer</td>";
echo "<td class='symbol'></td>";
echo "</tr>";
}
}
echo "<tr class='padding'><td colspan='4' /></tr>";
}
function MultipleChoice($i,$value){
for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++){ // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist
$answer=$this->answerList[$value][$j]['answer'];
$answerNumber=$this->answerList[$value][$j]['a_id'];
if($answer!=null){ // Wenn es eine Antwort gibt soll diese angezeigt werden
echo "<tr>";
echo "<td class='nr' valign='top' ></td>";
echo "<td class='choice' valign='top'><input type='checkbox' class='quiz_options' value='$answerNumber' name='selectedAnswers[$value][]' /></td>";
echo " <td class='answer' valign='top'> $answer </td>";
echo "<td class='symbol'></td>";
echo "</tr>";
}
}
echo "<tr class='padding'><td colspan='4' /></tr>";
}
function randomizeArray($answerList,$value) {
$max=count($answerList[$value]); // setze Maximum
$index=range(1,$max); // Kreiire Array
shuffle($index); // würfle array
$copy= $answerList; // kopie erstellen
for($i=0;$i<$max;$i++){
$k=$index[$i];
$answerList[$value][$i+1]=$copy[$value][$k]; // zuweisen
}
$_SESSION ['values'] ['answerList']= $answerList;
return $answerList;
}
function FillInTheBlanks($i,$value,$question) {
echo '<td class="answer" valign="top" colspan="2">';
$correctAns=$this->question->getCorrectAnswerFillInTheBlanks($question); // korrekte Antworen ermitteln
$numberOfAnswers=$this->questionList[$i]['numberOfAnswers'];
for ($l=0;$l<count($correctAns);$l++){
$addCorrect = array( 'q_id' => $value, 'a_id' => $correctAns[$l+1]['answer'],'answer' =>$correctAns[$l+1]['answer'],'correct'=>1,'blank'=>$correctAns[$l+1]['blank']);
$numberOfAnswers=$numberOfAnswers+1; // Anzahl der Antworten erhöhen
$this->answerList[$value][$numberOfAnswers]= $addCorrect ; // an richtiger Stelle einfügen
}
$this->answerList=$this->randomizeArray($this->answerList,$value);
$addSlashes= preg_quote($question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird
$array=explode('\\',$addSlashes); // String teilen
for($k=0;$k<count($array);$k++){
if((strstr($array[$k],'['))){
echo"<select name='selectedAnswers[$value][$k]' > ";
for ($j=1;$j<=$numberOfAnswers;$j++){ // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist
$answer=$this->answerList[$value][$j]['answer'];
$answerNumber=$this->answerList[$value][$j]['a_id'];
//echo $this->answerList[$value][$j]['a_id'];
echo"<option value='$answerNumber'>$answer</option>";
}
echo"</select>";
}
else if((strstr($array[$k],']'))){
$array[$k]=str_replace("]",'', $array[$k]); // Klammer entfernen
echo $array[$k];
}
else echo $array[$k];
}
echo "</td>"; echo "</td>";
echo "<td class='symbol'></td>";
echo "</tr>"; echo "</tr>";
echo "<tr class='padding'><td colspan='4' /></tr>"; echo "</table>";
} echo "</fieldset>";
echo"</form>";
}
function evaluateQuiz() { function SingleSelection($i,$value){
for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++){ // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist
echo"<div>"; $answer=$this->answerList[$value][$j]['answer'];
echo "<fieldset>"; $answerNumber=$this->answerList[$value][$j]['a_id'];
if($answer!=null) { // Wenn es eine Antwort gibt soll diese angezeigt werden
echo "<legend>".Class_Quiz_03."</legend>\n"; echo "<tr>";
echo "<table class='table_show_quiz'>"; echo "<td class='nr' valign='top' ></td>";
for($i=1;$i<=count($this->questionList);$i++){ echo"<td class='choice' valign='top'><input type='radio' value='$answerNumber' name='selectedAnswers[$value]' /></td>";
$value= $this->questionList[$i]['q_id']; // Value den Wert der q_id geben if ($answer=='true') echo" <td class='answer' valign='top'>".Class_Answer_09."</td>";
$question=str_replace("\n", "<br>", $this->questionList[$i]['question']); else if ($answer=='false') echo" <td class='answer' valign='top'>".Class_Answer_10."</td>";
echo "\n<tr>"; else echo" <td class='answer' valign='top'>$answer</td>";
echo"<td class='nr' valign='top' >".Global_08." $i : </td>"; echo "<td class='symbol'></td>";
echo"<td class='question' colspan='3' >"; echo "</tr>";
if($this->questionList[$i]['qt_id']!=4){ }
echo" $question </td> "; }
echo "</tr>"; echo "<tr class='padding'><td colspan='4' /></tr>";
} }
$this->topicID=$this->questionList[$i]['t_id'];
switch($this->questionList[$i]['qt_id']){ function MultipleChoice($i,$value){
case 1: {$this->evaluateSingleSelection($i,$value); for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++){ // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist
$answer=$this->answerList[$value][$j]['answer'];
break;} $answerNumber=$this->answerList[$value][$j]['a_id'];
case 2: {$this->evaluateMultipleChoice($i,$value); if($answer!=null){ // Wenn es eine Antwort gibt soll diese angezeigt werden
echo "<tr>";
break;} echo "<td class='nr' valign='top' ></td>";
case 3: { $this->evaluateSingleSelection($i,$value); // Kann die selbe Maske verwendet werden echo "<td class='choice' valign='top'><input type='checkbox' class='quiz_options' value='$answerNumber' name='selectedAnswers[$value][]' /></td>";
echo " <td class='answer' valign='top'> $answer </td>";
break;} echo "<td class='symbol'></td>";
case 4:{ //$this->getDBAnswers(); echo "</tr>";
$this->evaluateFillInTheBlanks($i,$value,$question); }
}
break;} echo "<tr class='padding'><td colspan='4' /></tr>";
}
function randomizeArray($answerList,$value) {
$max=count($answerList[$value]); // setze Maximum
$index=range(1,$max); // Kreiire Array
shuffle($index); // würfle array
$copy= $answerList; // kopie erstellen
for($i=0;$i<$max;$i++){
$k=$index[$i];
$answerList[$value][$i+1]=$copy[$value][$k]; // zuweisen
}
$_SESSION ['values'] ['answerList']= $answerList;
return $answerList;
}
function FillInTheBlanks($i,$value,$question) {
echo '<td class="answer" valign="top" colspan="2">';
$correctAns=$this->question->getCorrectAnswerFillInTheBlanks($question); // korrekte Antworen ermitteln
$numberOfAnswers=$this->questionList[$i]['numberOfAnswers'];
for ($l=0;$l<count($correctAns);$l++){
$addCorrect = array( 'q_id' => $value, 'a_id' => $correctAns[$l+1]['answer'],'answer' =>$correctAns[$l+1]['answer'],'correct'=>1,'blank'=>$correctAns[$l+1]['blank']);
$numberOfAnswers=$numberOfAnswers+1; // Anzahl der Antworten erhöhen
$this->answerList[$value][$numberOfAnswers]= $addCorrect ; // an richtiger Stelle einfügen
}
$this->answerList=$this->randomizeArray($this->answerList,$value);
$addSlashes= preg_quote($question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird
$array=explode('\\',$addSlashes); // String teilen
for($k=0;$k<count($array);$k++){
if((strstr($array[$k],'['))){
echo"<select name='selectedAnswers[$value][$k]' > ";
for ($j=1;$j<=$numberOfAnswers;$j++){ // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist
$answer=$this->answerList[$value][$j]['answer'];
$answerNumber=$this->answerList[$value][$j]['a_id'];
//echo $this->answerList[$value][$j]['a_id'];
echo"<option value='$answerNumber'>$answer</option>";
}
echo"</select>";
}
else if((strstr($array[$k],']'))){
$array[$k]=str_replace("]",'', $array[$k]); // Klammer entfernen
echo $array[$k];
}
else echo $array[$k];
}
echo "</td>";
echo "<td class='symbol'></td>";
echo "</tr>";
echo "<tr class='padding'><td colspan='4' /></tr>";
}
function evaluateQuiz() {
echo"<div>";
echo "<fieldset>";
echo "<legend>".Class_Quiz_03."</legend>\n";
echo "<table class='table_show_quiz'>";
for($i=1;$i<=count($this->questionList);$i++){
$value= $this->questionList[$i]['q_id']; // Value den Wert der q_id geben
$question=str_replace("\n", "<br>", $this->questionList[$i]['question']);
echo "\n<tr>";
echo"<td class='nr' valign='top' >".Global_08." $i : </td>";
echo"<td class='question' colspan='3' >";
if($this->questionList[$i]['qt_id']!=4){
echo" $question </td> ";
echo "</tr>";
}
$this->topicID=$this->questionList[$i]['t_id'];
switch($this->questionList[$i]['qt_id']){
case 1: {
$this->evaluateSingleSelection($i,$value);
break;
}
case 2: {
$this->evaluateMultipleChoice($i,$value);
break;
}
case 3: {
$this->evaluateSingleSelection($i,$value); // Kann die selbe Maske verwendet werden
break;
}
case 4:{
//$this->getDBAnswers();
$this->evaluateFillInTheBlanks($i,$value,$question);
break;
}
} }
} }
echo "</table>"; echo "</table>";
echo "</fieldset>"; echo "</fieldset>";
echo "</div>"; echo "</div>";
$this->updateStatistic(); $this->updateStatistic();
$this->getTestResult(); $this->getTestResult();
$this->createLearnProgress(); $this->createLearnProgress();
} }
function evaluateSingleSelection($i,$value){ function evaluateSingleSelection($i,$value){
for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++) { // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++) { // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist
$answer=$this->answerList[$value][$j]['answer']; $answer=$this->answerList[$value][$j]['answer'];
$answerNumber=$this->answerList[$value][$j]['a_id']; $answerNumber=$this->answerList[$value][$j]['a_id'];
if($answer!=null) { // Wenn es eine Antwort gibt soll diese angezeigt werden if($answer!=null) { // Wenn es eine Antwort gibt soll diese angezeigt werden
echo "\n<tr>"; echo "\n<tr>";
echo "<td class='nr' valign='top' ></td>"; echo "<td class='nr' valign='top' ></td>";
echo "<td class='choice' valign='top'>"; echo "<td class='choice' valign='top'>";
// Auswahl des Benutzers // Auswahl des Benutzers
if(isset($this->selectedAnswers[$value]) && $this->selectedAnswers[$value]==$this->answerList[$value][$j]['a_id']) { if(isset($this->selectedAnswers[$value]) && $this->selectedAnswers[$value]==$this->answerList[$value][$j]['a_id']) {
echo"<input type='radio' value='$answerNumber' name='userChoice[$value]' class='quiz_options' checked='checked' disabled='disabled' />"; echo"<input type='radio' value='$answerNumber' name='userChoice[$value]' class='quiz_options' checked='checked' disabled='disabled' />";
} else { } else {
echo"<input type='radio' value='$answerNumber' name='userChoice[$value]'class='quiz_options' disabled='disabled' />"; echo"<input type='radio' value='$answerNumber' name='userChoice[$value]'class='quiz_options' disabled='disabled' />";
} }
echo "</td>"; echo "</td>";
//richtige Antworten //richtige Antworten
echo "<td class='choice' valign='top'>"; echo "<td class='choice' valign='top'>";
if($this->answerList[$value][$j]['correct']==1) { if($this->answerList[$value][$j]['correct']==1) {
echo"<input type='radio'class='quiz_options_correct' value='$answerNumber' disabled='disabled' name='correct[$value]' checked='checked' />"; echo"<input type='radio'class='quiz_options_correct' value='$answerNumber' disabled='disabled' name='correct[$value]' checked='checked' />";
$show_class="answer correct"; $show_class="answer correct";
} else { } else {
echo"<input type='radio' class='quiz_options_correct' disabled='disabled' value='$answerNumber' name='correct[$value]' />"; echo"<input type='radio' class='quiz_options_correct' disabled='disabled' value='$answerNumber' name='correct[$value]' />";
$show_class="answer false"; $show_class="answer false";
} }
echo "</td>"; echo "</td>";
if ($answer=='true') echo" <td class='$show_class' valign='top'>".Class_Answer_09."</td>"; if ($answer=='true') echo" <td class='$show_class' valign='top'>".Class_Answer_09."</td>";
else if ($answer=='false') echo" <td class='$show_class' valign='top'>".Class_Answer_10."</td>"; else if ($answer=='false') echo" <td class='$show_class' valign='top'>".Class_Answer_10."</td>";
else echo"<td class='$show_class' valign='top'>$answer</td>"; else echo"<td class='$show_class' valign='top'>$answer</td>";
echo "<td class ='evaluate'></td>"; echo "<td class ='evaluate'></td>";
echo"</tr>"; echo"</tr>";
} }
if(isset($this->selectedAnswers[$value]) && isset($this->answerList[$value][$j]['correct']) && if (isset($this->selectedAnswers[$value]) && isset($this->answerList[$value][$j]['correct']) &&
$this->selectedAnswers[$value]==$this->answerList[$value][$j]['a_id'] && $this->answerList[$value][$j]['correct']==1) { $this->selectedAnswers[$value]==$this->answerList[$value][$j]['a_id'] && $this->answerList[$value][$j]['correct']==1) {
$correct[]=1; $correct[]=1;
} }
} }
$this->showDescription($i); $this->showDescription($i);
if(!isset($correct)) $correct[]=0; if(!isset($correct)) $correct[]=0;
$this->checkAnswers($correct,$value); $this->checkAnswers($correct,$value);
} }
function evaluateMultipleChoice($i,$value) { function evaluateMultipleChoice($i,$value) {
for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++){ // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++){ // Solange Schleife durchlaufen wie die maximale Anzahl der Antworten ist
for($k=0;$k<$this->questionList[$i]['numberOfAnswers'];$k++){ // markieren welche Antworten der Benutzer ausgewählt hat for($k=0;$k<$this->questionList[$i]['numberOfAnswers'];$k++){ // markieren welche Antworten der Benutzer ausgewählt hat
if(isset($this->selectedAnswers [$value][$k]) && $this->selectedAnswers [$value][$k]!=null){ // wenn die Antwort nicht null ist if(isset($this->selectedAnswers [$value][$k]) && $this->selectedAnswers [$value][$k]!=null){ // wenn die Antwort nicht null ist
if($this->selectedAnswers [$value][$k]==$this->answerList[$value][$j]['a_id'])$checked [$j]=1; if($this->selectedAnswers [$value][$k]==$this->answerList[$value][$j]['a_id'])$checked [$j]=1;
else if(!isset($checked[$j]) || !$checked [$j]) $checked [$j]=0; else if(!isset($checked[$j]) || !$checked [$j]) $checked [$j]=0;
} }
} }
} }
for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++){ // antworten die der Benutzer ausewählt hat ausgeben for ($j=1;$j<=$this->questionList[$i]['numberOfAnswers'];$j++){ // antworten die der Benutzer ausewählt hat ausgeben
echo "\n<tr>"; echo "\n<tr>";
echo "<td class='nr' valign='top' ></td>"; echo "<td class='nr' valign='top' ></td>";
echo "<td class='choice' valign='top'>"; echo "<td class='choice' valign='top'>";
$answer=$this->answerList[$value][$j]['answer']; $answer=$this->answerList[$value][$j]['answer'];
$answerNumber=$this->answerList[$value][$j]['a_id']; $answerNumber=$this->answerList[$value][$j]['a_id'];
if (!isset($checked[$j])) $checked[$j] = 0; if (!isset($checked[$j])) $checked[$j] = 0;
if($checked[$j]==1) echo"<input type='checkbox' class='quiz_options' disabled='disabled' value='$answerNumber' checked='checked' name='userChoice[$value]' />"; if($checked[$j]==1) echo"<input type='checkbox' class='quiz_options' disabled='disabled' value='$answerNumber' checked='checked' name='userChoice[$value]' />";
else if ($checked[$j]==0) echo"<input type='checkbox' class='quiz_options' disabled='disabled' value='$answerNumber' name='userChoice[$value]' />"; else if ($checked[$j]==0) echo"<input type='checkbox' class='quiz_options' disabled='disabled' value='$answerNumber' name='userChoice[$value]' />";
echo "</td>"; echo "</td>";
//richtige Antworten ausgeben //richtige Antworten ausgeben
echo "<td class='choice' valign='top'>"; echo "<td class='choice' valign='top'>";
if($this->answerList[$value][$j]['correct']==1) { if($this->answerList[$value][$j]['correct']==1) {
echo"<input type='checkbox'class='quiz_options_correct' value='$answerNumber' disabled='disabled' name='correct[$value]' checked='checked' />"; echo"<input type='checkbox'class='quiz_options_correct' value='$answerNumber' disabled='disabled' name='correct[$value]' checked='checked' />";
$show_class = "answer correct"; $show_class = "answer correct";
} else { } else {
echo"<input type='checkbox' class='quiz_options_correct' disabled='disabled' value='$answerNumber' name='correct[$value]' />"; echo"<input type='checkbox' class='quiz_options_correct' disabled='disabled' value='$answerNumber' name='correct[$value]' />";
$show_class = "answer false"; $show_class = "answer false";
} }
echo "</td>"; echo "</td>";
echo"<td class='$show_class' valign='top'> $answer </td>"; echo"<td class='$show_class' valign='top'> $answer </td>";
echo "<td class ='evaluate'></td>"; echo "<td class ='evaluate'></td>";
echo"</tr>"; echo"</tr>";
if(($this->answerList[$value][$j]['correct']==1) && ($checked [$j]==1)){ //Prüfung auf Richtigkeit if(($this->answerList[$value][$j]['correct']==1) && ($checked [$j]==1)){ //Prüfung auf Richtigkeit
$correct[$j]=1; $correct[$j]=1;
unset($this->answerList[$value][$j]); unset($this->answerList[$value][$j]);
} else if(($this->answerList[$value][$j]['correct']==1)&& ($checked [$j]==0))$correct[$j]=0; } else if(($this->answerList[$value][$j]['correct']==1)&& ($checked [$j]==0))$correct[$j]=0;
else if(($this->answerList[$value][$j]['correct']==0) && ($checked [$j]==1))$correct[$j]=0; else if(($this->answerList[$value][$j]['correct']==0) && ($checked [$j]==1))$correct[$j]=0;
} }
$this->showDescription($i); $this->showDescription($i);
$this->checkAnswers($correct,$value); $this->checkAnswers($correct,$value);
} }
function evaluateFillInTheBlanks($i,$value,$question){ function evaluateFillInTheBlanks($i,$value,$question){
$addSlashes= preg_quote($question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird
$array=explode('\\',$addSlashes); // String teilen
$addSlashes= preg_quote($question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird // Was Benutzer markiert hat
$array=explode('\\',$addSlashes); // String teilen for($k=0;$k<count($array);$k++){
// Was Benutzer markiert hat if((strstr($array[$k],'['))){
for($k=0;$k<count($array);$k++){ $array[$k]=str_replace("[",'', $array[$k]); // Klammer entfernen
if((strstr($array[$k],'['))){ for ($j=1;$j<=count($this->answerList[$value]);$j++){ // antworten die der Benutzer ausewählt hat ausgeben
$array[$k]=str_replace("[",'', $array[$k]); // Klammer entfernen $answer=$this->answerList[$value][$j]['answer']; // Amtwort wird zugewiesen
for ($j=1;$j<=count($this->answerList[$value]);$j++){ // antworten die der Benutzer ausewählt hat ausgeben if($this->selectedAnswers[$value][$k]==$this->answerList[$value][$j]['a_id']){
$answer=$this->answerList[$value][$j]['answer']; // Amtwort wird zugewiesen echo " <input name='[$i]' readonly='readonly' size='20' value='$answer' />";
if($this->selectedAnswers[$value][$k]==$this->answerList[$value][$j]['a_id']){ if(isset($this->answerList[$value][$j]['blank']) && $this->answerList[$value][$j]['blank']==$k) $correct[]=1;
echo " <input name='[$i]' readonly='readonly' size='20' value='$answer' />"; else $correct[]=0;
if(isset($this->answerList[$value][$j]['blank']) && $this->answerList[$value][$j]['blank']==$k) $correct[]=1; break;
else $correct[]=0; }
break; }
} } else if((strstr($array[$k],']'))){
} $array[$k]=str_replace("]",'', $array[$k]); // Klammer entfernen
} else if((strstr($array[$k],']'))){ echo $array[$k];
$array[$k]=str_replace("]",'', $array[$k]); // Klammer entfernen } else echo $array[$k];
}
echo "</td>";
echo "</tr>";
echo "\n<tr>";
echo "<td class='nr' valign='top' ></td>";
echo "<td class='question' colspan='3'>";
// Was richtig ist
$addSlashes= preg_quote($question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird
$array=explode('\\',$addSlashes); // String teilen
//echo" <div id=\"quiz_fill_in_the_blank\" >";
for($k=0;$k<count($array);$k++){
if((strstr($array[$k],'['))){
$array[$k]=str_replace("[",'', $array[$k]); // Klammer entfernen
echo " <input name='[$i]' readonly='readonly' size='20' value='$array[$k]' />";
} else if((strstr($array[$k],']'))) {
$array[$k]=str_replace("]",'', $array[$k]); // Klammer entfernen
echo $array[$k]; echo $array[$k];
} else echo $array[$k]; } else echo $array[$k];
} }
echo "</td>"; echo "</td>";
echo "</tr>"; echo "</tr>";
echo "\n<tr>"; $this->showDescription($i);
echo "<td class='nr' valign='top' ></td>"; $this->checkAnswers($correct,$value);
echo "<td class='question' colspan='3'>"; }
// Was richtig ist function checkAnswers($correct,$value) {
$addSlashes= preg_quote($question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird $check = in_array(0, $correct); // Prüfen ob im Array der Wert 0 ist, denn dann wurde mindestens eine Antwort falsch beantwortet
$array=explode('\\',$addSlashes); // String teilen echo "\n<tr>";
//echo" <div id=\"quiz_fill_in_the_blank\" >"; if(!$check)echo"<td class='symbol' colspan='7'><img src='images/correct.png' alt='' /></td>";
else {
for($k=0;$k<count($array);$k++){ $this->wrongQuestions[]=$value;
if((strstr($array[$k],'['))){ echo"<td class='symbol' colspan='7'><img src='images/wrong.png' alt='' /></td>";
$array[$k]=str_replace("[",'', $array[$k]); // Klammer entfernen }
echo " <input name='[$i]' readonly='readonly' size='20' value='$array[$k]' />"; echo "</tr>";
} else if((strstr($array[$k],']'))) { }
$array[$k]=str_replace("]",'', $array[$k]); // Klammer entfernen
echo $array[$k]; function updateStatistic() {
} else echo $array[$k]; for($i=1;$i<=$this->questionLimit;$i++) {
} $sql="SELECT count FROM statistics WHERE q_id=".intval($this->questionList[$i]['q_id'])."";
echo "</td>"; $query = mysql_query($sql);
echo "</tr>"; while($count=mysql_fetch_array($query ,MYSQL_BOTH )){
$count=$count['count'];
$this->showDescription($i); $count=$count+1;
$this->checkAnswers($correct,$value); $sql_update="UPDATE statistics SET count=".intval($count)." WHERE q_id=".intval($this->questionList[$i]['q_id'])."";
} $query_update = mysql_query($sql_update);
}
function checkAnswers($correct,$value) { }
$check = in_array(0, $correct); // Prüfen ob im Array der Wert 0 ist, denn dann wurde mindestens eine Antwort falsch beantwortet }
echo "\n<tr>";
if(!$check)echo"<td class='symbol' colspan='7'><img src='images/correct.png' alt='' /></td>";
else {
$this->wrongQuestions[]=$value;
echo"<td class='symbol' colspan='7'><img src='images/wrong.png' alt='' /></td>";
}
echo "</tr>";
}
function updateStatistic() {
for($i=1;$i<=$this->questionLimit;$i++) {
$sql="SELECT count FROM statistics WHERE q_id=".intval($this->questionList[$i]['q_id'])."";
$query = mysql_query($sql);
while($count=mysql_fetch_array($query ,MYSQL_BOTH )){
$count=$count['count'];
$count=$count+1;
$sql_update="UPDATE statistics SET count=".intval($count)." WHERE q_id=".intval($this->questionList[$i]['q_id'])."";
$query_update = mysql_query($sql_update);
}
}
}
function createLearnProgress() { // Lernprogress erstellen function createLearnProgress() { // Lernprogress erstellen
$timestamp = time(); $timestamp = time();
$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;
$query = mysql_query($sql); $sql="INSERT INTO learnprogress (user_id,root,date,t_id,number,correct,wrong,percentage,passed)
$this->lp_id = mysql_insert_id(); VALUES ('".mysql_real_escape_string($_SESSION['profile']['id'])."',
$this->insertAnswersIncorrect(); '".mysql_real_escape_string($_SESSION['profile']['root'])."',
} '$date',
".intval($this->topicID).",
function insertAnswersIncorrect(){ ".intval($this->questionLimit).",
foreach($this->wrongQuestions as $value){ ".intval($correctAnswers).",
$sql="INSERT INTO answers_incorrect (lp_id,q_id) VALUES ( ".intval($this->lp_id).",".intval($value).")"; ".intval($wrongAnswers).",
$query = mysql_query($sql); ".mysql_real_escape_string($this->percentTest).",
} ".intval($passed).")";
} $query = mysql_query($sql);
$this->lp_id = mysql_insert_id();
function getTestResult(){ $this->insertAnswersIncorrect();
$wrong=count($this->wrongQuestions); }
$correct=$this->questionLimit-$wrong;
if($wrong==0)$percentTest=100; function insertAnswersIncorrect(){
else if(($wrong>=$this->questionLimit) || ($this->questionLimit < 1))$percentTest=0; foreach($this->wrongQuestions as $value){
else $percentTest=($correct/$this->questionLimit)*100; $sql="INSERT INTO answers_incorrect (lp_id,q_id) VALUES ( ".intval($this->lp_id).",".intval($value).")";
$query = mysql_query($sql);
$percentTest=round($percentTest, 2); }
$this->percentTest=$percentTest; }
if($this->rawToPass > 0 && $this->rawToPass <= $percentTest)$value="".Class_Quiz_08."";
else $value="".Class_Quiz_09.""; function getTestResult(){
$wrong=count($this->wrongQuestions);
echo'<p class="centered"> '.Global_05." : <br />"; $correct=$this->questionLimit-$wrong;
global $questionlimit; if($wrong==0)$percentTest=100;
$questionlimit =$this->questionLimit; else if(($wrong>=$this->questionLimit) || ($this->questionLimit < 1))$percentTest=0;
echo" ".Class_Quiz_04." $correct / $this->questionLimit <br />"; else $percentTest=($correct/$this->questionLimit)*100;
echo" ".Class_Quiz_05." <b>$this->rawToPass %</b> ";
echo "<br /> ".Class_Quiz_06." <b>".$this->percentTest." % </b> ".Class_Quiz_07." <b>$value</b> <br /></p>"; $percentTest=round($percentTest, 2);
//createLearnProgress(); $this->percentTest=$percentTest;
$this->testPassed=0;
if($this->rawToPass > 0 && $this->rawToPass <= $percentTest) { if($this->rawToPass > 0 && $this->rawToPass <= $percentTest)$value="".Class_Quiz_08."";
// Test has been passed, maybe a paper/PDF-certificate can be requested else $value="".Class_Quiz_09."";
if ($_SERVER['SSL_CLIENT_S_DN_CN']=="CAcert WoT User") {
// Sorry, we cannot issue certificates for anonymous users echo'<p class="centered"> '.Global_05." : <br />";
echo '<br /><p class="centered">'.Class_Quiz_10_AnonymousCert."</p>"; global $questionlimit;
} else { $questionlimit =$this->questionLimit;
echo "<form class='info' action='index.php?site=start_test&amp;action=requestCert' method='post'>"; echo" ".Class_Quiz_04." $correct / $this->questionLimit <br />";
echo "<input type='hidden' name='t_id' value='$this->topicID' />"; echo" ".Class_Quiz_05." <b>$this->rawToPass %</b> ";
echo "<input name='submit' class='Button_middle' type='submit' value='".Class_Quiz_11_RequestCert."' />"; echo "<br /> ".Class_Quiz_06." <b>".$this->percentTest." % </b> ".Class_Quiz_07." <b>$value</b> <br /></p>";
echo "</form>"; //createLearnProgress();
}
} if($this->rawToPass > 0 && $this->rawToPass <= $percentTest) {
} $this->testPassed=1;
// Test has been passed, maybe a paper/PDF-certificate can be requested
function showDescription($i){ if ($_SERVER['SSL_CLIENT_S_DN_CN']=="CAcert WoT User") {
if(isset($_SESSION['values']['questionList'][$i]['description_text'])){ // Sorry, we cannot issue certificates for anonymous users
// Ausgabe der Beschreibung echo '<br /><p class="centered">'.Class_Quiz_10_AnonymousCert."</p>";
echo "\n<tr>"; } else {
echo "<td class='nr'></td>"; echo "<form class='info' action='index.php?site=start_test&amp;action=requestCert' method='post'>";
echo"<td class='answer description' colspan='4'>".$_SESSION['values']['questionList'][$i]['description_text']."</td>"; echo "<input type='hidden' name='t_id' value='$this->topicID' />";
echo "<td class ='evaluate'></td>"; echo "<input name='submit' class='Button_middle' type='submit' value='".Class_Quiz_11_RequestCert."' />";
echo "</tr>"; echo "</form>";
} }
} }
}
function showDescription($i){
if(isset($_SESSION['values']['questionList'][$i]['description_text'])){
// Ausgabe der Beschreibung
echo "\n<tr>";
echo "<td class='nr'></td>";
echo"<td class='answer description' colspan='4'>".$_SESSION['values']['questionList'][$i]['description_text']."</td>";
echo "<td class ='evaluate'></td>";
echo "</tr>";
}
}
} }
?> ?>

View file

@ -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,54 +17,62 @@ 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){
$this->topic=$t_id; $this->topic=$t_id;
} }
function setLp_id($lp_id){ function setLp_id($lp_id){
$this->lp_id=$lp_id; $this->lp_id=$lp_id;
}
function setData($value){
$this->progress=$value;
} }
function setData($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 )){
$this->progress[$i]['lp_id']=$progress['lp_id']; $this->progress[$i]['lp_id']=$progress['lp_id'];
$this->progress[$i]['date']=$progress['date']; $this->progress[$i]['date']=$progress['date'];
$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++;
} }
} }
function count() { function count() {
$numberOfTests=count($this->progress); $numberOfTests=count($this->progress);
return $numberOfTests; return $numberOfTests;
} }
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 />";
echo"<table class='table table_progress'>"; echo"<table class='table table_progress'>";
echo "<tr>"; echo "<tr>";
echo"<td class='th th_pos'>".Global_10."</td>"; echo"<td class='th th_pos'>".Global_10."</td>";
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>";
echo"<td class='td'>".$this->progress[$i]['number']."</td>"; echo"<td class='td'>".$this->progress[$i]['number']."</td>";
if ($this->progress[$i]['number'] > 0) { if ($this->progress[$i]['number'] > 0) {
@ -71,50 +81,62 @@ class Progress
$percent = 0; $percent = 0;
} }
$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&amp;action=showIncorrectAnswers&amp;lp_id=".$this->progress[$i]['lp_id']."&amp;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 "</tr>"; echo "<td class='td'> <a href='?site=progress&amp;action=showIncorrectAnswers&amp;lp_id=";
} echo $this->progress[$i]['lp_id']."&amp;t_id=$this->topic'><img src='images/details.png' class='linkimage' alt='' /></a></td>";
echo"</table>"; 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>";
if ($this->totalresult['passed'] > 0) {
echo "<form class='info' action='index.php?site=start_test&amp;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>";
}
}
} }
function checkProgressData(){ function checkProgressData(){
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 {
$percentArray=array(); $percentArray=array();
$limit=count($this->progress); $limit=count($this->progress);
if($limit>$this->maximum){ if($limit>$this->maximum){
$k=($limit-$this->maximum)+1; $k=($limit-$this->maximum)+1;
$limit=($k+$this->maximum)-1; $limit=($k+$this->maximum)-1;
echo '<h5 class="centered">'.Class_Progress_02." ".Class_Progress_03." $this->maximum ".Class_Progress_04.".</h5>"; echo '<h5 class="centered">'.Class_Progress_02." ".Class_Progress_03." $this->maximum ".Class_Progress_04.".</h5>";
} else $k=1; } else $k=1;
$j=0; $j=0;
for ($i=$k;$i<=$limit;$i++){ for ($i=$k;$i<=$limit;$i++){
if ($this->progress[$i]['number'] > 0) { if ($this->progress[$i]['number'] > 0) {
$percent=($this->progress[$i]['correct']/$this->progress[$i]['number'])*100; $percent=($this->progress[$i]['correct']/$this->progress[$i]['number'])*100;
} else { } else {
$percent=0; $percent=0;
}
$this->percentArray[$j][]=$this->progress[$i]['date'];
$this->percentArray[$j][]=$percent;
$j++;
} }
$this->percentArray[$j][]=$this->progress[$i]['date'];
$this->percentArray[$j][]=$percent;
$j++;
}
} }
} }
function showBalken(){ function showBalken(){
$this->checkProgressData(); $this->checkProgressData();
$this->percentArray= serialize($this->percentArray); $this->percentArray= serialize($this->percentArray);
$this->percentArray=base64_encode ($this->percentArray); $this->percentArray=base64_encode ($this->percentArray);
$titley=Global_15; $titley=Global_15;
$titlex=Global_04; $titlex=Global_04;
echo " <div id=\"learnprogress\">\n"; echo " <div id=\"learnprogress\">\n";
echo "<img src='includes/graph_bib/bar.php?data=$this->percentArray&amp;learnpath=true&amp;titley=$titley&amp;titlex=$titlex' alt='' />"; echo "<img src='includes/graph_bib/bar.php?data=$this->percentArray&amp;learnpath=true&amp;titley=$titley&amp;titlex=$titlex' alt='' />";
echo "</div>\n"; echo "</div>\n";
} }
function showGraph(){ function showGraph(){
$this->checkProgressData(); $this->checkProgressData();
@ -122,91 +144,101 @@ class Progress
$this->percentArray=base64_encode ($this->percentArray); $this->percentArray=base64_encode ($this->percentArray);
$titley=Global_15; $titley=Global_15;
$titlex=Global_04; $titlex=Global_04;
echo " <div id=\"learnprogress\">\n"; echo " <div id=\"learnprogress\">\n";
echo "<img src='includes/graph_bib/curve.php?percentArray=$this->percentArray&amp;learnpath=true&amp;titley=$titley&amp;titlex=$titlex' alt='' />"; echo "<img src='includes/graph_bib/curve.php?percentArray=$this->percentArray&amp;learnpath=true&amp;titley=$titley&amp;titlex=$titlex' alt='' />";
echo "</div>\n"; echo "</div>\n";
} }
function showPie(){ function showPie(){
echo " <div id=\"learnprogress\">\n"; echo " <div id=\"learnprogress\">\n";
echo "<img src='includes/graph_bib/pie.php' alt='' />"; echo "<img src='includes/graph_bib/pie.php' alt='' />";
echo "</div>\n"; echo "</div>\n";
} }
function getIncorrectAnswers() function getIncorrectAnswers()
{ {
$sql="SELECT q_id FROM answers_incorrect WHERE lp_id=".intval($this->lp_id).""; $sql="SELECT q_id FROM answers_incorrect WHERE lp_id=".intval($this->lp_id)."";
$query = mysql_query($sql); $query = mysql_query($sql);
$i=1; $i=1;
while($incorrect_answers =mysql_fetch_array($query,MYSQL_BOTH )) while($incorrect_answers =mysql_fetch_array($query,MYSQL_BOTH ))
{ {
$this->incorrect_answers[$i]['q_id']=$incorrect_answers['q_id']; $this->incorrect_answers[$i]['q_id']=$incorrect_answers['q_id'];
$i++; $i++;
} }
$this->showIncorrectAnswers(); $this->showIncorrectAnswers();
} }
function showIncorrectAnswers(){ function showIncorrectAnswers(){
echo "<form action='?site=progress&amp;action=showTable&amp;t_id=$this->topic' method='post'>"; echo "<form action='?site=progress&amp;action=showTable&amp;t_id=$this->topic' method='post'>";
echo "<fieldset >"; echo "<fieldset >";
echo " <legend class='table_show_incorrect'>".Class_Progress_08." </legend> "; echo " <legend class='table_show_incorrect'>".Class_Progress_08." </legend> ";
echo "<table class='table_show_incorrect'>"; echo "<table class='table_show_incorrect'>";
for ($i=1;$i<=count($this->incorrect_answers);$i++){ for ($i=1;$i<=count($this->incorrect_answers);$i++){
echo"<tr>"; echo"<tr>";
echo "<td class='nr_incorrect' valign='top'> $i.) </td>"; echo "<td class='nr_incorrect' valign='top'> $i.) </td>";
$sql="SELECT question,qt_id FROM questions WHERE q_id=".intval($this->incorrect_answers[$i]['q_id']).""; $sql="SELECT question,qt_id FROM questions WHERE q_id=".intval($this->incorrect_answers[$i]['q_id'])."";
$query = mysql_query($sql); $query = mysql_query($sql);
while($question =mysql_fetch_array($query,MYSQL_BOTH )) { while($question =mysql_fetch_array($query,MYSQL_BOTH )) {
if( $question['qt_id']==4){ if( $question['qt_id']==4){
$questionText=$this->getFIBQuestion( $question['question']); $questionText=$this->getFIBQuestion( $question['question']);
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>";
} }
}
echo"</tr>";
}
if($this->progress [$this->lp_id]['wrong']>count($this->incorrect_answers)) {
$number=$this->progress [$this->lp_id]['wrong']-count($this->incorrect_answers);
echo"<tr>";
echo "<td class='nr_incorrect' valign='top'> </td>";
echo"<td class='question_incorrect' valign='top' >".Class_Progress_06." $number ".Class_Progress_07."</td>";
echo"</tr>";
} }
echo"</tr>";
}
if($this->progress [$this->lp_id]['wrong']>count($this->incorrect_answers)) {
$number=$this->progress [$this->lp_id]['wrong']-count($this->incorrect_answers);
echo"<tr>";
echo "<td class='nr_incorrect' valign='top'> </td>";
echo"<td class='question_incorrect' valign='top' >".Class_Progress_06." $number ".Class_Progress_07."</td>";
echo"</tr>";
}
echo"<tr>"; echo"<tr>";
echo "<td class='nr_incorrect'> </td>"; echo "<td class='nr_incorrect'> </td>";
echo"<td class='Button_row' > <input name='submit' class='Button_rightColumn' type='submit' value='".Global_02."'/></td> "; echo"<td class='Button_row' > <input name='submit' class='Button_rightColumn' type='submit' value='".Global_02."'/></td> ";
echo"</tr>"; echo"</tr>";
echo"</table>"; echo"</table>";
echo "</fieldset>"; echo "</fieldset>";
echo "</form>"; echo "</form>";
}
function getFIBQuestion($question){
$addSlashes= preg_quote( $question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird
$array=explode('\\',$addSlashes); // String teilen
$questionText= $question;
if(substr_count($question,"[")==substr_count($question,"]")) { // gleiche anzahl von Klammer auf und zu
for($i=1;$i<=substr_count($question,"[");$i++){ // Wird solange durchlaufne wie Klammern vorhanden sind
$beginPos = strpos($questionText, "["); // Anfangspunkt festlegen
$endPos=strpos($questionText, "]"); // Endpunkt festlegen
$length=(($endPos+1)-$beginPos) ; // Länge der Strings ermitteln
$answer=substr ($questionText,$beginPos,$length );// den String zwischen den Klammern suchen
$questionText=str_replace($answer,'(xxx)', $questionText); // gespeicherten Wert aus string löschen
$answer=str_replace("]",'', $answer); // Klammer entfernen
$key = array_search($answer, $array);
$answer=str_replace("[",'', $answer); // Klammer entfernen
}
}
return $questionText;
} }
}
function getFIBQuestion($question){
$addSlashes= preg_quote( $question, '[^]'); // Slash hinzufügen wenn KLammer gefunden wird
$array=explode('\\',$addSlashes); // String teilen
$questionText= $question;
if(substr_count($question,"[")==substr_count($question,"]")) { // gleiche anzahl von Klammer auf und zu
for($i=1;$i<=substr_count($question,"[");$i++){ // Wird solange durchlaufne wie Klammern vorhanden sind
$beginPos = strpos($questionText, "["); // Anfangspunkt festlegen
$endPos=strpos($questionText, "]"); // Endpunkt festlegen
$length=(($endPos+1)-$beginPos) ; // Länge der Strings ermitteln
$answer=substr ($questionText,$beginPos,$length );// den String zwischen den Klammern suchen
$questionText=str_replace($answer,'(xxx)', $questionText); // gespeicherten Wert aus string löschen
$answer=str_replace("]",'', $answer); // Klammer entfernen
$key = array_search($answer, $array);
$answer=str_replace("[",'', $answer); // Klammer entfernen
}
}
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;
}
}
?> ?>