Your IP : 18.217.246.20


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/crm.config.sendsave/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/crm.config.sendsave/component.php

<?
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();

if (!CModule::IncludeModule('crm'))
{
	ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED'));
	return;
}

if (!CModule::IncludeModule('mail'))
{
	ShowError(GetMessage('MAIL_MODULE_NOT_INSTALLED'));
	return;
}

global $APPLICATION, $USER;
$CrmPerms = new CCrmPerms($USER->GetID());
if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE'))
{
	ShowError(GetMessage('CRM_PERMISSION_DENIED'));
	return;
}

CUtil::InitJSCore();

$arParams['PATH_TO_SS_CONFIG'] = CrmCheckPath('PATH_TO_SS_CONFIG', $arParams['PATH_TO_SS_CONFIG'], $APPLICATION->GetCurPage());
$arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#","#/NOBR#"), array("",""), $arParams["NAME_TEMPLATE"]);
$arResult['LEAD_SOURCE_LIST'] = CCrmStatus::GetStatusList('SOURCE');
$arResult['BACK_URL'] = $arParams['PATH_TO_SS_CONFIG'];
$arResult['FORM_ID'] = 'CRM_SS_CONFIG';
$arResult['FIELDS'] = array();

// Current send&save settings
$arSettings = array(
	'NAME'=> '',
	'SERVER_TYPE' => 'pop3',
	'MAILBOXES' => array()
);

$arRegexpData = array();

