Блог Николая Семенцова

Партнер компании 1с-битрикс

Отправка сообщения при создание элемента инфоблока

Необходимо было сделать более менее универсальные обработчики отправки сообщения на почту при создание элемента инфоблока. Данной код внесет все значения свойств в поля почтового сообщения.
// при создании нового отзыва отсылать письмо  
AddEventHandler('iblock', 'OnAfterIBlockElementAdd', 'IBElementCreateAfterHandler');
function IBElementCreateAfterHandler(&$arFields) {
      
      // при создании новоя заявки отошлем человеку письмо    
      if($arFields['IBLOCK_ID'] == 6) { 
            $EVENT_TYPE = 'ADD_IBLOCK_REQUEST'; // тип почтового шаблона   

            
            $arMailFields['ID'] = $arFields['ID'];  
            $arMailFields['IBLOCK_ID'] = $arFields['IBLOCK_ID'];  
            $arMailFields['NAME'] = $arFields['NAME'];  
            $arMailFields['PREVIEW_TEXT'] = $arFields['PREVIEW_TEXT'];  
                                
            foreach($arFields['PROPERTY_VALUES'] as $key => $value) {
                if(is_numeric($key)) {
                    $res = CIBlockElement::GetProperty($arFields['IBLOCK_ID'], $arFields['ID'], "sort", "asc", array("ID" => $key));                      
                } 
                else {
                    $res = CIBlockElement::GetProperty($arFields['IBLOCK_ID'], $arFields['ID'], "sort", "asc", array("CODE" => $key));                     
                }

                while ($ob = $res->GetNext())
                {                        
                      $ValueProper = $ob;  
                }   
                

                // если это привязанные элементы получим их 
                if($ValueProper['PROPERTY_TYPE'] == 'E') {
 
                    if(is_array($arFields['PROPERTY_VALUES'][$ValueProper['ID']])){
                        $properElement = $arFields['PROPERTY_VALUES'][$ValueProper['ID']];    
                    }
                    else {
                        $properElement = array($arFields['PROPERTY_VALUES'][$ValueProper['ID']]);        
                    }
                    
                    $mailListElement = '';
                    $arSelect = Array("ID", "NAME");
                    $arFilter = Array("ID"=> $properElement);
                    $respro = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
                    while($arrproRes = $respro->Fetch())
                    {
                        $mailListElement .= $arrproRes['NAME'].', ' ;
                    } 
                    $arMailFields['PROPERTY_'.$ValueProper['CODE']] = $mailListElement;   
                }
                elseif($ValueProper['PROPERTY_TYPE'] == 'S'){
                    $arMailFields['PROPERTY_'.$ValueProper['CODE']] = $ValueProper['VALUE'];    
                }
                else {

                    $arMailFields[$ValueProper['CODE']] = $ValueProper['VALUE'];
                    if(!empty($ValueProper['VALUE_ENUM'])) {
                        $arMailFields['PROPERTY_'.$ValueProper['CODE']] = $ValueProper['VALUE_ENUM'];   
                    }                    
                }                            

            }
            

            CEvent::Send($EVENT_TYPE, SITE_ID, $arMailFields);
      }      
      
} 

Опубликовано: 24 марта 2013




Помогла заметка? Жмите кнопки ниже


ВКонтакт Facebook Google Plus Одноклассники Twitter Livejournal Liveinternet Mail.Ru





comments powered by Disqus