public static function collectSendList(){
// Если ID подписки(TYPE) равен одному из этих ид, отбрасываем ее
$donateList = array(2698, 2699, 2700, 2705, 37155, 41371);
// Выборка всех всех групп пользователей
$users_group = \CIBlockSection::GetList(
array(),
array(
"IBLOCK_ID" => 7,
"LEVEL" => "1",
"ACTIVE" => "Y"
),
false,
array("ID")
);
// Перебираем все группы
while ($group = $users_group->Fetch()) {
// Выборка подписок определенной группы
$subs = \CIBlockElement::GetList(
array(),
array(
"IBLOCK_ID" => 7,
"SECTION_ID" => $group['ID'],
"ACTIVE" => "Y"
),
false,
false,
array("PROPERTY_TYPE", "PROPERTY_USER")
);
$donator = null;
// перебор подписок
while ($sub = $subs->Fetch()){
$donator = $sub;
if(!array_search($sub['PROPERTY_TYPE_VALUE'], $donateList)){
$donator = null;
break;
}
}
if($donator !== null){
// Получаем емайл пользователя
$result = \Bitrix\Main\UserTable::getList(array(
'select' => array('ID','EMAIL'),
'filter' => array('ID' => $donator['PROPERTY_USER_VALUE'])
))->Fetch();
print_r($result);
}
}
}
\Bitrix\Main\Loader::includeModule("iblock");
$donateList = array(2698, 2699, 2700, 2705, 37155, 41371);
$IBLOCK_ID = 7;
$arSelect = Array("IBLOCK_SECTION_ID");
$arFilter = Array(
"IBLOCK_ID" => $IBLOCK_ID,
"ACTIVE" => "Y",
"PROPERTY_TYPE" => $donateList
);
$res = CIBlockElement::GetList(array("IBLOCK_SECTION_ID" => "ASC"), $arFilter, ["IBLOCK_SECTION_ID"], false, $arSelect);
$blackListSections = [];
while ($arItem = $res->Fetch()) {
$blackListSections[] = $arItem["IBLOCK_SECTION_ID"];
}
$users_group = \CIBlockSection::GetList(
array(),
array(
"IBLOCK_ID" => $IBLOCK_ID,
"!ID" => $blackListSections
),
false,
array("ID")
);
//и т.д.
$sections = [];
while ($group = $users_group->Fetch()) {
$sections[] = $group['ID'];
}
...
$subs = \CIBlockElement::GetList(
array(),
array(
"IBLOCK_ID" => 7,
"SECTION_ID" => $group['ID'],
"ACTIVE" => "Y",
"!PROPERTY_TYPE" => $donateList //тут не уверен, нужно потестить, есть ли у bitrix NOT IN
),
false,
false,
array("PROPERTY_TYPE", "PROPERTY_USER")
);
...