- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/classes/general/rest.php
- Класс: CForumRestService
- Вызов: CForumRestService::getUserMessage
static function getUserMessage($arParams, $offset, CRestServer $server)
{
$arParams = array_change_key_case($arParams, CASE_UPPER);
global $USER;
$result = array(
'MESSAGES' => array(),
'FILES' => array(),
);
$userId = (
isset($arParams["USER_ID"])
&& intval($arParams["USER_ID"]) > 0
&& self::isAdmin()
? $arParams["USER_ID"]
: $USER->getId()
);
$otherUserMode = ($userId != $USER->getId());
if ($userId <= 0)
{
throw new BitrixRestRestException("User ID can't be empty", "ID_EMPTY", CRestServer::STATUS_WRONG_REQUEST);
}
if (isset($arParams['FIRST_ID']))
{
$options['FIRST_ID'] = intval($arParams['FIRST_ID']);
}
else
{
$options['LAST_ID'] = isset($arParams['LAST_ID']) && intval($arParams['LAST_ID']) > 0? intval($arParams['LAST_ID']): 0;
}
$options['LIMIT'] = isset($arParams['LIMIT'])? (intval($arParams['LIMIT']) > 1000? 1000: intval($arParams['LIMIT'])): 100;
$filter = Array(
'=AUTHOR_ID' => $userId
);
if (isset($options['FIRST_ID']))
{
$order = array();
if (intval($options['FIRST_ID']) > 0)
{
$filter['>ID'] = $options['FIRST_ID'];
}
}
else
{
$order = array('ID' => 'DESC');
if (isset($options['LAST_ID']) && intval($options['LAST_ID']) > 0)
{
$filter[' $filter,
'select' => array(
'ID', 'POST_DATE', 'POST_MESSAGE', 'UF_FORUM_MESSAGE_DOC'
),
'order' => $order,
'limit' => $options['LIMIT']
));
$attachedIdList = array();
$messageAttachedList = array();
while($messageFields = $res->fetch())
{
$result['MESSAGES'][$messageFields['ID']] = array(
'ID' => (int)$messageFields['ID'],
'MESSAGE_ID' => (int)$messageFields['ID'],
'DATE' => $messageFields['POST_DATE'],
'MESSAGE' => ($otherUserMode ? '' : (string)$messageFields['POST_MESSAGE']),
'ATTACH' => array()
);
if (!empty($messageFields['UF_FORUM_MESSAGE_DOC']))
{
if (is_array($messageFields['UF_FORUM_MESSAGE_DOC']))
{
$attached = $messageFields['UF_FORUM_MESSAGE_DOC'];
}
elseif (intval($messageFields['UF_FORUM_MESSAGE_DOC']) > 0)
{
$attached = array(intval($messageFields['UF_FORUM_MESSAGE_DOC']));
}
else
{
$attached = array();
}
if (!empty($attached))
{
$attachedIdList = array_merge($attachedIdList, $attached);
}
$messageAttachedList[$messageFields['ID']] = $attached;
}
}
$attachedObjectList = array();
if (
!empty($attachedIdList)
&& Loader::includeModule('disk')
)
{
$res = BitrixDiskAttachedObject::getList(array(
'filter' => array(
'@ID' => array_unique($attachedIdList)
),
'select' => array('ID', 'OBJECT_ID')
));
while($attachedObjectFields = $res->fetch())
{
$diskObjectId = $attachedObjectFields['OBJECT_ID'];
if ($fileData = self::getFileData($diskObjectId))
{
$attachedObjectList[$attachedObjectFields['ID']] = $diskObjectId;
$result['FILES'][$diskObjectId] = $fileData;
}
}
}
foreach ($result['MESSAGES'] as $key => $value)
{
if ($value['DATE'] instanceof BitrixMainTypeDateTime)
{
$result['MESSAGES'][$key]['DATE'] = date('c', $value['DATE']->getTimestamp());
}
if (!empty($messageAttachedList[$key]))
{
foreach($messageAttachedList[$key] as $attachedId)
{
if (!empty($attachedObjectList[$attachedId]))
{
$result['MESSAGES'][$key]['ATTACH'][] = $attachedObjectList[$attachedId];
}
}
}
$result['MESSAGES'][$key] = array_change_key_case($result['MESSAGES'][$key], CASE_LOWER);
}
$result['MESSAGES'] = array_values($result['MESSAGES']);
$result['FILES'] = self::convertFileData($result['FILES']);
return $result;
}