- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_sync.php
- Класс: CCalendarSync
- Вызов: CCalendarSync::GetUsersByEmailList
static function GetUsersByEmailList($emailList = array())
{
global $DB;
$users = [];
if (CCalendar::IsSocNet())
{
$exchangeMailbox = COption::GetOptionString("dav", "exchange_mailbox", "");
$exchangeUseLogin = COption::GetOptionString("dav", "exchange_use_login", "Y");
$exchangeMailboxStrlen = mb_strlen($exchangeMailbox);
$strValue = "";
foreach($emailList as $email)
{
$strValue .= ",'".$DB->ForSql($email)."'";
}
$strValue = trim($strValue, ', ');
if($strValue != '')
{
$strSql = "SELECT U.ID, BUF.UF_BXDAVEX_MAILBOX
FROM b_user U
LEFT JOIN b_uts_user BUF ON (BUF.VALUE_ID = U.ID)
WHERE
U.ACTIVE = 'Y' AND
BUF.UF_BXDAVEX_MAILBOX in (".$strValue.")";
$res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
$checkedEmails = [];
while($entry = $res->Fetch())
{
$checkedEmails[] = mb_strtolower($entry["UF_BXDAVEX_MAILBOX"]);
$users[] = $entry['ID'];
}
if ($exchangeUseLogin == "Y")
{
$strLogins = '';
foreach($emailList as $email)
{
if(!in_array(mb_strtolower($email), $checkedEmails) && mb_strtolower(mb_substr($email, mb_strlen($email) - $exchangeMailboxStrlen)) == mb_strtolower($exchangeMailbox))
{
$value = mb_substr($email, 0, mb_strlen($email) - $exchangeMailboxStrlen);
$strLogins .= ",'".$DB->ForSql($value)."'";
}
}
$strLogins = trim($strLogins, ', ');
if ($strLogins !== '')
{
$res = $DB->Query("SELECT U.ID, U.LOGIN FROM b_user U WHERE U.ACTIVE = 'Y' AND U.LOGIN in (".$strLogins.")", false, "File: ".__FILE__."
Line: ".__LINE__);
while($entry = $res->Fetch())
{
$users[] = $entry['ID'];
}
}
}
}
}
return $users;
}