• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/utils.php
  • Класс: CIntranetUtils
  • Вызов: CIntranetUtils::notifyMailDomain
static function notifyMailDomain($type, $sid, $user_id, $cnt = 0)
{
	$user_id    = intval($user_id);
	$cnt        = intval($cnt);

	if (!CModule::includeModule('mail'))
		return '';

	$arAdmin = CUser::getList(
		'', '',
		array('ID' => $user_id, 'GROUPS_ID' => 1, 'ACTIVE' => 'Y'),
		array('FIELDS' => array('ID', 'EMAIL'))
	)->fetch();
	if (empty($arAdmin))
		return '';

	if ($cnt == 0)
		return 'CIntranetUtils::notifyMailDomain("'.$type.'", "'.$sid.'", '.$user_id.', '.++$cnt.');';

	includeModuleLangFile(__FILE__);

	if (isModuleInstalled('bitrix24'))
	{
		$learnmoreLink = getMessage('INTR_MAIL_DOMAIN_LEARNMOREB24_LINK');
		$supportLink   = getMessage('INTR_MAIL_DOMAIN_SUPPORTB24_LINK');
	}
	else
	{
		$learnmoreLink = getMessage('INTR_MAIL_DOMAIN_LEARNMORE_LINK');
		$supportLink   = getMessage('INTR_MAIL_DOMAIN_SUPPORT_LINK');
	}

	if (in_array($type, array('nocomplete', 'nomailbox')))
	{
		$sid = intval($sid);
		$service = BitrixMailMailServicesTable::getList(array(
			'filter' => array('=ID' => $sid)
		))->fetch();

		if (empty($service) || $service['ACTIVE'] != 'Y' || !in_array($service['SERVICE_TYPE'], array('domain', 'crdomain')))
			return '';

		if ($service['SERVICE_TYPE'] == 'domain')
		{
			$result = CMailDomain2::getDomainStatus($service['TOKEN'], $service['SERVER'], $error);
			$stage  = empty($result['stage']) ? null : $result['stage'];
		}
		else
		{
			$crResponse = CControllerClient::executeEvent('OnMailControllerCheckMemberDomain', array('DOMAIN' => $service['SERVER']));
			$stage      = empty($crResponse['result']['stage']) ? null : $crResponse['result']['stage'];
		}

		if ($type == 'nocomplete')
		{
			if (in_array($stage, array('owner-check', 'mx-check')))
			{
				CEvent::send('INTRANET_MAILDOMAIN_NOCOMPLETE', array($service['SITE_ID']), array(
					'EMAIL_TO' => $arAdmin['EMAIL'],
					'LEARNMORE_LINK' => $learnmoreLink,
					'SUPPORT_LINK'   => $supportLink
				));

				if ($cnt == 1)
				{
					global $pPERIOD;

					$pPERIOD = 3600 * 24 * 4;

					return 'CIntranetUtils::notifyMailDomain("nocomplete", '.$sid.', '.$user_id.', '.++$cnt.');';
				}
			}
		}
		else // if ($type == 'nomailbox')
		{
			if ($stage == 'added')
			{
				$dbMailboxes = CMailbox::getList(
					array(),
					array(
						'ACTIVE'     => 'Y',
						'!USER_ID'   => 0,
						'SERVICE_ID' => $sid
					)
				);

				$adminMailbox  = false;
				$userMailboxes = false;
				while ($arMailbox = $dbMailboxes->fetch())
				{
					if ($arMailbox['USER_ID'] == $user_id)
					{
						$adminMailbox = true;
					}
					else
					{
						$userMailboxes = true;
						break;
					}
				}

				if (!$userMailboxes)
				{
					$eventType = $adminMailbox ? 'INTRANET_MAILDOMAIN_NOMAILBOX2' : 'INTRANET_MAILDOMAIN_NOMAILBOX';
					CEvent::send($eventType, array($service['SITE_ID']), array(
						'EMAIL_TO'       => $arAdmin['EMAIL'],
						'LEARNMORE_LINK' => $learnmoreLink,
						'SUPPORT_LINK'   => $supportLink
					));

					if ($cnt == 1)
					{
						global $pPERIOD;

						$pPERIOD = 3600 * 24 * 21;

						return 'CIntranetUtils::notifyMailDomain("nomailbox", '.$sid.', '.$user_id.', '.++$cnt.');';
					}
				}
			}
		}
	}
	else if ($type == 'noreg')
	{
		$dbServices = BitrixMailMailServicesTable::getList(array(
			'filter' => array('ACTIVE' => 'Y', 'SERVICE_TYPE' => 'crdomain')
		));

		while ($service = $dbServices->fetch())
		{
			if ($service['FLAGS'] & CMail::F_DOMAIN_REG)
				return '';
		}

		$r = CEvent::send('INTRANET_MAILDOMAIN_NOREG', array($sid), array(
			'EMAIL_TO'       => $arAdmin['EMAIL'],
			'LEARNMORE_LINK' => $learnmoreLink,
			'SUPPORT_LINK'   => $supportLink
		));
	}

	return '';
}