• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/general/course.php
  • Класс: CCourse
  • Вызов: CCourse::GetPermission
static function GetPermission ($courseId)
{
	global $USER;
	static $accessMatrix = false;

	$courseId = (int) $courseId;

	if ( ! ($courseId > 0) )
		return ('D');		// access denied

	$linkedLessonId = CCourse::CourseGetLinkedLesson($courseId);

	if ( ! ($linkedLessonId > 0) )
		return ('D');		// some troubles, access denied

	$oAccess = CLearnAccess::GetInstance($USER->GetID());

	if ($accessMatrix === false)
	{
		$accessMatrix = array(
			// full access
			'X' => CLearnAccess::OP_LESSON_READ 
				| CLearnAccess::OP_LESSON_CREATE 
				| CLearnAccess::OP_LESSON_WRITE 
				| CLearnAccess::OP_LESSON_REMOVE 
				| CLearnAccess::OP_LESSON_LINK_TO_PARENTS 
				| CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS 
				| CLearnAccess::OP_LESSON_LINK_DESCENDANTS 
				| CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS 
				| CLearnAccess::OP_LESSON_MANAGE_RIGHTS,

			// write access
			'W' => CLearnAccess::OP_LESSON_READ 
				| CLearnAccess::OP_LESSON_CREATE 
				| CLearnAccess::OP_LESSON_WRITE 
				| CLearnAccess::OP_LESSON_REMOVE,

			// read-only access
			'R' => CLearnAccess::OP_LESSON_READ
		);
	}

	foreach ($accessMatrix as $oldAccessSymbol => $operations)
	{
		if ($oAccess->IsBaseAccess($operations)
			|| $oAccess->IsLessonAccessible($linkedLessonId, $operations)
		)
		{
			return ($oldAccessSymbol);
		}
	}

	// by default, access denied
	return ('D');
}