- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/app.php
- Класс: BitrixImApp
- Вызов: App::update
static function update(array $app, array $updateFields)
{
$appId = intval($app['ID']);
$userId = intval($app['USER_ID']);
$moduleId = isset($app['MODULE_ID'])? $app['MODULE_ID']: '';
$restAppId = isset($app['APP_ID'])? $app['APP_ID']: '';
if (intval($appId) <= 0)
return false;
$apps = self::getListCache();
if (!isset($apps[$appId]))
return false;
if ($moduleId <> '' && $apps[$appId]['MODULE_ID'] != $moduleId)
return false;
if ($restAppId <> '' && $apps[$appId]['APP_ID'] != $restAppId)
return false;
if (isset($updateFields['LANG']) && $apps[$appId]['MODULE_ID'] == 'rest')
{
$orm = BitrixImModelAppLangTable::getList(Array(
'filter' => Array('=APP_ID' => $appId)
));
while ($row = $orm->fetch())
{
BitrixImModelAppLangTable::delete($row['ID']);
}
foreach ($updateFields['LANG'] as $lang)
{
if (!isset($lang['LANGUAGE_ID']) || empty($lang['LANGUAGE_ID']))
continue;
if (!isset($lang['TITLE']) && empty($lang['TITLE']))
continue;
try
{
BitrixImModelAppLangTable::add(array(
'APP_ID' => $appId,
'LANGUAGE_ID' => mb_strtolower($lang['LANGUAGE_ID']),
'TITLE' => $lang['TITLE'],
'DESCRIPTION' => $lang['DESCRIPTION'],
'COPYRIGHT' => $lang['COPYRIGHT']
));
}
catch(Exception $e)
{
}
}
}
$update = Array();
if (isset($updateFields['CONTEXT']) && !empty($updateFields['CONTEXT']))
{
$update['CONTEXT'] = ToLower($updateFields['CONTEXT']);
}
if (isset($updateFields['HASH']) && !empty($updateFields['HASH']))
{
$update['HASH'] = $updateFields['HASH'];
}
if (isset($updateFields['HIDDEN']))
{
$update['HIDDEN'] = $updateFields['HIDDEN'] == 'Y'? 'Y': 'N';
}
if (isset($updateFields['REGISTERED']))
{
$update['REGISTERED'] = $updateFields['REGISTERED'] == 'N'? 'N': 'Y';
}
if (isset($updateFields['IFRAME']) && !empty($updateFields['IFRAME']))
{
$check = parse_url($updateFields['IFRAME']);
if (!isset($check['scheme']) && !isset($check['host']))
{
if (mb_strpos($updateFields['IFRAME'], '/desktop_app/iframe/') !== 0)
{
return false;
}
}
else if (!in_array($check['scheme'], Array('http', 'https')) || empty($check['host']))
{
return false;
}
$update['IFRAME'] = $updateFields['IFRAME'].(isset($check['query'])? '&': '?');
}
else if (isset($updateFields['JS']) && !empty($updateFields['JS']))
{
$update['JS'] = $updateFields['JS'];
}
if (isset($updateFields['IFRAME_WIDTH']))
{
$update['IFRAME_WIDTH'] = intval($updateFields['IFRAME_WIDTH']) > 250? intval($updateFields['IFRAME_WIDTH']): 250;
}
if (isset($updateFields['IFRAME_HEIGHT']))
{
$update['IFRAME_HEIGHT'] = intval($updateFields['IFRAME_HEIGHT']) > 50? intval($updateFields['IFRAME_HEIGHT']): 50;
}
if (isset($updateFields['IFRAME_POPUP']))
{
$update['IFRAME_POPUP'] = $updateFields['IFRAME_POPUP'] == 'Y'? 'Y': 'N';
}
if (isset($updateFields['ICON_ID']) && $updateFields['ICON_ID'])
{
$update['ICON_FILE_ID'] = intval($updateFields['ICON_ID']);
}
if (isset($updateFields['CLASS']) && !empty($updateFields['CLASS']))
{
$update['CLASS'] = $updateFields['CLASS'];
}
if (isset($updateFields['METHOD_LANG_GET']))
{
$update['METHOD_LANG_GET'] = $updateFields['METHOD_LANG_GET'];
}
if (isset($updateFields['EXTRANET_SUPPORT']))
{
$update['EXTRANET_SUPPORT'] = $updateFields['EXTRANET_SUPPORT'] == 'Y'? 'Y': 'N';
}
if (isset($updateFields['LIVECHAT_SUPPORT']))
{
$update['LIVECHAT_SUPPORT'] = $updateFields['LIVECHAT_SUPPORT'] == 'Y'? 'Y': 'N';
}
if (!empty($update))
{
BitrixImModelAppTable::update($appId, $update);
$cache = BitrixMainDataCache::createInstance();
$cache->cleanDir(self::CACHE_PATH);
}
if (BitrixMainLoader::includeModule('pull'))
{
if (
$update['REGISTERED']
|| $update['DOMAIN_HASH']
|| $update['CONTEXT']
|| $update['IFRAME']
|| $update['JS']
|| $update['IFRAME_WIDTH']
|| $update['IFRAME_HEIGHT']
|| $update['IFRAME_POPUP']
)
{
CPullStack::AddShared(Array(
'module_id' => 'im',
'command' => 'appUpdateIcon',
'params' => Array(
'iconId' => $appId,
'userId' => $userId,
'domainHash' => $update['HASH'],
'context' => $update['CONTEXT'],
'js' => $update['JS'],
'iframe' => $update['IFRAME'],
'iframeWidth' => $update['IFRAME_WIDTH'],
'iframeHeight' => $update['IFRAME_HEIGHT'],
'iframePopup' => $update['IFRAME_POPUP'],
),
'extra' => BitrixImCommon::getPullExtra()
));
}
else if ($update['ICON_ID'])
{
}
else
{
CPullStack::AddShared(Array(
'module_id' => 'im',
'command' => 'appDeleteIcon',
'params' => Array(
'iconId' => $appId
),
'extra' => BitrixImCommon::getPullExtra()
));
}
}
return true;
}