• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/general/clearnaccess.php
  • Класс: CLearnAccess
  • Вызов: CLearnAccess::GetBitmaskOperationsForAllLessons
protected function GetBitmaskOperationsForAllLessons($arUserAccessSymbols)
{
	global $DB;
	static $cache = array();

	if (!is_array($arUserAccessSymbols) || count($arUserAccessSymbols) < 1)
	{
		return 0;
	}

	$userAccessSymbols = $this->Array2CommaSeparatedListForSQL ($arUserAccessSymbols);
	if (isset($cache[$userAccessSymbols]))
	{
		return $cache[$userAccessSymbols];
	}

	$rc = $DB->Query (
		"SELECT XTO.NAME AS OPERATION_NAME
		FROM b_learn_rights_all TLRA
		INNER JOIN b_task_operation TTO
			ON TTO.TASK_ID = TLRA.TASK_ID
		INNER JOIN b_operation XTO
			ON XTO.ID = TTO.OPERATION_ID
		WHERE TLRA.SUBJECT_ID IN ($userAccessSymbols)", 
		true);
	if ($rc === false)
	{
		throw new LearnException ('EA_SQLERROR: ', 
			LearnException::EXC_ERR_ALL_GIVEUP 
			| LearnException::EXC_ERR_ALL_ACCESS_DENIED);
	}

	$bitmaskOperations = 0;
	while ($arData = $rc->Fetch())
	{
		if ( ! isset(self::$arOperations[$arData['OPERATION_NAME']]) )
		{
			throw new LearnException ('Unknown operation: ' . $arData['OPERATION_NAME'], 
				LearnException::EXC_ERR_ALL_LOGIC 
				| LearnException::EXC_ERR_ALL_GIVEUP
				| LearnException::EXC_ERR_ALL_ACCESS_DENIED);
		}

		$bitmaskOperations = $bitmaskOperations | self::$arOperations[$arData['OPERATION_NAME']];
	}

	$cache[$userAccessSymbols] = $bitmaskOperations;
	return ($bitmaskOperations);
}