• Модуль: support
  • Путь к файлу: ~/bitrix/modules/support/classes/general/usertousergroup.php
  • Класс: CSupportUser2UserGroup
  • Вызов: CSupportUser2UserGroup::CheckFields
static function CheckFields(&$arFields, $groupID = 0, $userID = 0)
{
	global $APPLICATION, $DB, $USER;
	$groupID = intval($groupID);
	$userID = intval($userID);
	if (!is_array($arFields))
	{
		$arFields = array();
	}

	//if update
	if ($userID > 0 || $groupID > 0)
	{
		if ($userID <= 0)
		{
			$APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_ID_EMPTY'));
			return false;
		}
		if ($groupID <= 0)
		{
			$APPLICATION->ThrowException(GetMessage('SUP_ERROR_GROUP_ID_EMPTY'));
			return false;
		}

		if (array_key_exists('GROUP_ID', $arFields))
		{
			unset($arFields['GROUP_ID']);
		}
		if (array_key_exists('USER_ID', $arFields))
		{
			unset($arFields['USER_ID']);
		}
	}

	//if add
	if ($userID <= 0 && $groupID <= 0)
	{
		$arFields['GROUP_ID'] = array_key_exists('GROUP_ID', $arFields) ? intval($arFields['GROUP_ID']) : 0;
		$arFields['USER_ID'] = array_key_exists('USER_ID', $arFields) ? intval($arFields['USER_ID']) : 0;

		if ($arFields['USER_ID'] <= 0)
		{
			$APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_ID_EMPTY'));
			return false;
		}
		if ($arFields['GROUP_ID'] <= 0)
		{
			$APPLICATION->ThrowException(GetMessage('SUP_ERROR_GROUP_ID_EMPTY'));
			return false;
		}

		$rs = $USER->GetByID($arFields['USER_ID']);
		if (!$rs->Fetch())
		{
			$APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_USER'));
			return false;
		}
		$rs = CSupportUserGroup::GetList(false, array('ID' => $arFields['GROUP_ID']));
		if(!$arGroup = $rs->Fetch())
		{
			$APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_GROUP'));
			return false;
		}
		if (CTicket::IsAdmin($arFields['USER_ID']) || CTicket::IsSupportTeam($arFields['USER_ID']))
		{
			if ($arGroup['IS_TEAM_GROUP'] <> 'Y')
			{
				$APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_NO_CLIENT'));
				return false;
			}
		}
		elseif (CTicket::IsSupportClient($arFields['USER_ID']))
		{
			if ($arGroup['IS_TEAM_GROUP'] == 'Y')
			{
				$APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_NO_TEAM'));
				return false;
			}
		}
		else
		{
			$APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_SUPPORT_USER'));
			return false;
		}

		$rs = CSupportUser2UserGroup::GetList(false, array('GROUP_ID' => $arFields['GROUP_ID'], 'USER_ID' => $arFields['USER_ID']));
		if ($rs->Fetch())
		{
			$APPLICATION->ThrowException(GetMessage('SUP_ERROR_USERGROUP_EXISTS'));
			return false;
		}
	}

	if (array_key_exists('CAN_VIEW_GROUP_MESSAGES', $arFields))
	{
		$arFields['CAN_VIEW_GROUP_MESSAGES'] = $arFields['CAN_VIEW_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N';
	}
	elseif ($userID <= 0 && $groupID <= 0)
	{
		$arFields['CAN_VIEW_GROUP_MESSAGES'] = 'N';
	}

	if (array_key_exists('CAN_MAIL_GROUP_MESSAGES', $arFields))
	{
		$arFields['CAN_MAIL_GROUP_MESSAGES'] = $arFields['CAN_MAIL_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N';
	}
	elseif ($userID <= 0 && $groupID <= 0)
	{
		$arFields['CAN_MAIL_GROUP_MESSAGES'] = 'N';
	}

	return true;
}