• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/sharepoint.php
  • Класс: CAllIntranetSharepoint
  • Вызов: CAllIntranetSharepoint::CheckFields
static function CheckFields($action, &$arFields)
{
	global $APPLICATION;

	if ($action == 'UPDATE')
		unset($arFields['IBLOCK_ID']);

	$arFields['SYNC_INTERVAL'] = intval($arFields['SYNC_INTERVAL']);

	if ($action == 'ADD')
	{
		$arFields['IBLOCK_ID'] = intval($arFields['IBLOCK_ID']);

		if (!$arFields['IBLOCK_ID'])
		{
			$APPLICATION->ThrowException(GetMessage('SP_ERROR_WRONG_IBLOCK_ID'));
			return false;
		}
	}

	if ($action == 'ADD' || isset($arFields['SP_LIST_ID']))
	{
		if (!($arFields['SP_LIST_ID'] = CIntranetUtils::checkGUID($arFields['SP_LIST_ID'])))
		{
			$APPLICATION->ThrowException(GetMessage('SP_ERROR_WRONG_SP_LIST_ID'));
			return false;
		}
	}

	if ($action == 'ADD')
	{
		$r = self::GetByID($arFields['IBLOCK_ID']);
		if ($r->Fetch())
		{
			$APPLICATION->ThrowException(GetMessage('SP_ERROR_IBLOCK_EXISTS'));
			return false;
		}

		$r = self::GetByID($arFields['SP_LIST_ID']);
		if ($r->Fetch())
		{
			$APPLICATION->ThrowException(GetMessage('SP_ERROR_LIST_EXISTS'));
			return false;
		}
	}

	if ($action == 'ADD' || isset($arFields['SP_URL']))
	{
		$URL = parse_url($arFields['SP_URL']);

		if (!is_array($URL) || !isset($URL['host']))
		{
			$APPLICATION->ThrowException(GetMessage('SP_ERROR_WRONG_URL'));
			return false;
		}
	}

	// zero is a valid value
	if (isset($arFields['SYNC_PERIOD']))
		$arFields['SYNC_PERIOD'] = intval($arFields['SYNC_PERIOD']);

	if ($action == 'ADD')
	{
		if (!$arFields['HANDLER_MODULE'])
			$arFields['HANDLER_MODULE'] = 'webservice';
	}

	if (isset($arFields['HANDLER_MODULE']) && $arFields['HANDLER_CLASS'])
	{
		if (!CModule::IncludeModule($arFields['HANDLER_MODULE'])) //we should use IncludeModule instead of isModuleInstalled! so we can check class_exists().
		{
			$APPLICATION->ThrowException(GetMessage('SP_ERROR_MODULE_NOT_INSTALLED').': '.$arFields['HANDLER_MODULE']);
			return false;
		}
	}

	if ($action == 'ADD')
	{
		if (!$arFields['HANDLER_CLASS'])
			$arFields['HANDLER_CLASS'] = 'CSPListsClient';
		elseif (!class_exists($arFields['HANDLER_CLASS']))
		{
			$APPLICATION->ThrowException(GetMessage('SP_ERROR_CLASS_NOT_EXISTS').': '.$arFields['HANDLER_CLASS']);
			return false;
		}
	}

	if ($action == 'ADD' || isset($arFields['PRIORITY']))
	{
		$arFields['PRIORITY'] = $arFields['PRIORITY'] == 'S' ? 'S' : 'B';
	}

	return true;
}