// Processing 'SAVE' and 'APPLY' commands -->
if($_SERVER['REQUEST_METHOD'] === 'POST'
	&& (isset($_POST['save']) || isset($_POST['apply']) || isset($_POST['delete']))
	&& check_bitrix_sessid())
{
	$errorMsg = '';

	// '-1' - not selected
	// '0' - new

	$mailBoxID = isset($_POST['MAILBOX_ID']) ? intval($_POST['MAILBOX_ID']) : -1;
	$mailFilterID = intval(COption::GetOptionString('crm', 'mail_filter', 0));
	$email = mb_strtolower(isset($_POST['POP3_EMAIL'])? $_POST['POP3_EMAIL'] : COption::GetOptionString('crm', 'mail', ''));

	$emailLocalPart = isset($_POST['SMTP_EMAIL']) ? $_POST['SMTP_EMAIL'] : '';
	if($emailLocalPart === '')
	{
		$atpos = mb_strpos($email, '@');
		$emailLocalPart = $atpos > 0? mb_substr($email, 0, $atpos) : $email;
	}

	$arMailBox = array();

	if($mailBoxID < 0)
	{
		$errorMsg = GetMessage('CRM_ERROR_MAILBOX_NOT_SELECTED');
	}
	else
	{
		if(isset($_POST['delete']) && $mailBoxID > 0)
		{
			$rsMailBox = CMailBox::GetById($mailBoxID);
			$arMailBox = $rsMailBox->Fetch();
			if (!is_array($arMailBox))
			{
				$errorMsg = GetMessage(
					'CRM_ERROR_MAIL_BOX_NOT_FOUND',
					array('#ID#' => $mailBoxID)
				);
			}
			else
			{
				$mailBoxEntity = new CMailBox(false);
				if(!$mailBoxEntity->Delete($mailBoxID))
				{
					$ex =  $GLOBALS['APPLICATION']->GetException();
					$errorMsg = $ex->GetString();
					$GLOBALS['APPLICATION']->ResetException();
				}
			}
		}
		elseif(isset($_POST['save']) || isset($_POST['apply']))
		{
			$arMailBoxData = array(
				'LID' => SITE_ID
			);

			$arMailBoxData['ACTIVE'] = $arSettings['ACTIVE'] = $_POST['ACTIVE'] == 'Y' ? 'Y' : 'N';
			$arMailBoxData['SERVER'] = $arSettings['SERVER'] = isset($_POST['SERVER']) ? trim($_POST['SERVER']) : '';
			$arMailBoxData['USE_TLS'] = $arSettings['USE_TLS'] = $_POST['SSL'] == 'Y' ? ($_POST['SKIP_CERT'] == 'Y' ? 'S' : 'Y') : 'N';
			$arMailBoxData['PORT'] = $arSettings['PORT'] = isset($_POST['PORT']) ? trim($_POST['PORT']) : ($arMailBoxData['USE_TLS'] == 'Y' || $arMailBoxData['USE_TLS'] == 'S' ? 995 : 110);
			$arMailBoxData['LOGIN'] = $arSettings['LOGIN'] =  isset($_POST['LOGIN']) ? $_POST['LOGIN'] : '';
			$arMailBoxData['PASSWORD'] = $arSettings['PASSWORD'] = isset($_POST['PASSWORD']) ? $_POST['PASSWORD'] : '';
			$arMailBoxData['PERIOD_CHECK'] = $arSettings['PERIOD_CHECK'] = isset($_POST['PERIOD_CHECK']) ? intval($_POST['PERIOD_CHECK']) : 5;
			if($arMailBoxData['PERIOD_CHECK'] < 0)
			{
				$arMailBoxData['PERIOD_CHECK'] = 0;
			}

			$arMailBoxData['DELETE_MESSAGES'] = $arSettings['DELETE_MESSAGES'] = $_POST['DELETE'] == 'Y' ? 'Y' : 'N';

			if (IsModuleInstalled('bitrix24'))
				$arMailBoxData['MAX_MSG_COUNT'] = 500;

			$arRegexpData['LEAD'] = isset($_POST['REGEXP_LEAD']) ? $_POST['REGEXP_LEAD'] : '\\[LID#([0-9]+)\\]';
			$arRegexpData['CONTACT'] = isset($_POST['REGEXP_CONTACT']) ? $_POST['REGEXP_CONTACT'] : '\\[CID#([0-9]+)\\]';
			$arRegexpData['COMPANY'] = isset($_POST['REGEXP_COMPANY']) ? $_POST['REGEXP_COMPANY'] : '\\[COID#([0-9]+)\\]';
			$arRegexpData['DEAL'] = isset($_POST['REGEXP_DEAL']) ? $_POST['REGEXP_DEAL'] : '\\[DID#([0-9]+)\\]';

			if($mailBoxID > 0) // Update of existing POP3 mail box
			{
				$rsMailBox = CMailBox::GetById($mailBoxID);
				$arMailBox = $rsMailBox->Fetch();
				if (!is_array($arMailBox))
				{
					$errorMsg = GetMessage(
						'CRM_ERROR_MAIL_BOX_NOT_FOUND',
						array('#ID#' => $mailBoxID)
					);
				}
				else
				{
					$arMailBox = array_merge($arMailBox, $arMailBoxData);
					if(isset($arMailBox['ID']))
					{
						unset($arMailBox['ID']);
					}

					// Check email settings
					if($arMailBox['SERVER_TYPE'] === 'pop3')
					{
						if($email === '')
						{
							$errorMsg = GetMessage('CRM_ERROR_POP3_MAIL_NOT_DEFINED');
						}
						else
						{
							// Override mail box name
							$arMailBox['NAME'] = $email;
							$mailBoxEntity = new CMailBox(false);
							if(!$mailBoxEntity->Update($mailBoxID, $arMailBox))
							{
								$ex =  $GLOBALS['APPLICATION']->GetException();
								$errorMsg = $ex->GetString();
								$GLOBALS['APPLICATION']->ResetException();
							}
						}
					}
					else
					{
						if($emailLocalPart === '')
						{
							$errorMsg = GetMessage('CRM_ERROR_SMTP_MAIL_NOT_DEFINED');
						}

						$domain = isset($_POST['SMTP_DOMAIN']) ? $_POST['SMTP_DOMAIN'] : '';

						if($domain === '')
						{
							$errorMsg = GetMessage('CRM_ERROR_SMTP_DOMAIN_NOT_DEFINED');
						}

						$email = $emailLocalPart.'@'.$domain;

						// Don't change SMTP mail box
					}
				}
			}
			else // Create new POP3 mail box
			{
				// Check email settings (only POP3 mail boxes is allowed)
				if($email === '')
				{
					$errorMsg = GetMessage('CRM_ERROR_POP3_MAIL_NOT_DEFINED');
				}
				else
				{
					// Override mail box name and server type
					$arMailBoxData['NAME'] = $email;
					$arMailBoxData['SERVER_TYPE'] = 'pop3';
					//$arMailBoxData['PERIOD_CHECK'] = 5;

					$mailBoxEntity = new CMailBox(false);
					$mailBoxID = intval($mailBoxEntity->Add($arMailBoxData));
					if($mailBoxID <= 0)
					{
						$ex = $GLOBALS['APPLICATION']->GetException();
						$errorMsg = $ex->GetString();
						$GLOBALS['APPLICATION']->ResetException();
					}
					else
					{
						$rsMailBox = CMailBox::GetById($mailBoxID);
						$arMailBox = $rsMailBox->Fetch();
					}
				}
			}

			if($mailBoxID > 0 && $errorMsg === '')
			{
				$arMailFilterData = array(
					'MAILBOX_ID' => $mailBoxID,
					'NAME' => GetMessage('CRM_SS_RULE'),
					'ACTION_TYPE' => 'crm',
					'ACTION_VARS' => 'W_CRM_ENTITY_REGEXP_LEAD='.urlencode($arRegexpData['LEAD']).
						'&W_CRM_ENTITY_REGEXP_COMPANY='.urlencode($arRegexpData['COMPANY']).
						'&W_CRM_ENTITY_REGEXP_CONTACT='.urlencode($arRegexpData['CONTACT']).
						'&W_CRM_ENTITY_REGEXP_DEAL='.urlencode($arRegexpData['DEAL']),
					'WHEN_MAIL_RECEIVED' => 'Y',
					'WHEN_MANUALLY_RUN' => 'Y',
					'REGEXP_LEAD' => $arRegexpData['LEAD'],
					'REGEXP_COMPANY' => $arRegexpData['COMPANY'],
					'REGEXP_CONTACT' => $arRegexpData['CONTACT'],
					'REGEXP_DEAL' => $arRegexpData['DEAL']
				);
				if (IsModuleInstalled('bitrix24'))
				{
					$arMailFilterData['ACTION_DELETE_MESSAGE'] = 'Y';
					$arMailFilterData['ACTION_STOP_EXEC'] = 'Y';
				}

				$arMailFilter = array();
				if($mailFilterID <= 0)
				{
					$arMailFilter = $arMailFilterData;
				}
				else
				{
					$rsMailFilter = CMailFilter::GetById($mailFilterID);
					$arMailFilter = $rsMailFilter->Fetch();
					if (!is_array($arMailFilter))
					{
						$mailFilterID = 0;
						$arMailFilter = array();
					}
					else
					{
						$arMailFilter = array_merge($arMailFilter, $arMailFilterData);
					}
				}

				if(isset($arMailFilter['ID']))
				{
					unset($arMailFilter['ID']);
				}

				if($mailFilterID <= 0)
				{
					$mailFilterID = intval(CMailFilter::Add($arMailFilter));
					if ($mailFilterID <= 0)
					{
						$ex = $GLOBALS['APPLICATION']->GetException();
						$errorMsg = $ex->GetString();
						$GLOBALS['APPLICATION']->ResetException();
					}
				}
				else
				{
					if(!CMailFilter::Update($mailFilterID, $arMailFilter))
					{
						$ex = $GLOBALS['APPLICATION']->GetException();
						$errorMsg = $ex->GetString();
						$GLOBALS['APPLICATION']->ResetException();
					}
				}

				if($errorMsg === '' && $mailFilterID > 0)
				{
					// Deleting other crm related filters (only one active crm filter is allowed)
					$rsMailFilter = CMailFilter::GetList(array(), array('ACTION_TYPE'=>'crm'));
					while($arMailFilter = $rsMailFilter->Fetch())
					{
						$curMailFilterID = intval($arMailFilter['ID']);
						if($curMailFilterID !== $mailFilterID)
						{
							CMailFilter::Delete($curMailFilterID);
						}
					}
				}
			}
		}

	}

	$arSettings['EMAIL'] = $email;
	$arSettings['EMAIL_LOCAL_PART'] = $emailLocalPart;
	$arSettings['MAILBOX_ID'] = $mailBoxID;

	if ($errorMsg <> '')
	{
		ShowError($errorMsg);
	}
	else
	{
		COption::SetOptionString('crm', 'mail_box', $mailBoxID);
		COption::SetOptionString('crm', 'mail_filter', $mailFilterID);
		COption::SetOptionString('crm', 'mail', mb_strtolower($email));

		$contactResponsibleID = isset($_POST['CONTACT_RESPONSIBLE_ID']) ? intval($_POST['CONTACT_RESPONSIBLE_ID']) : 0;
		COption::SetOptionString('crm', 'email_contact_responsible_id', $contactResponsibleID);

		$createLead = isset($_POST['CREATE_LEAD_FOR_NEW_ADDRESSER'])? mb_strtoupper($_POST['CREATE_LEAD_FOR_NEW_ADDRESSER']) : 'N';
		if($createLead !== 'Y' && $createLead !== 'N')
		{
			$createLead = 'N';
		}
		COption::SetOptionString('crm', 'email_create_lead_for_new_addresser', $createLead);

		$leadResponsibleID = isset($_POST['LEAD_RESPONSIBLE_ID']) ? intval($_POST['LEAD_RESPONSIBLE_ID']) : 0;
		COption::SetOptionString('crm', 'email_lead_responsible_id', $leadResponsibleID);

		$leadSourceID = isset($_POST['LEAD_SOURCE_ID']) ? $_POST['LEAD_SOURCE_ID'] : '';
		COption::SetOptionString('crm', 'email_lead_source_id', $leadSourceID);

		CCrmEMailCodeAllocation::SetCurrent(
			isset($_POST['SERVICE_CODE_ALLOCATION'])
				? intval($_POST['SERVICE_CODE_ALLOCATION'])
				: CCrmEMailCodeAllocation::Body
		);

		LocalRedirect(
			CComponentEngine::MakePathFromTemplate(
				$arParams['PATH_TO_SS_CONFIG'],	array()
			)
		);
	}
}
// <-- Processing 'SAVE' and 'APPLY' commands

