public static function ProccessPOST($oAccess, $LESSON_ID, $sort = false)
 {
     $isAccessUseCache = true;
     if ($sort === false) {
         $sort = 500;
     }
     // Remove/add relations from/to parent
     if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($LESSON_ID, CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache) || $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)) {
         $arCurParentsIds = array();
         $resParents = CLearnLesson::GetListOfImmediateParents($LESSON_ID);
         while ($arParent = $resParents->Fetch()) {
             $arCurParentsIds[] = (int) $arParent['LESSON_ID'];
         }
         $arDestParentsIds = array();
         if (isset($_POST['RELATION_PARENT']) && is_array($_POST['RELATION_PARENT'])) {
             foreach ($_POST['RELATION_PARENT'] as $key => $relatedLessonId) {
                 $arDestParentsIds[] = (int) $relatedLessonId;
             }
         }
         // remove relations
         if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)) {
             $arRemoveIds = array_diff($arCurParentsIds, $arDestParentsIds);
             foreach ($arRemoveIds as $relatedLessonId) {
                 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($relatedLessonId, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)) {
                     CLearnLesson::RelationRemove($relatedLessonId, $LESSON_ID);
                 }
             }
         }
         // add relations
         if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($LESSON_ID, CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache)) {
             $arAddIds = array_diff($arDestParentsIds, $arCurParentsIds);
             foreach ($arAddIds as $relatedLessonId) {
                 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($relatedLessonId, CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache)) {
                     CLearnLesson::RelationAdd($relatedLessonId, $LESSON_ID, array('SORT' => $sort));
                 }
             }
         }
     }
     // Remove/add relations from/to childs
     if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($LESSON_ID, CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache) || $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)) {
         $arCurChildsIds = array();
         $resChilds = CLearnLesson::GetListOfImmediateChilds($LESSON_ID);
         while ($arChild = $resChilds->Fetch()) {
             $arCurChildsIds[] = (int) $arChild['LESSON_ID'];
         }
         $arDestChildsIds = array();
         if (isset($_POST['RELATION_CHILD']) && is_array($_POST['RELATION_CHILD'])) {
             foreach ($_POST['RELATION_CHILD'] as $key => $relatedLessonId) {
                 $arDestChildsIds[] = (int) $relatedLessonId;
             }
         }
         // remove relations
         if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)) {
             $arRemoveIds = array_diff($arCurChildsIds, $arDestChildsIds);
             foreach ($arRemoveIds as $relatedLessonId) {
                 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($relatedLessonId, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)) {
                     CLearnLesson::RelationRemove($LESSON_ID, $relatedLessonId);
                 }
             }
         }
         // add relations
         if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($LESSON_ID, CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache)) {
             $arAddIds = array_diff($arDestChildsIds, $arCurChildsIds);
             foreach ($arAddIds as $relatedLessonId) {
                 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache) || $oAccess->IsLessonAccessible($relatedLessonId, CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache)) {
                     CLearnLesson::RelationAdd($LESSON_ID, $relatedLessonId, array('SORT' => $sort));
                 }
             }
         }
     }
 }