- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/bot/keyboard.php
- Класс: BitrixImBotKeyboard
- Вызов: Keyboard::addButton
public function addButton($params)
{
$button = [];
$button['BOT_ID'] = $this->botId;
$button['TYPE'] = 'BUTTON';
if (
empty($params['TEXT'])
|| !is_string($params['TEXT'])
|| trim($params['TEXT']) == ''
)
{
return false;
}
if (
!empty($params['LINK'])
&& is_string($params['LINK'])
&& preg_match('#^(?:/|https?://)#', $params['LINK'])
)
{
$button['LINK'] = htmlspecialcharsbx($params['LINK']);
}
elseif (
!empty($params['FUNCTION'])
&& is_string($params['FUNCTION'])
)
{
$button['FUNCTION'] = htmlspecialcharsbx($params['FUNCTION']);
}
elseif (!empty($params['APP_ID']))
{
$button['APP_ID'] = (int)$params['APP_ID'];
if (
isset($params['APP_PARAMS'])
&& is_string($params['APP_PARAMS'])
&& trim($params['APP_PARAMS']) <> ''
)
{
$button['APP_PARAMS'] = $params['APP_PARAMS'];
}
}
elseif (
!empty($params['ACTION'])
&& is_string($params['ACTION'])
&& in_array($params['ACTION'], ['PUT', 'SEND', 'COPY', 'CALL', 'DIALOG', 'LIVECHAT', 'HELP'], true)
&& trim($params['ACTION_VALUE']) <> ''
)
{
$button['ACTION'] = $params['ACTION'];
$button['ACTION_VALUE'] = $params['ACTION_VALUE'];
}
elseif (
$this->botId > 0
&& !empty($params['COMMAND'])
&& is_string($params['COMMAND'])
&& trim($params['COMMAND']) <> ''
)
{
$button['COMMAND'] = mb_substr($params['COMMAND'], 0, 1) == '/' ? mb_substr($params['COMMAND'], 1) : $params['COMMAND'];
$button['COMMAND_PARAMS'] = '';
if (
!empty($params['COMMAND_PARAMS'])
&& is_string($params['COMMAND_PARAMS'])
&& trim($params['COMMAND_PARAMS']) <> ''
)
{
$button['COMMAND_PARAMS'] = $params['COMMAND_PARAMS'];
}
}
else
{
return false;
}
$button['TEXT'] = trim($params['TEXT'] ?? '');
$button['VOTE'] = $this->voteMode ? 'Y': 'N';
$blockParam = $params['BLOCK'] ?? null;
$button['BLOCK'] = $blockParam === 'Y'? 'Y': 'N';
$button['WAIT'] = 'N';
$button['CONTEXT'] = in_array(($params['CONTEXT'] ?? null), ['MOBILE', 'DESKTOP']) ? $params['CONTEXT']: 'ALL';
$disabledParam = $params['DISABLED'] ?? null;
$button['DISABLED'] = $disabledParam === 'Y'? 'Y': 'N';
$button['DISPLAY'] = in_array(($params['DISPLAY'] ?? null), ['BLOCK', 'LINE'])? $params['DISPLAY']: 'BLOCK';
if (isset($params['WIDTH']) && (int)$params['WIDTH'] > 0)
{
$button['WIDTH'] = (int)$params['WIDTH'];
}
if (isset($params['BG_COLOR']) && preg_match('/^#([a-fA-F0-9]){3}(([a-fA-F0-9]){3})?b$/D', $params['BG_COLOR']))
{
$button['BG_COLOR'] = $params['BG_COLOR'];
}
else if (isset($this->colors['BG_COLOR']))
{
$button['BG_COLOR'] = $this->colors['BG_COLOR'];
}
if(isset($params['TEXT_COLOR']) && preg_match('/^#([a-fA-F0-9]){3}(([a-fA-F0-9]){3})?b$/D', $params['TEXT_COLOR']))
{
$button['TEXT_COLOR'] = $params['TEXT_COLOR'];
}
else if (isset($this->colors['TEXT_COLOR']))
{
$button['TEXT_COLOR'] = $this->colors['TEXT_COLOR'];
}
if(isset($params['OFF_BG_COLOR']) && preg_match('/^#([a-fA-F0-9]){3}(([a-fA-F0-9]){3})?b$/D', $params['OFF_BG_COLOR']))
{
$button['OFF_BG_COLOR'] = $params['OFF_BG_COLOR'];
}
else if (isset($this->colors['OFF_BG_COLOR']))
{
$button['OFF_BG_COLOR'] = $this->colors['OFF_BG_COLOR'];
}
if(isset($params['OFF_TEXT_COLOR']) && preg_match('/^#([a-fA-F0-9]){3}(([a-fA-F0-9]){3})?b$/D', $params['OFF_TEXT_COLOR']))
{
$button['OFF_TEXT_COLOR'] = $params['OFF_TEXT_COLOR'];
}
else if (isset($this->colors['OFF_TEXT_COLOR']))
{
$button['OFF_TEXT_COLOR'] = $this->colors['OFF_TEXT_COLOR'];
}
$this->buttons[] = $button;
return false;
}