Merge branch '1.11.x' of github.com:chamilo/chamilo-lms into 1.11.x

pull/3951/head
Angel Fernando Quiroz Campos 4 years ago
commit 220ec2d385
  1. 11
      main/exercise/exercise.class.php
  2. 27
      main/inc/lib/exercise.lib.php
  3. 2
      main/inc/lib/exercise_show_functions.lib.php
  4. 1
      main/inc/lib/webservices/Rest.php
  5. 6
      main/webservices/api/v2.php

@ -4417,8 +4417,10 @@ class Exercise
break;
case CALCULATED_ANSWER:
$calculatedAnswerList = Session::read('calculatedAnswerId');
if (!empty($calculatedAnswerList)) {
$answer = $objAnswerTmp->selectAnswer($calculatedAnswerList[$questionId]);
$calculatedAnswerId = null;
if (!empty($calculatedAnswerList) && isset($calculatedAnswerList[$questionId])) {
$calculatedAnswerId = $calculatedAnswerList[$questionId];
$answer = $objAnswerTmp->selectAnswer($calculatedAnswerId);
$preArray = explode('@@', $answer);
$last = count($preArray) - 1;
$answer = '';
@ -4461,6 +4463,7 @@ class Exercise
question_id = $questionId ";
$result = Database::query($sql);
$str = Database::result($result, 0, 'answer');
api_preg_match_all('#\[([^[]*)\]#', $str, $arr);
$str = str_replace('\r\n', '', $str);
$choice = $arr[1];
@ -6249,6 +6252,10 @@ class Exercise
$questionDuration
);
} else {
if ($answerType === CALCULATED_ANSWER && !empty($calculatedAnswerId)) {
$answer .= ':::'.$calculatedAnswerId;
}
Event::saveQuestionAttempt(
$questionScore,
$answer,

@ -973,23 +973,26 @@ class ExerciseLib
$exe_id = (int) $exe_id;
$trackAttempts = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$sql = "SELECT answer FROM $trackAttempts
WHERE exe_id = $exe_id AND question_id= $questionId";
WHERE exe_id = $exe_id AND question_id = $questionId";
$rsLastAttempt = Database::query($sql);
$rowLastAttempt = Database::fetch_array($rsLastAttempt);
$answer = null;
if (isset($rowLastAttempt['answer'])) {
$answer = $rowLastAttempt['answer'];
}
if (empty($answer)) {
$_SESSION['calculatedAnswerId'][$questionId] = mt_rand(
1,
$nbrAnswers
);
$answer = $objAnswerTmp->selectAnswer(
$_SESSION['calculatedAnswerId'][$questionId]
);
$answerParts = explode(':::', $answer);
if (isset($answerParts[1])) {
$answer = $answerParts[0];
$calculatedAnswerList[$questionId] = $answerParts[1];
Session::write('calculatedAnswerId', $calculatedAnswerList);
}
} else {
$calculatedAnswerList = Session::read('calculatedAnswerId');
if (!isset($calculatedAnswerList[$questionId])) {
$calculatedAnswerList[$questionId] = mt_rand(1, $nbrAnswers);
Session::write('calculatedAnswerId', $calculatedAnswerList);
}
$answer = $objAnswerTmp->selectAnswer($calculatedAnswerList[$questionId]);
}
}
@ -1063,7 +1066,7 @@ class ExerciseLib
$answer = '';
$i = 0;
foreach ($studentAnswerList as $studentItem) {
// Remove surronding brackets
// Remove surrounding brackets
$studentResponse = api_substr(
$studentItem,
1,

@ -65,6 +65,8 @@ class ExerciseShowFunctions
$choice = '',
$status = ''
) {
$answer = explode(':::', $answer);
$answer = $answer[0];
if ($exercise->showExpectedChoice()) {
if (empty($id)) {
echo '<tr><td>'.Security::remove_XSS($answer).'</td>';

@ -78,6 +78,7 @@ class Rest extends WebService
const GET_LEGAL_CONDITIONS = 'get_legal_conditions';
const UPDATE_CONDITION_ACCEPTED = 'update_condition_accepted';
const LOGOUT = 'logout';
const DELETE_USER = 'delete_user';
/**
* @var Session

@ -453,10 +453,14 @@ try {
$restApi->updateConditionAccepted();
$restResponse->setData(['status' => true]);
break;
case Rest::LOGOUT:
case Rest::DELETE_USER:
$result = UserManager::delete_user($_REQUEST['user_id']);
$restResponse->setData(['status' => $result]);
break;
$restApi->logout();
$restResponse->setData(['status' => true]);
break;
case Rest::LOGOUT:
default:
throw new Exception(get_lang('InvalidAction'));
}

Loading…
Cancel
Save