// Settings initialization -->
if(!isset($arSettings['EMAIL']))
{
	$arSettings['EMAIL'] = mb_strtolower(COption::GetOptionString('crm', 'mail', ''));
	if($arSettings['EMAIL'] !== '')
	{
		$atpos = mb_strpos($arSettings['EMAIL'], '@');
		if ($atpos > 0)
		{
			$arSettings['EMAIL_LOCAL_PART'] = mb_substr($arSettings['EMAIL'], 0, $atpos);
		}
	}
}

if(!isset($arSettings['MAILBOX_ID']))
{
	$arSettings['MAILBOX_ID'] = intval(COption::GetOptionString('crm', 'mail_box', 0));
}

if ($arSettings['MAILBOX_ID'] <= 0)
{
	COption::SetOptionString('crm', 'mail_filter', 0);
	COption::SetOptionString('crm', 'mail', '');

	if (isModuleInstalled('bitrix24'))
	{
		localRedirect('/crm/configs/');
	}
}
else
{
	$rsMailbox = CMailBox::GetById($arSettings['MAILBOX_ID']);
	$arCurrentMailBox = $rsMailbox->Fetch();
	if (!is_array($arCurrentMailBox))
	{
		// Reset settings and reload page
		COption::SetOptionString('crm', 'mail_box', 0);
		COption::SetOptionString('crm', 'mail_filter', 0);
		COption::SetOptionString('crm', 'mail', '');

		LocalRedirect(
			CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_SS_CONFIG'],	array())
		);
	}

	if(!isset($arSettings['ACTIVE']))
	{
		$arSettings['ACTIVE'] = isset($arCurrentMailBox['ACTIVE']) ? $arCurrentMailBox['ACTIVE'] : 'Y';
	}
	if(isset($arCurrentMailBox['NAME']))
	{
		$arSettings['NAME'] = $arCurrentMailBox['NAME'];
	}
	if(!isset($arSettings['SERVER']))
	{
		$arSettings['SERVER'] = isset($arCurrentMailBox['SERVER']) ? $arCurrentMailBox['SERVER'] : '';
	}
	if(!isset($arSettings['USE_TLS']))
	{
		$arSettings['USE_TLS'] = isset($arCurrentMailBox['USE_TLS']) ? $arCurrentMailBox['USE_TLS'] : 'Y';
	}
	if(!isset($arSettings['PORT']))
	{
		$arSettings['PORT'] = isset($arCurrentMailBox['PORT']) ? $arCurrentMailBox['PORT'] : ($arSettings['USE_TLS'] == 'Y' || $arSettings['USE_TLS'] == 'S' ? 995 : 110);
	}
	if(isset($arCurrentMailBox['SERVER_TYPE']))
	{
		$arSettings['SERVER_TYPE'] = $arCurrentMailBox['SERVER_TYPE'];
	}
	if(!isset($arSettings['LOGIN']))
	{
		$arSettings['LOGIN'] = isset($arCurrentMailBox['LOGIN']) ? $arCurrentMailBox['LOGIN'] : '';
	}
	if(!isset($arSettings['PASSWORD']))
	{
		$arSettings['PASSWORD'] = isset($arCurrentMailBox['PASSWORD']) ? $arCurrentMailBox['PASSWORD'] : '';
	}
	if(!isset($arSettings['PERIOD_CHECK']))
	{
		$arSettings['PERIOD_CHECK'] = isset($arCurrentMailBox['PERIOD_CHECK']) ? $arCurrentMailBox['PERIOD_CHECK'] : '5';
	}
	if(!isset($arSettings['DELETE_MESSAGES']))
	{
		$arSettings['DELETE_MESSAGES'] = isset($arCurrentMailBox['DELETE_MESSAGES']) ? $arCurrentMailBox['DELETE_MESSAGES'] : 'N';
	}
	if($arSettings['EMAIL'] === '' && $arSettings['SERVER_TYPE'] === 'smtp')
	{
		$arSettings['EMAIL'] = 'crm@'.$_SERVER['HTTP_HOST'];
	}
}

