|
@@ -22,7 +22,7 @@ abstract class Question
|
|
|
public $type;
|
|
|
public $level;
|
|
|
public $picture;
|
|
|
- public $exerciseList; // array with the list of exercises which this question is in
|
|
|
+ public $exerciseList; // array with the list of exercises which this question is in
|
|
|
public $category_list;
|
|
|
public $parent_id;
|
|
|
public $category;
|
|
@@ -47,8 +47,8 @@ abstract class Question
|
|
|
'multiple_answer_combination_true_false.class.php',
|
|
|
'MultipleAnswerCombinationTrueFalse'
|
|
|
),
|
|
|
- GLOBAL_MULTIPLE_ANSWER => array('global_multiple_answer.class.php' , 'GlobalMultipleAnswer'),
|
|
|
- CALCULATED_ANSWER => array('calculated_answer.class.php' , 'CalculatedAnswer'),
|
|
|
+ GLOBAL_MULTIPLE_ANSWER => array('global_multiple_answer.class.php', 'GlobalMultipleAnswer'),
|
|
|
+ CALCULATED_ANSWER => array('calculated_answer.class.php', 'CalculatedAnswer'),
|
|
|
UNIQUE_ANSWER_IMAGE => ['UniqueAnswerImage.php', 'UniqueAnswerImage'],
|
|
|
DRAGGABLE => ['Draggable.php', 'Draggable'],
|
|
|
MATCHING_DRAGGABLE => ['MatchingDraggable.php', 'MatchingDraggable'],
|
|
@@ -108,7 +108,7 @@ abstract class Question
|
|
|
$id = intval($id);
|
|
|
|
|
|
if (!empty($course_id)) {
|
|
|
- $course_info = api_get_course_info_by_id($course_id);
|
|
|
+ $course_info = api_get_course_info_by_id($course_id);
|
|
|
} else {
|
|
|
$course_info = api_get_course_info();
|
|
|
}
|
|
@@ -360,7 +360,7 @@ abstract class Question
|
|
|
*/
|
|
|
public function updateTitle($title)
|
|
|
{
|
|
|
- $this->question=$title;
|
|
|
+ $this->question = $title;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -459,7 +459,7 @@ abstract class Question
|
|
|
// DO nothing
|
|
|
} else {
|
|
|
$sql = "INSERT INTO $TBL_QUESTION_REL_CATEGORY (c_id, question_id, category_id)
|
|
|
- VALUES (" . api_get_course_int_id() . ", $question_id, $category_id)";
|
|
|
+ VALUES (".api_get_course_int_id().", $question_id, $category_id)";
|
|
|
Database::query($sql);
|
|
|
}
|
|
|
}
|
|
@@ -485,7 +485,7 @@ abstract class Question
|
|
|
$sql = "SELECT count(*) AS nb FROM $table
|
|
|
WHERE
|
|
|
question_id = $question_id AND
|
|
|
- c_id=" . api_get_course_int_id();
|
|
|
+ c_id=".api_get_course_int_id();
|
|
|
$res = Database::query($sql);
|
|
|
$row = Database::fetch_array($res);
|
|
|
if ($row['nb'] > 0) {
|
|
@@ -493,11 +493,11 @@ abstract class Question
|
|
|
SET category_id = $category_id
|
|
|
WHERE
|
|
|
question_id = $question_id AND
|
|
|
- c_id = " . api_get_course_int_id();
|
|
|
+ c_id = ".api_get_course_int_id();
|
|
|
Database::query($sql);
|
|
|
} else {
|
|
|
$sql = "INSERT INTO $table (c_id, question_id, category_id)
|
|
|
- VALUES (" . api_get_course_int_id().", $question_id, $category_id)";
|
|
|
+ VALUES (".api_get_course_int_id().", $question_id, $category_id)";
|
|
|
Database::query($sql);
|
|
|
}
|
|
|
}
|
|
@@ -515,7 +515,7 @@ abstract class Question
|
|
|
$sql = "DELETE FROM $table
|
|
|
WHERE
|
|
|
question_id = $question_id AND
|
|
|
- c_id = " . api_get_course_int_id();
|
|
|
+ c_id = ".api_get_course_int_id();
|
|
|
Database::query($sql);
|
|
|
}
|
|
|
|
|
@@ -568,11 +568,11 @@ abstract class Question
|
|
|
) {
|
|
|
// removes old answers
|
|
|
$sql = "DELETE FROM $TBL_REPONSES
|
|
|
- WHERE c_id = $course_id AND question_id = " . intval($this->id);
|
|
|
+ WHERE c_id = $course_id AND question_id = ".intval($this->id);
|
|
|
Database::query($sql);
|
|
|
}
|
|
|
|
|
|
- $this->type=$type;
|
|
|
+ $this->type = $type;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -687,7 +687,7 @@ abstract class Question
|
|
|
// if the question has an ID
|
|
|
if ($this->id) {
|
|
|
// Get dimensions from current image.
|
|
|
- $my_image = new Image($picturePath . '/' . $this->picture);
|
|
|
+ $my_image = new Image($picturePath.'/'.$this->picture);
|
|
|
|
|
|
$current_image_size = $my_image->get_image_size();
|
|
|
$current_width = $current_image_size['width'];
|
|
@@ -728,7 +728,7 @@ abstract class Question
|
|
|
}
|
|
|
|
|
|
$my_image->resize($new_width, $new_height);
|
|
|
- $result = $my_image->send_image($picturePath . '/' . $this->picture);
|
|
|
+ $result = $my_image->send_image($picturePath.'/'.$this->picture);
|
|
|
|
|
|
if ($result) {
|
|
|
return true;
|
|
@@ -753,7 +753,7 @@ abstract class Question
|
|
|
$picture = $this->picture;
|
|
|
$this->picture = '';
|
|
|
|
|
|
- return @unlink($picturePath . '/' . $picture) ? true : false;
|
|
|
+ return @unlink($picturePath.'/'.$picture) ? true : false;
|
|
|
}
|
|
|
|
|
|
return false;
|
|
@@ -770,27 +770,27 @@ abstract class Question
|
|
|
{
|
|
|
$course_id = $course_info['real_id'];
|
|
|
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
|
|
|
- $destination_path = api_get_path(SYS_COURSE_PATH) . $course_info['path'] . '/document/images';
|
|
|
- $source_path = api_get_path(SYS_COURSE_PATH) . $this->course['path'] . '/document/images';
|
|
|
+ $destination_path = api_get_path(SYS_COURSE_PATH).$course_info['path'].'/document/images';
|
|
|
+ $source_path = api_get_path(SYS_COURSE_PATH).$this->course['path'].'/document/images';
|
|
|
|
|
|
// if the question has got an ID and if the picture exists
|
|
|
if ($this->id && !empty($this->picture)) {
|
|
|
$picture = explode('.', $this->picture);
|
|
|
$extension = $picture[sizeof($picture) - 1];
|
|
|
- $picture = 'quiz-' . $questionId . '.' . $extension;
|
|
|
- $result = @copy($source_path . '/' . $this->picture, $destination_path . '/' . $picture) ? true : false;
|
|
|
+ $picture = 'quiz-'.$questionId.'.'.$extension;
|
|
|
+ $result = @copy($source_path.'/'.$this->picture, $destination_path.'/'.$picture) ? true : false;
|
|
|
// If copy was correct then add to the database
|
|
|
if ($result) {
|
|
|
$sql = "UPDATE $TBL_QUESTIONS SET
|
|
|
- picture = '" . Database::escape_string($picture) . "'
|
|
|
- WHERE c_id = $course_id AND id='" . intval($questionId) . "'";
|
|
|
+ picture = '".Database::escape_string($picture)."'
|
|
|
+ WHERE c_id = $course_id AND id='".intval($questionId)."'";
|
|
|
Database::query($sql);
|
|
|
|
|
|
$document_id = add_document(
|
|
|
$course_info,
|
|
|
- '/images/' . $picture,
|
|
|
+ '/images/'.$picture,
|
|
|
'file',
|
|
|
- filesize($destination_path . '/' . $picture),
|
|
|
+ filesize($destination_path.'/'.$picture),
|
|
|
$picture
|
|
|
);
|
|
|
if ($document_id) {
|
|
@@ -825,7 +825,7 @@ abstract class Question
|
|
|
$Extension = $pictureName[sizeof($pictureName) - 1];
|
|
|
|
|
|
// saves the picture into a temporary file
|
|
|
- @move_uploaded_file($picture, $picturePath . '/tmp.' . $Extension);
|
|
|
+ @move_uploaded_file($picture, $picturePath.'/tmp.'.$Extension);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -916,12 +916,12 @@ abstract class Question
|
|
|
$TBL_EXERCISE_QUESTION as test_question
|
|
|
WHERE
|
|
|
question.id = test_question.question_id AND
|
|
|
- test_question.exercice_id = " . intval($exerciseId) . " AND
|
|
|
+ test_question.exercice_id = ".intval($exerciseId)." AND
|
|
|
question.c_id = $c_id AND
|
|
|
test_question.c_id = $c_id ";
|
|
|
$result = Database::query($sql);
|
|
|
$current_position = Database::result($result, 0, 0);
|
|
|
- $this->updatePosition($current_position+1);
|
|
|
+ $this->updatePosition($current_position + 1);
|
|
|
$position = $this->position;
|
|
|
|
|
|
$params = [
|
|
@@ -1029,7 +1029,7 @@ abstract class Question
|
|
|
$rmQs = false
|
|
|
) {
|
|
|
// update search engine and its values table if enabled
|
|
|
- if (api_get_setting('search_enabled')=='true' && extension_loaded('xapian')) {
|
|
|
+ if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) {
|
|
|
$course_id = api_get_course_id();
|
|
|
// get search_did
|
|
|
$tbl_se_ref = Database::get_main_table(TABLE_MAIN_SEARCH_ENGINE_REF);
|
|
@@ -1047,8 +1047,8 @@ abstract class Question
|
|
|
$res = Database::query($sql);
|
|
|
|
|
|
if (Database::num_rows($res) > 0 || $addQs) {
|
|
|
- require_once(api_get_path(LIBRARY_PATH) . 'search/ChamiloIndexer.class.php');
|
|
|
- require_once(api_get_path(LIBRARY_PATH) . 'search/IndexableChunk.class.php');
|
|
|
+ require_once(api_get_path(LIBRARY_PATH).'search/ChamiloIndexer.class.php');
|
|
|
+ require_once(api_get_path(LIBRARY_PATH).'search/IndexableChunk.class.php');
|
|
|
|
|
|
$di = new ChamiloIndexer();
|
|
|
if ($addQs) {
|
|
@@ -1061,7 +1061,7 @@ abstract class Question
|
|
|
|
|
|
// retrieve others exercise ids
|
|
|
$se_ref = Database::fetch_array($res);
|
|
|
- $se_doc = $di->get_document((int)$se_ref['search_did']);
|
|
|
+ $se_doc = $di->get_document((int) $se_ref['search_did']);
|
|
|
if ($se_doc !== false) {
|
|
|
if (($se_doc_data = $di->get_document_data($se_doc)) !== FALSE) {
|
|
|
$se_doc_data = unserialize($se_doc_data);
|
|
@@ -1099,16 +1099,16 @@ abstract class Question
|
|
|
SE_DATA => array(
|
|
|
'type' => SE_DOCTYPE_EXERCISE_QUESTION,
|
|
|
'exercise_ids' => $question_exercises,
|
|
|
- 'question_id' => (int)$this->id
|
|
|
+ 'question_id' => (int) $this->id
|
|
|
),
|
|
|
- SE_USER => (int)api_get_user_id(),
|
|
|
+ SE_USER => (int) api_get_user_id(),
|
|
|
);
|
|
|
$ic_slide->xapian_data = serialize($xapian_data);
|
|
|
$ic_slide->addValue("content", $this->description);
|
|
|
|
|
|
//TODO: index answers, see also form validation on question_admin.inc.php
|
|
|
|
|
|
- $di->remove_document((int)$se_ref['search_did']);
|
|
|
+ $di->remove_document((int) $se_ref['search_did']);
|
|
|
$di->addChunk($ic_slide);
|
|
|
|
|
|
//index and return search engine document id
|
|
@@ -1187,7 +1187,7 @@ abstract class Question
|
|
|
$count = $new_exercise->selectNbrQuestions();
|
|
|
$count++;
|
|
|
$sql = "INSERT INTO $exerciseRelQuestionTable (c_id, question_id, exercice_id, question_order)
|
|
|
- VALUES ({$this->course['real_id']}, " . intval($id) . ", " . intval($exerciseId) . ", '$count')";
|
|
|
+ VALUES ({$this->course['real_id']}, ".intval($id).", ".intval($exerciseId).", '$count')";
|
|
|
Database::query($sql);
|
|
|
|
|
|
// we do not want to reindex if we had just saved adnd indexed the question
|
|
@@ -1224,17 +1224,17 @@ abstract class Question
|
|
|
FROM $TBL_EXERCISE_QUESTION
|
|
|
WHERE
|
|
|
c_id = $course_id
|
|
|
- AND question_id = " . intval($id) . "
|
|
|
+ AND question_id = ".intval($id)."
|
|
|
AND exercice_id = " . intval($exerciseId);
|
|
|
$res = Database::query($sql);
|
|
|
- if (Database::num_rows($res)>0) {
|
|
|
+ if (Database::num_rows($res) > 0) {
|
|
|
$row = Database::fetch_array($res);
|
|
|
if (!empty($row['question_order'])) {
|
|
|
$sql = "UPDATE $TBL_EXERCISE_QUESTION
|
|
|
SET question_order = question_order-1
|
|
|
WHERE
|
|
|
c_id = $course_id
|
|
|
- AND exercice_id = " . intval($exerciseId) . "
|
|
|
+ AND exercice_id = ".intval($exerciseId)."
|
|
|
AND question_order > " . $row['question_order'];
|
|
|
Database::query($sql);
|
|
|
}
|
|
@@ -1243,7 +1243,7 @@ abstract class Question
|
|
|
$sql = "DELETE FROM $TBL_EXERCISE_QUESTION
|
|
|
WHERE
|
|
|
c_id = $course_id
|
|
|
- AND question_id = " . intval($id) . "
|
|
|
+ AND question_id = ".intval($id)."
|
|
|
AND exercice_id = " . intval($exerciseId);
|
|
|
Database::query($sql);
|
|
|
|
|
@@ -1284,7 +1284,7 @@ abstract class Question
|
|
|
SET question_order = question_order-1
|
|
|
WHERE
|
|
|
c_id= $course_id
|
|
|
- AND exercice_id = " . intval($row['exercice_id']) . "
|
|
|
+ AND exercice_id = ".intval($row['exercice_id'])."
|
|
|
AND question_order > " . $row['question_order'];
|
|
|
Database::query($sql);
|
|
|
}
|
|
@@ -1292,22 +1292,22 @@ abstract class Question
|
|
|
}
|
|
|
|
|
|
$sql = "DELETE FROM $TBL_EXERCISE_QUESTION
|
|
|
- WHERE c_id = $course_id AND question_id = " . $id;
|
|
|
+ WHERE c_id = $course_id AND question_id = ".$id;
|
|
|
Database::query($sql);
|
|
|
|
|
|
$sql = "DELETE FROM $TBL_QUESTIONS
|
|
|
- WHERE c_id = $course_id AND id = " . $id;
|
|
|
+ WHERE c_id = $course_id AND id = ".$id;
|
|
|
Database::query($sql);
|
|
|
|
|
|
$sql = "DELETE FROM $TBL_REPONSES
|
|
|
- WHERE c_id = $course_id AND question_id = " . $id;
|
|
|
+ WHERE c_id = $course_id AND question_id = ".$id;
|
|
|
Database::query($sql);
|
|
|
|
|
|
// remove the category of this question in the question_rel_category table
|
|
|
$sql = "DELETE FROM $TBL_QUIZ_QUESTION_REL_CATEGORY
|
|
|
WHERE
|
|
|
c_id = $course_id AND
|
|
|
- question_id = " . $id;
|
|
|
+ question_id = ".$id;
|
|
|
Database::query($sql);
|
|
|
|
|
|
api_item_property_update(
|
|
@@ -1476,7 +1476,7 @@ abstract class Question
|
|
|
if (class_exists($class_name)) {
|
|
|
return new $class_name();
|
|
|
} else {
|
|
|
- echo 'Can\'t instanciate class ' . $class_name . ' of type ' . $type;
|
|
|
+ echo 'Can\'t instanciate class '.$class_name.' of type '.$type;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1660,7 +1660,7 @@ abstract class Question
|
|
|
|
|
|
if ($feedback_type == 1) {
|
|
|
//2. but if it is a feedback DIRECT we only show the UNIQUE_ANSWER type that is currently available
|
|
|
- $question_type_custom_list = array (
|
|
|
+ $question_type_custom_list = array(
|
|
|
UNIQUE_ANSWER => self::$questionTypes[UNIQUE_ANSWER],
|
|
|
HOT_SPOT_DELINEATION => self::$questionTypes[HOT_SPOT_DELINEATION]
|
|
|
);
|
|
@@ -1676,14 +1676,14 @@ abstract class Question
|
|
|
require_once $a_type[0];
|
|
|
// get the picture of the type and the langvar which describes it
|
|
|
$img = $explanation = '';
|
|
|
- eval('$img = ' . $a_type[1] . '::$typePicture;');
|
|
|
- eval('$explanation = get_lang(' . $a_type[1] . '::$explanationLangVar);');
|
|
|
+ eval('$img = '.$a_type[1].'::$typePicture;');
|
|
|
+ eval('$explanation = get_lang('.$a_type[1].'::$explanationLangVar);');
|
|
|
echo '<li>';
|
|
|
echo '<div class="icon-image">';
|
|
|
|
|
|
|
|
|
- $icon = '<a href="admin.php?' . api_get_cidreq() . '&newQuestion=yes&answerType=' . $i . '">' .
|
|
|
- Display::return_icon($img, $explanation, null, ICON_SIZE_BIG) . '</a>';
|
|
|
+ $icon = '<a href="admin.php?'.api_get_cidreq().'&newQuestion=yes&answerType='.$i.'">'.
|
|
|
+ Display::return_icon($img, $explanation, null, ICON_SIZE_BIG).'</a>';
|
|
|
|
|
|
if ($objExercise->force_edit_exercise_in_lp === false) {
|
|
|
if ($objExercise->exercise_was_added_in_lp == true) {
|
|
@@ -1704,9 +1704,9 @@ abstract class Question
|
|
|
echo Display::return_icon('database_na.png', get_lang('GetExistingQuestion'), null, ICON_SIZE_BIG);
|
|
|
} else {
|
|
|
if ($feedback_type == 1) {
|
|
|
- echo $url = "<a href=\"question_pool.php?" . api_get_cidreq() . "&type=1&fromExercise=$exerciseId\">";
|
|
|
+ echo $url = "<a href=\"question_pool.php?".api_get_cidreq()."&type=1&fromExercise=$exerciseId\">";
|
|
|
} else {
|
|
|
- echo $url = '<a href="question_pool.php?' . api_get_cidreq() . '&fromExercise=' . $exerciseId . '">';
|
|
|
+ echo $url = '<a href="question_pool.php?'.api_get_cidreq().'&fromExercise='.$exerciseId.'">';
|
|
|
}
|
|
|
echo Display::return_icon('database.png', get_lang('GetExistingQuestion'), null, ICON_SIZE_BIG);
|
|
|
}
|
|
@@ -1839,7 +1839,7 @@ abstract class Question
|
|
|
$header .= $this->show_media_content();
|
|
|
}
|
|
|
|
|
|
- $header .= Display::page_subheader2($counter_label . ". " . $question_title);
|
|
|
+ $header .= Display::page_subheader2($counter_label.". ".$question_title);
|
|
|
$header .= Display::div(
|
|
|
"<div class=\"rib rib-$class\"><h3>$score_label</h3></div> <h4>{$score['result']}</h4>",
|
|
|
array('class' => 'ribbon')
|
|
@@ -1930,8 +1930,8 @@ abstract class Question
|
|
|
require_once $tabQuestionList[$type][0];
|
|
|
|
|
|
$img = $explanation = null;
|
|
|
- eval('$img = ' . $tabQuestionList[$type][1] . '::$typePicture;');
|
|
|
- eval('$explanation = get_lang(' . $tabQuestionList[$type][1] . '::$explanationLangVar);');
|
|
|
+ eval('$img = '.$tabQuestionList[$type][1].'::$typePicture;');
|
|
|
+ eval('$explanation = get_lang('.$tabQuestionList[$type][1].'::$explanationLangVar);');
|
|
|
return array($img, $explanation);
|
|
|
}
|
|
|
|