if ($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle($arResult["CHAPTER"]["NAME"]); } $bCanEdit = CLearnAccessMacroses::CanUserEditLesson(array('lesson_id' => $arParams['CHAPTER_ID'])) || $USER->IsAdmin(); if ($bCanEdit) { $deleteReturnUrl = ""; if ($parent = $this->GetParent()) { $parentLessonId = 0; $lessonPath = ""; if (strlen($arParams["LESSON_PATH"]) > 0) { $path = new CLearnPath(); $path->ImportUrlencoded($arParams["LESSON_PATH"]); $path->PopBottom(); $lessonPath = $path->ExportUrlencoded(); $lessonId = $path->PopBottom(); $edgesToParents = CLearnLesson::ListImmediateParents($arParams['CHAPTER_ID']); foreach ($edgesToParents as $arEdgeToParent) { if ((int) $arEdgeToParent['PARENT_LESSON'] === (int) $lessonId) { $parentLessonId = $lessonId; break; } } } if ($parentLessonId) { $deleteReturnUrl = CComponentEngine::MakePathFromTemplate($parent->arResult["FOLDER"] . $parent->arResult["URL_TEMPLATES"]["chapter.detail"], array("CHAPTER_ID" => "0" . $parentLessonId, "COURSE_ID" => $arParams["COURSE_ID"])); $deleteReturnUrl .= strpos($deleteReturnUrl, "?") !== false ? "&" : "?"; $deleteReturnUrl .= "LESSON_PATH=" . $lessonPath; } else { $deleteReturnUrl = CComponentEngine::MakePathFromTemplate($parent->arResult["FOLDER"] . $parent->arResult["URL_TEMPLATES"]["course.detail"], array("COURSE_ID" => $arParams["COURSE_ID"])); } }
protected function EnsureLessonDisbandAccess($lessonID) { global $USER; if (!$this->oAccess->IsLessonAccessible($lessonID, CLearnAccess::OP_LESSON_REMOVE, true)) { throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED); } // ensure, that all childs can be unlinked from lesson $arChildEdges = CLearnLesson::ListImmediateChilds($lessonID); if (count($arChildEdges) > 0) { if (!$this->oAccess->IsLessonAccessible($lessonID, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, true)) { throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED); } foreach ($arChildEdges as $arChildEdge) { if (!$this->oAccess->IsLessonAccessible($arChildEdge['CHILD_LESSON'], CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, true)) { throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED); } } } // ensure, that all parents can be unlinked from lesson $arParentEdges = CLearnLesson::ListImmediateParents($lessonID); if (count($arParentEdges) > 0) { if (!$this->oAccess->IsLessonAccessible($lessonID, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, true)) { throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED); } foreach ($arParentEdges as $arParentEdge) { if (!$this->oAccess->IsLessonAccessible($arParentEdge['PARENT_LESSON'], CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, true)) { throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED); } } } return $this; }
$oPath = new CLearnPath(); $oPath->ImportUrlencoded($g_learn_currentLessonPath); $arPath = $oPath->GetPathAsArray(); if (count($arPath) >= 2) { // pop current lesson id array_pop($arPath); // remember parent path $oParentPath = new CLearnPath(); $oParentPath->SetPathFromArray($arPath); $g_learn_parentLessonPath = urldecode($oParentPath->ExportUrlencoded()); // pop parent lesson id $g_learn_parentLessonId = array_pop($arPath); // If lesson was edited and unlinked from parent $g_parentLessonId // we must cleanup LESSON_PATH. Also we must cleanup lesson path if // it is wrong due to other reasons. $arEdgesToParents = CLearnLesson::ListImmediateParents($LESSON_ID); $isLinkToParentFound = false; foreach ($arEdgesToParents as $arEdgeToParent) { if ((int) $arEdgeToParent['PARENT_LESSON'] === (int) $g_learn_parentLessonId) { $isLinkToParentFound = true; } } if (!$isLinkToParentFound) { if (isset($_POST['LESSON_PATH'])) { unset($_POST['LESSON_PATH']); } if (isset($_GET['LESSON_PATH'])) { unset($_GET['LESSON_PATH']); } unset($g_learn_parentLessonId, $g_learn_parentLessonPath, $g_learn_currentLessonPath); }
$bCanUserEdit = CLearnAccessMacroses::CanUserEditLesson(array('lesson_id' => $arParams['LESSON_ID'])) || $USER->IsAdmin(); $bCanUserRemove = CLearnAccessMacroses::CanUserRemoveLesson(array('lesson_id' => $arParams['LESSON_ID'])) || $USER->IsAdmin(); if ($bCanUserEdit || $bCanUserRemove) { $arAreaButtons = array(); $deleteReturnUrl = ""; if ($bCanUserRemove) { if ($parent = $this->GetParent()) { $parentLessonId = 0; $lessonPath = ""; if (strlen($arParams["LESSON_PATH"]) > 0) { $path = new CLearnPath(); $path->ImportUrlencoded($arParams["LESSON_PATH"]); $path->PopBottom(); $lessonPath = $path->ExportUrlencoded(); $lessonId = $path->PopBottom(); $edgesToParents = CLearnLesson::ListImmediateParents($arParams["LESSON_ID"]); foreach ($edgesToParents as $arEdgeToParent) { if ((int) $arEdgeToParent['PARENT_LESSON'] === (int) $lessonId) { $parentLessonId = $lessonId; break; } } } if ($parentLessonId) { $deleteReturnUrl = CComponentEngine::MakePathFromTemplate($parent->arResult["FOLDER"] . $parent->arResult["URL_TEMPLATES"]["chapter.detail"], array("CHAPTER_ID" => "0" . $parentLessonId, "COURSE_ID" => $arParams['COURSE_ID'])); $deleteReturnUrl .= strpos($deleteReturnUrl, "?") !== false ? "&" : "?"; $deleteReturnUrl .= "LESSON_PATH=" . $lessonPath; } else { $deleteReturnUrl = CComponentEngine::MakePathFromTemplate($parent->arResult["FOLDER"] . $parent->arResult["URL_TEMPLATES"]["course.detail"], array("COURSE_ID" => $arParams['COURSE_ID'])); } }