LPs: Fix learnpathItem construct

pull/3890/head
Julio Montoya 4 years ago
parent f495a0285d
commit 05d206b4a3
  1. 2
      public/main/exercise/exercise_report.php
  2. 9
      public/main/inc/ajax/lp.ajax.php
  3. 2
      public/main/inc/lib/document.lib.php
  4. 4
      public/main/lp/LearnPathItemForm.php
  5. 2
      public/main/lp/ScormApi.php
  6. 107
      public/main/lp/learnpath.class.php
  7. 14
      public/main/lp/learnpathItem.class.php
  8. 2
      public/main/lp/lp_ajax_initialize.php
  9. 2
      public/main/lp/lp_ajax_switch_item_toc.php
  10. 2
      public/main/webservices/lp.php

@ -366,7 +366,7 @@ if (isset($_REQUEST['comments']) &&
$lp = $lpRepo->find($lpId);
}
$statusCondition = '';
$item = new learnpathItem($lp, $lpItemId, api_get_course_int_id());
$item = new learnpathItem($lpItemId);
if ($item) {
$prereqId = $item->get_prereq_string();
$minScore = $item->getPrerequisiteMinScore();

@ -80,7 +80,7 @@ switch ($action) {
exit;
}
$parent = $lpItemRepo->getItemRoot($lpId);
$parent = $lpItemRepo->getRootItem($lpId);
$learningPath = new learnpath($lp, api_get_course_info(), api_get_user_id());
if ($learningPath) {
@ -130,15 +130,16 @@ switch ($action) {
exit;
}
learnpath::sortItemByOrderList($lpId, $orderList);
$lpItemRepo = Container::getLpItemRepository();
$rootItem = $lpItemRepo->getRootItem($lpId);
learnpath::sortItemByOrderList($rootItem, $orderList);
echo Display::return_message(get_lang('Saved'), 'confirm');
}
break;
case 'get_lp_item_tree':
if (api_is_allowed_to_edit(null, true)) {
$parent = $lpItemRepo->getItemRoot($lpId);
$parent = $lpItemRepo->getRootItem($lpId);
$learningPath = new learnpath($lp, api_get_course_info(), api_get_user_id());
if ($learningPath) {
echo $learningPath->getBuildTree(true, true);

@ -4571,7 +4571,7 @@ class DocumentManager
WHERE
l.c_id = $course_id AND
docs.filetype = 'folder' AND
path IN ('".$folder_sql."') AND
n.path IN ('".$folder_sql."') AND
l.visibility NOT IN ('".ResourceLink::VISIBILITY_DELETED."')
";

@ -56,8 +56,8 @@ class LearnPathItemForm
);
$lpItemRepo = Container::getLpItemRepository();
$itemRoot = $lpItemRepo->getItemRoot($lp->get_id());
$parentSelect->addOption($lp->name, $itemRoot->getIid());
$rootItem = $lpItemRepo->getRootItem($lp->get_id());
$parentSelect->addOption($lp->name, $rootItem->getIid());
/** @var CLpItem[] $sections */
$sections = $lpItemRepo->findBy(['itemType' => 'dir', 'lp' => $lp->get_id()]);
foreach ($sections as $value) {

@ -667,7 +667,7 @@ class ScormApi
if ($debug > 1) {
error_log('In switch_item_details - generating new item object', 0);
}
$mylpi = new learnpathItem($new_item_id, $user_id);
$mylpi = new learnpathItem($new_item_id);
$mylpi->set_lp_view($view_id);
}
/*

@ -263,7 +263,7 @@ class learnpath
break;
case 1:
default:
$oItem = new learnpathItem($itemId, $course_id, $item);
$oItem = new learnpathItem(null, $item);
if (is_object($oItem)) {
$my_item_id = $oItem->get_id();
// Moved down to when we are sure the item_view exists.
@ -2646,7 +2646,7 @@ class learnpath
public function getListArrayToc($toc_list = [])
{
$lpItemRepo = Container::getLpItemRepository();
$itemRoot = $lpItemRepo->getItemRoot($this->get_id());
$itemRoot = $lpItemRepo->getRootItem($this->get_id());
$options = [
'decorate' => false,
];
@ -5142,7 +5142,7 @@ class learnpath
ICON_SIZE_TINY
);
$lpItemRepo = Container::getLpItemRepository();
$itemRoot = $lpItemRepo->getItemRoot($this->get_id());
$itemRoot = $lpItemRepo->getRootItem($this->get_id());
$options = [
'decorate' => true,
@ -6721,7 +6721,7 @@ class learnpath
$displayOrder = $lpItem->getDisplayOrder();
$lpItemRepo = Container::getLpItemRepository();
$itemRoot = $lpItemRepo->getItemRoot($this->get_id());
$itemRoot = $lpItemRepo->getRootItem($this->get_id());
$em = Database::getManager();
$currentItemId = $itemId;
@ -9289,28 +9289,26 @@ class learnpath
*
* @param array $orderList A associative array with id and parent_id keys.
*/
public static function sortItemByOrderList(int $lpId, array $orderList = [])
public static function sortItemByOrderList(CLpItem $rootItem, array $orderList = [], $flush = true)
{
if (empty($orderList)) {
return true;
}
//echo '<pre>'; var_dump($orderList);
$lpItemRepo = Container::getLpItemRepository();
$rootParent = $lpItemRepo->getItemRoot($lpId);
echo '<pre>';
/*$previous = 2;
$next = 0;
$rootParent->setPreviousItemId(1);
$last = $this->updateList($orderList, $rootParent, $previous, $next);
$rootParent->setNextItemId($last + 1);
$rootItem->setPreviousItemId(1);
$last = $this->updateList($orderList, $rootItem, $previous, $next);
$rootItem->setNextItemId($last + 1);
*/
$em = Database::getManager();
//echo '<pre>';
//var_dump($orderList);
// $em->persist($rootParent);
// $em->persist($rootItem);
/*$node = new \Tree\Node\Node($rootParent->getIid());
$parentList[$rootParent->getIid()] = $node;
/*$node = new \Tree\Node\Node($rootItem->getIid());
$parentList[$rootItem->getIid()] = $node;
foreach ($orderList as $item) {
$itemId = $item->id ?? 0;
@ -9320,8 +9318,8 @@ class learnpath
$parentId = $item->parent_id ?? 0;
if (empty($parentId)) {
$parent = $rootParent;
$parentId = $rootParent->getIid();
$parent = $rootItem;
$parentId = $rootItem->getIid();
} else {
//$parent = $lpItemRepo->find($parentId);
}
@ -9346,20 +9344,23 @@ class learnpath
exit;*/
$counter = 2;
/*$rootParent->setPreviousItemId(1);
$rootParent->setDisplayOrder(0);
$rootParent->setLaunchData(1);*/
/*$rootItem->setPreviousItemId(1);
$rootItem->setDisplayOrder(0);
$rootItem->setLaunchData(1);*/
//echo '<pre>';
$rootParent->setDisplayOrder(1);
//$rootParent->setNextItemId(null);
//$rootParent->setPreviousItemId(null);
$rootItem->setDisplayOrder(1);
$rootItem->setPreviousItemId(0);
$em->persist($rootItem);
//$rootItem->setNextItemId(null);
//$rootItem->setPreviousItemId(null);
foreach ($orderList as $item) {
$itemId = $item->id ?? 0;
$itemId = $item->id ?? 0;
if (empty($itemId)) {
continue;
}
$parentId = $item->parent_id ?? 0;
$parent = $rootParent;
$parent = $rootItem;
if (!empty($parentId)) {
$parentExists = $lpItemRepo->find($parentId);
if (null !== $parentExists) {
@ -9367,21 +9368,31 @@ exit;*/
}
}
if (isset($parentOrder[$parent->getIid()])) {
/*if (isset($parentOrder[$parent->getIid()])) {
$parentOrder[$parent->getIid()]++;
} else {
$parentOrder[$parent->getIid()] = 0;
}
/** @var CLpItem $item */
$item = $lpItemRepo->find($itemId);
}*/
/** @var CLpItem $itemEntity */
$itemEntity = $lpItemRepo->find($itemId);
$previousId = 2;
/*$previousId = 2;
if (isset($previous[$counter - 1])) {
$previousId = $previous[$counter - 1];
}
$previous[$counter] = $counter + 2;
$previous[$counter] = $counter + 2;*/
$itemEntity->setParent($parent);
$previousId = $itemEntity->getPreviousItemId();
if (null === $previousId) {
$itemEntity->setPreviousItemId(0);
}
$nextId = $itemEntity->getNextItemId();
if (null === $nextId) {
$itemEntity->setNextItemId(0);
}
$item->setParent($parent);
//$item->setPreviousItemId($previousId);
//$item->setNextItemId($counter + 1);
//$item->setDisplayOrder($parentOrder[$parent->getIid()]);
@ -9389,36 +9400,38 @@ exit;*/
//$item->setPreviousItemId(null);
//$item->setNextItemId(null);
//$item->setPreviousItemId($previousId);
$item->setDisplayOrder($counter);
$itemEntity->setDisplayOrder($counter);
//var_dump($parent->getIid(), $parent->getTitle());
// $lpItemRepo->persistAsLastChildOf($item, $parent);
//$lpItemRepo->persistAs();
//$lpItemRepo->persistAsFirstChildOf($item, $parent);
//$em->flush();
//$lpItemRepo->moveDown($item, true);
$em->persist($item);
$em->persist($itemEntity);
if ($flush) {
$em->flush();
}
//$em->flush();
$counter++;
}
//$rootParent->setNextItemId($counter+1);
$em->persist($rootParent);
$em->flush();
//var_dump($lpItemRepo->verify());
//$lpItemRepo->reorder($rootParent, 'displayOrder', 'ASC', false);
//$lpItemRepo->reorder($rootParent);
//$rootItem->setNextItemId($counter+1);
//$em->flush();
//var_dump($lpItemRepo->verify());
$lpItemRepo->recoverNode($rootParent, 'displayOrder');
$em->flush();
//$lpItemRepo->reorder($rootItem, 'displayOrder', 'ASC', false);
//$lpItemRepo->reorder($rootItem);
//$em->flush();
var_dump($lpItemRepo->verify());
$lpItemRepo->recoverNode($rootItem, 'displayOrder');
$em->persist($rootItem);
if ($flush) {
$em->flush();
}
//$em->flush();
//var_dump($lpItemRepo->verify());
return true;
/*
$lpItemRepo->recoverNode($rootParent);
var_dump($lpItemRepo->verify());
$em->flush();
exit;*/
}
/**

@ -94,19 +94,13 @@ class learnpathItem
* Setting an lp_view will finalise the item_view data collection.
*
* @param int $id Learning path item ID
* @param int $courseId Course int id
* @param CLpItem|array|null $item_content Contents of the item
*/
public function __construct(
$id,
$courseId = 0,
$item_content = null
) {
public function __construct( $id , $item_content = null) {
$items_table = Database::get_course_table(TABLE_LP_ITEM);
$id = (int) $id;
$this->courseId = $courseId = empty($courseId) ? api_get_course_int_id() : (int) $courseId;
if (empty($item_content)) {
if (!empty($id)) {
$sql = "SELECT * FROM $items_table
WHERE iid = $id";
$res = Database::query($sql);
@ -115,10 +109,6 @@ class learnpathItem
}
$row = Database::fetch_array($res);
} else {
if (is_array($item_content)) {
$row = $item_content;
}
if ($item_content instanceof CLpItem) {
$row = [];
$row['lp_id'] = $item_content->getLp()->getIid();

@ -58,7 +58,7 @@ function initializeItem($lpId, $user_id, $view_id, $next_item, $startTime = 0)
if ($debug) {
error_log('In initialize_item - generating new item object '.$next_item, 0);
}
$mylpi = new learnpathItem($next_item, $user_id);
$mylpi = new learnpathItem($next_item);
}
if ($mylpi) {

@ -90,7 +90,7 @@ function switch_item_toc($lpId, $userId, $viewId, $currentItem, $nextItem)
if ($debug > 1) {
error_log('In switch_item_details - generating new item object', 0);
}
$myLPI = new learnpathItem($newItemId, $userId);
$myLPI = new learnpathItem($newItemId);
$myLPI->set_lp_view($viewId);
}
/*

@ -471,7 +471,7 @@ function WSDeleteLp($params)
if (!empty($items)) {
/** @var $item learnpathItem */
foreach ($items as $itemId) {
$item = new learnpathItem($lp, $itemId, $courseId);
$item = new learnpathItem($itemId);
if ($item) {
$documentId = $item->get_path();

Loading…
Cancel
Save