Use iid to get item information see BT#14266

pull/2539/head
jmontoyaa 8 years ago
parent 21b622ff01
commit dd5a1002d0
  1. 214
      main/lp/learnpath.class.php
  2. 12
      main/lp/learnpathItem.class.php
  3. 29
      main/lp/lp_edit_item.php

@ -7272,115 +7272,119 @@ class learnpath
{
$course_id = api_get_course_int_id();
$return = '';
if (is_numeric($item_id)) {
$tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM);
$sql = "SELECT * FROM $tbl_lp_item
WHERE iid = ".intval($item_id);
$res = Database::query($sql);
$row = Database::fetch_array($res);
switch ($row['item_type']) {
case 'dir':
case 'asset':
case 'sco':
if (isset($_GET['view']) && $_GET['view'] == 'build') {
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_item_form(
$row['item_type'],
get_lang('EditCurrentChapter').' :',
'edit',
$item_id,
$row
);
} else {
$return .= $this->display_item_small_form(
$row['item_type'],
get_lang('EditCurrentChapter').' :',
$row
);
}
break;
case TOOL_DOCUMENT:
$tbl_doc = Database::get_course_table(TABLE_DOCUMENT);
$sql = "SELECT lp.*, doc.path as dir
FROM $tbl_lp_item as lp
LEFT JOIN $tbl_doc as doc
ON (doc.iid = lp.path AND lp.c_id = doc.c_id)
WHERE
doc.c_id = $course_id AND
lp.iid = ".intval($item_id);
$res_step = Database::query($sql);
$row_step = Database::fetch_array($res_step, 'ASSOC');
$return .= $this->display_manipulate(
$item_id,
$row['item_type']
);
$return .= $this->display_document_form(
$item_id = (int) $item_id;
if (empty($item_id)) {
return '';
}
$tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM);
$sql = "SELECT * FROM $tbl_lp_item
WHERE iid = ".$item_id;
$res = Database::query($sql);
$row = Database::fetch_array($res);
switch ($row['item_type']) {
case 'dir':
case 'asset':
case 'sco':
if (isset($_GET['view']) && $_GET['view'] == 'build') {
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_item_form(
$row['item_type'],
get_lang('EditCurrentChapter').' :',
'edit',
$item_id,
$row_step
);
break;
case TOOL_LINK:
$link_id = (string) $row['path'];
if (ctype_digit($link_id)) {
$tbl_link = Database::get_course_table(TABLE_LINK);
$sql_select = 'SELECT url FROM '.$tbl_link.'
WHERE c_id = '.$course_id.' AND iid = '.intval($link_id);
$res_link = Database::query($sql_select);
$row_link = Database::fetch_array($res_link);
if (is_array($row_link)) {
$row['url'] = $row_link['url'];
}
}
$return .= $this->display_manipulate(
$item_id,
$row['item_type']
);
$return .= $this->display_link_form('edit', $item_id, $row);
break;
case TOOL_LP_FINAL_ITEM:
Session::write('finalItem', true);
$tbl_doc = Database::get_course_table(TABLE_DOCUMENT);
$sql = "SELECT lp.*, doc.path as dir
FROM $tbl_lp_item as lp
LEFT JOIN $tbl_doc as doc
ON (doc.iid = lp.path AND lp.c_id = doc.c_id)
WHERE
doc.c_id = $course_id AND
lp.iid = ".intval($item_id);
$res_step = Database::query($sql);
$row_step = Database::fetch_array($res_step, 'ASSOC');
$return .= $this->display_manipulate(
$item_id,
$row['item_type']
$row
);
$return .= $this->display_document_form(
'edit',
$item_id,
$row_step
} else {
$return .= $this->display_item_small_form(
$row['item_type'],
get_lang('EditCurrentChapter').' :',
$row
);
break;
case TOOL_QUIZ:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_quiz_form('edit', $item_id, $row);
break;
case TOOL_HOTPOTATOES:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_hotpotatoes_form('edit', $item_id, $row);
break;
case TOOL_STUDENTPUBLICATION:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_student_publication_form('edit', $item_id, $row);
break;
case TOOL_FORUM:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_forum_form('edit', $item_id, $row);
break;
case TOOL_THREAD:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_thread_form('edit', $item_id, $row);
break;
}
}
break;
case TOOL_DOCUMENT:
$tbl_doc = Database::get_course_table(TABLE_DOCUMENT);
$sql = "SELECT lp.*, doc.path as dir
FROM $tbl_lp_item as lp
LEFT JOIN $tbl_doc as doc
ON (doc.iid = lp.path AND lp.c_id = doc.c_id)
WHERE
doc.c_id = $course_id AND
lp.iid = ".$item_id;
$res_step = Database::query($sql);
$row_step = Database::fetch_array($res_step, 'ASSOC');
$return .= $this->display_manipulate(
$item_id,
$row['item_type']
);
$return .= $this->display_document_form(
'edit',
$item_id,
$row_step
);
break;
case TOOL_LINK:
$link_id = (string) $row['path'];
if (ctype_digit($link_id)) {
$tbl_link = Database::get_course_table(TABLE_LINK);
$sql_select = 'SELECT url FROM '.$tbl_link.'
WHERE c_id = '.$course_id.' AND iid = '.intval($link_id);
$res_link = Database::query($sql_select);
$row_link = Database::fetch_array($res_link);
if (is_array($row_link)) {
$row['url'] = $row_link['url'];
}
}
$return .= $this->display_manipulate(
$item_id,
$row['item_type']
);
$return .= $this->display_link_form('edit', $item_id, $row);
break;
case TOOL_LP_FINAL_ITEM:
Session::write('finalItem', true);
$tbl_doc = Database::get_course_table(TABLE_DOCUMENT);
$sql = "SELECT lp.*, doc.path as dir
FROM $tbl_lp_item as lp
LEFT JOIN $tbl_doc as doc
ON (doc.iid = lp.path AND lp.c_id = doc.c_id)
WHERE
doc.c_id = $course_id AND
lp.iid = ".$item_id;
$res_step = Database::query($sql);
$row_step = Database::fetch_array($res_step, 'ASSOC');
$return .= $this->display_manipulate(
$item_id,
$row['item_type']
);
$return .= $this->display_document_form(
'edit',
$item_id,
$row_step
);
break;
case TOOL_QUIZ:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_quiz_form('edit', $item_id, $row);
break;
case TOOL_HOTPOTATOES:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_hotpotatoes_form('edit', $item_id, $row);
break;
case TOOL_STUDENTPUBLICATION:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_student_publication_form('edit', $item_id, $row);
break;
case TOOL_FORUM:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_forum_form('edit', $item_id, $row);
break;
case TOOL_THREAD:
$return .= $this->display_manipulate($item_id, $row['item_type']);
$return .= $this->display_thread_form('edit', $item_id, $row);
break;
}
return $return;

@ -14,6 +14,7 @@
class learnpathItem
{
const DEBUG = 0; // Logging parameter.
public $iId;
public $attempt_id; // Also called "objectives" SCORM-wise.
public $audio; // The path to an audio file (stored in document/audio/).
public $children = []; // Contains the ids of children items.
@ -106,7 +107,7 @@ class learnpathItem
error_log("learnpathItem constructor: id: $id user_id: $user_id course_id: $course_id");
error_log("item_content: ".print_r($item_content, 1));
}
$id = intval($id);
$id = (int) $id;
if (empty($item_content)) {
if (empty($course_id)) {
$course_id = api_get_course_int_id();
@ -125,6 +126,7 @@ class learnpathItem
}
$this->lp_id = $row['lp_id'];
$this->iId = $row['iid'];
$this->max_score = $row['max_score'];
$this->min_score = $row['min_score'];
$this->name = $row['title'];
@ -4623,4 +4625,12 @@ class learnpathItem
{
return $this->last_scorm_session_time;
}
/**
* @return int
*/
public function getIid()
{
return $this->iId;
}
}

@ -161,21 +161,23 @@ echo $learnPath->build_action_menu();
echo '<div class="row">';
echo '<div id="lp_sidebar" class="col-md-4">';
$path_item = isset($_GET['path_item']) ? $_GET['path_item'] : 0;
$path_item = Database::escape_string($path_item);
$tbl_doc = Database::get_course_table(TABLE_DOCUMENT);
$sql_doc = "SELECT path FROM ".$tbl_doc."
WHERE c_id = $course_id AND id = '".$path_item."' ";
$res_doc = Database::query($sql_doc);
$path_file = Database::result($res_doc, 0, 0);
$documentId = isset($_GET['path_item']) ? (int) $_GET['path_item'] : 0;
$documentInfo = DocumentManager::get_document_data_by_id($documentId, api_get_course_id());
if (empty($documentInfo)) {
// Try with iid
$table = Database::get_course_table(TABLE_DOCUMENT);
$sql = "SELECT path FROM $table
WHERE c_id = $course_id AND iid = $documentId";
$res_doc = Database::query($sql);
$path_file = Database::result($res_doc, 0, 0);
} else {
$path_file = $documentInfo['path'];
}
$path_parts = pathinfo($path_file);
if (Database::num_rows($res_doc) > 0 &&
isset($path_parts['extension']) && $path_parts['extension'] == 'html'
) {
if (!empty($path_file) && isset($path_parts['extension']) && $path_parts['extension'] == 'html') {
echo $learnPath->return_new_tree();
// Show the template list
echo '<div id="frmModel" class="scrollbar-inner lp-add-item"></div>';
} else {
@ -191,7 +193,8 @@ if (isset($is_success) && $is_success === true) {
$msg .= '</div>';
echo $learnPath->display_item($_GET['id'], $msg);
} else {
echo $learnPath->display_edit_item($_GET['id']);
$item = $learnPath->getItem($_GET['id']);
echo $learnPath->display_edit_item($item->getIid());
$finalItem = Session::read('finalItem');
if ($finalItem) {
echo '<script>$("#frmModel").remove()</script>';

Loading…
Cancel
Save