Use c_link.iid during migration + fix c_link.id cases see BT#15056

pull/2757/head^2
Julio Montoya 7 years ago
parent c39d9ecc85
commit bfdfc062fc
  1. 27
      main/install/install.lib.php
  2. 20
      main/lp/learnpath.class.php

@ -2279,8 +2279,8 @@ function fixIds(EntityManager $em)
$result = $connection->fetchAll($sql);
foreach ($result as $item) {
$courseId = $item['c_id'];
$iid = isset($item['iid']) ? intval($item['iid']) : 0;
$ref = isset($item['ref']) ? intval($item['ref']) : 0;
$iid = isset($item['iid']) ? (int) $item['iid'] : 0;
$ref = isset($item['ref']) ? (int) $item['ref'] : 0;
$sql = null;
$newId = '';
@ -2913,7 +2913,7 @@ function fixLpId($connection, $debug)
}
}
if ($item['item_type'] == 'document' && !empty($item['path'])) {
if ($item['item_type'] === 'document' && !empty($item['path'])) {
$oldDocumentId = $item['path'];
$sql = "SELECT * FROM c_document WHERE c_id = $courseId AND id = $oldDocumentId";
$result = $connection->query($sql);
@ -2922,12 +2922,23 @@ function fixLpId($connection, $debug)
$newDocumentId = $document['iid'];
if (!empty($newDocumentId)) {
$sql = "UPDATE $tblCLpItem SET path = $newDocumentId
WHERE iid = $itemIid AND c_id = $courseId";
WHERE iid = $itemIid AND c_id = $courseId";
$connection->query($sql);
}
}
}
if ($item['item_type'] === 'link' && !empty($item['path'])) {
$oldLinkId = $item['path'];
$sql = "SELECT * FROM c_link WHERE c_id = $courseId AND id = $oldLinkId";
$result = $connection->query($sql);
$document = $result->fetch();
if (!empty($document)) {
$newLinkId = $document['iid'];
if (!empty($newLinkId)) {
$sql = "UPDATE $tblCLpItem SET path = $newLinkId
WHERE iid = $itemIid AND c_id = $courseId";
$connection->query($sql);
if ($debug) {
//error_log("Fix document: ");
//error_log($sql);
}
}
}
}

@ -7471,13 +7471,21 @@ class learnpath
}
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);
$linkId = (int) $row['path'];
if (!empty($linkId)) {
$table = Database::get_course_table(TABLE_LINK);
$sql = 'SELECT url FROM '.$table.'
WHERE c_id = '.$course_id.' AND iid = '.$linkId;
$res_link = Database::query($sql);
$row_link = Database::fetch_array($res_link);
if (empty($row_link)) {
// Try with id
$sql = 'SELECT url FROM '.$table.'
WHERE c_id = '.$course_id.' AND id = '.$linkId;
$res_link = Database::query($sql);
$row_link = Database::fetch_array($res_link);
}
if (is_array($row_link)) {
$row['url'] = $row_link['url'];
}

Loading…
Cancel
Save