Поддержка серверов

CFormStatus::SetMailTemplate: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=176354

<?php 
//    CFormStatus::SetMailTemplate()
//    /bitrix/modules/form/classes/general/form_callformstatus.php:402

    
function SetMailTemplate($WEB_FORM_ID$STATUS_ID$ADD_NEW_TEMPLATE="Y"$old_SID=""$bReturnFullInfo false)
    {
        global 
$DB$MESS$strError;
        
$err_mess = (CAllForm::err_mess())."<br>Function: SetMailTemplate<br>Line: ";
        
$arrReturn = array();
        
$WEB_FORM_ID intval($WEB_FORM_ID);
        
$q CForm::GetByID($WEB_FORM_ID);
        if (
$arrForm $q->Fetch())
        {
            
$dbRes CFormStatus::GetByID($STATUS_ID);
            if (
$arrStatus $dbRes->Fetch())
            {
                
$MAIL_EVENT_TYPE "FORM_STATUS_CHANGE_".$arrForm["SID"]."_".$arrStatus['ID'];
                if (
strlen($old_SID)>0)
                    
$old_MAIL_EVENT_TYPE "FORM_STATUS_CHANGE_".$old_SID."_".$arrStatus['ID'];

                
$et = new CEventType;
                
$em = new CEventMessage;

                if (
strlen($MAIL_EVENT_TYPE)>0)
                    
$et->Delete($MAIL_EVENT_TYPE);

                
$z CLanguage::GetList($v1$v2);
                
$OLD_MESS $MESS;
                
$MESS = array();
                while (
$arLang $z->Fetch())
                {
                    
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/admin/form_status_mail.php"$arLang["LID"]);

                    
$str "";
                    
$str .= "#EMAIL_TO# - ".GetMessage("FORM_L_EMAIL_TO")."\n";
                    
$str .= "#RS_FORM_ID# - ".GetMessage("FORM_L_FORM_ID")."\n";
                    
$str .= "#RS_FORM_NAME# - ".GetMessage("FORM_L_NAME")."\n";
                    
$str .= "#RS_FORM_SID# - ".GetMessage("FORM_L_SID")."\n";
                    
$str .= "#RS_RESULT_ID# - ".GetMessage("FORM_L_RESULT_ID")."\n";
                    
$str .= "#RS_DATE_CREATE# - ".GetMessage("FORM_L_DATE_CREATE")."\n";
                    
$str .= "#RS_USER_ID# - ".GetMessage("FORM_L_USER_ID")."\n";
                    
$str .= "#RS_USER_EMAIL# - ".GetMessage("FORM_L_USER_EMAIL")."\n";
                    
$str .= "#RS_USER_NAME# - ".GetMessage("FORM_L_USER_NAME")."\n";
                    
$str .= "#RS_STATUS_ID# - ".GetMessage("FORM_L_STATUS_ID")."\n";
                    
$str .= "#RS_STATUS_NAME# - ".GetMessage("FORM_L_STATUS_NAME")."\n";

                    
$et->Add(
                            Array(
                            
"LID"            => $arLang["LID"],
                            
"EVENT_NAME"    => $MAIL_EVENT_TYPE,
                            
"NAME"            => str_replace(array('#FORM_SID#''#STATUS_NAME#'), array($arrForm['SID'], $arrStatus['TITLE']), GetMessage("FORM_CHANGE_STATUS")),
                            
"DESCRIPTION"    => $str
                            
)
                        );
                }
                
// create new event type for old templates
                
if (strlen($old_MAIL_EVENT_TYPE)>&& $old_MAIL_EVENT_TYPE!=$MAIL_EVENT_TYPE)
                {
                    
$e $em->GetList($by="id",$order="desc",array("EVENT_NAME"=>$old_MAIL_EVENT_TYPE));
                    while (
$er=$e->Fetch())
                    {
                        
$em->Update($er["ID"],array("EVENT_NAME"=>$MAIL_EVENT_TYPE));
                    }
                    if (
strlen($old_MAIL_EVENT_TYPE)>0)
                        
$et->Delete($old_MAIL_EVENT_TYPE);
                }

                if (
$ADD_NEW_TEMPLATE=="Y")
                {
                    
$z CSite::GetList($v1$v2);
                    while (
$arSite $z->Fetch()) $arrSiteLang[$arSite["ID"]] = $arSite["LANGUAGE_ID"];

                    
$arrFormSite CForm::GetSiteArray($WEB_FORM_ID);
                    if (
is_array($arrFormSite) && count($arrFormSite)>0)
                    {
                        foreach(
$arrFormSite as $sid)
                        {
                            
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/admin/form_status_mail.php"$arrSiteLang[$sid]);

                            
$SUBJECT GetMessage("FORM_CHANGE_STATUS_S");
                            
$MESSAGE GetMessage("FORM_CHANGE_STATUS_B");

                            
// добавляем новый шаблон
                            
$arFields = Array(
                                
"ACTIVE"        => "Y",
                                
"EVENT_NAME"    => $MAIL_EVENT_TYPE,
                                
"LID"            => $sid,
                                
"EMAIL_FROM"    => "#DEFAULT_EMAIL_FROM#",
                                
"EMAIL_TO"        => "#EMAIL_TO#",
                                
"SUBJECT"        => $SUBJECT,
                                
"MESSAGE"        => $MESSAGE,
                                
"BODY_TYPE"        => "text"
                                
);
                            
//echo '<pre>'; print_r($arFields); echo '</pre>';
                            
$TEMPLATE_ID $em->Add($arFields);
                            if (
$bReturnFullInfo)
                                
$arrReturn[] = array(
                                    
'ID' => $TEMPLATE_ID,
                                    
'FIELDS' => $arFields,
                                );
                            else
                                
$arrReturn[] = $TEMPLATE_ID;

                        }
                    }
                }

                
CFormStatus::Set(array('FORM_ID' => $WEB_FORM_ID'MAIL_EVENT_TYPE' => $MAIL_EVENT_TYPE), $STATUS_ID'N');

                
$MESS $OLD_MESS;
            }
        }
        return 
$arrReturn;
    }

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение