Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Опять 25... Новые приклучения с апи функциями...

00 голосов
2
Добрый день.

Не пойму что я делаю не правильно?
Код
//файл /bitrix/php_interface/init.php
//Вещаем хандел на событие по добовлению элемента в инфоблок.

AddEventHandler("iblock", "OnAfterIBlockElementAdd",   array("ComentComponentForum", "CreateTopic") );

class ComentComponentForum {
   //Создаем топик 
   function CreateTopic(&$arFields){
      $ElemValue = '';

               //Если есть свойсто 8   
      if(!empty($arFields['PROPERTY_VALUES'][8])):
         foreach($arFields['PROPERTY_VALUES'][8] as $key=>$item){
         $ElemValue = $item[VALUE]; //Получение из ствойства ID Элемента      
      }
      //если получили ID элемента нужно выдернуть ID Форум группы из значения.   
      if(!empty($ElemValue)){   
         $res = CIBlockElement::GetList(Array("SORT"=>"ASC"),  Array("IBLOCK_ID"=>"19", "ID"=>$ElemValue , "ACTIVE"=>"Y") ,
         false, Array("UF_ID_FORUM"));
         $arFiel = $res->GetNext();
      endif;
      
      //ob_start();
           //print_r($arFiel); 
      //$s = $value;
        $s = $arFiel['PROPERTY_9_ID'];
           //$s = ob_get_contents();
      //ob_end_clean;

      AddMessage2Log($s);
   }
}


//Вот тут у меня трабы немогу выдернуть дополнительное поле
ID дополнительного кода 9
Символьный код ID_FORUM
Код
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"),  Array("IBLOCK_ID"=>"19", "ID"=>$ElemValue , "ACTIVE"=>"Y") ,
         false, Array('UF_ID_FORUM'));
         $arFiel = $res->GetNext();

Я пробывал и PROPERTY_9_ID_FORUM и UF_ID_FORUM и PROPERTY_9_ID
Но желаемое свойсто так и не выводится..

Все это нужно чтобы при добавление элемента то создавался топик в соответственном разделе форумма.
в дополнительном поле хранится ID форума.

Спасибо.
спросил 14 Сен, 13 от hAWPeN (640 баллов)

2 Ответы

00 голосов
Это ТТ..
Пропустил 11 параметр....
вот рабочее решение..
Код
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"),  Array("IBLOCK_ID"=>"19", "ID"=>$ElemValue , "ACTIVE"=>"Y") ,
         false, false,  Array('PROPERTY_9_ID'));
ответил 15 Сен, 13 от hAWPeN (640 баллов)
00 голосов
Добрый день почему AddEventHandler выполняет дважды действие при добавлении элемента7

Вот код
Код
//файл /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;
   }
}


Посмотрите пожалуйста.
ответил 13 Дек, 13 от hAWPeN (640 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
2 ответов
спросил 06 Апр, 14 от gotmax (100 баллов)
0 голосов
3 ответов
0 голосов
0 ответов
0 голосов
3 ответов
спросил 08 Апр, 14 от hAWPeN (640 баллов)