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; }