$arSettings['CONTACT_RESPONSIBLE_ID'] = intval(COption::GetOptionString('crm', 'email_contact_responsible_id', 0));
$arSettings['CONTACT_RESPONSIBLE_NAME'] = $arSettings['CONTACT_RESPONSIBLE_ID'] > 0
	? CCrmViewHelper::GetFormattedUserName($arSettings['CONTACT_RESPONSIBLE_ID']) : '';

$arSettings['CREATE_LEAD_FOR_NEW_ADDRESSER'] = mb_strtoupper(COption::GetOptionString('crm', 'email_create_lead_for_new_addresser', 'Y'));
$arSettings['LEAD_RESPONSIBLE_ID'] = intval(COption::GetOptionString('crm', 'email_lead_responsible_id', 0));
$arSettings['LEAD_RESPONSIBLE_NAME'] = $arSettings['LEAD_RESPONSIBLE_ID'] > 0
	? CCrmViewHelper::GetFormattedUserName($arSettings['LEAD_RESPONSIBLE_ID']) : '';
$arSettings['LEAD_SOURCE_ID'] = COption::GetOptionString('crm', 'email_lead_source_id', '');
if($arSettings['LEAD_SOURCE_ID'] === '' || !isset($arResult['LEAD_SOURCE_LIST'][$arSettings['LEAD_SOURCE_ID']]))
{
	if(isset($arResult['LEAD_SOURCE_LIST']['EMAIL']))
	{
		$arSettings['LEAD_SOURCE_ID'] = 'EMAIL';
	}
	elseif(isset($arResult['LEAD_SOURCE_LIST']['OTHER']))
	{
		$arSettings['LEAD_SOURCE_ID'] = 'OTHER';
	}
}

// <-- Settings initialization

// Test POP3 connection
if($arSettings['SERVER_TYPE'] === 'pop3' && isset($arSettings['SERVER']) && $arSettings['SERVER'] !== '' && isset($arSettings['LOGIN']) && $arSettings['LOGIN'] !== '')
{
	$mailBoxEntity = new CMailBox(false);
	$arCheck = $mailBoxEntity->Check(
		$arSettings['SERVER'],
		$arSettings['PORT'],
		$arSettings['USE_TLS'],
		$arSettings['LOGIN'],
		$arSettings['PASSWORD']
	);

	if(!$arCheck[0])
	{
		ShowError(
			GetMessage(
				'CRM_ERROR_CHECK_SERVER_CONNECTION',
				array(
					'#SERVER#' => $arSettings['SERVER'],
					'#ERROR#' => $arCheck[1]
				)
			)
		);
	}
}

