//файл /bitrix/php_interface/init.php
AddEventHandler("iblock", "OnAfterIBlockElementAdd", array("ComentComponentForum", "CreateTopic") );
class ComentComponentForum {
//Создаем топик
function CreateTopic(&$arFields){
include_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/forum/include.php';
$ElemValue = '';
//Найти ID_TOPIC ID
$properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("IBLOCK_ID"=>$arFields['IBLOCK_ID']));
$IDProperty = '';
$IDPropertyFORUM = '';
//ob_start();
while ($prop_fields = $properties->GetNext()){
if($prop_fields['CODE']=='ID_TOPIC') $IDPropertyTOPIC = $prop_fields["ID"];
if($prop_fields['CODE']=='FORUM_FID')
$IDPropertyFORUM = $prop_fields['ID'];
}
foreach($arFields['PROPERTY_VALUES'] as $key=>$item){
if($key==$IDPropertyFORUM){
$Propertys[] = 'PROPERTY_'.$IDPropertyFORUM.'_ID';
$ElemValue = $item['n0']['VALUE'];
}
}
//print_r($Propertys);
//Если получили ID элемента нужно выдернуть ID Форум группы из значения.
if(!empty($ElemValue)){
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>19, "ID"=>$ElemValue , "ACTIVE"=>"Y") ,
false, false, array('PROPERTY_9_ID'));
$arFiel = $res->GetNext();
//Получаем ID Форума...
$FID = $arFiel['PROPERTY_9_ID_VALUE'];
}
//print '$FID= '.$FID;
//print_r($arFiel);
global $USER;
$UserName = $USER->GetFullName();
/// Ура унас есть ИД к Форуму.
//Мы прошли проверку на доступ к форумму..
//Теперь мы можем создать топик.
if($arFields['DETAIL_TEXT']=='') $arFields['DETAIL_TEXT']= '...';
$arFieldsG = array(
'POST_MESSAGE' =>$arFields['DETAIL_TEXT'],
'TITLE'=> $arFields['NAME'],
'AUTHOR_NAME'=>$UserName,
'DESCRIPTION'=>'',
'ICON_ID'=>0,
'USE_SMILES'=>0,
'ATTACH_IMG'=> array()
);
if(!empty($FID) ){
$result = ForumAddMessage('NEW' , $FID , 0, 0, $arFieldsG, $strErrorMessage , $strOKMessage);
AddMessage2Log($strErrorMessage ."/n".$strOKMessage);
}
if($result!=false)
CIBlockElement::SetPropertyValueCode($arFields["ID"], "ID_TOPIC", $result);
/*
print_r($arFields);
$s = ob_get_contents();
ob_end_clean;
AddMessage2Log($s);*/
return true;
}
}
|