[svn r18575] Minor - Fixed warning when you export an exercise - see FS#3679

skala
Cristian Fasanando 16 years ago
parent b5e41b8085
commit a12dca3f3d
  1. 295
      main/exercice/export/qti2/qti2_classes.php

@ -90,17 +90,17 @@ class ImsAnswerMultipleChoice extends Answer
$this->answerList = $this->getAnswersList();
$out = ' <choiceInteraction responseIdentifier="' . $questionIdent . '" >' . "\n";
$out .= ' <prompt> ' . $questionStatment . ' </prompt>'. "\n";
foreach ($this->answerList as $current_answer)
{
$out .= ' <simpleChoice identifier="answer_' . $current_answer['id'] . '" fixed="false">' . $current_answer['answer'];
if (isset($current_answer['comment']) && $current_answer['comment'] != '')
{
$out .= '<feedbackInline identifier="answer_' . $current_answer['id'] . '">' . $current_answer['comment'] . '</feedbackInline>';
}
$out .= '</simpleChoice>'. "\n";
}
if (is_array($this->answerList)) {
foreach ($this->answerList as $current_answer)
{
$out .= ' <simpleChoice identifier="answer_' . $current_answer['id'] . '" fixed="false">' . $current_answer['answer'];
if (isset($current_answer['comment']) && $current_answer['comment'] != '')
{
$out .= '<feedbackInline identifier="answer_' . $current_answer['id'] . '">' . $current_answer['comment'] . '</feedbackInline>';
}
$out .= '</simpleChoice>'. "\n";
}
}
$out .= ' </choiceInteraction>'. "\n";
return $out;
}
@ -120,27 +120,29 @@ class ImsAnswerMultipleChoice extends Answer
//Match the correct answers
$out .= ' <correctResponse>'. "\n";
foreach($this->answerList as $current_answer)
{
if ($current_answer['correct'])
{
$out .= ' <value>answer_'. $current_answer['id'] .'</value>'. "\n";
}
}
if (is_array($this->answerList)) {
foreach($this->answerList as $current_answer)
{
if ($current_answer['correct'])
{
$out .= ' <value>answer_'. $current_answer['id'] .'</value>'. "\n";
}
}
}
$out .= ' </correctResponse>'. "\n";
//Add the grading
$out .= ' <mapping>'. "\n";
foreach($this->answerList as $current_answer)
{
if (isset($current_answer['grade']))
{
$out .= ' <mapEntry mapKey="answer_'. $current_answer['id'] .'" mappedValue="'.$current_answer['grade'].'" />'. "\n";
}
}
if (is_array($this->answerList)) {
foreach($this->answerList as $current_answer)
{
if (isset($current_answer['grade']))
{
$out .= ' <mapEntry mapKey="answer_'. $current_answer['id'] .'" mappedValue="'.$current_answer['grade'].'" />'. "\n";
}
}
}
$out .= ' </mapping>'. "\n";
$out .= ' </responseDeclaration>'. "\n";
@ -167,14 +169,15 @@ class ImsAnswerFillInBlanks extends Answer
// {
$text = '';
$text .= $this->answerText;
foreach ($this->answerList as $key=>$answer)
{
$key = $answer['id'];
$answer = $answer['answer'];
$len = strlen($answer);
$text = str_replace('['.$answer.']','<textEntryInteraction responseIdentifier="fill_'.$key.'" expectedLength="'.strlen($answer).'"/>', $text);
}
if (is_array($this->answerList)) {
foreach ($this->answerList as $key=>$answer)
{
$key = $answer['id'];
$answer = $answer['answer'];
$len = strlen($answer);
$text = str_replace('['.$answer.']','<textEntryInteraction responseIdentifier="fill_'.$key.'" expectedLength="'.strlen($answer).'"/>', $text);
}
}
$out = $text;
// }
// break;
@ -234,43 +237,44 @@ class ImsAnswerFillInBlanks extends Answer
$this->answerList = $this->getAnswersList();
$this->gradeList = $this->getGradesList();
$out = '';
foreach ($this->answerList as $answerKey=>$answer)
{
$answerKey = $answer['id'];
$answer = $answer['answer'];
$out .= ' <responseDeclaration identifier="fill_' . $answerKey . '" cardinality="single" baseType="identifier">' . "\n";
$out .= ' <correctResponse>'. "\n";
//if ($this->type==TEXTFIELD_FILL)
//{
$out .= ' <value>'.$answer.'</value>'. "\n";
//}
/*
else
{
//find correct answer key to apply in manifest and output it
foreach ($this->answerList as $choiceKey=>$correctAnswer)
{
if ($correctAnswer==$answer)
{
$out .= ' <value>choice_c_'.$answerKey.'_'.$choiceKey.'</value>'. "\n";
}
}
}
*/
$out .= ' </correctResponse>'. "\n";
if (isset($this->gradeList[$answerKey]))
{
$out .= ' <mapping>'. "\n";
$out .= ' <mapEntry mapKey="'.$answer.'" mappedValue="'.$this->gradeList[$answerKey].'"/>'. "\n";
$out .= ' </mapping>'. "\n";
}
$out .= ' </responseDeclaration>'. "\n";
}
if (is_array($this->answerList)) {
foreach ($this->answerList as $answerKey=>$answer)
{
$answerKey = $answer['id'];
$answer = $answer['answer'];
$out .= ' <responseDeclaration identifier="fill_' . $answerKey . '" cardinality="single" baseType="identifier">' . "\n";
$out .= ' <correctResponse>'. "\n";
//if ($this->type==TEXTFIELD_FILL)
//{
$out .= ' <value>'.$answer.'</value>'. "\n";
//}
/*
else
{
//find correct answer key to apply in manifest and output it
foreach ($this->answerList as $choiceKey=>$correctAnswer)
{
if ($correctAnswer==$answer)
{
$out .= ' <value>choice_c_'.$answerKey.'_'.$choiceKey.'</value>'. "\n";
}
}
}
*/
$out .= ' </correctResponse>'. "\n";
if (isset($this->gradeList[$answerKey]))
{
$out .= ' <mapping>'. "\n";
$out .= ' <mapEntry mapKey="'.$answer.'" mappedValue="'.$this->gradeList[$answerKey].'"/>'. "\n";
$out .= ' </mapping>'. "\n";
}
$out .= ' </responseDeclaration>'. "\n";
}
}
return $out;
}
@ -294,12 +298,13 @@ class ImsAnswerMatching extends Answer
//add left column
$out .= ' <simpleMatchSet>'. "\n";
foreach ($this->leftList as $leftKey=>$leftElement)
{
$out .= ' <simpleAssociableChoice identifier="left_'.$leftKey.'" >'. $leftElement['answer'] .'</simpleAssociableChoice>'. "\n";
}
if (is_array($this->leftList)) {
foreach ($this->leftList as $leftKey=>$leftElement)
{
$out .= ' <simpleAssociableChoice identifier="left_'.$leftKey.'" >'. $leftElement['answer'] .'</simpleAssociableChoice>'. "\n";
}
}
$out .= ' </simpleMatchSet>'. "\n";
//add right column
@ -308,12 +313,13 @@ class ImsAnswerMatching extends Answer
$i = 0;
foreach($this->rightList as $rightKey=>$rightElement)
{
$out .= ' <simpleAssociableChoice identifier="right_'.$i.'" >'. $rightElement['answer'] .'</simpleAssociableChoice>'. "\n";
$i++;
}
if (is_array($this->rightList)) {
foreach($this->rightList as $rightKey=>$rightElement)
{
$out .= ' <simpleAssociableChoice identifier="right_'.$i.'" >'. $rightElement['answer'] .'</simpleAssociableChoice>'. "\n";
$i++;
}
}
$out .= ' </simpleMatchSet>'. "\n";
$out .= '</matchInteraction>'. "\n";
@ -331,26 +337,29 @@ class ImsAnswerMatching extends Answer
$out .= ' <correctResponse>' . "\n";
$gradeArray = array();
foreach ($this->leftList as $leftKey=>$leftElement)
{
$i=0;
foreach ($this->rightList as $rightKey=>$rightElement)
{
if( ($leftElement['match'] == $rightElement['code']))
{
$out .= ' <value>left_' . $leftKey . ' right_'.$i.'</value>'. "\n";
$gradeArray['left_' . $leftKey . ' right_'.$i] = $leftElement['grade'];
}
$i++;
}
}
if (is_array($this->leftList)) {
foreach ($this->leftList as $leftKey=>$leftElement)
{
$i=0;
foreach ($this->rightList as $rightKey=>$rightElement)
{
if( ($leftElement['match'] == $rightElement['code']))
{
$out .= ' <value>left_' . $leftKey . ' right_'.$i.'</value>'. "\n";
$gradeArray['left_' . $leftKey . ' right_'.$i] = $leftElement['grade'];
}
$i++;
}
}
}
$out .= ' </correctResponse>'. "\n";
$out .= ' <mapping>' . "\n";
foreach ($gradeArray as $gradeKey=>$grade)
{
$out .= ' <mapEntry mapKey="'.$gradeKey.'" mappedValue="'.$grade.'"/>' . "\n";
if (is_array($gradeArray)) {
foreach ($gradeArray as $gradeKey=>$grade)
{
$out .= ' <mapEntry mapKey="'.$gradeKey.'" mappedValue="'.$grade.'"/>' . "\n";
}
}
$out .= ' </mapping>' . "\n";
$out .= ' </responseDeclaration>'. "\n";
@ -380,37 +389,39 @@ class ImsAnswerHotspot extends Answer
$text .= ' <graphicOrderInteraction responseIdentifier="hotspot_'.$questionIdent.'">'."\n";
$text .= ' <prompt>'.$questionDesc.'</prompt>'."\n";
$text .= ' <object type="'.$mimetype.'" width="250" height="230" data="'.$questionMedia.'">-</object>'."\n";
foreach ($this->answerList as $key=>$answer)
{
$key = $answer['id'];
$answerTxt = $answer['answer'];
$len = strlen($answerTxt);
//coords are transformed according to QTIv2 rules here: http://www.imsproject.org/question/qtiv2p1pd/imsqti_infov2p1pd.html#element10663
$coords = '';
$type = 'default';
switch($answer['hotspot_type']){
case 'square':
$type = 'rect';
$res = array();
$coords = preg_match('/^\s*(\d+);(\d+)\|(\d+)\|(\d+)\s*$/',$answer['hotspot_coord'],$res);
$coords = $res[1].','.$res[2].','.((int)$res[1]+(int)$res[3]).",".((int)$res[2]+(int)$res[4]);
break;
case 'circle':
$type = 'circle';
$res = array();
$coords = preg_match('/^\s*(\d+);(\d+)\|(\d+)\|(\d+)\s*$/',$answer['hotspot_coord'],$res);
$coords = $res[1].','.$res[2].','.sqrt(pow(($res[1]-$res[3]),2)+pow(($res[2]-$res[4])));
break;
case 'poly':
$type = 'poly';
$coords = str_replace(array(';','|'),array(',',','),$answer['hotspot_coord']);
break;
case 'delineation' :
$type = 'delineation';
$coords = str_replace(array(';','|'),array(',',','),$answer['hotspot_coord']);
break;
}
$text .= ' <hotspotChoice shape="'.$type.'" coords="'.$coords.'" identifier="'.$key.'"/>'."\n";
if (is_array($this->answerList)) {
foreach ($this->answerList as $key=>$answer)
{
$key = $answer['id'];
$answerTxt = $answer['answer'];
$len = strlen($answerTxt);
//coords are transformed according to QTIv2 rules here: http://www.imsproject.org/question/qtiv2p1pd/imsqti_infov2p1pd.html#element10663
$coords = '';
$type = 'default';
switch($answer['hotspot_type']){
case 'square':
$type = 'rect';
$res = array();
$coords = preg_match('/^\s*(\d+);(\d+)\|(\d+)\|(\d+)\s*$/',$answer['hotspot_coord'],$res);
$coords = $res[1].','.$res[2].','.((int)$res[1]+(int)$res[3]).",".((int)$res[2]+(int)$res[4]);
break;
case 'circle':
$type = 'circle';
$res = array();
$coords = preg_match('/^\s*(\d+);(\d+)\|(\d+)\|(\d+)\s*$/',$answer['hotspot_coord'],$res);
$coords = $res[1].','.$res[2].','.sqrt(pow(($res[1]-$res[3]),2)+pow(($res[2]-$res[4])));
break;
case 'poly':
$type = 'poly';
$coords = str_replace(array(';','|'),array(',',','),$answer['hotspot_coord']);
break;
case 'delineation' :
$type = 'delineation';
$coords = str_replace(array(';','|'),array(',',','),$answer['hotspot_coord']);
break;
}
$text .= ' <hotspotChoice shape="'.$type.'" coords="'.$coords.'" identifier="'.$key.'"/>'."\n";
}
}
$text .= ' </graphicOrderInteraction>'."\n";
$out = $text;
@ -431,14 +442,16 @@ class ImsAnswerHotspot extends Answer
$out = '';
$out .= ' <responseDeclaration identifier="hotspot_'.$questionIdent.'" cardinality="ordered" baseType="identifier">' . "\n";
$out .= ' <correctResponse>'. "\n";
foreach ($this->answerList as $answerKey=>$answer)
{
$answerKey = $answer['id'];
$answer = $answer['answer'];
$out .= ' <value>'.$answerKey.'</value>'. "\n";
}
if (is_array($this->answerList)) {
foreach ($this->answerList as $answerKey=>$answer)
{
$answerKey = $answer['id'];
$answer = $answer['answer'];
$out .= ' <value>'.$answerKey.'</value>'. "\n";
}
}
$out .= ' </correctResponse>'. "\n";
$out .= ' </responseDeclaration>'. "\n";

Loading…
Cancel
Save