|
|
|
|
@ -163,9 +163,10 @@ class Exercise |
|
|
|
|
* @todo use Doctrine to manage read/writes |
|
|
|
|
* @param int $id - exercise ID |
|
|
|
|
* @param bool parse exercise question list |
|
|
|
|
* @param int $chamilo_session_id - chamilo session ID |
|
|
|
|
* @return boolean - true if exercise exists, otherwise false |
|
|
|
|
*/ |
|
|
|
|
public function read($id, $parseQuestionList = true) |
|
|
|
|
public function read($id, $parseQuestionList = true, $chamilo_session_id = null) |
|
|
|
|
{ |
|
|
|
|
if (empty($this->course_id)) { |
|
|
|
|
return false; |
|
|
|
|
@ -243,7 +244,7 @@ class Exercise |
|
|
|
|
$this->trackExercise = $this->getStatTrackExerciseInfo(); |
|
|
|
|
|
|
|
|
|
if ($parseQuestionList) { |
|
|
|
|
$this->setQuestionList($this->loadDistributions); |
|
|
|
|
$this->setQuestionList($this->loadDistributions, $chamilo_session_id); |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
@ -849,7 +850,8 @@ class Exercise |
|
|
|
|
$questionsPerMainCategory = array(); |
|
|
|
|
foreach ($temp_question_list as $categoryId => $questionList) { |
|
|
|
|
$parentId = $categoriesAddedInExercise[$categoryId]['parent_id']; |
|
|
|
|
$cat = new Testcategory(); |
|
|
|
|
// Default values and the course_id passed. |
|
|
|
|
$cat = new Testcategory(0, '', '', 0, 'simple', $this->course_id); |
|
|
|
|
$cat->getCategory($parentId); |
|
|
|
|
|
|
|
|
|
if (!isset($questionsPerMainCategory[$cat->parent_id])) { |
|
|
|
|
@ -885,8 +887,8 @@ class Exercise |
|
|
|
|
'category_with_questions_list' => array() |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// Order/random categories |
|
|
|
|
$cat = new Testcategory(); |
|
|
|
|
// Order/random categories. Default values and the course_id passed. |
|
|
|
|
$cat = new Testcategory(0, '', '', 0, 'simple', $this->course_id); |
|
|
|
|
|
|
|
|
|
$courseId = $this->course_id; |
|
|
|
|
|
|
|
|
|
@ -1047,7 +1049,8 @@ class Exercise |
|
|
|
|
|
|
|
|
|
if (!empty($questions_by_category)) { |
|
|
|
|
foreach ($questions_by_category as $categoryId => $questionList) { |
|
|
|
|
$cat = new Testcategory($categoryId); |
|
|
|
|
// Default values and the course_id passed. |
|
|
|
|
$cat = new Testcategory($categoryId, '', '', 0, 'simple', $this->course_id); |
|
|
|
|
$cat = (array)$cat; |
|
|
|
|
$cat['iid'] = $cat['id']; |
|
|
|
|
$cat['name'] = $cat['title']; |
|
|
|
|
@ -2968,7 +2971,8 @@ class Exercise |
|
|
|
|
$safe_lp_item_id = 0, |
|
|
|
|
$safe_lp_item_view_id = 0, |
|
|
|
|
$questionList = array(), |
|
|
|
|
$weight = 0 |
|
|
|
|
$weight = 0, |
|
|
|
|
$chamilo_session_id = null |
|
|
|
|
) { |
|
|
|
|
$track_exercises = Database :: get_main_table(TABLE_STATISTIC_TRACK_E_EXERCICES); |
|
|
|
|
$safe_lp_id = intval($safe_lp_id); |
|
|
|
|
@ -2994,10 +2998,13 @@ class Exercise |
|
|
|
|
$questionList = array_map('intval', $questionList); |
|
|
|
|
|
|
|
|
|
$weight = Database::escape_string($weight); |
|
|
|
|
if (!$chamilo_session_id) { |
|
|
|
|
$chamilo_session_id = api_get_session_id(); |
|
|
|
|
} |
|
|
|
|
$sql = "INSERT INTO $track_exercises |
|
|
|
|
($sql_fields exe_exo_id, exe_user_id, c_id, status, session_id, data_tracking, start_date, orig_lp_id, orig_lp_item_id, exe_weighting, quiz_distribution_id) |
|
|
|
|
VALUES |
|
|
|
|
( $sql_fields_values '".$this->id."','".api_get_user_id()."','".api_get_course_int_id()."', 'incomplete','".api_get_session_id()."','".implode(',', $questionList)."', '".api_get_utc_datetime()."', '$safe_lp_id', '$safe_lp_item_id', '$weight', '".$this->distributionId."')"; |
|
|
|
|
( $sql_fields_values '".$this->id."','".api_get_user_id()."','".$this->course_id."', 'incomplete','".$chamilo_session_id."','".implode(',', $questionList)."', '".api_get_utc_datetime()."', '$safe_lp_id', '$safe_lp_item_id', '$weight', '".$this->distributionId."')"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
$id = Database::insert_id(); |
|
|
|
|
|
|
|
|
|
@ -5595,13 +5602,15 @@ class Exercise |
|
|
|
|
/** |
|
|
|
|
* Sets the question list when the exercise->read() is executed |
|
|
|
|
*/ |
|
|
|
|
public function setQuestionList($loadDistributions = false) |
|
|
|
|
public function setQuestionList($loadDistributions = false, $sessionId = null) |
|
|
|
|
{ |
|
|
|
|
// Getting question list. |
|
|
|
|
$questionList = $this->selectQuestionList(true); |
|
|
|
|
|
|
|
|
|
// Looking for distributions |
|
|
|
|
$sessionId = api_get_session_id(); |
|
|
|
|
if (!$sessionId) { |
|
|
|
|
$sessionId = api_get_session_id(); |
|
|
|
|
} |
|
|
|
|
if (!empty($sessionId)) { |
|
|
|
|
|
|
|
|
|
$dataExists = !empty($this->trackExercise) && isset($this->trackExercise['data_tracking']) && !empty($this->trackExercise['data_tracking']) ? true : false; |
|
|
|
|
|