• Модуль: pull
  • Путь к файлу: ~/bitrix/modules/pull/lib/model/pushtable.php
  • Класс: BitrixPullModelPushTable
  • Вызов: PushTable::checkFields
static function checkFields(Result $result, $primary, array $data)
{
	parent::checkFields($result, $primary, $data);
	$pushManager = new CPushManager();
	$availableDataTypes = array_keys($pushManager->getServices());

	if ($result instanceof EntityAddResult)
	{
		$entity = self::getEntity();
		$tokensReceived = !empty($data["DEVICE_TOKEN"]) || !empty($data["VOIP_TOKEN"]);
		$checkToken = function($token) {
			return $token == null || preg_match('~^[a-f0-9]{64}$~i', $token);
		};

		if (!$data["DEVICE_TYPE"] || !in_array($data["DEVICE_TYPE"], $availableDataTypes))
		{
			$result->addError(new EntityFieldError($entity->getField("DEVICE_TYPE"), "Wrong field value", FieldError::INVALID_VALUE));
		}
		if(!$tokensReceived)
		{
			$result->addError(new EntityFieldError($entity->getField("DEVICE_TYPE"), "Tokens were not received", FieldError::INVALID_VALUE));
		}

		if ($data["DEVICE_TYPE"] == "APPLE")
		{
			if (!$checkToken($data["DEVICE_TOKEN"]) || !$checkToken($data["DEVICE_TOKEN_VOIP"]))
				$result->addError(new EntityFieldError($entity->getField("DEVICE_TYPE"), "Wrong format of token for iOS", FieldError::INVALID_VALUE));
		}
	}
}