В общем виде задача решается довольно просто - написанием обработчика, который бы перехватывал уведомление по email и создавал бы на его основе личное сообщение форума этому же пользователю. Задача довольно частная, в общем случае удобнее пользоваться email, но есть такие клиенты, которые любят больше читать личные сообщения. Эту задачу призван решить данный обработчик в /bitrix/php_interface/init.php:
<?
AddEventHandler("main", "OnBeforeEventSend", "my_OnBeforeEventSend");
function my_OnBeforeEventSend(&$arFields, &$db_mail_result_array)
{
if($db_mail_result_array["ID"] == 19) {
$db_user = CUser::GetList(($by="NAME"), ($order="desc"), array("EMAIL"=>$arFields["RECIPIENT"]));
if($ar_user=$db_user->Fetch()) {
CModule::IncludeModule("forum");
$POST_MESSAGE = 'Новое сообщение в отслеживаемом форуме "'.$arFields["FORUM_NAME"].'" оставил пользователь '.$arFields["AUTHOR"].' чтобы просмотреть его, перейдите по ссылке http://'.$arFields["SERVER_NAME"].$arFields["PATH2FORUM"].'';
$arNEWFields = Array(
"AUTHOR_ID" => "1",
"POST_DATE" => $arFields["MESSAGE_DATE"],
"POST_SUBJ" => "Новое сообщение в отслеживаемом форуме",
"POST_MESSAGE" => $POST_MESSAGE,
"USER_ID" => $ar_user["ID"],
"FOLDER_ID" => 1,
"IS_READ" => "N",
"USE_SMILES" => "Y",
"AUTHOR_NAME" => $arFields["AUTHOR"]
);
$ID = CForumPrivateMessage::Send($arNEWFields);
}
}
}
?> |