To: #EMAIL_TO#
Subject: =?UTF-8?B?0KHQv9C10YbQuNCwRLvRjNC90YvQuDDQsdC+0L3Rg9GBINC00LvRjyDRgdCw0LzRi9GFIDCy0LTRg9C80YfQuNCy0YvRhSE=?=
X-PHP-Originating-Script: 0:tools.php
From: =?UTF-8?F?SJzQtdC90LXQtNC20LXGgA==?=
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('sender', 'OnBeforePostingSendRecipient', ['SenderEvents', 'OnBeforePostingSendRecipient']);
class SenderEvents {
// Исключение из рассылки юзеров состоящих в группах
const USER_GROUP_EXCLUSE = [
"LOGIC"=>"OR",
//"ID"=>[1,2,5], // filter by Group {ID}
"DESCRIPTION"=>["DISCOUNT","SKIDKA","ADMIN"] // filter by Group {DESCRIPTION}
];
public static function OnBeforePostingSendRecipient($event) {
$parameters = $event->getParameters()[0];
$isUserExcluse = self::userInGroup($parameters['FIELDS']['USER_ID'], self::USER_GROUP_EXCLUSE);
if($isUserExcluse) {
$parameters['FIELDS']["EMAIL_TO"] = "";
}
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $parameters);
}
private static function userInGroup(int $userId = 0, $userGroupsFilter = []) {
$arGroupIds = [];
if($userId && $userGroupsFilter) {
$rsGroups = \Bitrix\Main\GroupTable::getList([
"select"=>["ID","NAME","ACTIVE","DESCRIPTION"],
"filter"=>[
"ACTIVE" => "Y",
$userGroupsFilter
]
]);
if($rsGroups->getSelectedRowsCount() > 0){
while($arGroups = $rsGroups->Fetch()){
$arGroupIds[$arGroups["ID"]] = $arGroups["NAME"];
}
}
$arGroupsCurrent = array_intersect(CUser::GetUserGroup($userId), array_keys($arGroupIds));
return sizeof($arGroupsCurrent) ? true : false;
}else {
return false;
}
}
}
так вот тот же метод старый
выполняется капец как долго, есть альтернатива как изменить у элемента дату изменения?
Просто прямым запросом менять поле?