• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/command.php
  • Класс: BitrixImCommand
  • Вызов: Command::update
static function update(array $command, array $updateFields)
{
	$commandId = $command['COMMAND_ID'];
	$moduleId = isset($command['MODULE_ID'])? $command['MODULE_ID']: '';
	$appId = isset($command['APP_ID'])? $command['APP_ID']: '';

	if (intval($commandId) <= 0)
		return false;

	$commands = self::getListCache();
	if (!isset($commands[$commandId]))
		return false;

	if ($moduleId <> '' && $commands[$commandId]['MODULE_ID'] != $moduleId)
		return false;

	if ($appId <> '' && $commands[$commandId]['APP_ID'] != $appId)
		return false;

	if (isset($updateFields['LANG']) && $commands[$commandId]['MODULE_ID'] == 'rest')
	{
		$orm = BitrixImModelCommandLangTable::getList(Array(
			'filter' => Array('=COMMAND_ID' => $commandId)
		));
		while ($row = $orm->fetch())
		{
			BitrixImModelCommandLangTable::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
			{
				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)
			{
			}
		}
	}

	$update = Array();
	if (isset($updateFields['CLASS']) && !empty($updateFields['CLASS']))
	{
		$update['CLASS'] = $updateFields['CLASS'];
	}
	if (isset($updateFields['METHOD_COMMAND_ADD']))
	{
		$update['METHOD_COMMAND_ADD'] = $updateFields['METHOD_COMMAND_ADD'];
	}
	if (isset($updateFields['METHOD_LANG_GET']))
	{
		$update['METHOD_LANG_GET'] = $updateFields['METHOD_LANG_GET'];
	}
	if (isset($updateFields['COMMON']))
	{
		if ($commands[$commandId]['BOT_ID'] <= 0)
		{
			$update['COMMON'] = 'Y';
		}
		else
		{
			$update['COMMON'] = $updateFields['COMMON'] == 'Y'? 'Y': 'N';
		}
	}
	if (isset($updateFields['HIDDEN']))
	{
		$update['HIDDEN'] = $updateFields['HIDDEN'] == 'Y'? 'Y': 'N';
	}
	if (isset($updateFields['EXTRANET_SUPPORT']))
	{
		$update['EXTRANET_SUPPORT'] = $updateFields['EXTRANET_SUPPORT'] == 'Y'? 'Y': 'N';
	}
	if (isset($updateFields['SONET_SUPPORT']))
	{
		$update['SONET_SUPPORT'] = $updateFields['SONET_SUPPORT'] == 'Y'? 'Y': 'N';
	}
	if (!empty($update))
	{
		BitrixImModelCommandTable::update($commandId, $update);

		$cache = BitrixMainDataCache::createInstance();
		$cache->cleanDir(self::CACHE_PATH);
	}

	return true;
}