Exemple #1
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;
 }
 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;
 }