Beispiel #1
0
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);
     }
Beispiel #4
0
$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']));
            }
        }