1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
event.php
См. документацию.
1<?php
2namespace Bitrix\Rest;
3
4use Bitrix\Main;
5use Bitrix\Main\ORM\Data\Internal\MergeTrait;
6use Bitrix\Rest\Preset\EventController;
7use Bitrix\Main\ORM\Fields\ArrayField;
8
37class EventTable extends Main\Entity\DataManager
38{
39 use MergeTrait;
40
41 const ERROR_EVENT_NOT_FOUND = 'ERROR_EVENT_NOT_FOUND';
42
43 const TYPE_ONLINE = 'online';
44 const TYPE_OFFLINE = 'offline';
45
51 public static function getTableName()
52 {
53 return 'b_rest_event';
54 }
55
61 public static function getMap()
62 {
63 return array(
64 'ID' => array(
65 'data_type' => 'integer',
66 'primary' => true,
67 'autocomplete' => true,
68 ),
69 'APP_ID' => array(
70 'data_type' => 'integer',
71 ),
72 'EVENT_NAME' => array(
73 'data_type' => 'string',
74 'required' => true,
75 ),
76 'EVENT_HANDLER' => array(
77 'data_type' => 'string',
78 ),
79 'USER_ID' => array(
80 'data_type' => 'integer',
81 ),
82 'TITLE' => array(
83 'data_type' => 'string'
84 ),
85 'COMMENT' => array(
86 'data_type' => 'string'
87 ),
88 'DATE_CREATE' => array(
89 'data_type' => 'datetime'
90 ),
91 'APPLICATION_TOKEN' => array(
92 'data_type' => 'string'
93 ),
94 'CONNECTOR_ID' => array(
95 'data_type' => 'string'
96 ),
97 'INTEGRATION_ID' => array(
98 'data_type' => 'integer',
99 ),
100 'OPTIONS' => new ArrayField('OPTIONS'),
101 'REST_APP' => array(
102 'data_type' => 'Bitrix\Rest\AppTable',
103 'reference' => array('=this.APP_ID' => 'ref.ID'),
104 ),
105
110 'APP' => array(
111 'data_type' => 'Bitrix\Bitrix24\AppsTable',
112 'reference' => array('=this.APP_ID' => 'ref.ID'),
113 ),
114 );
115 }
116
124 public static function deleteByApp($appId)
125 {
127 return $connection->query("DELETE FROM ".static::getTableName()." WHERE APP_ID='".intval($appId)."'");
128 }
129
137 public static function deleteAppInstaller($appId)
138 {
140 return $connection->query("DELETE FROM ".static::getTableName()." WHERE APP_ID='".intval($appId)."' AND EVENT_NAME='ONAPPINSTALL'");
141 }
142
148 public static function checkCallback($eventCallback, $appInfo, $checkInstallUrl = true)
149 {
150 return \Bitrix\Rest\HandlerHelper::checkCallback($eventCallback, $appInfo, $checkInstallUrl);
151 }
152
153 public static function onBeforeUpdate(Main\Entity\Event $event)
154 {
155 return static::checkUniq($event);
156 }
157
158 public static function onBeforeAdd(Main\Entity\Event $event)
159 {
160 return static::checkUniq($event);
161 }
162
163 public static function bind($eventName)
164 {
165 $provider = new \CRestProvider();
166 $restDescription = $provider->getDescription();
167 foreach($restDescription as $scope => $scopeDescription)
168 {
169 if(
170 is_array($scopeDescription[\CRestUtil::EVENTS])
171 && array_key_exists($eventName, $scopeDescription[\CRestUtil::EVENTS])
172 )
173 {
175 $scopeDescription[\CRestUtil::EVENTS][$eventName][0],
176 $scopeDescription[\CRestUtil::EVENTS][$eventName][1]
177 );
178
179 break;
180 }
181 }
182 }
183
184 public static function onAfterAdd(Main\Entity\Event $event)
185 {
186 $result = new Main\Entity\EventResult();
187
188 $fields = $event->getParameter('fields');
189 static::bind($fields['EVENT_NAME']);
190
191 EventController::onAfterAddEvent($event);
192
193 return $result;
194 }
195
196 public static function onAfterUpdate(Main\Entity\Event $event)
197 {
198 $result = new Main\Entity\EventResult();
199
200 $fields = $event->getParameter('fields');
201 static::bind($fields['EVENT_NAME']);
202
203 return $result;
204 }
205
206 protected static function checkUniq(Main\Entity\Event $event)
207 {
208 $result = new Main\Entity\EventResult();
209 $data = $event->getParameter("fields");
210
211 $dbRes = static::getList(array(
212 'filter' => array(
213 '=APP_ID' => $data['APP_ID'],
214 '=EVENT_NAME' => $data['EVENT_NAME'],
215 '=EVENT_HANDLER' => $data['EVENT_HANDLER'],
216 '=USER_ID' => $data['USER_ID'],
217 '=CONNECTOR_ID' => $data['CONNECTOR_ID'],
218 ),
219 'select' => array('ID')
220 ));
221
222 if($dbRes->fetch())
223 {
224 $result->addError(new Main\Entity\EntityError(
225 "Handler already binded"
226 ));
227 }
228
229 return $result;
230 }
231}
$connection
Определения actionsdefinitions.php:38
if(!Loader::includeModule('messageservice')) $provider
Определения callback_ednaruimhpx.php:21
static getConnection($name="")
Определения application.php:638
static bind($moduleId, $eventName)
Определения sender.php:73
Определения event.php:38
const TYPE_OFFLINE
Определения event.php:44
static getMap()
Определения event.php:61
const TYPE_ONLINE
Определения event.php:43
static bind($eventName)
Определения event.php:163
static onBeforeAdd(Main\Entity\Event $event)
Определения event.php:158
static deleteAppInstaller($appId)
Определения event.php:137
const ERROR_EVENT_NOT_FOUND
Определения event.php:41
static onAfterUpdate(Main\Entity\Event $event)
Определения event.php:196
static onBeforeUpdate(Main\Entity\Event $event)
Определения event.php:153
static deleteByApp($appId)
Определения event.php:124
static checkCallback($eventCallback, $appInfo, $checkInstallUrl=true)
Определения event.php:148
static onAfterAdd(Main\Entity\Event $event)
Определения event.php:184
static checkUniq(Main\Entity\Event $event)
Определения event.php:206
static getTableName()
Определения event.php:51
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
Определения ufield.php:9
Определения buffer.php:3
$event
Определения prolog_after.php:141
$dbRes
Определения yandex_detail.php:168
$fields
Определения yandex_run.php:501