// Preparing mail box list
$arResult['MAILBOXES_LIST'] =
	array(
		'-1' => GetMessage('CRM_EMAIL_MAILBOX_SEL')
	);

// a. Selection of smtp servers
$rsMailFilter = CMailFilter::GetList(array(), array('SERVER_TYPE' => 'smtp', 'EMPTY' => 'Y' ));
while($arMailF = $rsMailFilter->Fetch())
{
	$arResult['MAILBOXES_LIST'][$arMailF['MAILBOX_ID']] = $arMailF['MAILBOX_NAME'];
	if($arMailF['MAILBOX_TYPE'] == 'smtp' && count($arMailF['DOMAINS']) > 0)
	{
		$mailBoxID = $arMailF['MAILBOX_ID'];
		$rsMailbox = CMailBox::GetById($mailBoxID);
		$arMailbox = $rsMailbox->Fetch();
		if(!is_array($arMailbox))
		{
			continue;
		}

		$arSettings['MAILBOXES'][$mailBoxID] = array(
			'ID' => $mailBoxID,
			'SERVER_TYPE' => 'smtp',
			'SMTP_DOMAIN' => preg_split("/[\r\n]+/", $arMailF['DOMAINS'], -1, PREG_SPLIT_NO_EMPTY),
			'SMTP_EMAIL' => $mailBoxID === $arSettings['MAILBOX_ID'] ? $arSettings['EMAIL_LOCAL_PART'] : ''
		);
	}
}

// b. Selection of pop3 servers
$pop3MailBoxExist = false;
//$rsMailFilter = CMailFilter::GetList(array(), array('SERVER_TYPE' => 'pop3'));
//while($arMailF = $rsMailFilter->Fetch())
$rsMailBoxes = CMailBox::GetList(array(), array('SERVER_TYPE' => 'pop3'));
while($arMailBox = $rsMailBoxes->Fetch())
{
	//$mailBoxID = intval($arMailF['MAILBOX_ID']);
	//$rsMailbox = CMailBox::GetById($mailBoxID);
	//$arMailbox = $rsMailbox->Fetch();
	$mailBoxID = intval($arMailBox['ID']);
	if(!is_array($arMailBox))
	{
		continue;
	}

	$arMailBoxSettings = array(
		'ID' => $mailBoxID,
		'SERVER_TYPE' => 'pop3',
		'ACTIVE' => $arMailBox['ACTIVE'],
		'SERVER' => $arMailBox['SERVER'],
		'PORT' => $arMailBox['PORT'],
		'LOGIN' => $arMailBox['LOGIN'],
		'PASSWORD' => $arMailBox['PASSWORD'],
		'SSL' => $arMailBox['USE_TLS'] == 'Y' || $arMailBox['USE_TLS'] == 'S' ? 'Y' : 'N',
		'SKIP_CERT' => $arMailBox['USE_TLS'] == 'S' ? 'Y' : 'N',
		'DELETE' => $arMailBox['DELETE_MESSAGES'] === 'Y',
		'PERIOD_CHECK' => $arMailBox['PERIOD_CHECK'],
		'POP3_EMAIL' => ''
	);

	if(isset($arSettings['MAILBOX_ID']) &&  $arSettings['MAILBOX_ID'] === $mailBoxID)
	{
		if(isset($arSettings['ACTIVE']))
		{
			$arMailBoxSettings['ACTIVE'] = $arSettings['ACTIVE'];
		}
		if(isset($arSettings['SERVER']))
		{
			$arMailBoxSettings['SERVER'] = $arSettings['SERVER'];
		}
		if(isset($arSettings['PORT']))
		{
			$arMailBoxSettings['PORT'] = $arSettings['PORT'];
		}
		if(isset($arSettings['LOGIN']))
		{
			$arMailBoxSettings['LOGIN'] = $arSettings['LOGIN'];
		}
		if(isset($arSettings['PASSWORD']))
		{
			$arMailBoxSettings['PASSWORD'] = $arSettings['PASSWORD'];
		}
		if(isset($arSettings['USE_TLS']))
		{
			$arMailBoxSettings['SSL'] = $arSettings['USE_TLS'] == 'Y' || $arSettings['USE_TLS'] == 'S' ? 'Y' : 'N';
			$arMailBoxSettings['SKIP_CERT'] = $arSettings['USE_TLS'] == 'S' ? 'Y' : 'N';
		}
		if(isset($arSettings['PERIOD_CHECK']))
		{
			$arMailBoxSettings['PERIOD_CHECK'] = $arSettings['PERIOD_CHECK'];
		}
		if(isset($arSettings['DELETE_MESSAGES']))
		{
			$arMailBoxSettings['DELETE'] = $arSettings['DELETE_MESSAGES'];
		}
		if(isset($arSettings['EMAIL']))
		{
			$arMailBoxSettings['POP3_EMAIL'] = $arSettings['EMAIL'];
		}
	}

	$arSettings['MAILBOXES'][$mailBoxID] = &$arMailBoxSettings;
	unset($arMailBoxSettings);

	//$arResult['MAILBOXES_LIST'][$mailBoxID] = $arMailF['MAILBOX_NAME'];
	$arResult['MAILBOXES_LIST'][$mailBoxID] = $arMailBox['NAME'];

	if(!$pop3MailBoxExist)
	{
		$pop3MailBoxExist = true;
	}
}

