- Модуль: 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 '';
}