1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
usageentity.php
См. документацию.
1<?php
2namespace Bitrix\Rest;
3
4use Bitrix\Main;
5use \Bitrix\Main\DB\SqlQueryException;
6
35class UsageEntityTable extends Main\Entity\DataManager
36{
37
40
51 const SUB_ENTITY_TYPE_UI = 'U';
52 const SUB_ENTITY_TYPE_AI = 'G';
55
56 protected static $info = array();
57
63 public static function getTableName()
64 {
65 return 'b_rest_usage_entity';
66 }
67
73 public static function getMap()
74 {
75 return array(
76 'ID' => array(
77 'data_type' => 'integer',
78 'primary' => true,
79 'autocomplete' => true
80 ),
81 'ENTITY_TYPE' => array(
82 'data_type' => 'string',
83 'required' => true,
84 'values' => array(
85 self::ENTITY_TYPE_APPLICATION,
86 self::ENTITY_TYPE_WEBHOOK
87 ),
88 'validation' => array(
89 __CLASS__,
90 'validateEntityType'
91 )
92 ),
93 'ENTITY_ID' => array(
94 'data_type' => 'integer',
95 'required' => true
96 ),
97 'ENTITY_CODE' => array(
98 'data_type' => 'string',
99 'validation' => array(
100 __CLASS__,
101 'validateEntityCode'
102 )
103 ),
104 'SUB_ENTITY_TYPE' => array(
105 'data_type' => 'string',
106 'values' => array(
107 self::SUB_ENTITY_TYPE_METHOD,
108 self::SUB_ENTITY_TYPE_EVENT,
109 self::SUB_ENTITY_TYPE_PLACEMENT,
110 self::SUB_ENTITY_TYPE_ROBOT,
111 self::SUB_ENTITY_TYPE_BIZ_PROC,
112 self::SUB_ENTITY_TYPE_ACTIVITY,
113 self::SUB_ENTITY_TYPE_CONFIGURATION,
114 self::SUB_ENTITY_TYPE_SEND_MESSAGE,
115 self::SUB_ENTITY_TYPE_LANDING,
116 self::SUB_ENTITY_TYPE_LANDING_KNOWLEDGE,
117 self::SUB_ENTITY_TYPE_BI_SUPERSET,
118 self::SUB_ENTITY_TYPE_LANDING_WIDGET,
119 ),
120 'validation' => array(
121 __CLASS__,
122 'validateSubEntityType'
123 )
124 ),
125 'SUB_ENTITY_NAME' => array(
126 'data_type' => 'string',
127 'validation' => array(
128 __CLASS__,
129 'validateSubEntityName'
130 )
131 ),
132 );
133 }
134
140 protected static function getEntityInfo($entityType, $entityId)
141 {
142 $key = $entityType.'|'.$entityId;
143 if (!isset(static::$info[$key]))
144 {
145 if ($entityType == self::ENTITY_TYPE_APPLICATION)
146 {
148 static::$info[$key] = array(
149 'ENTITY_ID' => $appInfo['ID'],
150 'ENTITY_CODE' => $appInfo['CLIENT_ID'],
151 );
152 }
153 else
154 {
155 static::$info[$key] = array(
156 'ENTITY_ID' => $entityId,
157 'ENTITY_CODE' => '',
158 );
159 }
160 }
161 return static::$info[$key];
162 }
163
174 public static function register($entityType, $entityId, $subEntityType, $subEntityName)
175 {
176 $entity = static::getEntityInfo($entityType, $entityId);
177
178 $getListParameters = [
179 'filter' => [
180 '=ENTITY_TYPE' => $entityType,
181 '=ENTITY_ID' => $entity['ENTITY_ID'],
182 '=SUB_ENTITY_TYPE' => $subEntityType,
183 '=SUB_ENTITY_NAME' => $subEntityName,
184 ],
185 'select' => [
186 'ID',
187 ],
188 'limit' => 1,
189 ];
190
191 $res = static::getList($getListParameters);
192 $element = $res->fetch();
193 if ($element)
194 {
195 return $element['ID'];
196 }
197
198 $newEntity = array(
199 'ENTITY_TYPE' => $entityType,
200 'ENTITY_ID' => $entity['ENTITY_ID'],
201 'ENTITY_CODE' => $entity['ENTITY_CODE'],
202 'SUB_ENTITY_TYPE' => $subEntityType,
203 'SUB_ENTITY_NAME' => $subEntityName
204 );
205
206 try
207 {
208 $res = static::add($newEntity);
209 return $res->isSuccess() ? $res->getId() : false;
210 }
211 catch (SqlQueryException $e)
212 {
213 if (mb_strpos($e->getMessage(), 'Duplicate entry') !== false)
214 {
215 //Try to get one more time
216 $res = static::getList($getListParameters);
217 $element = $res->fetch();
218 if ($element)
219 {
220 return $element['ID'];
221 }
222 }
223 throw $e;
224 }
225 }
226
232 public static function validateEntityType()
233 {
234 return array(new Main\Entity\Validator\Length(null, 1),);
235 }
236
242 public static function validateEntityCode()
243 {
244 return array(new Main\Entity\Validator\Length(null, 255),);
245 }
246
252 public static function validateSubEntityType()
253 {
254 return array(new Main\Entity\Validator\Length(null, 1),);
255 }
256
262 public static function validateSubEntityName()
263 {
264 return array(new Main\Entity\Validator\Length(null, 255),);
265 }
266}
static getByClientId($clientId)
Определения app.php:967
static getMap()
Определения usageentity.php:73
const ENTITY_TYPE_WEBHOOK
Определения usageentity.php:39
const SUB_ENTITY_TYPE_AI
Определения usageentity.php:52
static validateEntityType()
Определения usageentity.php:232
const SUB_ENTITY_TYPE_ROBOT
Определения usageentity.php:44
const SUB_ENTITY_TYPE_BI_SUPERSET
Определения usageentity.php:53
static validateSubEntityType()
Определения usageentity.php:252
const SUB_ENTITY_TYPE_CONFIGURATION
Определения usageentity.php:47
const SUB_ENTITY_TYPE_LANDING_KNOWLEDGE
Определения usageentity.php:50
const SUB_ENTITY_TYPE_METHOD
Определения usageentity.php:41
const SUB_ENTITY_TYPE_PLACEMENT
Определения usageentity.php:43
static validateSubEntityName()
Определения usageentity.php:262
const SUB_ENTITY_TYPE_BIZ_PROC
Определения usageentity.php:45
const SUB_ENTITY_TYPE_SEND_MESSAGE
Определения usageentity.php:48
const ENTITY_TYPE_APPLICATION
Определения usageentity.php:38
const SUB_ENTITY_TYPE_UI
Определения usageentity.php:51
const SUB_ENTITY_TYPE_EVENT
Определения usageentity.php:42
const SUB_ENTITY_TYPE_LANDING
Определения usageentity.php:49
static getEntityInfo($entityType, $entityId)
Определения usageentity.php:140
static validateEntityCode()
Определения usageentity.php:242
static $info
Определения usageentity.php:56
const SUB_ENTITY_TYPE_LANDING_WIDGET
Определения usageentity.php:54
static getTableName()
Определения usageentity.php:63
const SUB_ENTITY_TYPE_ACTIVITY
Определения usageentity.php:46
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$entity
Определения ufield.php:9
$entityId
Определения payment.php:4
if(empty($signedUserToken)) $key
Определения quickway.php:257