- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/textareaicon.php
- Класс: BitrixImTextareaIcon
- Вызов: TextareaIcon::register
static function register(array $fields)
{
$moduleId = $fields['MODULE_ID'];
if (strlen($moduleId) <= 0)
{
return false;
}
$iframe = '';
$iframeWidth = 350;
$iframeHeight = 250;
$jscommand = isset($fields['JS'])? $fields['JS']: '';
if (isset($fields['IFRAME']))
{
$check = parse_url($fields['IFRAME']);
if (!isset($check['scheme']) && !isset($check['host']))
{
if (strpos($fields['IFRAME'], '/desktop_app/iframe/') !== 0)
{
return false;
}
}
else if (!in_array($check['scheme'], Array('http', 'https')) || empty($check['host']))
{
return false;
}
$iframe = $fields['IFRAME'].(isset($check['query'])? '&': '?');
$iframeWidth = isset($fields['IFRAME_WIDTH']) && intval($fields['IFRAME_WIDTH']) > 250? intval($fields['IFRAME_WIDTH']): $iframeWidth;
$iframeHeight = isset($fields['IFRAME_HEIGHT']) && intval($fields['IFRAME_HEIGHT']) > 50? intval($fields['IFRAME_HEIGHT']): $iframeHeight;
}
else if (!$jscommand)
{
return false;
}
$icon = $fields['ICON_CODE'];
if (!$icon)
{
return false;
}
$iconFileId = intval($fields['ICON_FILE_ID']);
$hash = isset($fields['HASH'])? substr($fields['HASH'], 0, 32): 'register';
$context = isset($fields['CONTEXT'])? $fields['CONTEXT']: 'ALL';
$hidden = isset($fields['HIDDEN']) && $fields['HIDDEN'] == 'Y'? 'Y': 'N';
$botId = isset($fields['BOT_ID'])? intval($fields['BOT_ID']): 0;
if ($botId > 0 && (!BitrixImUser::getInstance($botId)->isExists() || !BitrixImUser::getInstance($botId)->isBot()))
{
$botId = 0;
}
$extranetSupport = isset($fields['EXTRANET_SUPPORT']) && $fields['EXTRANET_SUPPORT'] == 'Y'? 'Y': 'N';
/* vars for module install */
$class = isset($fields['CLASS'])? $fields['CLASS']: '';
$methodLangGet = isset($fields['METHOD_LANG_GET'])? $fields['METHOD_LANG_GET']: '';
/* vars for rest install */
$appId = isset($fields['APP_ID'])? $fields['APP_ID']: '';
$langSet = isset($fields['LANG'])? $fields['LANG']: Array();
if ($moduleId == 'rest')
{
if (empty($langSet))
{
return false;
}
}
else
{
if (empty($class) || empty($methodLangGet))
{
return false;
}
}
$icons = self::getListCache();
foreach ($icons as $cmd)
{
if ($botId)
{
if ($botId == $cmd['BOT_ID'] && $icon == $cmd['ICON_CODE'])
{
return $cmd['ID'];
}
}
else if ($appId)
{
if ($appId == $cmd['APP_ID'] && $icon == $cmd['ICON_CODE'])
{
return $cmd['ID'];
}
}
else if ($moduleId == $cmd['MODULE_ID'] && $icon == $cmd['ICON_CODE'])
{
return $cmd['ID'];
}
}
$result = BitrixImModelTextareaIconTable::add(Array(
'HASH' => $hash,
'BOT_ID' => $botId,
'MODULE_ID' => $moduleId,
'ICON_CODE' => $icon,
'ICON_FILE_ID' => $iconFileId,
'CONTEXT' => ToLower($context),
'HIDDEN' => $hidden,
'IFRAME' => $iframe,
'IFRAME_WIDTH' => $iframeWidth,
'IFRAME_HEIGHT' => $iframeHeight,
'JS' => $jscommand,
'EXTRANET_SUPPORT' => $extranetSupport,
'CLASS' => $class,
'METHOD_LANG_GET' => $methodLangGet,
'APP_ID' => $appId
));
if (!$result->isSuccess())
return false;
$cache = BitrixMainDataCache::createInstance();
$cache->cleanDir(self::CACHE_PATH);
$iconId = $result->getId();
if ($moduleId == 'rest')
{
foreach ($langSet as $lang)
{
if (!isset($lang['LANGUAGE_ID']) || empty($lang['LANGUAGE_ID']))
continue;
if (!isset($lang['TITLE']) && empty($lang['TITLE']))
continue;
try
{
BitrixImModelTextareaIconLangTable::add(array(
'ICON_ID' => $iconId,
'LANGUAGE_ID' => strtolower($lang['LANGUAGE_ID']),
'TITLE' => $lang['TITLE'],
'DESCRIPTION' => $lang['DESCRIPTION'],
'COPYRIGHT' => $lang['COPYRIGHT']
));
}
catch(Exception $e)
{
}
}
}
return $iconId;
}