} if (!is_null($nodesToDelete)) { foreach ($nodesToDelete as $folder_id) { $f = new WBSElement($folder_id, $root_id); try { $f->delete($root_id); } catch (Exception $e) { // happens if user moved children AND deleted the node. // The node will not be deleted, but at least the rest of the WBS changes // have a chance to be proceeded. $logger->error("Node {$folder_id} not deleted : " . $e->getMessage()); $logger->warn("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } } } WBSElement::updateFromDynatree($rootArray, $root_id); echo $jsonDynatreeDict; } else { if ($_POST['action'] == 'loadWBS') { try { $root_id = Tools::getSecurePOSTIntValue('wbsRootId'); $hasDetail = 1 === Tools::getSecurePOSTIntValue('hasDetail') ? true : false; $userid = $_SESSION['userid']; $teamid = isset($_SESSION['teamid']) ? $_SESSION['teamid'] : 0; $session_user = UserCache::getInstance()->getUser($userid); // Managers & Observers have the same view (MEE,Reestimated, ...) $isManager = $session_user->isTeamManager($teamid); $isObserver = $session_user->isTeamObserver($teamid); $isManager = $isManager || $isObserver; $rootElement = new WBSElement($root_id); $dynatreeDict = $rootElement->getDynatreeData($hasDetail, $isManager, $teamid);