Esempio n. 1
0
            $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;
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
    $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;
}
Esempio n. 4
0
    $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");
Esempio n. 5
0
}
//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)
Esempio n. 7
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();
Esempio n. 8
0
    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);
}
Esempio n. 9
0
//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"));
Esempio n. 10
0
 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;
 }
Esempio n. 11
0
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();
Esempio n. 12
0
                $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();