|
@@ -1460,26 +1460,32 @@ class learnpath
|
|
|
$max_score = 100;
|
|
|
}
|
|
|
|
|
|
- if ($mastery_score > $max_score) {
|
|
|
+ /*if ($mastery_score > $max_score) {
|
|
|
$max_score = $mastery_score;
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
if (!is_numeric($prerequisite_id)) {
|
|
|
$prerequisite_id = 'NULL';
|
|
|
}
|
|
|
|
|
|
- $sql = " UPDATE " . $tbl_lp_item . "
|
|
|
- SET prerequisite = " . $prerequisite_id . "
|
|
|
- WHERE c_id = ".$course_id." AND id = " . $id;
|
|
|
+ $mastery_score = floatval($mastery_score);
|
|
|
+ $max_score = floatval($max_score);
|
|
|
+
|
|
|
+ $sql = " UPDATE $tbl_lp_item
|
|
|
+ SET
|
|
|
+ prerequisite = $prerequisite_id ,
|
|
|
+ prerequisite_min_score = $mastery_score ,
|
|
|
+ prerequisite_max_score = $max_score
|
|
|
+ WHERE c_id = $course_id AND id = $id";
|
|
|
Database::query($sql);
|
|
|
|
|
|
if ($prerequisite_id != 'NULL' && $prerequisite_id != '') {
|
|
|
// Will this be enough to ensure unicity?
|
|
|
- $sql = " UPDATE $tbl_lp_item
|
|
|
+ /*$sql = " UPDATE $tbl_lp_item
|
|
|
SET mastery_score = $mastery_score
|
|
|
WHERE c_id = $course_id AND ref = '$prerequisite_id'";
|
|
|
|
|
|
- Database::query($sql);
|
|
|
+ Database::query($sql);*/
|
|
|
}
|
|
|
// TODO: Update the item object (can be ignored for now because refreshed).
|
|
|
return true;
|
|
@@ -5284,10 +5290,12 @@ class learnpath
|
|
|
* @param int $depth
|
|
|
* @param array $tmp
|
|
|
*/
|
|
|
- public function create_tree_array($array, $parent = 0, $depth = -1, $tmp = array ()) {
|
|
|
+ public function create_tree_array($array, $parent = 0, $depth = -1, $tmp = array ())
|
|
|
+ {
|
|
|
if ($this->debug > 1) {
|
|
|
error_log('New LP - In learnpath::create_tree_array())', 0);
|
|
|
}
|
|
|
+
|
|
|
if (is_array($array)) {
|
|
|
for ($i = 0; $i < count($array); $i++) {
|
|
|
if ($array[$i]['parent_item_id'] == $parent) {
|
|
@@ -5298,6 +5306,10 @@ class learnpath
|
|
|
$preq = (empty($array[$i]['prerequisite']) ? '' : $array[$i]['prerequisite']);
|
|
|
$audio = isset($array[$i]['audio']) ? $array[$i]['audio'] : null;
|
|
|
$path = isset($array[$i]['path']) ? $array[$i]['path'] : null;
|
|
|
+
|
|
|
+ $prerequisiteMinScore = isset($array[$i]['prerequisite_min_score']) ? $array[$i]['prerequisite_min_score'] : null;
|
|
|
+ $prerequisiteMaxScore = isset($array[$i]['prerequisite_max_score']) ? $array[$i]['prerequisite_max_score'] : null;
|
|
|
+
|
|
|
$this->arrMenu[] = array(
|
|
|
'id' => $array[$i]['id'],
|
|
|
'item_type' => $array[$i]['item_type'],
|
|
@@ -5313,7 +5325,9 @@ class learnpath
|
|
|
'display_order' => $array[$i]['display_order'],
|
|
|
'prerequisite' => $preq,
|
|
|
'depth' => $depth,
|
|
|
- 'audio' => $audio
|
|
|
+ 'audio' => $audio,
|
|
|
+ 'prerequisite_min_score' => $prerequisiteMinScore,
|
|
|
+ 'prerequisite_max_score' => $prerequisiteMaxScore
|
|
|
);
|
|
|
|
|
|
$this->create_tree_array($array, $array[$i]['id'], $depth, $tmp);
|
|
@@ -5431,7 +5445,9 @@ class learnpath
|
|
|
'mastery_score' => $row['mastery_score'],
|
|
|
'prerequisite' => $row['prerequisite'],
|
|
|
'display_order' => $row['display_order'],
|
|
|
- 'audio' => $row['audio']
|
|
|
+ 'audio' => $row['audio'],
|
|
|
+ 'prerequisite_max_score' => $row['prerequisite_max_score'],
|
|
|
+ 'prerequisite_min_score' => $row['prerequisite_min_score']
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -8242,7 +8258,7 @@ class learnpath
|
|
|
WHERE c_id = $course_id AND id = " . $item_id;
|
|
|
$result = Database::query($sql);
|
|
|
$row = Database::fetch_array($result);
|
|
|
- $preq_id = $row['prerequisite'];
|
|
|
+ $prerequisiteId = $row['prerequisite'];
|
|
|
$return = '<legend>';
|
|
|
$return .= get_lang('AddEditPrerequisites');
|
|
|
$return .= '</legend>';
|
|
@@ -8264,8 +8280,15 @@ class learnpath
|
|
|
$sql = "SELECT * FROM $tbl_lp_item
|
|
|
WHERE c_id = $course_id AND lp_id = " . $this->lp_id;
|
|
|
$result = Database::query($sql);
|
|
|
- $arrLP = array ();
|
|
|
+ $arrLP = array();
|
|
|
+
|
|
|
+ $selectedMinScore = array();
|
|
|
+ $selectedMaxScore = array();
|
|
|
while ($row = Database :: fetch_array($result)) {
|
|
|
+ if ($row['id'] == $item_id) {
|
|
|
+ $selectedMinScore[$row['prerequisite']] = $row['prerequisite_min_score'];
|
|
|
+ $selectedMaxScore[$row['prerequisite']] = $row['prerequisite_max_score'];
|
|
|
+ }
|
|
|
$arrLP[] = array(
|
|
|
'id' => $row['id'],
|
|
|
'item_type' => $row['item_type'],
|
|
@@ -8280,12 +8303,10 @@ class learnpath
|
|
|
'mastery_score' => $row['mastery_score'],
|
|
|
'prerequisite' => $row['prerequisite'],
|
|
|
'next_item_id' => $row['next_item_id'],
|
|
|
- 'display_order' => $row['display_order']
|
|
|
+ 'display_order' => $row['display_order'],
|
|
|
+ 'prerequisite_min_score' => $row['prerequisite_min_score'],
|
|
|
+ 'prerequisite_max_score' => $row['prerequisite_max_score'],
|
|
|
);
|
|
|
- if ($row['ref'] == $preq_id) {
|
|
|
- $preq_mastery = $row['mastery_score'];
|
|
|
- $preq_max = $row['max_score'];
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
$this->tree_array($arrLP);
|
|
@@ -8293,14 +8314,20 @@ class learnpath
|
|
|
unset($this->arrMenu);
|
|
|
|
|
|
for ($i = 0; $i < count($arrLP); $i++) {
|
|
|
- if ($arrLP[$i]['id'] == $item_id) {
|
|
|
+ $item = $arrLP[$i];
|
|
|
+
|
|
|
+ if ($item['id'] == $item_id) {
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+ $selectedMaxScoreValue = isset($selectedMaxScore[$item['id']]) ? $selectedMaxScore[$item['id']] : $item['max_score'];
|
|
|
+ $selectedMinScoreValue = isset($selectedMinScore[$item['id']]) ? $selectedMinScore[$item['id']]: 0;
|
|
|
+
|
|
|
$return .= '<tr>';
|
|
|
- $return .= '<td class="radio"' . (($arrLP[$i]['item_type'] != TOOL_QUIZ && $arrLP[$i]['item_type'] != TOOL_HOTPOTATOES) ? ' colspan="3"' : '') . '>';
|
|
|
- $return .= '<label for="id' . $arrLP[$i]['id'] . '">';
|
|
|
- $return .= '<input' . (($arrLP[$i]['id'] == $preq_id) ? ' checked="checked" ' : '') . (($arrLP[$i]['item_type'] == 'dokeos_module' || $arrLP[$i]['item_type'] == 'dokeos_chapter') ? ' disabled="disabled" ' : ' ') . 'id="id' . $arrLP[$i]['id'] . '" name="prerequisites" style="margin-left:' . $arrLP[$i]['depth'] * 10 . 'px; margin-right:10px;" type="radio" value="' . $arrLP[$i]['id'] . '" />';
|
|
|
- $icon_name = str_replace(' ', '', $arrLP[$i]['item_type']);
|
|
|
+ $return .= '<td class="radio"' . (($item['item_type'] != TOOL_QUIZ && $item['item_type'] != TOOL_HOTPOTATOES) ? ' colspan="3"' : '') . '>';
|
|
|
+ $return .= '<label for="id' . $item['id'] . '">';
|
|
|
+ $return .= '<input' . (($item['id'] == $prerequisiteId) ? ' checked="checked" ' : '') . (($item['item_type'] == 'dokeos_module' || $item['item_type'] == 'dokeos_chapter') ? ' disabled="disabled" ' : ' ') . 'id="id' . $item['id'] . '" name="prerequisites" style="margin-left:' . $item['depth'] * 10 . 'px; margin-right:10px;" type="radio" value="' . $item['id'] . '" />';
|
|
|
+ $icon_name = str_replace(' ', '', $item['item_type']);
|
|
|
|
|
|
if (file_exists('../img/lp_' . $icon_name . '.png')) {
|
|
|
$return .= '<img alt="" src="../img/lp_' . $icon_name . '.png" style="margin-right:5px;" title="" />';
|
|
@@ -8311,32 +8338,33 @@ class learnpath
|
|
|
$return .= Display::return_icon('folder_document.gif','',array('style'=>'margin-right:5px;'));
|
|
|
}
|
|
|
}
|
|
|
- $return .= $arrLP[$i]['title'] . '</label>';
|
|
|
+ $return .= $item['title'] . '</label>';
|
|
|
$return .= '</td>';
|
|
|
|
|
|
- if ($arrLP[$i]['item_type'] == TOOL_QUIZ) {
|
|
|
+ if ($item['item_type'] == TOOL_QUIZ) {
|
|
|
// lets update max_score Quiz information depending of the Quiz Advanced properties
|
|
|
- $tmp_obj_lp_item = new LpItem($course_id, $arrLP[$i]['id']);
|
|
|
+ $tmp_obj_lp_item = new LpItem($course_id, $item['id']);
|
|
|
$tmp_obj_exercice = new Exercise();
|
|
|
$tmp_obj_exercice->read($tmp_obj_lp_item->path);
|
|
|
$tmp_obj_lp_item->max_score = $tmp_obj_exercice->get_max_score();
|
|
|
+
|
|
|
$tmp_obj_lp_item->update_in_bdd();
|
|
|
- $arrLP[$i]['max_score'] = $tmp_obj_lp_item->max_score;
|
|
|
+ $item['max_score'] = $tmp_obj_lp_item->max_score;
|
|
|
|
|
|
$return .= '<td class="exercise">';
|
|
|
- $return .= '<center><input size="4" maxlength="3" name="min_' . $arrLP[$i]['id'] . '" type="text" value="' . (($arrLP[$i]['id'] == $preq_id) ? $preq_mastery : 0) . '" /></center>';
|
|
|
+ $return .= '<input size="4" maxlength="3" name="min_' . $item['id'] . '" type="number" min="0" step="any" max="'.$item['max_score'].'" value="' . $selectedMinScoreValue. '" />';
|
|
|
$return .= '</td>';
|
|
|
$return .= '<td class="exercise">';
|
|
|
- $return .= '<center><input size="4" maxlength="3" name="max_' . $arrLP[$i]['id'] . '" type="text" value="' . $arrLP[$i]['max_score'] . '" disabled="true" /></center>';
|
|
|
+ $return .= '<input size="4" maxlength="3" name="max_' . $item['id'] . '" type="number" min="0" step="any" max="'.$item['max_score'].'" value="' . $selectedMaxScoreValue . '" />';
|
|
|
$return .= '</td>';
|
|
|
}
|
|
|
|
|
|
- if ($arrLP[$i]['item_type'] == TOOL_HOTPOTATOES) {
|
|
|
+ if ($item['item_type'] == TOOL_HOTPOTATOES) {
|
|
|
$return .= '<td class="exercise">';
|
|
|
- $return .= '<center><input size="4" maxlength="3" name="min_' . $arrLP[$i]['id'] . '" type="text" value="' . (($arrLP[$i]['id'] == $preq_id) ? $preq_mastery : 0) . '" /></center>';
|
|
|
+ $return .= '<center><input size="4" maxlength="3" name="min_' . $item['id'] . '" type="number" min="0" step="any" max="'.$item['max_score'].'" value="' . $selectedMinScoreValue . '" /></center>';
|
|
|
$return .= '</td>';
|
|
|
$return .= '<td class="exercise"">';
|
|
|
- $return .= '<center><input size="4" maxlength="3" name="max_' . $arrLP[$i]['id'] . '" type="text" value="' . $arrLP[$i]['max_score'] . '" disabled="true" /></center>';
|
|
|
+ $return .= '<center><input size="4" maxlength="3" name="max_' . $item['id'] . '" type="number" min="0" step="any" max="'.$item['max_score'].'" value="'.$selectedMaxScoreValue . '" /></center>';
|
|
|
$return .= '</td>';
|
|
|
}
|
|
|
$return .= '</tr>';
|
|
@@ -8366,7 +8394,7 @@ class learnpath
|
|
|
$sql = "SELECT * FROM $tbl_lp WHERE c_id = $course_id AND id = $lp_id ";
|
|
|
$result = Database::query($sql);
|
|
|
$row = Database :: fetch_array($result);
|
|
|
- $preq_id = $row['prerequisite'];
|
|
|
+ $prerequisiteId = $row['prerequisite'];
|
|
|
$session_id = api_get_session_id();
|
|
|
$session_condition = api_get_session_condition($session_id);
|
|
|
$sql = "SELECT * FROM $tbl_lp
|
|
@@ -8381,7 +8409,7 @@ class learnpath
|
|
|
if ($row['id'] == $lp_id) {
|
|
|
continue;
|
|
|
}
|
|
|
- $return .= '<option value="'.$row['id'].'" '.(($row['id']==$preq_id)?' selected ' : '').'>'.$row['name'].'</option>';
|
|
|
+ $return .= '<option value="'.$row['id'].'" '.(($row['id']==$prerequisiteId)?' selected ' : '').'>'.$row['name'].'</option>';
|
|
|
}
|
|
|
}
|
|
|
$return .= '</select>';
|