- Модуль: 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));
}
}
}