- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/command.php
- Класс: BitrixImCommand
- Вызов: Command::register
static function register(array $fields)
{
$moduleId = $fields['MODULE_ID'];
$command = mb_substr($fields['COMMAND'], 0, 1) == '/'? mb_substr($fields['COMMAND'], 1) : $fields['COMMAND'];
$botId = isset($fields['BOT_ID'])? intval($fields['BOT_ID']): 0;
if ($botId > 0 && (!BitrixImUser::getInstance($botId)->isExists() || !BitrixImUser::getInstance($botId)->isBot()))
{
$botId = 0;
}
$common = isset($fields['COMMON']) && $fields['COMMON'] == 'Y'? 'Y': 'N';
if ($botId <= 0)
{
$common = 'Y';
}
$hidden = isset($fields['HIDDEN']) && $fields['HIDDEN'] == 'Y'? 'Y': 'N';
$sonetSupport = isset($fields['SONET_SUPPORT']) && $fields['SONET_SUPPORT'] == 'Y'? 'Y': 'N';
$extranetSupport = isset($fields['EXTRANET_SUPPORT']) && $fields['EXTRANET_SUPPORT'] == 'Y'? 'Y': 'N';
/* vars for module install */
$class = isset($fields['CLASS'])? $fields['CLASS']: '';
$methodCommandAdd = isset($fields['METHOD_COMMAND_ADD'])? $fields['METHOD_COMMAND_ADD']: '';
$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 == '')
{
return false;
}
if ($moduleId == 'rest')
{
if (empty($appId) || empty($langSet) && $hidden == 'N')
{
return false;
}
}
else
{
if (empty($class) || empty($methodCommandAdd))
{
return false;
}
if (empty($methodLangGet))
{
$hidden = 'Y';
}
}
$commands = self::getListCache();
foreach ($commands as $cmd)
{
if ($botId)
{
if ($botId == $cmd['BOT_ID'] && $command == $cmd['COMMAND'])
{
return $cmd['ID'];
}
}
else if ($appId)
{
if ($appId == $cmd['APP_ID'] && $command == $cmd['COMMAND'])
{
return $cmd['ID'];
}
}
else if ($moduleId == $cmd['MODULE_ID'] && $command == $cmd['COMMAND'])
{
return $cmd['ID'];
}
}
$result = BitrixImModelCommandTable::add(Array(
'BOT_ID' => $botId,
'MODULE_ID' => $moduleId,
'COMMAND' => $command,
'COMMON' => $common,
'HIDDEN' => $hidden,
'SONET_SUPPORT' => $sonetSupport,
'EXTRANET_SUPPORT' => $extranetSupport,
'CLASS' => $class,
'METHOD_COMMAND_ADD' => $methodCommandAdd,
'METHOD_LANG_GET' => $methodLangGet,
'APP_ID' => $appId
));
if (!$result->isSuccess())
return false;
$cache = BitrixMainDataCache::createInstance();
$cache->cleanDir(self::CACHE_PATH);
$commandId = $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
{
BitrixImModelCommandLangTable::add(array(
'COMMAND_ID' => $commandId,
'LANGUAGE_ID' => mb_strtolower($lang['LANGUAGE_ID']),
'TITLE' => $lang['TITLE'],
'PARAMS' => isset($lang['PARAMS'])? $lang['PARAMS']: ''
));
}
catch(Exception $e)
{
}
}
}
return $commandId;
}