// Putting user filter settings in associated mail box
if(isset($arSettings['MAILBOXES'][$arSettings['MAILBOX_ID']]))
{
	$arCurrentMailBox = &$arSettings['MAILBOXES'][$arSettings['MAILBOX_ID']];

	if(isset($arRegexpData['LEAD']))
	{
		$arCurrentMailBox['REGEXP_LEAD'] = $arSettings['REGEXP_LEAD'] = $arRegexpData['LEAD'];
	}

	if(isset($arRegexpData['COMPANY']))
	{
		$arCurrentMailBox['REGEXP_COMPANY'] = $arSettings['REGEXP_COMPANY'] = $arRegexpData['COMPANY'];
	}

	if(isset($arRegexpData['CONTACT']))
	{
		$arCurrentMailBox['REGEXP_CONTACT'] = $arSettings['REGEXP_CONTACT'] = $arRegexpData['CONTACT'];
	}

	if(isset($arRegexpData['DEAL']))
	{
		$arCurrentMailBox['REGEXP_DEAL'] = $arSettings['REGEXP_DEAL'] = $arRegexpData['DEAL'];
	}
}

// Allow creation of new pop3 mail box only if it is not found
if(!$pop3MailBoxExist)
{
	if(count($arResult['MAILBOXES_LIST']) == 1)
	{
		// Remove 'Select mail box' item if there are no mail boxes
		unset($arResult['MAILBOXES_LIST']['-1']);
	}

	$arResult['MAILBOXES_LIST']['0'] = GetMessage('CRM_EMAIL_MAILBOX_NEW');
}

// Mail filter ID
$mailFilterID = intval(COption::GetOptionString('crm', 'mail_filter', 0));
if ($mailFilterID > 0)
{
	$rsMailFilter = CMailFilter::GetById($mailFilterID);
	$arMailFilter = $rsMailFilter->Fetch();
	if (is_array($arMailFilter))
	{
		$mailBoxID = $arMailFilter['MAILBOX_ID'];

		// Putting saved filter settings in associated mail box
		if(isset($arSettings['MAILBOXES'][$mailBoxID]))
		{
			$mailBox = &$arSettings['MAILBOXES'][$mailBoxID];
			$arActions = explode('&', $arMailFilter['ACTION_VARS']);
			for($i = count($arActions) - 1; $i >= 0; $i--)
			{
				$arExp = explode('=', $arActions[$i]);
				if(!isset($arExp[1]))
				{
					continue;
				}

				$expName = '';

				if($i == 0)
				{
					$expName = 'REGEXP_LEAD';
				}
				elseif($i == 1)
				{
					$expName = 'REGEXP_COMPANY';
				}
				elseif($i == 2)
				{
					$expName = 'REGEXP_CONTACT';
				}
				elseif($i == 3)
				{
					$expName = 'REGEXP_DEAL';
				}

				if($expName != '' && !isset($mailBox[$expName]))
				{
					$mailBox[$expName] = urldecode($arExp[1]);
				}
			}
		}

	}
}

$arResult['SETTINGS'] = $arSettings;

// Construction of form fields -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'section_mail_info',
	'name' => GetMessage('CRM_SECTION_MAIL_INFO'),
	'type' => 'section'
);

// MAILBOX_ID -->
if(!IsModuleInstalled('bitrix24'))
{
	$arResult['FIELDS']['tab_config'][] = array(
		'id' => 'MAILBOX',
		'name' => GetMessage('CRM_FIELD_MAILBOX'),
		'items' => $arResult['MAILBOXES_LIST'],
		'type' => 'list',
		'value' => $arSettings['MAILBOX_ID'],
		'required' => true
	);
}
// <-- MAILBOX_ID

// NAME -->
//$arResult['FIELDS']['tab_config'][] = array(
//	'id' => 'NAME',
//	'name' => GetMessage('CRM_FIELD_MAILBOX_NAME'),
//	'params' => array('size' => 50),
//	'type' => 'text',
//	'value' => isset($arMailboxFields['NAME']) ? ($bVarsFromForm ? htmlspecialcharsbx($arMailboxFields['NAME']) : '') : '',
//	'required' => true
//);
// <-- NAME

// POP3_EMAIL -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'POP3_EMAIL',
	'name' => GetMessage('CRM_FIELD_POP3_EMAL'),
	'params' => array('size' => 50),
	'type' => 'text',
	'value' => $arSettings['EMAIL'],
	'required' => true
);
// <-- POP3_EMAIL

