$foundChapter = true; $baseDepthLevel = $arContent["DEPTH_LEVEL"]; } } global $CACHE_MANAGER; $CACHE_MANAGER->RegisterTag('LEARN_COURSE_' . $arCourse["ID"]); $CACHE_MANAGER->RegisterTag('LEARN_CHAPTER_' . $arChapter["ID"]); unset($rsContent, $arContent, $rsCourse, $arCourse, $rsChapter, $arChapter); $this->IncludeComponentTemplate(); } //Set Title $arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y"; 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;
public static final function Add($arFields, $isCourse = false, $parentLessonId = true, $arProperties = array('SORT' => 500), $isCheckPermissions = true, $checkPermissionsForUserId = -1) { global $USER_FIELD_MANAGER; $isAccessGranted = false; if ($isCheckPermissions) { if (CLearnAccessMacroses::CanUserAddLessonWithoutParentLesson(array('user_id' => $checkPermissionsForUserId))) { if ($parentLessonId === true) { // we don't need to link lesson to parent, // so permissions check is complete $isAccessGranted = true; } else { // We must check, is user have access to link lesson to some parent if (CLearnAccessMacroses::CanUserAddLessonToParentLesson(array('parent_lesson_id' => $parentLessonId, 'user_id' => $checkPermissionsForUserId))) { $isAccessGranted = true; } } } } else { $isAccessGranted = true; } // don't check permissions if (!$isAccessGranted) { throw new LearnException('EA_ACCESS_DENIED', LearnException::EXC_ERR_ALL_ACCESS_DENIED); } // If lesson is course, there is can be additional params, which must be extracted if ($isCourse) { // Additional fields will be removed from $arFields by this method $arCourseFields = self::_ExtractAdditionalCourseFields($arFields); } if (!$USER_FIELD_MANAGER->CheckFields('LEARNING_LESSONS', 0, $arFields)) { return false; } foreach (GetModuleEvents('learning', 'OnBeforeLessonAdd', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array(&$arFields)); } if (!isset($arFields['NAME']) || $arFields['NAME'] == '') { $lessonId = false; $arMsg = array(array("id" => "NAME", "text" => GetMessage("LEARNING_BAD_NAME"))); $e = new CAdminException($arMsg); $GLOBALS["APPLICATION"]->ThrowException($e); } else { $lessonId = CLearnGraphNode::Create($arFields); } if ($lessonId) { $USER_FIELD_MANAGER->Update('LEARNING_LESSONS', $lessonId, $arFields); if ($isCourse) { // Convert lesson to course self::BecomeCourse($lessonId, $arCourseFields); } else { // Link to parent lesson, if need if ($parentLessonId !== true) { self::RelationAdd($parentLessonId, $lessonId, $arProperties); } } CLearnCacheOfLessonTreeComponent::MarkAsDirty(); } $arFields['LESSON_ID'] = $lessonId; foreach (GetModuleEvents('learning', 'OnAfterLessonAdd', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array(&$arFields)); } return $lessonId; }
$arMenuButtons = array(); if ($contextLessonId > 0) { if (CLearnAccessMacroses::CanUserAddLessonToParentLesson(array('parent_lesson_id' => $contextLessonId))) { $arMenuButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_LESSON_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_LESSON_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_unilesson_edit.php?lang=" . LANGUAGE_ID . "&PARENT_LESSON_ID=" . $contextLessonId . "&bxpublic=Y&from_module=learning&return_url=" . urlencode($addReturnUrl["lesson"]), "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-lesson"); $arMenuButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_CHAPTER_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_CHAPTER_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_unilesson_edit.php?lang=" . LANGUAGE_ID . "&PARENT_LESSON_ID=" . $contextLessonId . "&bxpublic=Y&from_module=learning&return_url=" . urlencode($addReturnUrl["lesson"]), "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-chapter"); } if (CLearnAccessMacroses::CanUserEditLesson(array('lesson_id' => $contextLessonId))) { $arMenuButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_TEST_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_TEST_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_test_edit.php?lang=" . LANGUAGE_ID . "&COURSE_ID=" . $arParams["COURSE_ID"] . "&bxpublic=Y&from_module=learning&return_url=" . urlencode($addReturnUrl["test"]), "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-test"); } if (CLearnAccessMacroses::CanUserAddLessonWithoutParentLesson()) { $arMenuButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_COURSE_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_COURSE_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_course_edit.php?lang=" . LANGUAGE_ID . "&bxpublic=Y&from_module=learning&return_url=" . urlencode($addReturnUrl["course"]), "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-course"); } if (count($arMenuButtons) > 0) { $arMenuButtons[] = array("SEPARATOR" => "Y"); } if (CLearnAccessMacroses::CanUserEditLesson(array('lesson_id' => $contextLessonId))) { $arMenuButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_QUEST_S_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_QUEST_S_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_question_edit.php?lang=" . LANGUAGE_ID . "&COURSE_ID=" . $arParams["COURSE_ID"] . "&LESSON_PATH=" . $contextLessonId . "&QUESTION_TYPE=S&bxpublic=Y&from_module=learning", "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-question-s"); $arMenuButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_QUEST_M_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_QUEST_M_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_question_edit.php?lang=" . LANGUAGE_ID . "&COURSE_ID=" . $arParams["COURSE_ID"] . "&LESSON_PATH=" . $contextLessonId . "&QUESTION_TYPE=M&bxpublic=Y&from_module=learning", "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-question-m"); $arMenuButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_QUEST_R_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_QUEST_R_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_question_edit.php?lang=" . LANGUAGE_ID . "&COURSE_ID=" . $arParams["COURSE_ID"] . "&LESSON_PATH=" . $contextLessonId . "&QUESTION_TYPE=R&bxpublic=Y&from_module=learning", "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-question-s"); $arMenuButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_QUEST_T_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_QUEST_T_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_question_edit.php?lang=" . LANGUAGE_ID . "&COURSE_ID=" . $arParams["COURSE_ID"] . "&LESSON_PATH=" . $contextLessonId . "&QUESTION_TYPE=T&bxpublic=Y&from_module=learning", "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-question-m"); } } if (count($arMenuButtons) > 0) { $arAreaButtons = array(array("TEXT" => GetMessage("MAIN_ADD"), "TITLE" => GetMessage("MAIN_ADD"), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-learning-create", "MENU" => $arMenuButtons)); $this->AddIncludeAreaIcons($arAreaButtons); } } catch (LearnException $e) { ShowError(GetMessage('LEARNING_COURSE_DENIED')); return; exit; }
$CACHE_MANAGER->RegisterTag('LEARN_LESSON_' . $arLesson["ID"]); unset($arLesson); unset($rsLesson); unset($arCourse); unset($rsCourse); unset($rsQuestion); $APPLICATION->AddHeadScript('/bitrix/js/learning/scorm.js'); $this->IncludeComponentTemplate(); } //Set Title $arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y"; if ($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle($arResult["LESSON"]["NAME"]); } $bCanUserEdit = CLearnAccessMacroses::CanUserEditLesson(array('lesson_id' => $arParams['LESSON_ID'])) || $USER->IsAdmin(); $bCanUserRemove = CLearnAccessMacroses::CanUserRemoveLesson(array('lesson_id' => $arParams['LESSON_ID'])) || $USER->IsAdmin(); $arAreaButtons = array(); if ($bCanUserEdit || $bCanUserRemove) { $deleteReturnUrl = ''; if ($bCanUserRemove) { if ($parent = $this->GetParent()) { if ($arResult["LESSON"]["CHAPTER_ID"]) { $deleteReturnUrl = CComponentEngine::MakePathFromTemplate($parent->arResult["URL_TEMPLATES"]["chapter.detail"], array("CHAPTER_ID" => $arResult["LESSON"]["CHAPTER_ID"], "COURSE_ID" => $arResult["LESSON"]["COURSE_ID"])); } else { $deleteReturnUrl = CComponentEngine::MakePathFromTemplate($parent->arResult["URL_TEMPLATES"]["course.detail"], array("COURSE_ID" => $arResult["LESSON"]["COURSE_ID"])); } } $arAreaButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_LESSON_EDIT"), "TITLE" => GetMessage("LEARNING_COURSES_LESSON_EDIT"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_unilesson_edit.php?LESSON_ID=" . $arParams["LESSON_ID"] . '&' . $strUrlencodedLessonPath . "&lang=" . LANGUAGE_ID . "&bxpublic=Y&from_module=learning", "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => true))), "ICON" => "bx-context-toolbar-edit-icon", "ID" => "bx-context-toolbar-edit-lesson"); } if ($bCanUserEdit) { $arAreaButtons[] = array("TEXT" => GetMessage("LEARNING_COURSES_LESSON_DELETE"), "TITLE" => GetMessage("LEARNING_COURSES_LESSON_DELETE"), "URL" => "javascript:if(confirm('" . GetMessage("LEARNING_COURSES_LESSON_DELETE_CONF") . "'))jsUtils.Redirect([], '" . CUtil::JSEscape("/bitrix/admin/learn_unilesson_admin.php?ID=" . $arParams["LESSON_ID"] . "&action=delete&lang=" . LANGUAGE_ID . "&" . bitrix_sessid_get() . "&COURSE_ID=" . $arParams["COURSE_ID"]) . (strlen($deleteReturnUrl) ? "&return_url=" . urlencode($deleteReturnUrl) : "") . "')", "ICON" => "bx-context-toolbar-delete-icon", "ID" => "bx-context-toolbar-delete-lesson");
} //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; }
. GetMessage('LEARNING_ACCESS_D_FOR_EDIT_CONTENT') . '</td></tr>'; } else { echo '<tr><td>' . GetMessage('LEARNING_EDIT_FORM_WILL_BE_AVAILABLE_AFTER_LESSON_CREATION') . '</td></tr>'; } $tabControl->EndCustomField("_RELATIONS", '<input type="hidden" id="SKIP_RELATIONS_SAVING" name="SKIP_RELATIONS_SAVING" value="Y">'); */ } if ($LESSON_ID > 0 && CLearnAccessMacroses::CanUserViewLessonRights(array('lesson_id' => $LESSON_ID))) { $readOnly = true; if (CLearnAccessMacroses::CanUserEditLessonRights(array('lesson_id' => $LESSON_ID))) { $readOnly = false; } $tabControl->BeginNextFormTab(); $tabControl->BeginCustomField("__GESGSTR", '', false); CLearnRenderRightsEdit::RenderLessonRightsTab($USER->GetID(), 'LESSON_RIGHTS', $LESSON_ID, $readOnly); if ($readOnly) { echo '<input type="hidden" id="SKIP_RIGHTS_SAVING" name="SKIP_RIGHTS_SAVING" value="Y">'; } $tabControl->EndCustomField("__GESGSTR"); } else { /* $tabControl->BeginNextFormTab(); $tabControl->BeginCustomField("__GESGSTR", '', false); if ($LESSON_ID > 0)
$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();
if (!($arCourse = $rsCourse->GetNext())) { $this->AbortResultCache(); ShowError(GetMessage("LEARNING_COURSE_DENIED")); return; } //Images $arCourse["PREVIEW_PICTURE_ARRAY"] = CFile::GetFileArray($arCourse["PREVIEW_PICTURE"]); // Resolve links "?COURSE_ID={SELF}". Don't relay on it, this behaviour // can be changed in future without any notifications. if (isset($arCourse['DETAIL_TEXT'])) { $arCourse['DETAIL_TEXT'] = CLearnHelper::PatchLessonContentLinks($arCourse['DETAIL_TEXT'], $arParams["COURSE_ID"]); } if (isset($arCourse['PREVIEW_TEXT'])) { $arCourse['PREVIEW_TEXT'] = CLearnHelper::PatchLessonContentLinks($arCourse['PREVIEW_TEXT'], $arParams["COURSE_ID"]); } $arResult = array("COURSE" => $arCourse); unset($rsCourse); unset($arCourse); $this->IncludeComponentTemplate(); } //Set Title $arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y"; if ($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle($arResult["COURSE"]["NAME"]); } $linkedLessonId = CCourse::CourseGetLinkedLesson($arParams['COURSE_ID']); $bCanEdit = $linkedLessonId !== false && (CLearnAccessMacroses::CanUserEditLesson(array('lesson_id' => $linkedLessonId)) || $USER->IsAdmin()); if ($bCanEdit) { $arAreaButtons = array(array("TEXT" => GetMessage("LEARNING_COURSES_COURSE_EDIT"), "TITLE" => GetMessage("LEARNING_COURSES_COURSE_EDIT"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_course_edit.php?COURSE_ID=" . $arParams["COURSE_ID"] . "&lang=" . LANGUAGE_ID . "&bxpublic=Y&from_module=learning", "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-edit-icon", "ID" => "bx-context-toolbar-edit-course")); $this->AddIncludeAreaIcons($arAreaButtons); }
//Params $arParams["COURSE_ID"] = isset($arParams["COURSE_ID"]) && intval($arParams["COURSE_ID"]) > 0 ? intval($arParams["COURSE_ID"]) : intval($_REQUEST["COURSE_ID"]); $arParams["LESSON_ID"] = isset($arParams["LESSON_ID"]) ? intval($arParams["LESSON_ID"]) : intval($_REQUEST["LESSON_ID"]); $arParams["CHECK_PERMISSIONS"] = isset($arParams["CHECK_PERMISSIONS"]) && $arParams["CHECK_PERMISSIONS"] == "N" ? "N" : "Y"; // 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') { try { $arPermissionsParams = array('COURSE_ID' => $arParams['COURSE_ID'], 'LESSON_ID' => $arParams['LESSON_ID']); $isAccessible = CLearnAccessMacroses::CanUserViewLessonAsPublic($arPermissionsParams); } catch (Exception $e) { $isAccessible = false; // access denied } if (!$isAccessible) { ShowError(GetMessage('LEARNING_COURSE_DENIED')); return; exit; } } // Lesson $obcourse = CLearnLesson::GetList(array(), array('LESSON_ID' => $arParams['LESSON_ID'], 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N')); if (!($arLesson = $obcourse->GetNext())) { $this->AbortResultCache(); ShowError(GetMessage("LEARNING_LESSON_DENIED"));
public static final function Add($arFields, $isCourse = false, $parentLessonId = true, $arProperties = array('SORT' => 500), $isCheckPermissions = true, $checkPermissionsForUserId = -1) { $isAccessGranted = false; if ($isCheckPermissions) { if (CLearnAccessMacroses::CanUserAddLessonWithoutParentLesson(array('user_id' => $checkPermissionsForUserId))) { if ($parentLessonId === true) { // we don't need to link lesson to parent, // so permissions check is complete $isAccessGranted = true; } else { // We must check, is user have access to link lesson to some parent if (CLearnAccessMacroses::CanUserAddLessonToParentLesson(array('parent_lesson_id' => $parentLessonId, 'user_id' => $checkPermissionsForUserId))) { $isAccessGranted = true; } } } } else { $isAccessGranted = true; } // don't check permissions if (!$isAccessGranted) { throw new LearnException('EA_ACCESS_DENIED', LearnException::EXC_ERR_ALL_ACCESS_DENIED); } // If lesson is course, there is can be additional params, which must be extracted if ($isCourse) { // Additional fields will be removed from $arFields by this method $arCourseFields = self::_ExtractAdditionalCourseFields($arFields); } CLearnHelper::FireEvent('OnBeforeLessonAdd', $arFields); $lessonId = CLearnGraphNode::Create($arFields); if ($isCourse) { // Convert lesson to course self::BecomeCourse($lessonId, $arCourseFields); } else { // Link to parent lesson, if need if ($parentLessonId !== true) { self::RelationAdd($parentLessonId, $lessonId, $arProperties); } } CLearnCacheOfLessonTreeComponent::MarkAsDirty(); $arFields['LESSON_ID'] = $lessonId; CLearnHelper::FireEvent('OnAfterLessonAdd', $arFields); return $lessonId; }
if ((int) $arParams["COURSES_PER_PAGE"] > 0) { $arNavParams['nPageSize'] = (int) $arParams["COURSES_PER_PAGE"]; $arNavParams['bDescPageNumbering'] = false; } $res = CCourse::GetList(array($arParams["SORBY"] => $arParams["SORORDER"]), array("ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "SITE_ID" => LANG, "CHECK_PERMISSIONS" => $arParams["CHECK_PERMISSIONS"]), $arNavParams); $arResult["NAV_STRING"] = $res->GetPageNavString(GetMessage("LEARNING_COURSES_NAV")); $arResult["NAV_RESULT"] = $res; while ($arCourse = $res->GetNext()) { $arCourse["COURSE_DETAIL_URL"] = CComponentEngine::MakePathFromTemplate($arParams["COURSE_DETAIL_TEMPLATE"], array("COURSE_ID" => $arCourse["ID"])); $arCourse["PREVIEW_PICTURE_ARRAY"] = CFile::GetFileArray($arCourse["PREVIEW_PICTURE"]); // Resolve links "?COURSE_ID={SELF}". Don't relay on it, this behaviour // can be changed in future without any notifications. if (isset($arCourse['DETAIL_TEXT'])) { $arCourse['DETAIL_TEXT'] = CLearnHelper::PatchLessonContentLinks($arCourse['DETAIL_TEXT'], $arCourse['ID']); } if (isset($arCourse['PREVIEW_TEXT'])) { $arCourse['PREVIEW_TEXT'] = CLearnHelper::PatchLessonContentLinks($arCourse['PREVIEW_TEXT'], $arCourse['ID']); } $arResult["COURSES"][] = $arCourse; } $res->arResult = array(); unset($arCourse); if (CLearnAccessMacroses::CanUserAddLessonWithoutParentLesson() || $USER->IsAdmin()) { $arAreaButtons = array(array("TEXT" => GetMessage("LEARNING_COURSES_COURSE_ADD"), "TITLE" => GetMessage("LEARNING_COURSES_COURSE_ADD"), "URL" => 'javascript:' . $APPLICATION->GetPopupLink(array("URL" => "/bitrix/admin/learn_course_edit.php?lang=" . LANGUAGE_ID . "&bxpublic=Y&from_module=learning", "PARAMS" => array("width" => 700, 'height' => 500, 'resize' => false))), "ICON" => "bx-context-toolbar-create-icon", "ID" => "bx-context-toolbar-create-course")); $this->AddIncludeAreaIcons($arAreaButtons); if (CModule::IncludeModule("intranet") && is_object($GLOBALS['INTRANET_TOOLBAR'])) { $GLOBALS['INTRANET_TOOLBAR']->AddButton(array('TEXT' => GetMessage("comp_course_list_toolbar_add"), 'TITLE' => GetMessage("comp_course_list_toolbar_add_title"), 'ICON' => 'add', 'HREF' => '/bitrix/admin/learn_course_edit.php?lang=' . LANGUAGE_ID, 'SORT' => '100')); $GLOBALS['INTRANET_TOOLBAR']->AddButton(array('TEXT' => GetMessage("comp_course_list_toolbar_list"), 'TITLE' => GetMessage("comp_course_list_toolbar_list_title"), 'ICON' => 'settings', 'HREF' => '/bitrix/admin/learn_unilesson_admin.php?lang=' . LANGUAGE_ID . '&PARENT_LESSON_ID=-1', 'SORT' => '200')); } } $this->IncludeComponentTemplate();
$arSubItemPath[] = $v; // child id added to current path $oSubItemPath->SetPathFromArray($arSubItemPath); $arItem['more_url'][] = 'learn_unilesson_edit.php?lang=' . LANG . '&filter=Y&set_filter=Y' . '&LESSON_ID=' . ($v + 0) . '&LESSON_PATH=' . $oSubItemPath->ExportUrlencoded(); } unset($oSubItemPath); $arSubImmediateChildsIds = false; } $arMenu[] = $arItem; unset($oCurItemPath, $arCurItemPath, $urlCurItemPath, $arItem); } return $arMenu; } $oAccess = CLearnAccess::GetInstance($USER->GetID()); $module_id = "learning"; if (\CLearnAccessMacroses::CanViewAdminMenu()) { // Try to determine current path $oPath = new CLearnPath(); if (isset($_GET['LESSON_PATH'])) { $oPath->ImportUrlencoded($_GET['LESSON_PATH']); } elseif (isset($_GET['admin_mnu_module_id']) && isset($_GET['admin_mnu_menu_id']) && $_GET['admin_mnu_module_id'] === 'learning') { $strLessonIds = substr($_GET['admin_mnu_menu_id'], strlen('menu_learning_courses_new_')); if (strlen($strLessonIds) > 0) { $arLessonIds = explode('_', $strLessonIds); if (is_array($arLessonIds) && count($arLessonIds) > 0) { $oPath->SetPathFromArray($arLessonIds); } } } $arPath = $oPath->GetPathAsArray(); $urlPath = $oPath->ExportUrlencoded();