59 $res = IntegrationTable::getList(
71 'PASS' =>
'PASSWORD.PASSWORD'
76 if ($integration =
$res->fetch())
79 if ($integration[
'USER_ID'] ===
$USER->GetID() || \CRestUtil::isAdmin())
82 '=INTEGRATION_ID' => $integration[
'ID']
86 $res = BotTable::getList(
89 '=BOT_ID' => $integration[
'BOT_ID'],
93 if ($bot =
$res->fetch())
100 '=APPLICATION_TOKEN' => $bot[
'APP_ID'],
105 'BOT_ID' => $integration[
'BOT_ID'],
106 'MODULE_ID' =>
'rest'
111 if (($integration[
'PASSWORD_ID'] > 0) && !static::deleteWebHook($integration[
'PASSWORD_ID']))
113 $errorList[] = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_ERROR_DELETE_WEBHOOK');
115 $resEvent = EventTable::getList(
117 'filter' => $filterEvent,
123 while (
$event = $resEvent->fetch())
126 if (!
$res->isSuccess())
128 $errorList[] =
$res->getErrorMessages();
131 $res = AppTable::getList(
134 '=ID' => $integration[
'APP_ID']
143 $resPlacement = PlacementTable::getList(
146 '=APP_ID' =>
$app[
'ID']
153 while ($placement = $resPlacement->fetch())
155 $res = PlacementTable::delete($placement[
'ID']);
156 if (!
$res->isSuccess())
158 $errorList[] =
$res->getErrorMessages();
161 $res = AppTable::delete(
$app[
'ID']);
162 if (!
$res->isSuccess())
164 $errorList[] =
$res->getErrorMessages();
168 if (empty($errorList))
170 $res = IntegrationTable::delete($integration[
'ID']);
171 if (!
$res->isSuccess())
173 $errorList[] =
$res->getErrorMessages();
175 else if (ElementCodeType::IN_WEBHOOK->value === $integration[
'ELEMENT_CODE'])
177 if (HoldEntity::is(HoldEntity::TYPE_WEBHOOK, $integration[
'PASS']))
179 HoldEntity::delete(HoldEntity::TYPE_WEBHOOK, $integration[
'PASS']);
180 HoldEntity::checkBlockCode(HoldEntity::TYPE_WEBHOOK);
187 $errorList[] = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_ERROR_ACCESS_DENIED');
191 if (!empty($errorList))
194 $result[
'errors'] = $errorList;
197 \Bitrix\Rest\Engine\Access::getActiveEntity(
true);
220 '=ref.ID' =>
'this.APP_ID'
223 'join_type' =>
'LEFT'
228 PasswordTable::class,
230 '=ref.ID' =>
'this.PASSWORD_ID'
233 'join_type' =>
'LEFT'
239 'APPLICATION_DATA_' =>
'APPLICATION_DATA',
240 'PASSWORD_DATA_' =>
'PASSWORD_DATA'
244 $runtime[] =
new ReferenceField(
248 '=ref.BOT_ID' =>
'this.BOT_ID'
251 'join_type' =>
'LEFT'
254 $select[
'BOT_DATA_'] =
'BOT_DATA';
256 $runtime[] =
new ReferenceField(
260 '=ref.ID' =>
'this.BOT_ID'
263 'join_type' =>
'LEFT'
266 $select[
'BOT_ACCOUNT_NAME'] =
'BOT_ACCOUNT.NAME';
269 $res = IntegrationTable::getList(
276 'runtime' => $runtime
279 if ($item =
$res->fetch())
281 if ($item[
'PASSWORD_DATA_ID'] > 0)
283 $item[
'PASSWORD_DATA_URL'] = \CRestUtil::getWebhookEndpoint(
284 $item[
'PASSWORD_DATA_PASSWORD'],
285 $item[
'PASSWORD_DATA_USER_ID']
289 if (!empty($item[
'BOT_DATA_APP_ID']) && mb_strpos($item[
'BOT_DATA_APP_ID'],
'custom') === 0)
292 $item[
'BOT_DATA_APP_ID'] = mb_substr($item[
'BOT_DATA_APP_ID'], 6);
295 if ($item[
'APP_ID'] > 0 && $item[
'APPLICATION_ONLY_API'] ==
'N')
297 $resLang = AppLangTable::getList(
300 '=APP_ID' => $item[
'APP_ID']
304 while (
$lang = $resLang->fetch())
306 $item[
'APPLICATION_LANG_DATA'][
$lang[
'LANGUAGE_ID']] =
$lang[
'MENU_NAME'];
310 if ($item[
'APP_ID'] > 0 && !empty($item[
'WIDGET_LIST']))
312 $resLang = PlacementTable::getList(
315 '=APP_ID' => $item[
'APP_ID'],
323 foreach ($resLang->fetchCollection() as $placement)
325 if (!is_null($placement->getLangAll()))
327 foreach ($placement->getLangAll() as
$lang)
329 $item[
'WIDGET_LANG_LIST'][
$lang->getLanguageId()] = [
330 'TITLE' =>
$lang->getTitle(),
331 'DESCRIPTION' =>
$lang->getDescription(),
332 'GROUP_NAME' =>
$lang->getGroupName(),
364 $id = (isset($requestData[
'ID']) && intVal($requestData[
'ID']) > 0) ? intVal($requestData[
'ID']) : $id;
366 $isAdmin = \CRestUtil::isAdmin();
368 $presetData = Element::get($elementCode);
374 $presetData[
'ADMIN_ONLY'] ===
'Y'
375 || $presetData[
'OPTIONS'][
'WIDGET_NEEDED'] !==
'D'
376 || $presetData[
'OPTIONS'][
'APPLICATION_NEEDED'] !==
'D'
381 $result[
'errors'][] = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_ERROR_ACCESS_DENIED');
395 $result[
'errors'][] = $e->getCode() .
': ' . $e->getMessage();
400 $presetData = $presetData[
'OPTIONS'];
403 'ELEMENT_CODE' => $elementCode,
404 'USER_ID' =>
$USER->GetID(),
405 'TITLE' => $requestData[
'TITLE'],
406 'SCOPE' => is_array($requestData[
'SCOPE']) ? $requestData[
'SCOPE'] : [],
407 'QUERY' => $requestData[
'QUERY'],
408 'OUTGOING_HANDLER_URL' => trim($requestData[
'OUTGOING_HANDLER_URL'] ??
null),
409 'OUTGOING_EVENTS' => isset($requestData[
'OUTGOING_EVENTS']) && is_array($requestData[
'OUTGOING_EVENTS']) ? $requestData[
'OUTGOING_EVENTS'] : [],
410 'APPLICATION_ONLY_API' => (isset($requestData[
'APPLICATION_ONLY_API']) && $requestData[
'APPLICATION_ONLY_API'] ===
'Y') ?
'Y' :
'N',
411 'APPLICATION_NEEDED' => (isset($requestData[
'APPLICATION_NEEDED']) && $requestData[
'APPLICATION_NEEDED'] ===
'Y') ?
'Y' :
'N',
412 'APPLICATION_EVENTS' => (isset($requestData[
'APPLICATION_EVENTS']) && is_array($requestData[
'APPLICATION_EVENTS'])) ? $requestData[
'APPLICATION_EVENTS'] : [],
413 'OUTGOING_NEEDED' => (isset($requestData[
'OUTGOING_NEEDED']) && $requestData[
'OUTGOING_NEEDED'] ===
'Y') ?
'Y' :
'N',
414 'WIDGET_NEEDED' => (isset($requestData[
'WIDGET_NEEDED']) && $requestData[
'WIDGET_NEEDED'] ===
'Y') ?
'Y' :
'N',
415 'WIDGET_HANDLER_URL' => trim($requestData[
'WIDGET_HANDLER_URL'] ??
null),
416 'WIDGET_LIST' => $requestData[
'WIDGET_LIST'] ??
null,
417 'WIDGET_LANG_LIST' => (isset($requestData[
'WIDGET_LANG_LIST']) && is_array($requestData[
'WIDGET_LANG_LIST'])) ? $requestData[
'WIDGET_LANG_LIST'] : [],
418 'BOT_HANDLER_URL' => trim($requestData[
'BOT_HANDLER_URL'] ??
null)
423 $itemsEvent = EventTable::getList(
426 '=INTEGRATION_ID' => $id
432 if (!empty($itemsEvent[
'0'][
'APPLICATION_TOKEN']))
434 $saveData[
'APPLICATION_TOKEN'] = $itemsEvent[
'0'][
'APPLICATION_TOKEN'];
438 $saveData[
'APPLICATION_TOKEN'] = Random::getString(32);
444 $saveResult = IntegrationTable::add($saveData);
446 $id = $saveResult->getId();
447 if (!
$result[
'status'] = $saveResult->isSuccess())
449 $errorList = $saveResult->getErrorMessages();
453 if ($id > 0 ||
$result[
'status'])
456 if (!empty($saveData[
'TITLE']))
458 $title = $saveData[
'TITLE'];
462 $title = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_TITLE_PREFIX', [
'#ID#' => $id]);
467 $resIntegration = IntegrationTable::getList(
474 if ($integrationData = $resIntegration->fetch())
476 if (!$isAdmin && $integrationData[
'USER_ID'] !=
$userId)
479 $result[
'errors'][] = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_ERROR_ACCESS_DENIED');
482 if ($integrationData[
'PASSWORD_ID'] > 0 && ($requestData[
'MODE'] ===
'GEN_SAVE' || $integrationData[
'USER_ID'] !=
$userId))
486 'integration' . $integrationData[
'ID'],
487 $integrationData[
'ELEMENT_CODE'],
490 if (static::deleteWebHook($integrationData[
'PASSWORD_ID']))
492 $integrationData[
'PASSWORD_ID'] = 0;
497 $errorList[] = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_ERROR_DELETE_WEBHOOK');
502 $saveData = array_merge($integrationData, $saveData);
507 if (!empty($requestData[
'BOT_NAME']) && !empty($requestData[
'BOT_HANDLER_URL']))
514 'onImBotMessageUpdate',
515 'onImBotMessageDelete'
518 'TYPE' => $requestData[
'BOT_TYPE'],
519 'EVENT_MESSAGE_ADD' => $saveData[
'BOT_HANDLER_URL'],
520 'EVENT_WELCOME_MESSAGE' => $saveData[
'BOT_HANDLER_URL'],
521 'EVENT_BOT_DELETE' => $saveData[
'BOT_HANDLER_URL'],
522 'MODULE_ID' =>
'rest',
524 'NAME' => $requestData[
'BOT_NAME']
528 if ($integrationData[
'BOT_ID'] > 0)
530 $res = BotTable::getList(
533 '=BOT_ID' => $integrationData[
'BOT_ID'],
537 if ($bot =
$res->fetch())
547 $params[
'CODE'] = Random::getString(16);
554 $uriWithClientId = $saveData[
'BOT_HANDLER_URL']
555 . (mb_strpos($saveData[
'BOT_HANDLER_URL'],
'?') ===
false ?
'?' :
'&')
558 'onImBotMessageAdd' => $uriWithClientId,
559 'onImBotJoinChat' => $uriWithClientId,
560 'onImBotDelete' => $uriWithClientId,
562 if (in_array($requestData[
'BOT_TYPE'], [
'S',
'O']))
564 $events[
'onImBotMessageUpdate'] = $uriWithClientId;
565 $events[
'onImBotMessageDelete'] = $uriWithClientId;
566 $params[
'EVENT_MESSAGE_UPDATE'] = $uriWithClientId;
567 $params[
'EVENT_MESSAGE_DELETE'] = $uriWithClientId;
570 if ($integrationData[
'BOT_ID'] > 0)
572 if (Bot::update([
'BOT_ID' => $integrationData[
'BOT_ID']],
$params) ===
true)
574 $botId = $integrationData[
'BOT_ID'];
579 $botId = Bot::register(
$params);
584 $allEvents = array_change_key_case(array_combine($allEvents, $allEvents), CASE_UPPER);
585 $saveData[
'BOT_ID'] = $botId;
586 if ($integrationData[
'BOT_ID'] > 0)
588 $res = EventTable::getList(
592 '=EVENT_NAME' => array_keys($allEvents),
593 '=APPLICATION_TOKEN' => [
607 if (isset($events[$allEvents[
$event[
'EVENT_NAME']]]) &&
608 $event[
'EVENT_HANDLER'] === $events[$allEvents[
$event[
'EVENT_NAME']]])
610 unset($events[$allEvents[
$event[
'EVENT_NAME']]]);
614 EventTable::delete(
$event[
'ID']);
620 foreach ($events as
$event => $eventHandler)
622 $res = EventTable::add(
625 'EVENT_NAME' => mb_strtoupper(
$event),
626 'EVENT_HANDLER' => $eventHandler,
633 Sender::bind(
'im',
$event);
640 $errorList = array_merge($errorList,
$errors);
649 $errorList[] = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_ERROR_BOT_CREATE');
654 $errorList[] = Loc::getMessage(
655 'INTEGRATION_PRESET_PROVIDER_ERROR_BOT_REQUIRED_FIELD_EMPTY'
661 if (!isset($presetData[
'QUERY_NEEDED']) || $presetData[
'QUERY_NEEDED'] !==
'D')
663 $webhook = static::getWebHook($saveData[
'SCOPE'], $saveData[
'PASSWORD_ID'] ??
null,
$title);
664 $saveData[
'PASSWORD_ID'] = $webhook[
'ID'];
668 $presetData[
'OUTGOING_NEEDED'] !==
'D'
669 && !empty($saveData[
'OUTGOING_HANDLER_URL'])
670 && !empty($saveData[
'OUTGOING_EVENTS'])
671 && $saveData[
'OUTGOING_NEEDED'] ==
'Y'
675 $eventUpdateList = [];
676 if (!empty($itemsEvent))
678 $itemsEvent = array_column($itemsEvent,
null,
'EVENT_NAME');
681 foreach ($saveData[
'OUTGOING_EVENTS'] as
$event)
685 $eventUpdateList[] = $itemsEvent[
$event][
'ID'];
686 unset($itemsEvent[
$event]);
693 'EVENT_HANDLER' => $saveData[
'OUTGOING_HANDLER_URL'],
696 'APPLICATION_TOKEN' => $saveData[
'APPLICATION_TOKEN'],
697 'INTEGRATION_ID' => $saveData[
'ID']
702 foreach ($itemsEvent as
$event)
704 EventTable::delete(
$event[
'ID']);
707 foreach ($eventAddList as $item)
709 $res = EventTable::add($item);
715 $errorList = array_merge($errorList,
$errors);
721 if (
$result[
'status'] && !empty($eventUpdateList))
723 $res = EventTable::updateMulti(
727 'EVENT_HANDLER' => $saveData[
'OUTGOING_HANDLER_URL'],
729 'APPLICATION_TOKEN' => $saveData[
'APPLICATION_TOKEN'],
737 $errorList = array_merge($errorList,
$errors);
744 foreach ($itemsEvent as
$event)
746 EventTable::delete(
$event[
'ID']);
751 $presetData[
'WIDGET_NEEDED'] !==
'D'
752 && $saveData[
'WIDGET_NEEDED'] ==
'Y'
753 && !empty($saveData[
'WIDGET_HANDLER_URL'])
754 && is_array($saveData[
'WIDGET_LIST'])
757 $app = static::saveApp(
759 'ID' => $saveData[
'APP_ID'],
761 'URL' => $saveData[
'WIDGET_HANDLER_URL'],
762 'URL_INSTALL' => $saveData[
'WIDGET_HANDLER_URL'],
763 'SCOPE' => $saveData[
'SCOPE'],
766 'APP_NAME' => $saveData[
'TITLE'],
768 'PLACEMENTS' => $saveData[
'WIDGET_LIST'],
769 'PLACEMENTS_LANG_LIST' => $saveData[
'WIDGET_LANG_LIST'],
770 'PLACEMENT_HANDLER_URL' => $saveData[
'WIDGET_HANDLER_URL'],
771 'INTEGRATION_CODE' => $saveData[
'ELEMENT_CODE'],
772 'INTEGRATION_ID' => $saveData[
'ID']
777 $saveData[
'APP_ID'] =
$app[
'ID'];
780 if (!empty(
$app[
'errors']))
782 $errorList = array_merge($errorList,
$app[
'errors']);
786 $presetData[
'APPLICATION_NEEDED'] !==
'D'
787 && $saveData[
'APPLICATION_NEEDED'] ==
'Y'
790 $app = static::saveApp(
792 'ID' => $saveData[
'APP_ID'],
794 'URL' => trim($requestData[
'APPLICATION_URL_HANDLER']),
795 'URL_INSTALL' => trim($requestData[
'APPLICATION_URL_INSTALL']),
796 'SCOPE' => $saveData[
'SCOPE'],
797 'ONLY_API' => ($saveData[
'APPLICATION_ONLY_API'] ==
'Y') ?
'Y' :
'N',
798 'MOBILE' => ($saveData[
'APPLICATION_ONLY_API'] !=
'Y'
799 && $requestData[
'APPLICATION_MOBILE'] ===
'Y') ?
'Y' :
'N',
800 'APP_NAME' => $saveData[
'TITLE'],
802 'LANG_NAME' => ($saveData[
'APPLICATION_ONLY_API'] !=
'Y' && is_array($requestData[
'APPLICATION_LANG_NAME'])) ?
803 $requestData[
'APPLICATION_LANG_NAME']
806 'INTEGRATION_CODE' => $saveData[
'ELEMENT_CODE'],
807 'INTEGRATION_ID' => $saveData[
'ID']
813 $saveData[
'APP_ID'] =
$app[
'ID'];
816 if (!empty(
$app[
'errors']))
818 $errorList = array_merge($errorList,
$app[
'errors']);
821 elseif (isset($saveData[
'APP_ID']) && $saveData[
'APP_ID'] > 0)
823 $res = AppTable::getList(
826 '=ID' => $saveData[
'APP_ID']
832 AppTable::delete(
$app[
'ID']);
834 $placementList = PlacementTable::getList(
837 '=APP_ID' =>
$app[
'ID']
841 if (is_array($placementList))
843 foreach ($placementList as $placement)
845 PlacementTable::delete($placement[
'ID']);
850 $resultSave = IntegrationTable::update($id, $saveData);
851 if (!$resultSave->isSuccess())
853 $errors = $resultSave->getErrorMessages();
856 $errorList = array_merge($errorList,
$errors);
864 if (!empty($errorList))
867 $result[
'errors'] = $errorList;
869 \Bitrix\Rest\Engine\Access::getActiveEntity(
true);
874 private static function saveApp(
$data)
881 $dbApp = AppTable::getList(
884 '=ID' =>
$data[
'ID'],
889 if (
$app = $dbApp->fetch())
897 $errorList[] = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_ERROR_EMPTY_SCOPE');
900 if (empty($errorList))
902 foreach (
GetModuleEvents(
'rest',
'OnRestLocalAppSave',
true) as $eventHandler)
905 if ($eventResult !==
null)
907 $errorList[] = strip_tags($eventResult);
912 if (empty($errorList) && empty(
$data[
'FIELDS'][
'URL']))
914 $errorList[] = Loc::getMessage(
'INTEGRATION_PRESET_PROVIDER_ERROR_INCORRECT_URL');
917 if (empty($errorList))
922 'URL' =>
$data[
'FIELDS'][
'URL'],
923 'URL_INSTALL' =>
$data[
'FIELDS'][
'URL_INSTALL'],
924 'CLIENT_ID' =>
$data[
'FIELDS'][
'CLIENT_ID'],
925 'CODE' =>
$data[
'FIELDS'][
'CLIENT_ID'],
926 'SCOPE' => implode(
',',
$data[
'FIELDS'][
'SCOPE']),
927 'STATUS' => AppTable::STATUS_LOCAL,
928 'APP_NAME' =>
$data[
'FIELDS'][
'APP_NAME'],
929 'MOBILE' =>
$data[
'FIELDS'][
'MOBILE'],
933 $result = AppTable::update(
$app[
'ID'], $appFields);
937 $appFields[
'INSTALLED'] = (!empty(
$data[
'FIELDS'][
'URL_INSTALL'])
938 &&
$data[
'FIELDS'][
'ONLY_API'] !==
'Y') ? AppTable::NOT_INSTALLED : AppTable::INSTALLED;
939 $result = AppTable::add($appFields);
943 'integrationAppCreated',
944 'integration' .
$data[
'INTEGRATION_ID'],
945 $data[
'INTEGRATION_CODE'],
953 $return[
'ID'] =
$result->getId();
955 AppLangTable::deleteByApp($return[
'ID']);
956 if (
$data[
'FIELDS'][
'ONLY_API'] ===
'N')
962 'APP_ID' => $return[
'ID'],
963 'LANGUAGE_ID' =>
$lang,
972 $data[
'FIELDS'][
'ONLY_API'] ===
'Y'
973 && !empty(
$app[
'URL_INSTALL'])
974 &&
$data[
'FIELDS'][
'URL_INSTALL'] !=
$app[
'URL_INSTALL']
977 $event = EventTable::getList(
980 '=APP_ID' => $return[
'ID'],
981 '=EVENT_NAME' =>
'ONAPPINSTALL',
986 if ($eventInstall =
$event->fetch())
992 'APP_ID' => $return[
'ID'],
993 'EVENT_NAME' =>
'ONAPPINSTALL',
994 'EVENT_HANDLER' =>
$data[
'FIELDS'][
'URL_INSTALL'],
1000 if (!empty(
$data[
'FIELDS'][
'URL_INSTALL']) && empty(
$app[
'URL_INSTALL']))
1005 'APP_ID' => $return[
'ID'],
1006 'EVENT_NAME' =>
'ONAPPINSTALL',
1007 'EVENT_HANDLER' =>
$data[
'FIELDS'][
'URL_INSTALL'],
1012 Sender::bind(
'rest',
'OnRestAppInstall');
1016 if (
$app[
'ID'] <= 0)
1018 AppTable::install($return[
'ID']);
1022 if (defined(
'BX_COMP_MANAGED_CACHE'))
1030 $errorList =
$result->getErrorMessages();
1033 catch (\Bitrix\Rest\OAuthException $e)
1035 $errorList[] = $e->getMessage();
1038 if (empty($errorList) &&
$data[
'PLACEMENTS'])
1041 $placementListOld = [];
1044 $data[
'PLACEMENTS'] = is_array(
$data[
'PLACEMENTS']) ?
$data[
'PLACEMENTS'] : [];
1046 $placementLangList = [];
1051 $placementLangList[
$lang] = [
1052 'LANGUAGE_ID' =>
$lang,
1058 $langList = Lang::listLanguage();
1059 $defaultLang = $langList[0];
1060 if (!empty($placementLangList))
1062 foreach ($langList as
$lang)
1064 if (isset($placementLangList[
$lang]))
1075 $placementLangList[$defaultLang] = [
1076 'LANGUAGE_ID' => $defaultLang,
1081 $accessPlacement = Rest::getAccessPlacement(
$data[
'FIELDS'][
'SCOPE']);
1082 $placementRes = PlacementTable::getList(
1085 '=APP_ID' => $return[
'ID']
1089 if ($placementList = $placementRes->fetchAll())
1091 $placementListOld = array_column($placementList,
'PLACEMENT',
'ID');
1094 foreach (
$data[
'PLACEMENTS'] as $placement)
1096 if (!in_array($placement, $accessPlacement))
1098 $errorList[] = Loc::getMessage(
1099 "INTEGRATION_PRESET_PROVIDER_ERROR_ACCESS_PLACEMENT",
1101 '#PLACEMENT_CODE#' => $placement
1107 $key = array_search($placement, $placementListOld);
1110 $updateIDList[] =
$key;
1111 unset($placementListOld[
$key]);
1116 'APP_ID' => $return[
'ID'],
1117 'PLACEMENT' => $placement,
1118 'PLACEMENT_HANDLER' =>
$data[
'PLACEMENT_HANDLER_URL'],
1123 if (!empty($placementListOld))
1125 foreach (array_keys($placementListOld) as $place)
1127 PlacementTable::delete($place);
1131 if (!empty($updateIDList))
1133 $resultPlacementBind = PlacementTable::updateMulti(
1136 'PLACEMENT_HANDLER' =>
$data[
'PLACEMENT_HANDLER_URL'],
1140 if ($resultPlacementBind->isSuccess())
1142 foreach ($updateIDList as $id)
1144 PlacementLangTable::deleteByPlacement((
int) $id);
1145 foreach ($placementLangList as
$fields)
1147 $fields[
'PLACEMENT_ID'] = $id;
1148 $resultPlacementLang = PlacementLangTable::add(
$fields);
1149 if (!$resultPlacementLang->isSuccess())
1151 $errors = $resultPlacementLang->getErrorMessages();
1154 $errorList = array_merge($errorList,
$errors);
1162 $errors = $resultPlacementBind->getErrorMessages();
1165 $errorList = array_merge($errorList,
$errors);
1170 if (
count($addList) > 0)
1172 Analytic::logToFile(
1173 'integrationPlacementCreated',
1174 'integration' .
$data[
'INTEGRATION_ID'],
1175 $data[
'INTEGRATION_CODE'],
1178 foreach ($addList as $item)
1180 $resultPlacementBind = PlacementTable::add($item);
1181 if ($resultPlacementBind->isSuccess())
1183 $id = (int) $resultPlacementBind->getId();
1184 foreach ($placementLangList as
$fields)
1186 $fields[
'PLACEMENT_ID'] = $id;
1187 $resultPlacementLang = PlacementLangTable::add(
$fields);
1188 if (!$resultPlacementLang->isSuccess())
1190 $errors = $resultPlacementLang->getErrorMessages();
1193 $errorList = array_merge($errorList,
$errors);
1197 Analytic::logToFile(
1198 'integrationPlacementCreated',
1199 'integration' .
$data[
'INTEGRATION_ID'],
1206 $errors = $resultPlacementBind->getErrorMessages();
1209 $errorList = array_merge($errorList,
$errors);
1217 if (!empty($errorList))
1219 $return[
'errors'] = $errorList;
1225 private static function getWebHook($scopeList = [], $id = 0,
$title =
'')
1229 $scopeList = is_array($scopeList) ? $scopeList : [];
1232 $passData = PasswordTable::getList(
1246 if ($passwordData = $passData->fetch())
1250 $permData = PermissionTable::getList(
1253 '=PASSWORD_ID' => $passwordData[
'ID']
1257 while ($scopeItem = $permData->fetch())
1259 $scopeIdList[$scopeItem[
'PERM']] = $scopeItem[
'ID'];
1260 $scopeListOld[] = $scopeItem[
'PERM'];
1262 $resultList = array_diff($scopeList, $scopeListOld);
1263 foreach ($resultList as $scope)
1265 PermissionTable::add(
1267 'PASSWORD_ID' => $passwordData[
'ID'],
1272 $resultList = array_diff($scopeListOld, $scopeList);
1273 foreach ($resultList as $scope)
1275 if (isset($scopeIdList[$scope]))
1277 PermissionTable::delete($scopeIdList[$scope]);
1281 if (
$title !==
'' && $passwordData[
'TITLE'] !==
$title)
1283 PasswordTable::update(
1284 $passwordData[
'ID'],
1298 $passwordCreat = PasswordTable::createPassword(
1304 if ($passwordCreat !==
false)
1317 private static function deleteWebHook($id)
1320 $passData = PasswordTable::getList(
1333 if ($passwordData = $passData->fetch())
1335 $permData = PermissionTable::getList(
1338 '=PASSWORD_ID' => $passwordData[
'ID']
1345 while ($scopeItem = $permData->fetch())
1347 PermissionTable::delete($scopeItem[
'ID']);
1349 $deleteResult = PasswordTable::delete($passwordData[
'ID']);
1350 if ($deleteResult->isSuccess())
if(!defined('SITE_ID')) $lang
$GLOBALS['____1690880296']
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)