- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_message_param.php
- Класс: CIMMessageParam
- Вызов: CIMMessageParam::PrepareValues
static function PrepareValues($values, $withDefault = false)
{
$arValues = Array();
$arDefault = self::GetDefault();
foreach($values as $key => $value)
{
if (in_array($key, Array('IS_ERROR', 'IS_DELIVERED', 'IS_DELETED', 'BETA', 'IS_EDITED', 'CAN_ANSWER', 'IMOL_QUOTE_MSG', 'SENDING', 'URL_ONLY', 'LARGE_FONT', 'CRM_FORM_FILLED')))
{
$arValues[$key] = in_array($value[0], Array('Y', 'N'))? $value[0]: $arDefault[$key];
}
else if (in_array($key, Array('KEYBOARD_UID')))
{
$arValues[$key] = intval($value);
}
else if (in_array($key, Array('CALL_ID', 'CHAT_ID', 'CHAT_MESSAGE', 'IMOL_VOTE_SID', 'IMOL_VOTE_USER', 'IMOL_VOTE_HEAD', 'SENDING_TS', 'IMOL_SID')))
{
$arValues[$key] = intval($value[0]);
}
else if (in_array($key, Array('CHAT_LAST_DATE')))
{
if (is_object($value) && $value instanceof BitrixMainTypeDateTime)
{
$arValues[$key] = $value;
}
else if (is_object($value[0]) && $value[0] instanceof BitrixMainTypeDateTime)
{
$arValues[$key] = $value[0];
}
else
{
$arValues[$key] = BitrixMainTypeDateTime::createFromTimestamp(intval($value[0]));
}
}
else if ($key == 'DATE_TEXT')
{
if (is_array($value) && !empty($value))
{
foreach ($value as $k => $v)
{
$arValues[$key][$k] = htmlspecialcharsbx($v);
}
}
else if (!is_array($value))
{
$arValues[$key] = htmlspecialcharsbx($value);
}
else
{
$arValues[$key] = $arDefault[$key];
}
}
else if ($key == 'CHAT_USER' || $key == 'DATE_TS' || $key == 'FILE_ID' || $key == 'LIKE' || $key == 'FAVORITE' || $key == 'KEYBOARD_ACTION' || $key == 'URL_ID' || $key == 'LINK_ACTIVE' || $key == 'USERS')
{
if (is_array($value) && !empty($value))
{
foreach ($value as $k => $v)
{
$arValues[$key][$k] = intval($v);
}
}
else if (!is_array($value) && intval($value) > 0)
{
$arValues[$key] = intval($value);
}
else
{
$arValues[$key] = $arDefault[$key];
}
}
else if ($key == 'CONNECTOR_MID')
{
if (is_array($value) && !empty($value))
{
foreach ($value as $k => $v)
{
$arValues[$key][$k] = $v;
}
}
else if (!is_array($value) && $value <> '')
{
$arValues[$key] = $value;
}
else
{
$arValues[$key] = $arDefault[$key];
}
}
else if ($key == 'NOTIFY')
{
if ($value === 'N')
{
$arValues[$key] = $value;
}
else if (is_array($value))
{
if (empty($value) || count($value) === 1 && $value[0] === 'N')
{
$arValues[$key] = 'N';
}
else
{
foreach ($value as $k => $v)
{
$arValues[$key][$k] = intval($v);
}
}
}
else
{
$arValues[$key] = $arDefault[$key];
}
}
else if ($key == 'ATTACH')
{
if (isset($value))
{
$arValues[$key] = CIMMessageParamAttach::PrepareAttach($value);
}
else
{
$arValues[$key] = $arDefault[$key];
}
}
else if (
$key == 'TYPE' ||
$key == 'COMPONENT_ID' ||
$key == 'CLASS' ||
$key == 'IMOL_VOTE' ||
$key == 'IMOL_VOTE_TEXT' ||
$key == 'IMOL_VOTE_LIKE' ||
$key == 'IMOL_VOTE_DISLIKE' ||
$key == 'IMOL_FORM' ||
$key == 'IMOL_COMMENT_HEAD' ||
$key == 'IMOL_DATE_CLOSE_VOTE' ||
$key == 'IMOL_TIME_LIMIT_VOTE' ||
$key == 'CRM_FORM_ID' ||
$key == 'CRM_FORM_SEC'
)
{
$arValues[$key] = isset($value[0])? $value[0]: '';
}
else if ($key == 'CONNECTOR_MID')
{
$arValues[$key] = $value;
}
else if ($key == 'NAME')
{
$arValues[$key] = isset($value[0])? htmlspecialcharsbx($value[0]): $arDefault[$key];
}
else if ($key == 'USER_ID')
{
$arValues[$key] = isset($value[0])? intval($value[0]): $arDefault[$key];
}
else if ($key == 'AVATAR')
{
if (isset($value))
{
$arValues[$key] = CIMChat::GetAvatarImage($value[0], 200, false);
}
else
{
$arValues[$key] = $arDefault[$key];
}
}
else if (isset($arDefault[$key]))
{
$arValues[$key] = $value;
}
}
if ($withDefault)
{
foreach($arDefault as $key => $value)
{
if (!isset($arValues[$key]))
{
$arValues[$key] = $value;
}
}
}
else
{
foreach($arDefault as $key => $value)
{
if (isset($arValues[$key]) && $arValues[$key] == $value)
{
unset($arValues[$key]);
}
}
}
return $arValues;
}