10Loc::loadMessages(__FILE__);
21 protected ?
string $lang = LANGUAGE_ID;
30 return isset($this->botId) ? (int)$this->botId :
null;
36 $cachedCommandList = $cache->getVars();
38 if ($cachedCommandList !==
false)
40 return $cachedCommandList;
44 if (empty($commandList))
59 $cache->initCache(self::CACHE_TTL, $this->
getCacheKey($id), $cacheDir);
66 $cacheSubDir = substr(md5($id),2,2);
68 return self::CACHE_PATH .
"{$cacheSubDir}/" . self::CACHE_KEY . $id .
"/{$this->getCacheKey($id)}/";
73 $cacheSubDir = substr(md5($id),2,2);
75 return self::CACHE_PATH .
"{$cacheSubDir}/" . self::CACHE_KEY . $id .
"/";
80 return $this->
lang .
'_' . $id;
87 $query =CommandTable::query()
89 ->where(
'BOT_ID', $id)
93 while ($row =
$query->fetch())
115 return self::REST_NAME;
126 foreach ($commandList as $command)
129 'id' => is_numeric($command[
'ID']) ? (int)$command[
'ID'] : $command[
'ID'],
130 'botId' => (int)$command[
'BOT_ID'],
131 'command' =>
'/'. $command[
'COMMAND'],
132 'category' => $command[
'CATEGORY'],
133 'common' => $command[
'COMMON'],
134 'context' => $command[
'CONTEXT'],
135 'title' => $command[
'TITLE'],
136 'params' => $command[
'PARAMS'],
137 'extranet' => $command[
'EXTRANET_SUPPORT'],
146 $this->loadRestLang =
false;
149 foreach ($commandList as $command)
151 $command[
'COMMAND_ID'] = $command[
'ID'];
152 $command[
'CONTEXT'] =
'';
154 if ($command[
'BOT_ID'] > 0)
158 else if ($command[
'MODULE_ID'] ==
'im')
160 $command[
'CATEGORY'] = Loc::getMessage(
'COMMAND_IM_CATEGORY');
164 $module = (new \CModule())->createModuleObject($command[
'MODULE_ID']);
165 $command[
'CATEGORY'] = $module->MODULE_NAME;
168 if (!empty($command[
'CLASS']) && !empty($command[
'METHOD_LANG_GET']))
177 $result[(int)$command[
'ID']] = $command;
180 if ($this->loadRestLang)
193 && class_exists($command[
"CLASS"])
194 && method_exists($command[
"CLASS"], $command[
"METHOD_LANG_GET"]))
196 $localize = call_user_func_array(
197 [$command[
"CLASS"], $command[
"METHOD_LANG_GET"]],
198 [$command[
'COMMAND'], $this->
lang]
203 $command[
'TITLE'] = $localize[
'TITLE'];
204 $command[
'PARAMS'] = $localize[
'PARAMS'];
208 $command[
'HIDDEN'] =
'Y';
209 $command[
'METHOD_LANG_GET'] =
'';
214 $command[
'HIDDEN'] =
'Y';
215 $command[
'METHOD_LANG_GET'] =
'';
222 $command[
'TITLE'] =
'';
223 $command[
'PARAMS'] =
'';
225 if ($command[
'MODULE_ID'] ===
'rest')
227 $this->loadRestLang =
true;
229 if ($command[
'BOT_ID'] <= 0 && $command[
'APP_ID'])
231 $res = \Bitrix\Rest\AppTable::getList([
232 'filter' =>
array(
'=CLIENT_ID' => $command[
'APP_ID']),
237 $command[
'CATEGORY'] = !empty(
$app[
'APP_NAME'])
239 : (!empty(
$app[
'APP_NAME_DEFAULT'])
240 ?
$app[
'APP_NAME_DEFAULT']
254 $orm = \Bitrix\Im\Model\CommandLangTable::getList();
255 while ($commandLang = $orm->fetch())
257 if (!isset(
$result[$commandLang[
'ID']]))
262 $langSet[$commandLang[
'ID']][$commandLang[
'LANGUAGE_ID']][
'TITLE'] = $commandLang[
'TITLE'];
263 $langSet[$commandLang[
'ID']][$commandLang[
'LANGUAGE_ID']][
'PARAMS'] = $commandLang[
'PARAMS'];
266 $langAlter = \Bitrix\Im\Bot::getDefaultLanguage();
267 foreach (
$result as $commandId => $commandData)
269 if (isset($langSet[$commandId][$this->
lang]))
274 else if (isset($langSet[$commandId][$langAlter]))
276 $result[$commandId][
'TITLE'] = $langSet[$commandId][$langAlter][
'TITLE'];
277 $result[$commandId][
'PARAMS'] = $langSet[$commandId][$langAlter][
'PARAMS'];
279 else if (isset($langSet[$commandId]))
281 $langSetCommand = array_values($langSet[$commandId]);
282 $result[$commandId][
'TITLE'] = $langSetCommand[0][
'TITLE'];
283 $result[$commandId][
'PARAMS'] = $langSetCommand[0][
'PARAMS'];
289 if (empty($value[
'TITLE']))
292 $commandLang[
'METHOD_LANG_GET'] =
'';
305 Array(
'MODULE_ID' => SORT_ASC),
320 'TITLE' => Loc::getMessage(
"COMMAND_DEF_ME_TITLE"),
321 'PARAMS' => Loc::getMessage(
"COMMAND_DEF_ME_PARAMS"),
323 'EXTRANET_SUPPORT' =>
'Y',
327 'TITLE' => Loc::getMessage(
"COMMAND_DEF_LOUD_TITLE"),
328 'PARAMS' => Loc::getMessage(
"COMMAND_DEF_LOUD_PARAMS"),
330 'EXTRANET_SUPPORT' =>
'Y',
334 'TITLE' => Loc::getMessage(
"COMMAND_DEF_QUOTE_TITLE"),
335 'PARAMS' => Loc::getMessage(
"COMMAND_DEF_QUOTE_PARAMS"),
337 'EXTRANET_SUPPORT' =>
'Y',
340 'COMMAND' =>
'rename',
341 'TITLE' => Loc::getMessage(
"COMMAND_DEF_RENAME_TITLE"),
342 'PARAMS' => Loc::getMessage(
"COMMAND_DEF_RENAME_PARAMS"),
344 'EXTRANET_SUPPORT' =>
'Y',
345 'CATEGORY' => Loc::getMessage(
"COMMAND_DEF_CATEGORY_CHAT"),
349 'COMMAND' =>
'getDialogId',
350 'TITLE' => Loc::getMessage(
"COMMAND_DEF_DIALOGID_TITLE"),
352 'EXTRANET_SUPPORT' =>
'N',
353 'CATEGORY' => Loc::getMessage(
"COMMAND_DEF_CATEGORY_CHAT")
356 'COMMAND' =>
'webrtcDebug',
357 'TITLE' => Loc::getMessage(
"COMMAND_DEF_WD_TITLE"),
359 'EXTRANET_SUPPORT' =>
'Y',
360 'CATEGORY' => Loc::getMessage(
"COMMAND_DEF_CATEGORY_DEBUG"),
365 $imCommands = Array();
366 foreach ($defaultCommands as
$i => $command)
368 $newCommand[
'ID'] =
'def'.$i;
369 $newCommand[
'BOT_ID'] = 0;
370 $newCommand[
'APP_ID'] =
'';
371 $newCommand[
'COMMAND'] = $command[
'COMMAND'];
372 $newCommand[
'HIDDEN'] = $command[
'HIDDEN'] ??
'N';
373 $newCommand[
'COMMON'] =
'Y';
374 $newCommand[
'EXTRANET_SUPPORT'] = $command[
'EXTRANET_SUPPORT'] ??
'N';
375 $newCommand[
'SONET_SUPPORT'] = $command[
'SONET_SUPPORT'] ??
'N';
376 $newCommand[
'CLASS'] =
'';
377 $newCommand[
'METHOD_COMMAND_ADD'] =
'';
378 $newCommand[
'METHOD_LANG_GET'] =
'';
379 if (!$command[
'TITLE'])
381 $newCommand[
'HIDDEN'] =
'Y';
383 $newCommand[
'MODULE_ID'] =
'im';
384 $newCommand[
'COMMAND_ID'] = $newCommand[
'ID'];
385 $newCommand[
'CATEGORY'] = $command[
'CATEGORY'] ?? Loc::getMessage(
'COMMAND_IM_CATEGORY');
386 $newCommand[
'CONTEXT'] = $command[
'CONTEXT'] ??
'';
387 $newCommand[
'TITLE'] = $command[
'TITLE'] ??
'';
388 $newCommand[
'PARAMS'] = $command[
'PARAMS'] ??
'';
390 $imCommands[$newCommand[
'COMMAND_ID']] = $newCommand;
394 if (is_array($commandList))
396 foreach ($commandList as
$key => $command)
static getInstance($userId=null)
static getRestEntityName()
toRestFormat(array $option=[])
setModuleParams(array $command)
commandRestLang(array $result)
setModuleRestParams(array $command)
saveInCache(Cache $cache, array $commandList)
mergeWithDefaultCommands($commandList)
static cleanCache(int $id)
sortCommandData(array $result)
static getDeleteDir(int $id)
prepareData(array $commandList)
getCommandListFromDb(int $id)
endDataCache($vars=false)
startDataCache($TTL=false, $uniqueString=false, $initDir=false, $vars=array(), $baseDir='cache')
static includeModule($moduleName)
static sortByColumn(array &$array, $columns, $callbacks='', $defaultValueIfNotSetValue=null, $preserveKeys=false)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!defined('SITE_ID')) $lang
if(empty($signedUserToken)) $key