• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock_rights.php
  • Класс: CIBlockRights
  • Вызов: CIBlockRights::GetUserOperations
static function GetUserOperations($arID, $USER_ID = 0)
{
	global $DB, $USER;
	$USER_ID = intval($USER_ID);

	if(is_object($USER))
	{
		if($USER_ID <= 0)
			$USER_ID = intval($USER->GetID());
		$bAuthorized = $USER->IsAuthorized();
	}
	else
	{
		$bAuthorized = false;
	}

	if(!is_array($arID))
		$sqlID = array(intval($arID));
	else
		$sqlID = array_map('intval', $arID);

	$rs = $DB->Query("
		SELECT IBR.ENTITY_ID ID, O.NAME
		FROM b_iblock_right IBR
		INNER JOIN b_task_operation T ON T.TASK_ID = IBR.TASK_ID
		INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
		".($USER_ID > 0? "LEFT": "INNER")." JOIN b_user_access UA ON UA.ACCESS_CODE = IBR.GROUP_CODE AND UA.USER_ID = ".$USER_ID."
		WHERE IBR.ENTITY_TYPE = 'iblock'
		AND IBR.ENTITY_ID in (".implode(", ", $sqlID).")
		AND (UA.USER_ID IS NOT NULL ".($bAuthorized? "OR IBR.GROUP_CODE = 'AU'": "").")
	");

	$arResult = array();
	while($ar = $rs->Fetch())
		$arResult[$ar["ID"]][$ar["NAME"]] = $ar["NAME"];

	if(is_array($arID))
		return $arResult;
	elseif(array_key_exists($arID, $arResult))
		return $arResult[$arID];
	else
		return array();
}