#user #group #logic #d7
$arFilter = Array(
Array(
"LOGIC"=>"OR",
Array(
"ID"=>1
),
Array(
Array(
"@ID"=>new \Bitrix\Main\DB\SqlExpression(getSqlForGroup(16)) // временный пользователь
)
),
Array(
Array(
"@ID"=>new \Bitrix\Main\DB\SqlExpression(getSqlForGroup(6)) // болельщик
)
)
)
);
$res = Bitrix\Main\UserTable::getList(Array(
"select"=>Array('ID', 'LOGIN'),
"filter"=>$arFilter,
"data_doubling"=>false
));
$arUswrsIDs = array();
while ($arRes = $res->fetch()) {
$arUswrsIDs[] = $arRes['ID'];
//$arUswrsIDs[] = $arRes['LOGIN'];
}
function getSqlForGroup ($group) {
$connection = Bitrix\Main\Application::getConnection();
$helper = $connection->getSqlHelper();
$query = new \Bitrix\Main\Entity\Query(Bitrix\Main\UserGroupTable::getEntity());
$query->setSelect(Array("D_USER_ID"));
$query->setFilter(Array(
"GROUP_ID"=>$group,
Array(
"LOGIC"=>"OR",
"DATE_ACTIVE_FROM"=>false,
"<=DATE_ACTIVE_FROM"=>new \Bitrix\Main\DB\SqlExpression($helper->getCurrentDateTimeFunction())
),
Array(
"LOGIC"=>"OR",
"DATE_ACTIVE_TO"=>false,
">=DATE_ACTIVE_TO"=>new \Bitrix\Main\DB\SqlExpression($helper->getCurrentDateTimeFunction())
)
));
$query->registerRuntimeField(0, new \Bitrix\Main\Entity\ExpressionField('D_USER_ID', 'DISTINCT(USER_ID)'));
return $query->getQuery();
}