// SMTP_EMAIL -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'SMTP_EMAIL',
	'name' => GetMessage('CRM_FIELD_SMTP_EMAL'),
	'params' => array('size' => 50),
	'type' => 'custom',
	'value' => '<input name="SMTP_EMAIL" value="'.htmlspecialcharsbx($arSettings['EMAIL_LOCAL_PART']).'"/>@<select name="SMTP_DOMAIN"></select>',
	'required' => true
);
// <-- SMTP_EMAIL

// ACTIVE -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'ACTIVE',
	'name' => GetMessage('CRM_FIELD_MAILBOX_ACTIVE'),
	'type' => 'checkbox',
	'params' => array(),
	'value' => $arSettings['ACTIVE']
);
// <-- ACTIVE

// SERVER -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'SERVER',
	'name' => GetMessage('CRM_FIELD_POP3_SERVER'),
	'params' => array('size' => 50),
	'type' => 'text',
	'value' => $arSettings['SERVER'],
	'required' => true
);
// <-- SERVER

// PORT -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'PORT',
	'name' => GetMessage('CRM_FIELD_MAILBOX_PORT'),
	'params' => array('size' => 5),
	'type' => 'text',
	'value' => $arSettings['PORT'],
	'required' => true
);
// <-- PORT

// USE SSL -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'SSL',
	'name' => GetMessage('CRM_FIELD_USE_SSL2'),
	'type' => 'checkbox',
	'params' => array(),
	'value' => $arSettings['USE_TLS'] == 'Y' || $arSettings['USE_TLS'] == 'S' ? 'Y' : 'N'
);
// <-- USE SSL

if (PHP_VERSION_ID >= 50600)
{
	$arResult['FIELDS']['tab_config'][] = array(
		'id' => 'SKIP_CERT',
		'name' => GetMessage('CRM_FIELD_SKIP_CERT'),
		'type' => 'checkbox',
		'params' => array(),
		'value' => $arSettings['USE_TLS'] == 'S' ? 'Y' : 'N'
	);
}

// LOGIN -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'LOGIN',
	'name' => GetMessage('CRM_FIELD_MAILBOX_LOGIN'),
	'params' => array('size' => 50),
	'type' => 'text',
	'value' => $arSettings['LOGIN'],
	'required' => true
);
// <-- LOGIN

// PASSWORD -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'PASSWORD',
	'name' => GetMessage('CRM_FIELD_MAILBOX_PASSWORD'),
	'params' => array('size' => 50),
	'type' => 'custom',
	'value' => '<input autocomplete="off" type="password" name="PASSWORD" value="'.htmlspecialcharsbx($arSettings['PASSWORD']).'"/>',
	'required' => true
);
// <-- PASSWORD

// PERIOD CHECK -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'PERIOD_CHECK',
	'name' => GetMessage('CRM_FIELD_MAILBOX_PERIOD_CHECK'),
	'params' => array('size' => 5),
	'type' => 'text',
	'value' => $arSettings['PERIOD_CHECK']
);
// <-- PERIOD CHECK

// DELETE_MESSAGES -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'DELETE',
	'name' => GetMessage('CRM_FIELD_MAILBOX_DELETE'),
	'type' => 'checkbox',
	'params' => array(
		'onmouseover'=>'BX.hint(this, \''.CUtil::JSEscape(GetMessage('CRM_FIELD_MAILBOX_DELETE_HINT')).'\');',
		'onchange' => 'if(!this.checked) return; if(!confirm(\''.CUtil::JSEscape(GetMessage('CRM_FIELD_MAILBOX_DELETE_CONFIRM')).'\')) this.checked = false;'
	),
	'value' => $arSettings['DELETE_MESSAGES']
);
// <-- DELETE_MESSAGES

$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'section_mail_processing', //section_incoming_mail_processing
	'name' => GetMessage('CRM_SECTION_MAIL_PROCESSING'),
	'type' => 'section'
);

// CONTACT_RESPONSIBLE_ID -->
ob_start();
CCrmViewHelper::RenderUserCustomSearch(
	array(
		'ID' => 'CONTACT_RESPONSIBLE',
		'SEARCH_INPUT_ID' => 'CONTACT_RESPONSIBLE_SEARCH',
		'SEARCH_INPUT_HINT' => GetMessage('CRM_FIELD_CONTACT_RESPONSIBLE_HINT'),
		'DATA_INPUT_ID' => 'CONTACT_RESPONSIBLE_ID',
		'COMPONENT_NAME' => 'CONTACT_RESPONSIBLE',
		'NAME_FORMAT' => $arParams['NAME_TEMPLATE'],
		'USER' => array(
			'ID' => $arSettings['CONTACT_RESPONSIBLE_ID'],
			'NAME' => $arSettings['CONTACT_RESPONSIBLE_NAME']
		)
	)
);
$userSelectorHtml = ob_get_contents();
ob_end_clean();

$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'CONTACT_RESPONSIBLE_ID',
	'name' => GetMessage('CRM_FIELD_CONTACT_RESPONSIBLE'),
	'type' => 'custom',
	'value' => $userSelectorHtml
);
// <-- CONTACT_RESPONSIBLE_ID

