<?
AddEventHandler
("forum""onBeforeMessageAdd", Array("CForumHandlers""onBeforeMessageAddHandler"));

class 
CForumHandlers
{
    function 
onBeforeMessageAddHandler(&$arFields)
    {
        if (
$_REQUEST["addreview"]>&& CModule::IncludeModule("iblock"))
        {
            
$arElement GetIBlockElement($_REQUEST["addreview"]);
            if (
$arElement["PROPERTIES"]["FORUM_ID"]["VALUE"]>&& $arElement["PROPERTIES"]["TOPIC_ID"]["VALUE"]>0)
            {
                unset(
$_REQUEST["addreview"]);

                
$arFields["FORUM_ID"] = $arElement["PROPERTIES"]["FORUM_ID"]["VALUE"];
                
$arFields["TOPIC_ID"] = $arElement["PROPERTIES"]["TOPIC_ID"]["VALUE"];
                
CForumMessage::Add($arFields);

                global 
$APPLICATION;
                
$APPLICATION->throwException("/forum/forum".$arFields["FORUM_ID"]."/topic".$arFields["TOPIC_ID"]."/""localredirect");
                return 
false;
            }
            elseif (
$arElement["PROPERTIES"]["FORUM_ID"]["VALUE"]>0)
            {
                
$arFields["FORUM_ID"] = $arElement["PROPERTIES"]["FORUM_ID"]["VALUE"];
                
CIBlockElement::SetPropertyValueCode($arElement["ID"], "TOPIC_ID"$arFields["TOPIC_ID"]);

                
$userStartID $arElement["CREATED_BY"];
                
$rsUser CUser::GetByID($userStartID);
                
$arUser $rsUser->GetNext();
                
$uName trim($arUser["NAME"]." ".$arUser["LAST_NAME"]);
                
$arFUser CForumUser::GetByUSER_ID($userStartID);
                if (
$arFUser["SHOW_NAME"]!="Y" || $uName=="")
                {
                    
$uName $arUser["LOGIN"];
                }

                
$arNewFieldsTopic = array(
                                            
"TITLE" => $arElement["NAME"],
                                            
"USER_START_ID" => $userStartID,
                                            
"USER_START_NAME" => $uName,
                                            
"ICON_ID" => $_REQUEST["ICON_ID"],
                                            
"LAST_POSTER_ID" => $userStartID,
                                            
"LAST_POSTER_NAME" => $uName,
                                            
"LAST_POST_DATE" => date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), time()-1),
                                            );
                
CForumTopic::Update($arFields["TOPIC_ID"], $arNewFieldsTopic);

                
$arImage CFile::GetFileArray($arElement["PREVIEW_PICTURE"]);
                
$arFieldsP = array(
                                
"AUTHOR_ID" => $userStartID,
                                
"AUTHOR_NAME" => $uName,
                                
"POST_MESSAGE" => "[img]".$arImage["SRC"]."[/img]\n\n[URL=".$arElement["DETAIL_PAGE_URL"]."]".$arElement["NAME"]."[/URL]\n\n".$arElement["PREVIEW_TEXT"],
                                
"POST_DATE" => date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), time()-1),
                                
"FORUM_ID" => $arFields["FORUM_ID"],
                                
"TOPIC_ID" => $arFields["TOPIC_ID"],
                                
"APPROVED" => "Y",
                                );
                unset(
$_REQUEST["addreview"]);
                
CForumMessage::Add($arFieldsP);
            }
        }
    }
}
?>