<?php
class Progress
{
var $topic;
var $progress;
var $lp_id;
var $incorrect_answers;
var $percentArray;
var $maximum;
var $passed;
var $totalresult=array();
function Progress() {
$this->progress=array();
$this->incorrect_answers=array();
$this->maximum=5;
$this->topic=0;
$this->lp_id=0;
$this->percentArray=array();
$this->passed=0;
}
function setTopic($t_id){
$this->topic=$t_id;
}
function setLp_id($lp_id){
$this->lp_id=$lp_id;
}
function setData($value){
$this->progress=$value;
}
function getProgress(){
$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());
$i=1;
while($progress =mysql_fetch_array($query,MYSQL_BOTH )){
$this->progress[$i]['lp_id']=$progress['lp_id'];
$this->progress[$i]['date']=$progress['date'];
$this->progress[$i]['number']=$progress['number']; // in arra speichern
$this->progress[$i]['correct']=$progress['correct'];
$this->progress[$i]['wrong']=$progress['wrong'];
$this->progress[$i]['passed']=$progress['passed'];
$i++;
}
}
function count() {
$numberOfTests=count($this->progress);
return $numberOfTests;
}
function showTable() {
$this->totalresult['count']=0;
$this->totalresult['passed']=0;
if(count($this->progress)==0) echo "< div class = 'h8' > ".Global_07."< / div > ";
else {
echo"< br / > < br / > ";
echo"< table class = 'table table_progress' > ";
echo "< tr > ";
echo"< td class = 'th th_pos' > ".Global_10."< / 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' > ".Global_03."< / td > ";
echo"< td class = 'th th_count' > ".Statistic_04."< / td > ";
echo "< td class = 'th th_buttons' > < / td > ";
echo"< / tr > ";
for ($i=1;$i< =count($this->progress);$i++){
if (1==$this->progress[$i]['passed']) {
$this->totalresult['passed']+=1;
}
echo "< tr > ";
echo"< td class = 'td' > $i< / td > ";
echo"< td class = 'td' > ".$this->progress[$i]['date']."< / td > ";
echo"< td class = 'td' > ".$this->progress[$i]['number']."< / td > ";
if ($this->progress[$i]['number'] > 0) {
$percent=($this->progress[$i]['correct']/$this->progress[$i]['number'])*100;
} else {
$percent = 0;
}
$percent=round ($percent,2);
echo "< td class = 'td' > $percent %< / 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 > ";
}
$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&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(){
if(count($this->progress)==0) echo "< div class = 'h8' > ".Global_07."< / div > ";
else {
$percentArray=array();
$limit=count($this->progress);
if($limit>$this->maximum){
$k=($limit-$this->maximum)+1;
$limit=($k+$this->maximum)-1;
echo '< h5 class = "centered" > '.Class_Progress_02." ".Class_Progress_03." $this->maximum ".Class_Progress_04.".< / h5 > ";
} else $k=1;
$j=0;
for ($i=$k;$i< =$limit;$i++){
if ($this->progress[$i]['number'] > 0) {
$percent=($this->progress[$i]['correct']/$this->progress[$i]['number'])*100;
} else {
$percent=0;
}
$this->percentArray[$j][]=$this->progress[$i]['date'];
$this->percentArray[$j][]=$percent;
$j++;
}
}
}
function showBalken(){
$this->checkProgressData();
$this->percentArray= serialize($this->percentArray);
$this->percentArray=base64_encode ($this->percentArray);
$titley=Global_15;
$titlex=Global_04;
echo " < div id = \"learnprogress\" > \n";
echo "< img src = 'includes/graph_bib/bar.php?data=$this->percentArray&learnpath=true&titley=$titley&titlex=$titlex' alt = '' / > ";
echo "< / div > \n";
}
function showGraph(){
$this->checkProgressData();
$this->percentArray= serialize($this->percentArray);
$this->percentArray=base64_encode ($this->percentArray);
$titley=Global_15;
$titlex=Global_04;
echo " < div id = \"learnprogress\" > \n";
echo "< img src = 'includes/graph_bib/curve.php?percentArray=$this->percentArray&learnpath=true&titley=$titley&titlex=$titlex' alt = '' / > ";
echo "< / div > \n";
}
function showPie(){
echo " < div id = \"learnprogress\" > \n";
echo "< img src = 'includes/graph_bib/pie.php' alt = '' / > ";
echo "< / div > \n";
}
function getIncorrectAnswers()
{
$sql="SELECT q_id FROM answers_incorrect WHERE lp_id=".intval($this->lp_id)."";
$query = mysql_query($sql);
$i=1;
while($incorrect_answers =mysql_fetch_array($query,MYSQL_BOTH ))
{
$this->incorrect_answers[$i]['q_id']=$incorrect_answers['q_id'];
$i++;
}
$this->showIncorrectAnswers();
}
function showIncorrectAnswers(){
echo "< form action = '?site=progress&action=showTable&t_id=$this->topic' method = 'post' > ";
echo "< fieldset > ";
echo " < legend class = 'table_show_incorrect' > ".Class_Progress_08." < / legend > ";
echo "< table class = 'table_show_incorrect' > ";
for ($i=1;$i< =count($this->incorrect_answers);$i++){
echo"< tr > ";
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'])."";
$query = mysql_query($sql);
while($question =mysql_fetch_array($query,MYSQL_BOTH )) {
if( $question['qt_id']==4){
$questionText=$this->getFIBQuestion( $question['question']);
echo"< td class = 'question_incorrect' valign = 'top' > ".$questionText."< / td > ";
} else {
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 > ";
echo "< td class = 'nr_incorrect' > < / td > ";
echo"< td class = 'Button_row' > < input name = 'submit' class = 'Button_rightColumn' type = 'submit' value = '".Global_02."' / > < / td > ";
echo"< / tr > ";
echo"< / table > ";
echo "< / fieldset > ";
echo "< / form > ";
}
function getFIBQuestion($question){
$addSlashes= preg_quote( $question, '[^]'); // Slash hinzuf<75> 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;
}
}
?>