// CREATE_LEAD_FOR_NEW_ADDRESSER -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'CREATE_LEAD_FOR_NEW_ADDRESSER',
	'name' => GetMessage('CRM_FIELD_CREATE_LEAD_FOR_NEW_ADDRESSER'),
	'type' => 'checkbox',
	'params' => array('onmouseover'=>'BX.hint(this, \''.CUtil::JSEscape(GetMessage('CRM_FIELD_CREATE_LEAD_FOR_NEW_ADDRESSER_HINT')).'\');'),
	'value' => $arSettings['CREATE_LEAD_FOR_NEW_ADDRESSER']
);
// <-- CREATE_LEAD_FOR_NEW_ADDRESSER

// LEAD_RESPONSIBLE_ID -->
ob_start();
CCrmViewHelper::RenderUserCustomSearch(
	array(
		'ID' => 'LEAD_RESPONSIBLE',
		'SEARCH_INPUT_ID' => 'LEAD_RESPONSIBLE_SEARCH',
		'SEARCH_INPUT_HINT' => GetMessage('CRM_FIELD_LEAD_RESPONSIBLE_HINT'),
		'DATA_INPUT_ID' => 'LEAD_RESPONSIBLE_ID',
		'COMPONENT_NAME' => 'LEAD_RESPONSIBLE',
		'NAME_FORMAT' => $arParams['NAME_TEMPLATE'],
		'USER' => array(
			'ID' => $arSettings['LEAD_RESPONSIBLE_ID'],
			'NAME' => $arSettings['LEAD_RESPONSIBLE_NAME']
		)
	)
);
$userSelectorHtml = ob_get_contents();
ob_end_clean();

$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'LEAD_RESPONSIBLE_ID',
	'name' => GetMessage('CRM_FIELD_LEAD_RESPONSIBLE'),
	'type' => 'custom',
	'value' => $userSelectorHtml
);
// <-- LEAD_RESPONSIBLE_ID

// LEAD_SOURCE_ID -->

$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'LEAD_SOURCE_ID',
	'name' => GetMessage('CRM_FIELD_LEAD_SOURCE_ID'),
	'type' => 'list',
	'items' => $arResult['LEAD_SOURCE_LIST'],
	'value' => $arSettings['LEAD_SOURCE_ID']
);

//<-- LEAD_SOURCE_ID

$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'section_outgoing_mail_processing',
	'name' => GetMessage('CRM_SECTION_OUTGOING_MAIL_PROCESSING'),
	'type' => 'section'
);

// SERVICE_CODE_ALLOCATION -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'SERVICE_CODE_ALLOCATION',
	'name' => GetMessage('CRM_FIELD_SERVICE_CODE_ALLOCATION'),
	'items' => CCrmEMailCodeAllocation::GetAllDescriptions(),
	'type' => 'list',
	'value' => CCrmEMailCodeAllocation::GetCurrent(),
	'required' => false
);
// <-- SERVICE_CODE_ALLOCATION

$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'section_mail_config',
	'name' => GetMessage('CRM_SECTION_MAIL_RULES'),
	'type' => 'section'
);
//$arResult['FIELDS']['tab_config'][] = array(
//	'id' => 'section_mail_config2',
//	'name' => GetMessage('CRM_SECTION_MAIL_CONFIG2'),
//	'type' => 'section'
//);


// LEAD REGEX-->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'REGEXP_LEAD',
	'name' => GetMessage('CRM_FIELD_REGEXP_LEAD'),
	'params' => array('size' => 50),
	'type' => 'text',
	'value' => isset($arSettings['REGEXP_LEAD']) ? $arSettings['REGEXP_LEAD'] : ''

);
// <-- LEAD REGEX

// CONTACT REGEX -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'REGEXP_CONTACT',
	'name' => GetMessage('CRM_FIELD_REGEXP_CONTACT'),
	'params' => array('size' => 50),
	'type' => 'text',
	'value' => isset($arSettings['REGEXP_CONTACT']) ? $arSettings['REGEXP_CONTACT'] : ''
);
// <-- CONTACT REGEX

// COMPANY REGEX -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'REGEXP_COMPANY',
	'name' => GetMessage('CRM_FIELD_REGEXP_COMPANY'),
	'params' => array('size' => 50),
	'type' => 'text',
	'value' => isset($arSettings['REGEXP_COMPANY']) ? $arSettings['REGEXP_COMPANY'] : ''
);
// <-- COMPANY REGEX

// DEAL REGEX -->
$arResult['FIELDS']['tab_config'][] = array(
	'id' => 'REGEXP_DEAL',
	'name' => GetMessage('CRM_FIELD_REGEXP_DEAL'),
	'params' => array('size' => 50),
	'type' => 'text',
	'value' => isset($arSettings['REGEXP_DEAL']) ? $arSettings['REGEXP_DEAL'] : ''
);
// <-- DEAL REGEX
// <-- Construction of form fields
$arResult['ENABLE_CONTROL_PANEL'] = isset($arParams['ENABLE_CONTROL_PANEL']) ? $arParams['ENABLE_CONTROL_PANEL'] : true;
$this->IncludeComponentTemplate();

$APPLICATION->AddChainItem(GetMessage('CRM_SS_LIST'), $arParams['PATH_TO_SS_CONFIG']);

?>