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));
}
}
}
}
}