} //Params $arParams["CHAPTER_DETAIL_TEMPLATE"] = strlen($arParams["CHAPTER_DETAIL_TEMPLATE"]) > 0 ? $arParams["CHAPTER_DETAIL_TEMPLATE"] : "chapter.php?CHAPTER_ID=#CHAPTER_ID#"; $arParams["LESSON_DETAIL_TEMPLATE"] = strlen($arParams["LESSON_DETAIL_TEMPLATE"]) > 0 ? $arParams["LESSON_DETAIL_TEMPLATE"] : "lesson.php?LESSON_ID=#LESSON_ID#"; $arParams["SELF_TEST_TEMPLATE"] = strlen($arParams["SELF_TEST_TEMPLATE"]) > 0 ? $arParams["SELF_TEST_TEMPLATE"] : "self.php?LESSON_ID=#LESSON_ID#"; $arParams["TESTS_LIST_TEMPLATE"] = strlen($arParams["TESTS_LIST_TEMPLATE"]) > 0 ? $arParams["TESTS_LIST_TEMPLATE"] : "course/test_list.php?COURSE_ID=#COURSE_ID#"; $arParams["TEST_DETAIL_TEMPLATE"] = strlen($arParams["TEST_DETAIL_TEMPLATE"]) > 0 ? $arParams["TEST_DETAIL_TEMPLATE"] : "course/test.php?COURSE_ID=#COURSE_ID#&TEST_ID=#TEST_ID#"; $arParams["COURSE_DETAIL_TEMPLATE"] = strlen($arParams["COURSE_DETAIL_TEMPLATE"]) > 0 ? $arParams["COURSE_DETAIL_TEMPLATE"] : "course/index.php?COURSE_ID=#COURSE_ID#"; //Check permissions $arParams["CHECK_PERMISSIONS"] = isset($arParams["CHECK_PERMISSIONS"]) && $arParams["CHECK_PERMISSIONS"] == "N" ? "N" : "Y"; $arParams["COURSE_ID"] = isset($arParams["COURSE_ID"]) && intval($arParams["COURSE_ID"]) > 0 ? intval($arParams["COURSE_ID"]) : intval($_REQUEST["COURSE_ID"]); if ($arParams['CHECK_PERMISSIONS'] !== 'N') { $linkedLessonId = CCourse::CourseGetLinkedLesson($arParams["COURSE_ID"]); try { $arPermissionsParams = array('lesson_id' => $linkedLessonId); $isAccessible = CLearnAccessMacroses::CanUserViewLessonContent($arPermissionsParams); } catch (Exception $e) { $isAccessible = false; // access denied } if (!$isAccessible) { ShowError(GetMessage('LEARNING_COURSE_DENIED')); return; exit; } } $rsCourse = CCourse::GetList(array(), array("ID" => $arParams["COURSE_ID"], "ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "SITE_ID" => LANG, "CHECK_PERMISSIONS" => 'N')); if (!($arCourse = $rsCourse->GetNext())) { ShowError(GetMessage("LEARNING_COURSE_DENIED")); return; }
} } } $linkedLessonId = false; if ($arParams["COURSE_ID"] > 0) { $linkedLessonId = CCourse::CourseGetLinkedLesson($arParams["COURSE_ID"]); } if ($arParams["CHECK_PERMISSIONS"] !== 'N') { $isAccessible = false; try { if ($lessonID > 0) { $arPermissionsParams = array('COURSE_ID' => $arParams['COURSE_ID'], 'LESSON_ID' => $lessonID); $isAccessible = CLearnAccessMacroses::CanUserViewLessonAsPublic($arPermissionsParams, $allowAccessViaLearningGroups = false); } elseif ($linkedLessonId !== false) { $arPermissionsParams = array('lesson_id' => $linkedLessonId); $isAccessible = CLearnAccessMacroses::CanUserViewLessonContent($arPermissionsParams, $allowAccessViaLearningGroups = false); } } catch (Exception $e) { $isAccessible = false; // access denied } $arResult['LEARNING_GROUP_ACTIVE_FROM'] = false; $arResult['LEARNING_GROUP_ACTIVE_TO'] = false; $arResult['LEARNING_GROUP_CHAPTERS_ACTIVE_FROM'] = false; if (!$isAccessible) { if ($linkedLessonId !== false) { $arGroupsPeriods = CLearnAccessMacroses::getActiveLearningGroupsPeriod($linkedLessonId, $USER->getId()); if ($arGroupsPeriods['IS_EXISTS']) { $isAccessible = true; CLearnParsePermissionsFromFilter::registerAvailableCourse($linkedLessonId); $arResult['LEARNING_GROUP_ACTIVE_FROM'] = $arGroupsPeriods['ACTIVE_FROM'];
$arParams["CHECK_PERMISSIONS"] = isset($arParams["CHECK_PERMISSIONS"]) && $arParams["CHECK_PERMISSIONS"] == "N" ? "N" : "Y"; $arParams["COURSE_ID"] = isset($arParams["COURSE_ID"]) && intval($arParams["COURSE_ID"]) > 0 ? intval($arParams["COURSE_ID"]) : intval($_REQUEST["COURSE_ID"]); // was: if($this->StartResultCache(false, $USER->GetGroups())) if ($this->StartResultCache(false, CLearnAccess::GetAccessSymbolsHashForSiteUser())) { //Module if (!CModule::IncludeModule("learning")) { $this->AbortResultCache(); ShowError(GetMessage("LEARNING_MODULE_NOT_FOUND")); return; } if ($arParams['CHECK_PERMISSIONS'] !== 'N') { $isAccessible = false; $linkedLessonId = CCourse::CourseGetLinkedLesson($arParams["COURSE_ID"]); if ($linkedLessonId !== false) { try { $isAccessible = CLearnAccessMacroses::CanUserViewLessonContent(array('lesson_id' => $linkedLessonId)); } catch (Exception $e) { $isAccessible = false; // access denied } } if (!$isAccessible) { ShowError(GetMessage('LEARNING_COURSE_DENIED')); return; exit; } } //Course $rsCourse = CCourse::GetList(array(), array("ID" => $arParams["COURSE_ID"], "ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "SITE_ID" => LANG, "CHECK_PERMISSIONS" => 'N')); if (!($arCourse = $rsCourse->GetNext())) { $this->AbortResultCache();