2namespace Bitrix\Pull\Model;
5use Bitrix\Main\Entity\Event;
6use Bitrix\Main\Entity\FieldError;
7use Bitrix\Main\Entity\Result;
8use Bitrix\Main\Localization\Loc;
67 'data_type' =>
'integer',
69 'autocomplete' =>
true,
73 'data_type' =>
'integer',
77 'DEVICE_TYPE' =>
array(
78 'data_type' =>
'string',
79 'validation' =>
array(__CLASS__,
'validateDeviceType'),
83 'data_type' =>
'string',
84 'validation' =>
array(__CLASS__,
'validateAppId'),
87 'UNIQUE_HASH' =>
array(
88 'data_type' =>
'string',
89 'validation' =>
array(__CLASS__,
'validateUniqueHash'),
93 'data_type' =>
'string',
94 'validation' =>
array(__CLASS__,
'validateDeviceId'),
97 'DEVICE_NAME' =>
array(
98 'data_type' =>
'string',
99 'validation' =>
array(__CLASS__,
'validateDeviceName'),
102 'DEVICE_TOKEN' =>
array(
103 'data_type' =>
'string',
105 'validation' =>
array(__CLASS__,
'validateDeviceToken'),
108 'VOIP_TYPE' =>
array(
109 'data_type' =>
'string',
111 'VOIP_TOKEN' =>
array(
112 'data_type' =>
'string',
114 'DATE_CREATE' =>
array(
115 'data_type' =>
'datetime',
120 'DATE_AUTH' =>
array(
121 'data_type' =>
'datetime',
126 'data_type' =>
'Bitrix\Main\User',
127 'reference' =>
array(
'=this.USER_ID' =>
'ref.ID'),
175 $pushManager = new \CPushManager();
176 $availableDataTypes = array_keys($pushManager->getServices());
181 $tokensReceived = !empty(
$data[
"DEVICE_TOKEN"]) || !empty(
$data[
"VOIP_TOKEN"]);
182 $checkToken =
function($token) {
183 return $token ==
null || preg_match(
'~^[a-f0-9]{64}$~i', $token);
186 if (!
$data[
"DEVICE_TYPE"] || !in_array(
$data[
"DEVICE_TYPE"], $availableDataTypes))
195 if (
$data[
"DEVICE_TYPE"] ==
"APPLE")
197 if (!$checkToken(
$data[
"DEVICE_TOKEN"]) || !$checkToken(
$data[
"DEVICE_TOKEN_VOIP"]))
206 $result =
new Entity\EventResult;
209 if(!isset(
$data[
"APP_ID"]))
211 $data[
"APP_ID"] = defined(
"MOBILEAPP_DEFAULT_APP_ID") ? MOBILEAPP_DEFAULT_APP_ID :
"unknown";
214 if(!isset(
$data[
"DEVICE_NAME"]))
228 parent::onAfterAdd(
$event);
229 \CAgent::AddAgent(
"CPullPush::cleanTokens();",
"pull",
"N", 43200,
"",
"Y", ConvertTimeStamp(time() + \CTimeZone::GetOffset() + 30,
"FULL"));
235 parent::onBeforeUpdate(
$event);
237 $result =
new Entity\EventResult;
282class_alias(
"Bitrix\\Pull\\Model\\PushTable",
"Bitrix\\Pull\\PushTable",
false);
static validateDeviceId()
static validateUniqueHash()
static onAfterAdd(Event $event)
static onBeforeAdd(Event $event)
static validateDeviceName()
static checkFields(Result $result, $primary, array $data)
static validateDeviceType()
static validateDeviceToken()
static onBeforeUpdate(Event $event)
static getUniqueHash($user_id, $app_id)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)