- Модуль: imbot
- Путь к файлу: ~/bitrix/modules/imbot/lib/bot/marta.php
- Класс: BitrixImBotBotMarta
- Вызов: Marta::notifyAboutPlans
static function notifyAboutPlans($dialogId, $userId)
{
if (!BitrixMainLoader::includeModule('im'))
return false;
$userData = BitrixImUser::getInstance($userId);
if (!$userData || $userData->isExtranet())
return false;
$dateNow = new BitrixMainTypeDateTime();
if (self::getBotOption($userId, 'planner_message', 0) < $dateNow->format('Ymd'))
{
self::setBotOption($userId, 'planner_message', $dateNow->format('Ymd'));
}
else
{
return false;
}
$language = null;
$botData = BitrixImBot::getCache(self::getBotId());
if ($botData['LANG'])
{
$language = $botData['LANG'];
Loc::loadLanguageFile(__FILE__, $language);
}
$welcomeMessage = '';
$dateNow = new BitrixMainTypeDateTime();
if (self::getBotOption($userId, 'last_message', 0) < $dateNow->format('Ymd'))
{
$welcomeMessage = self::getHelloMessage($userId, $language).' :) [br]';
}
$answer = '';
$attaches = Array();
if (BitrixMainLoader::includeModule('intranet') && BitrixMainLoader::includeModule('calendar'))
{
$calendarEventUrl = CCalendar::GetPath('user', $userId, true);
$attach = new CIMMessageParamAttach(1, CIMMessageParamAttach::CHAT);
$events = CCalendarEventHandlers::OnPlannerInit(Array(
'FULL' => true,
'USER_ID' => $userId
));
$eventsForMessage = [];
if (is_array($events['DATA']['EVENTS']))
{
foreach ($events['DATA']['EVENTS'] as $event)
{
if ($event['TIME_FROM'] == $event['TIME_TO'] && $event['TIME_FROM'] == '00:00')
{
$eventTimeFormatted = Loc::getMessage('IMBOT_BOT_MESSAGE_CALEND_4', null, $language);
}
else
{
$eventTimeFormatted = Loc::getMessage('IMBOT_BOT_MESSAGE_CALEND_3', Array('#TIME_1#' => $event['TIME_FROM'], '#TIME_2#' => $event['TIME_TO']), $language);
}
// if (count($eventsForMessage) <= 10)
// {
// $eventsForMessage[] = $eventTimeFormatted . ' - ' .$event['NAME'];
// }
$attach->AddGrid(Array(
Array(
"VALUE" => $eventTimeFormatted,
"LINK" => CHTTP::urlAddParams(
$calendarEventUrl,
[
'EVENT_ID' => (int)$event['ID'],
'EVENT_DATE' => urlencode($event['DATE_FROM'])
]),
"DISPLAY" => "LINE",
"WIDTH" => 120,
),
Array(
"VALUE" => $event['NAME'],
"DISPLAY" => "LINE"
),
));
}
}
if (!$attach->IsEmpty())
{
$answer .= Loc::getMessage('IMBOT_BOT_MESSAGE_CALEND_1_'.mt_rand(1, 4), null, $language);
// if (!empty($eventsForMessage))
// {
// $attach->SetDescription(implode(', ', $eventsForMessage));
// }
$attaches[] = $attach;
}
}
if (BitrixMainLoader::includeModule('tasks'))
{
try
{
$tasksCounter = CTaskListCtrl::getMainCounterForUser($userId);
if ($tasksCounter > 0)
{
$tasksUrl = CTaskCountersNotifier::getTasksListLink($userId);
$pluralForm = CTasksTools::getPluralForm($tasksCounter, true);
if ($pluralForm !== false)
$taskMessage = 'IMBOT_BOT_MESSAGE_TASKS_'.($pluralForm+1);
else
$taskMessage = 'IMBOT_BOT_MESSAGE_TASKS_2';
$answer = $answer.Loc::getMessage($taskMessage, Array('#TASKS_COUNT#' => $tasksCounter, '#URL_START#' => '[URL='.$tasksUrl.']', '#URL_END#' => '[/URL]'), $language);
}
}
catch (Exception $e)
{}
}
if ($answer)
{
$answer = $welcomeMessage.'[br]'.$answer;
BitrixImBot::startWriting(Array('BOT_ID' => self::getBotId()), $dialogId);
BitrixImBot::addMessage(Array('BOT_ID' => self::getBotId()), Array(
'DIALOG_ID' => $dialogId,
'MESSAGE' => $answer,
'ATTACH' => $attaches,
'URL_PREVIEW' => 'N'
));
}
return true;
}