|
|
|
@ -13719,6 +13719,68 @@ EOD; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Save the new order for learning path items. |
|
|
|
|
* |
|
|
|
|
* We have to update parent_item_id, previous_item_id, next_item_id, display_order in the database. |
|
|
|
|
* |
|
|
|
|
* @param array $orderList A associative array with item ID as key and parent ID as value. |
|
|
|
|
* @param int $courseId |
|
|
|
|
*/ |
|
|
|
|
public static function sortItemByOrderList(array $orderList, $courseId = 0) |
|
|
|
|
{ |
|
|
|
|
$courseId = $courseId ?: api_get_course_int_id(); |
|
|
|
|
$itemList = new LpItemOrderList(); |
|
|
|
|
|
|
|
|
|
foreach ($orderList as $id => $parentId) { |
|
|
|
|
$item = new LpOrderItem($id, $parentId); |
|
|
|
|
$itemList->add($item); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$parents = $itemList->getListOfParents(); |
|
|
|
|
|
|
|
|
|
foreach ($parents as $parentId) { |
|
|
|
|
$sameParentLpItemList = $itemList->getItemWithSameParent($parentId); |
|
|
|
|
$previous_item_id = 0; |
|
|
|
|
for ($i = 0; $i < count($sameParentLpItemList->list); $i++) { |
|
|
|
|
$item_id = $sameParentLpItemList->list[$i]->id; |
|
|
|
|
// display_order |
|
|
|
|
$display_order = $i + 1; |
|
|
|
|
$itemList->setParametersForId($item_id, $display_order, 'display_order'); |
|
|
|
|
// previous_item_id |
|
|
|
|
$itemList->setParametersForId($item_id, $previous_item_id, 'previous_item_id'); |
|
|
|
|
$previous_item_id = $item_id; |
|
|
|
|
// next_item_id |
|
|
|
|
$next_item_id = 0; |
|
|
|
|
if ($i < count($sameParentLpItemList->list) - 1) { |
|
|
|
|
$next_item_id = $sameParentLpItemList->list[$i + 1]->id; |
|
|
|
|
} |
|
|
|
|
$itemList->setParametersForId($item_id, $next_item_id, 'next_item_id'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$table = Database::get_course_table(TABLE_LP_ITEM); |
|
|
|
|
|
|
|
|
|
foreach ($itemList->list as $item) { |
|
|
|
|
$params = []; |
|
|
|
|
$params['display_order'] = $item->display_order; |
|
|
|
|
$params['previous_item_id'] = $item->previous_item_id; |
|
|
|
|
$params['next_item_id'] = $item->next_item_id; |
|
|
|
|
$params['parent_item_id'] = $item->parent_item_id; |
|
|
|
|
|
|
|
|
|
Database::update( |
|
|
|
|
$table, |
|
|
|
|
$params, |
|
|
|
|
[ |
|
|
|
|
'iid = ? AND c_id = ? ' => [ |
|
|
|
|
(int) $item->id, |
|
|
|
|
(int) $courseId, |
|
|
|
|
], |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get the depth level of LP item. |
|
|
|
|
* |
|
|
|
@ -13823,66 +13885,4 @@ EOD; |
|
|
|
|
|
|
|
|
|
return ''; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Save the new order for learning path items |
|
|
|
|
* |
|
|
|
|
* We have to update parent_item_id, previous_item_id, next_item_id, display_order in the database. |
|
|
|
|
* |
|
|
|
|
* @param array $orderList A associative array with item ID as key and parent ID as value. |
|
|
|
|
* @param int $courseId |
|
|
|
|
*/ |
|
|
|
|
public static function sortItemByOrderList(array $orderList, $courseId = 0) |
|
|
|
|
{ |
|
|
|
|
$courseId = $courseId ?: api_get_course_int_id(); |
|
|
|
|
$itemList = new LpItemOrderList(); |
|
|
|
|
|
|
|
|
|
foreach ($orderList as $id => $parentId) { |
|
|
|
|
$item = new LpOrderItem($id, $parentId); |
|
|
|
|
$itemList->add($item); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$parents = $itemList->getListOfParents(); |
|
|
|
|
|
|
|
|
|
foreach ($parents as $parentId) { |
|
|
|
|
$sameParentLpItemList = $itemList->getItemWithSameParent($parentId); |
|
|
|
|
$previous_item_id = 0; |
|
|
|
|
for ($i = 0; $i < count($sameParentLpItemList->list); $i++) { |
|
|
|
|
$item_id = $sameParentLpItemList->list[$i]->id; |
|
|
|
|
// display_order |
|
|
|
|
$display_order = $i + 1; |
|
|
|
|
$itemList->setParametersForId($item_id, $display_order, 'display_order'); |
|
|
|
|
// previous_item_id |
|
|
|
|
$itemList->setParametersForId($item_id, $previous_item_id, 'previous_item_id'); |
|
|
|
|
$previous_item_id = $item_id; |
|
|
|
|
// next_item_id |
|
|
|
|
$next_item_id = 0; |
|
|
|
|
if ($i < count($sameParentLpItemList->list) - 1) { |
|
|
|
|
$next_item_id = $sameParentLpItemList->list[$i + 1]->id; |
|
|
|
|
} |
|
|
|
|
$itemList->setParametersForId($item_id, $next_item_id, 'next_item_id'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$table = Database::get_course_table(TABLE_LP_ITEM); |
|
|
|
|
|
|
|
|
|
foreach ($itemList->list as $item) { |
|
|
|
|
$params = []; |
|
|
|
|
$params['display_order'] = $item->display_order; |
|
|
|
|
$params['previous_item_id'] = $item->previous_item_id; |
|
|
|
|
$params['next_item_id'] = $item->next_item_id; |
|
|
|
|
$params['parent_item_id'] = $item->parent_item_id; |
|
|
|
|
|
|
|
|
|
Database::update( |
|
|
|
|
$table, |
|
|
|
|
$params, |
|
|
|
|
[ |
|
|
|
|
'iid = ? AND c_id = ? ' => [ |
|
|
|
|
(int) $item->id, |
|
|
|
|
(int) $courseId, |
|
|
|
|
], |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|