/** * Bitrix Framework * @package bitrix * @subpackage main * @copyright 2001-2013 Bitrix */ /** * Bitrix vars * @global CUser $USER * @global CMain $APPLICATION * @global CDatabase $DB */ require_once(dirname(__FILE__)."/../include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/prolog.php"); define("HELP_FILE", "settings/mail_events/message_edit.php"); if(!$USER->CanDoOperation('edit_other_settings') && !$USER->CanDoOperation('view_other_settings')) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); CModule::IncludeModule("fileman"); $isAdmin = $USER->CanDoOperation('lpa_template_edit'); $isUserHavePhpAccess = $USER->CanDoOperation('edit_php'); ClearVars(); IncludeModuleLangFile(__FILE__); $strError=""; $bVarsFromForm = false; $ID=intval($ID); $COPY_ID=intval($COPY_ID); $message=null; if($COPY_ID>0) $ID = $COPY_ID; $aTabs = array( array("DIV" => "edit1", "TAB" => GetMessage("MAIN_TAB"), "ICON" => "message_edit", "TITLE" => GetMessage("MAIN_TAB_TITLE")), array("DIV" => "edit2", "TAB" => GetMessage("ATTACHMENT_TAB"), "ICON" => "message_edit", "TITLE" => GetMessage("ATTACHMENT_TAB_TITLE")), ); $tabControl = new CAdminTabControl("tabControl", $aTabs); if($REQUEST_METHOD=="POST" && ($save <> '' || $apply <> '')&& $isAdmin && check_bitrix_sessid()) { if(!$isUserHavePhpAccess) { $MESSAGE_OLD = false; if($ID>0) { $emOldDb = CEventMessage::GetByID($ID); if($emOld = $emOldDb->Fetch()) { $MESSAGE_OLD = $emOld['MESSAGE']; } } $MESSAGE = LPA::Process($MESSAGE, $MESSAGE_OLD); } if(is_array($ADDITIONAL_FIELD)) { $ADDITIONAL_FIELD_tmp = array(); foreach($ADDITIONAL_FIELD['NAME'] as $AddFieldNum => $addFieldName) { if($addFieldName <> '') { if(isset($ADDITIONAL_FIELD['VALUE'][$AddFieldNum])) $addFieldValue = $ADDITIONAL_FIELD['VALUE'][$AddFieldNum]; else $addFieldValue = ''; $ADDITIONAL_FIELD_tmp[] = array('NAME'=> $addFieldName, 'VALUE'=> $addFieldValue); } } $ADDITIONAL_FIELD = $ADDITIONAL_FIELD_tmp; } $em = new CEventMessage; $arFields = array( "ACTIVE" => $ACTIVE, "EVENT_NAME" => $EVENT_NAME, "LID" => $LID, "EMAIL_FROM" => $EMAIL_FROM, "EMAIL_TO" => $EMAIL_TO, "BCC" => $BCC, "CC" => $CC, "REPLY_TO" => $REPLY_TO, "IN_REPLY_TO" => $IN_REPLY_TO, "PRIORITY" => $PRIORITY, "FIELD1_NAME" => $FIELD1_NAME, "FIELD1_VALUE" => $FIELD1_VALUE, "FIELD2_NAME" => $FIELD2_NAME, "FIELD2_VALUE" => $FIELD2_VALUE, "SUBJECT" => $SUBJECT, "MESSAGE" => $MESSAGE, "BODY_TYPE" => $BODY_TYPE, "SITE_TEMPLATE_ID" => $SITE_TEMPLATE_ID, "ADDITIONAL_FIELD" => $ADDITIONAL_FIELD, "LANGUAGE_ID" => $_POST["LANGUAGE_ID"], ); if($ID>0 && $COPY_ID<=0) $res = $em->Update($ID, $arFields); else { $ID = $em->Add($arFields); $res = ($ID>0); $new="Y"; } if(!$res) { $bVarsFromForm = true; } else { // Delete files $FILE_ID_tmp = array(); //New files $arFiles = array(); //update files if(is_array($_FILES["FILES"])) { foreach($_FILES["FILES"] as $attribute=>$files) { if(is_array($files)) { foreach($files as $index=>$value) { $arFiles[$index][$attribute]=$value; } } } foreach($arFiles as $index => $file) { if(!is_uploaded_file($file["tmp_name"])) { unset($arFiles[$index]); } else if ($index > 0) { $FILE_ID_tmp[] = intval($index); } } } //Delete checked if(!empty($FILES_del) && is_array($FILES_del)) { foreach($FILES_del as $file=>$fileMarkDel) { $file = intval($file); if($file>0) $FILE_ID_tmp[] = $file; } } if(count($FILE_ID_tmp)>0) { $deleteFileDb = \Bitrix\Main\Mail\Internal\EventMessageAttachmentTable::getList(array( 'select' => array('EVENT_MESSAGE_ID', 'FILE_ID'), 'filter' => array('=EVENT_MESSAGE_ID' => $ID, '=FILE_ID' => $FILE_ID_tmp), )); while($deleteFile = $deleteFileDb->fetch()) { CFile::Delete($deleteFile["FILE_ID"]); \Bitrix\Main\Mail\Internal\EventMessageAttachmentTable::delete($deleteFile); } } //Brandnew if(is_array($_FILES["NEW_FILE"])) { foreach($_FILES["NEW_FILE"] as $attribute=>$files) { if(is_array($files)) foreach($files as $index=>$value) $arFiles[$index][$attribute]=$value; } foreach($arFiles as $index => $file) { if(!is_uploaded_file($file["tmp_name"])) unset($arFiles[$index]); } } //New from media library and file structure if(array_key_exists("NEW_FILE", $_POST) && is_array($_POST["NEW_FILE"])) { foreach($_POST["NEW_FILE"] as $index=>$value) $arFiles[$index] = CFile::MakeFileArray($value); } //Copy if(array_key_exists("FILES", $_POST) && is_array($_POST["FILES"])) { if(intval($COPY_ID) > 0) { $arFileCopy_tmp = array(); foreach(array_reverse($_POST["FILES"], true) as $key => $file_id) { //skip "deleted" if(is_array($FILES_del) && array_key_exists($key, $FILES_del)) continue; //clone file if(intval($file_id) > 0) { $arFileCopy_tmp[] = $file_id; } } $deleteFileDb = \Bitrix\Main\Mail\Internal\EventMessageAttachmentTable::getList(array( 'select' => array('FILE_ID'), 'filter' => array('EVENT_MESSAGE_ID' => $COPY_ID, 'FILE_ID' => $arFileCopy_tmp), )); while($arExistingFile = $deleteFileDb->fetch()) { array_unshift($arFiles, CFile::MakeFileArray($arExistingFile["FILE_ID"])); } } else { //Files from template_test.php foreach(array_reverse($_POST["FILES"], true) as $file) { if( is_array($file) && $file["tmp_name"] <> '' && $APPLICATION->GetFileAccessPermission($file["tmp_name"]) >= "W" ) { array_unshift($arFiles, $file); } } } } foreach($arFiles as $file) { if($file["name"] <> '' and intval($file["size"])>0) { $resultInsertAttachFile = false; $file["MODULE_ID"] = "main"; $fid = intval(CFile::SaveFile($file, "main", true)); if($fid > 0) { $resultAddAttachFile = \Bitrix\Main\Mail\Internal\EventMessageAttachmentTable::add(array( 'EVENT_MESSAGE_ID' => $ID, 'FILE_ID' => $fid )); $resultInsertAttachFile = $resultAddAttachFile->isSuccess(); } if(!$resultInsertAttachFile) break; } } if ($save <> '') { if (!empty($_REQUEST["type"])) LocalRedirect(BX_ROOT."/admin/type_edit.php?EVENT_NAME=".$EVENT_NAME."&lang=".LANGUAGE_ID); else LocalRedirect(BX_ROOT."/admin/message_admin.php?lang=".LANGUAGE_ID); } else LocalRedirect(BX_ROOT."/admin/message_edit.php?lang=".LANGUAGE_ID."&ID=".$ID."&type=".$_REQUEST["type"]."&".$tabControl->ActiveTabParam()); } } $arEventMessageFile = array(); $str_ACTIVE = "Y"; $str_EVENT_NAME = $_REQUEST["EVENT_NAME"]; $em = CEventMessage::GetByID($ID); if(!$em->ExtractEditFields("str_")) { $ID=0; } else { $str_LID = Array(); $db_LID = CEventMessage::GetLang($ID); while($ar_LID = $db_LID->Fetch()) $str_LID[] = $ar_LID["LID"]; $attachmentFileDb = \Bitrix\Main\Mail\Internal\EventMessageAttachmentTable::getList(array( 'select' => array('FILE_ID'), 'filter' => array('EVENT_MESSAGE_ID' => $ID), )); while($ar = $attachmentFileDb->fetch()) { if($arFileFetch = CFile::GetFileArray($ar['FILE_ID'])) $arEventMessageFile[] = $arFileFetch; } } if($bVarsFromForm) { $str_LID = $LID; $DB->InitTableVarsForEdit("b_event_message", "", "str_"); $str_ADDITIONAL_FIELD = $ADDITIONAL_FIELD; } $arMailSiteTemplate = array(); $mailSiteTemplateDb = CSiteTemplate::GetList(null, array('TYPE' => 'mail')); while($mailSiteTemplate = $mailSiteTemplateDb->GetNext()) $arMailSiteTemplate[] = $mailSiteTemplate; if(!$isUserHavePhpAccess) { $str_MESSAGE = htmlspecialcharsbx(LPA::PrepareContent(htmlspecialcharsback($str_MESSAGE))); } if($ID>0 && $COPY_ID<=0) $APPLICATION->SetTitle(str_replace("#ID#", "$ID", GetMessage("EDIT_MESSAGE_TITLE"))); else $APPLICATION->SetTitle(GetMessage("NEW_MESSAGE_TITLE")); require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php"); ?>