11use Bitrix\ImBot\Bot\Giphy;
13 Bitrix\Main\Localization\Loc,
14 Bitrix\Main\DB\Exception;
15Loc::loadMessages(__FILE__);
38 $check = parse_url(
$fields[
'IFRAME']);
39 if (!isset($check[
'scheme']) && !isset($check[
'host']))
41 if (mb_strpos(
$fields[
'IFRAME'],
'/desktop_app/iframe/') !== 0)
46 else if (!in_array($check[
'scheme'], Array(
'http',
'https')) || empty($check[
'host']))
50 $iframe =
$fields[
'IFRAME'].(isset($check[
'query'])?
'&':
'?');
51 if (isset(
$fields[
'IFRAME_WIDTH']))
53 $iframeWidth = intval(
$fields[
'IFRAME_WIDTH']) > 250?
$fields[
'IFRAME_WIDTH']: 250;
55 if (isset(
$fields[
'IFRAME_HEIGHT']))
57 $iframeHeight = intval(
$fields[
'IFRAME_HEIGHT']) > 50?
$fields[
'IFRAME_HEIGHT']: 50;
59 $iframePopup = isset(
$fields[
'IFRAME_POPUP']) &&
$fields[
'IFRAME_POPUP'] ==
'Y'?
'Y': $iframePopup;
72 $iconFileId = intval(
$fields[
'ICON_ID']);
75 $hash = isset(
$fields[
'HASH']) && !empty(
$fields[
'HASH'])? mb_substr(
$fields[
'HASH'], 0, 32) : md5($botId.$fields[
'CODE'].\CMain::GetServerUniqID());
77 $registered = isset(
$fields[
'REGISTERED']) &&
$fields[
'REGISTERED'] ==
'N'?
'N':
'Y';
78 $hidden = isset(
$fields[
'HIDDEN']) &&
$fields[
'HIDDEN'] ==
'Y'?
'Y':
'N';
84 $extranetSupport = isset(
$fields[
'EXTRANET_SUPPORT']) &&
$fields[
'EXTRANET_SUPPORT'] ==
'Y'?
'Y':
'N';
85 $livechatSupport = isset(
$fields[
'LIVECHAT_SUPPORT']) &&
$fields[
'LIVECHAT_SUPPORT'] ==
'Y'?
'Y':
'N';
89 $methodLangGet = isset(
$fields[
'METHOD_LANG_GET'])?
$fields[
'METHOD_LANG_GET']:
'';
104 if (empty($class) || empty($methodLangGet))
111 foreach ($apps as $cmd)
115 if ($botId == $cmd[
'BOT_ID'] &&
$code == $cmd[
'CODE'])
122 if ($restAppId == $cmd[
'APP_ID'] &&
$code == $cmd[
'CODE'])
133 $result = \Bitrix\Im\Model\AppTable::add(Array(
138 'ICON_FILE_ID' => $iconFileId,
139 'CONTEXT' => mb_strtolower(
$context),
141 'REGISTERED' => $registered,
143 'IFRAME_WIDTH' => $iframeWidth,
144 'IFRAME_HEIGHT' => $iframeHeight,
145 'IFRAME_POPUP' => $iframePopup,
147 'EXTRANET_SUPPORT' => $extranetSupport,
148 'LIVECHAT_SUPPORT' => $livechatSupport,
150 'METHOD_LANG_GET' => $methodLangGet,
151 'APP_ID' => $restAppId
157 $cache = \Bitrix\Main\Data\Cache::createInstance();
158 $cache->cleanDir(self::CACHE_PATH);
164 foreach ($langSet as
$lang)
166 if (!isset(
$lang[
'LANGUAGE_ID']) || empty(
$lang[
'LANGUAGE_ID']))
169 if (!isset(
$lang[
'TITLE']) && empty(
$lang[
'TITLE']))
174 \Bitrix\Im\Model\AppLangTable::add(
array(
176 'LANGUAGE_ID' => mb_strtolower(
$lang[
'LANGUAGE_ID']),
177 'TITLE' =>
$lang[
'TITLE'],
178 'DESCRIPTION' =>
$lang[
'DESCRIPTION'],
179 'COPYRIGHT' =>
$lang[
'COPYRIGHT']
193 $appId = intval(
$app[
'ID']);
195 $restAppId = isset(
$app[
'APP_ID'])?
$app[
'APP_ID']:
'';
197 if (intval($appId) <= 0)
200 if (!isset(
$app[
'FORCE']) ||
$app[
'FORCE'] ==
'N')
203 if (!isset($icons[$appId]))
209 if ($restAppId <>
'' && $icons[$appId][
'APP_ID'] != $restAppId)
213 \Bitrix\Im\Model\AppTable::delete($appId);
215 $orm = \Bitrix\Im\Model\AppLangTable::getList(Array(
216 'filter' => Array(
'=APP_ID' => $appId)
218 while ($row = $orm->fetch())
220 \Bitrix\Im\Model\AppLangTable::delete($row[
'ID']);
223 $cache = \Bitrix\Main\Data\Cache::createInstance();
224 $cache->cleanDir(self::CACHE_PATH);
226 if (\
Bitrix\
Main\Loader::includeModule(
'pull'))
228 \CPullStack::AddShared(Array(
230 'command' =>
'appDeleteIcon',
243 $appId = intval(
$app[
'ID']);
246 $restAppId = isset(
$app[
'APP_ID'])?
$app[
'APP_ID']:
'';
248 if (intval($appId) <= 0)
252 if (!isset($apps[$appId]))
258 if ($restAppId <>
'' && $apps[$appId][
'APP_ID'] != $restAppId)
261 if (isset($updateFields[
'LANG']) && $apps[$appId][
'MODULE_ID'] ==
'rest')
263 $orm = \Bitrix\Im\Model\AppLangTable::getList(Array(
264 'filter' => Array(
'=APP_ID' => $appId)
266 while ($row = $orm->fetch())
268 \Bitrix\Im\Model\AppLangTable::delete($row[
'ID']);
270 foreach ($updateFields[
'LANG'] as
$lang)
272 if (!isset(
$lang[
'LANGUAGE_ID']) || empty(
$lang[
'LANGUAGE_ID']))
275 if (!isset(
$lang[
'TITLE']) && empty(
$lang[
'TITLE']))
280 \Bitrix\Im\Model\AppLangTable::add(
array(
282 'LANGUAGE_ID' => mb_strtolower(
$lang[
'LANGUAGE_ID']),
283 'TITLE' =>
$lang[
'TITLE'],
284 'DESCRIPTION' =>
$lang[
'DESCRIPTION'],
285 'COPYRIGHT' =>
$lang[
'COPYRIGHT']
295 if (isset($updateFields[
'CONTEXT']) && !empty($updateFields[
'CONTEXT']))
297 $update[
'CONTEXT'] = mb_strtolower($updateFields[
'CONTEXT']);
299 if (isset($updateFields[
'HASH']) && !empty($updateFields[
'HASH']))
301 $update[
'HASH'] = $updateFields[
'HASH'];
303 if (isset($updateFields[
'HIDDEN']))
305 $update[
'HIDDEN'] = $updateFields[
'HIDDEN'] ==
'Y'?
'Y':
'N';
307 if (isset($updateFields[
'REGISTERED']))
309 $update[
'REGISTERED'] = $updateFields[
'REGISTERED'] ==
'N'?
'N':
'Y';
311 if (isset($updateFields[
'IFRAME']) && !empty($updateFields[
'IFRAME']))
313 $check = parse_url($updateFields[
'IFRAME']);
314 if (!isset($check[
'scheme']) && !isset($check[
'host']))
316 if (mb_strpos($updateFields[
'IFRAME'],
'/desktop_app/iframe/') !== 0)
321 else if (!in_array($check[
'scheme'], Array(
'http',
'https')) || empty($check[
'host']))
325 $update[
'IFRAME'] = $updateFields[
'IFRAME'].(isset($check[
'query'])?
'&':
'?');
327 else if (isset($updateFields[
'JS']) && !empty($updateFields[
'JS']))
329 $update[
'JS'] = $updateFields[
'JS'];
331 if (isset($updateFields[
'IFRAME_WIDTH']))
333 $update[
'IFRAME_WIDTH'] = intval($updateFields[
'IFRAME_WIDTH']) > 250? intval($updateFields[
'IFRAME_WIDTH']): 250;
335 if (isset($updateFields[
'IFRAME_HEIGHT']))
337 $update[
'IFRAME_HEIGHT'] = intval($updateFields[
'IFRAME_HEIGHT']) > 50? intval($updateFields[
'IFRAME_HEIGHT']): 50;
339 if (isset($updateFields[
'IFRAME_POPUP']))
341 $update[
'IFRAME_POPUP'] = $updateFields[
'IFRAME_POPUP'] ==
'Y'?
'Y':
'N';
343 if (isset($updateFields[
'ICON_ID']) && $updateFields[
'ICON_ID'])
345 $update[
'ICON_FILE_ID'] = intval($updateFields[
'ICON_ID']);
347 if (isset($updateFields[
'CLASS']) && !empty($updateFields[
'CLASS']))
349 $update[
'CLASS'] = $updateFields[
'CLASS'];
351 if (isset($updateFields[
'METHOD_LANG_GET']))
353 $update[
'METHOD_LANG_GET'] = $updateFields[
'METHOD_LANG_GET'];
355 if (isset($updateFields[
'EXTRANET_SUPPORT']))
357 $update[
'EXTRANET_SUPPORT'] = $updateFields[
'EXTRANET_SUPPORT'] ==
'Y'?
'Y':
'N';
359 if (isset($updateFields[
'LIVECHAT_SUPPORT']))
361 $update[
'LIVECHAT_SUPPORT'] = $updateFields[
'LIVECHAT_SUPPORT'] ==
'Y'?
'Y':
'N';
366 \Bitrix\Im\Model\AppTable::update($appId, $update);
368 $cache = \Bitrix\Main\Data\Cache::createInstance();
369 $cache->cleanDir(self::CACHE_PATH);
372 if (\
Bitrix\
Main\Loader::includeModule(
'pull'))
375 $update[
'REGISTERED']
376 || $update[
'DOMAIN_HASH']
377 || $update[
'CONTEXT']
380 || $update[
'IFRAME_WIDTH']
381 || $update[
'IFRAME_HEIGHT']
382 || $update[
'IFRAME_POPUP']
385 \CPullStack::AddShared(Array(
387 'command' =>
'appUpdateIcon',
391 'domainHash' => $update[
'HASH'],
392 'context' => $update[
'CONTEXT'],
393 'js' => $update[
'JS'],
394 'iframe' => $update[
'IFRAME'],
395 'iframeWidth' => $update[
'IFRAME_WIDTH'],
396 'iframeHeight' => $update[
'IFRAME_HEIGHT'],
397 'iframePopup' => $update[
'IFRAME_POPUP'],
402 else if ($update[
'ICON_ID'])
407 \CPullStack::AddShared(Array(
409 'command' =>
'appDeleteIcon',
423 $botId = intval(
$params[
'BOT_ID']);
444 $appId = intval(
$app[
'ID']);
446 $restAppId = isset(
$app[
'APP_ID'])?
$app[
'APP_ID']:
'';
452 if (!isset($apps[$appId]))
458 if ($restAppId <>
'' && $apps[$appId][
'APP_ID'] != $restAppId)
461 $botId = intval($apps[$appId][
'BOT_ID']);
466 $relations = \CIMChat::GetRelationById($chatId,
false,
true,
false);
475 $relations = \CIMChat::GetPrivateRelation($botId,
$userId);
494 if (isset($relations[$fromUserId]) &&
$messageFields[
'SYSTEM'] !=
'Y')
497 "FROM_USER_ID" => $fromUserId,
498 "TO_CHAT_ID" => $chatId,
510 "FROM_USER_ID" => isset($relations[$fromUserId])? $fromUserId: 0,
511 "TO_CHAT_ID" => $chatId,
521 $ar[
'MESSAGE'] =
"[B]".$apps[$appId][
'TITLE'].
"[/B]\n".
$ar[
'MESSAGE'];
526 $ar[
'URL_PREVIEW'] =
'N';
529 $ar[
'SKIP_USER_CHECK'] =
'Y';
530 $ar[
'SKIP_COMMAND'] =
'Y';
532 $id = \CIMChat::AddMessage(
$ar);
537 \CModule::IncludeModule(
'imbot');
539 if (isset($relations[$fromUserId]) &&
$messageFields[
'SYSTEM'] !=
'Y')
542 "FROM_USER_ID" => $fromUserId,
555 "FROM_USER_ID" => isset($relations[$fromUserId])? $fromUserId: 0,
566 $ar[
'MESSAGE'] =
"[B]".$apps[$appId][
'TITLE'].
"[/B]\n".
$ar[
'MESSAGE'];
571 $ar[
'URL_PREVIEW'] =
'N';
574 $ar[
'SKIP_COMMAND'] =
'Y';
583 $cache = \Bitrix\Main\Data\Cache::createInstance();
584 if($cache->initCache(self::CACHE_TTL,
'list_v3_'.$lang, self::CACHE_PATH))
590 $loadRestLang =
false;
592 $orm = \Bitrix\Im\Model\AppTable::getList();
593 while ($row = $orm->fetch())
595 if ($row[
'ICON_FILE_ID'])
597 $image = \CFile::ResizeImageGet(
598 $row[
'ICON_FILE_ID'],
599 array(
'width' => 108,
'height' => 66),
605 $row[
'ICON_URL'] = empty($image[
'src'])?
'': $image[
'src'];
609 $row[
'ICON_URL'] =
'';
612 if (!empty($row[
'CLASS']) && !empty($row[
'METHOD_LANG_GET']))
614 if (\
Bitrix\
Main\Loader::includeModule($row[
'MODULE_ID']) && class_exists($row[
"CLASS"]) && method_exists($row[
"CLASS"], $row[
"METHOD_LANG_GET"]))
616 $localize = call_user_func_array(
array($row[
"CLASS"], $row[
"METHOD_LANG_GET"]), Array($row[
'CODE'],
$lang));
619 $row[
'TITLE'] = $localize[
'TITLE'];
620 $row[
'DESCRIPTION'] = $localize[
'DESCRIPTION'];
621 $row[
'COPYRIGHT'] = $localize[
'COPYRIGHT'];
625 $row[
'METHOD_LANG_GET'] =
'';
630 $row[
'METHOD_LANG_GET'] =
'';
636 $row[
'DESCRIPTION'] =
'';
637 $row[
'COPYRIGHT'] =
'';
639 if ($row[
'MODULE_ID'] ==
'rest')
641 $loadRestLang =
true;
650 $orm = \Bitrix\Im\Model\AppLangTable::getList();
651 while ($row = $orm->fetch())
653 if (!isset(
$result[$row[
'APP_ID']]))
656 $langSet[$row[
'APP_ID']][$row[
'LANGUAGE_ID']][
'TITLE'] = $row[
'TITLE'];
657 $langSet[$row[
'APP_ID']][$row[
'LANGUAGE_ID']][
'DESCRIPTION'] = $row[
'DESCRIPTION'];
658 $langSet[$row[
'APP_ID']][$row[
'LANGUAGE_ID']][
'COPYRIGHT'] = $row[
'COPYRIGHT'];
661 $langAlter = \Bitrix\Im\Bot::getDefaultLanguage();
662 foreach (
$result as $appId => $commandData)
664 if (isset($langSet[$appId][
$lang]))
666 $result[$appId][
'TITLE'] = $langSet[$appId][
$lang][
'TITLE'];
667 $result[$appId][
'DESCRIPTION'] = $langSet[$appId][
$lang][
'DESCRIPTION'];
668 $result[$appId][
'COPYRIGHT'] = $langSet[$appId][
$lang][
'COPYRIGHT'];
670 else if (isset($langSet[$appId][$langAlter]))
672 $result[$appId][
'TITLE'] = $langSet[$appId][$langAlter][
'TITLE'];
673 $result[$appId][
'DESCRIPTION'] = $langSet[$appId][$langAlter][
'DESCRIPTION'];
674 $result[$appId][
'COPYRIGHT'] = $langSet[$appId][$langAlter][
'COPYRIGHT'];
676 else if (isset($langSet[$appId]))
678 $langSetCommand = array_values($langSet[$appId]);
679 $result[$appId][
'TITLE'] = $langSetCommand[0][
'TITLE'];
680 $result[$appId][
'DESCRIPTION'] = $langSetCommand[0][
'DESCRIPTION'];
681 $result[$appId][
'COPYRIGHT'] = $langSetCommand[0][
'COPYRIGHT'];
687 if (empty($value[
'TITLE']))
689 $row[
'METHOD_LANG_GET'] =
'';
694 $cache->startDataCache();
703 if (!
Main\Loader::includeModule(
'imbot') || !Giphy::getBotId() || Giphy::isAvailable())
708 foreach ($list as $appId =>
$app)
710 if ((
int)
$app[
'BOT_ID'] === Giphy::getBotId())
712 $list[$appId][
'HIDDEN'] =
'Y';
728 foreach ($apps as
$app)
730 if ($isConnector &&
$app[
'LIVECHAT_SUPPORT'] !=
'Y')
732 else if ($isExtranet &&
$app[
'EXTRANET_SUPPORT'] !=
'Y')
735 $botData = \Bitrix\Im\Bot::getCache(
$app[
'BOT_ID']);
738 'botId' =>
$app[
'BOT_ID'],
740 'domainHash' => self::getDomainHash(
$app[
'HASH']),
741 'userHash' => self::getUserHash(
$userId,
$app[
'HASH']),
743 'url' =>
$app[
'ICON_URL'],
744 'iframe' =>
$app[
'IFRAME'],
745 'iframeWidth' =>
$app[
'IFRAME_WIDTH'],
746 'iframeHeight' =>
$app[
'IFRAME_HEIGHT'],
747 'iframePopup' =>
$app[
'IFRAME_POPUP'] ==
'Y',
749 'context' => mb_strtolower(
$app[
'CONTEXT']),
750 'hidden' =>
$app[
'HIDDEN'] ==
'Y',
751 'title' =>
$app[
'TITLE'],
752 'description' =>
$app[
'DESCRIPTION'],
753 'copyright' =>
$app[
'COPYRIGHT'],
762 if (
$hash ==
'register')
779 $cache = \Bitrix\Main\Data\Cache::createInstance();
780 $cache->cleanDir(self::CACHE_PATH);
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static getDomainHash($hash)
static update(array $app, array $updateFields)
static getListCache($lang=LANGUAGE_ID)
static getUserHash($userId, $hash='register')
static addMessage(array $app, array $messageFields)
static getListForJs($lang=LANGUAGE_ID)
static addToken(array $params)
static unRegister(array $app)
static filterList(array $list)
static add($botId, $dialogId)
static getChatId($dialogId, $userId=null)
static getInstance($userId=null)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
const BX_RESIZE_IMAGE_PROPORTIONAL
if(!defined('SITE_ID')) $lang
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
$GLOBALS['____1690880296']
if(empty($signedUserToken)) $key
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']