| в highload блоке есть поле привязка к юзеру у юзера есть поле привязка к инфоблоку стран надо получить часть данных по фильтру из highload, подтянуть email из юзеров, подтянуть название страны юзера |
use Bitrix\Highloadblock\HighloadBlockTable as HLBT;
\Bitrix\Main\Loader::includeModule('iblock');
function GetEntityDataClass($HlBlockId){
if (empty($HlBlockId) || $HlBlockId < 1 || !CModule::IncludeModule('highloadblock')){
return false;
}
$hlblock = HLBT::getById($HlBlockId)->fetch();
$entity = HLBT::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
return $entity_data_class;
}
$entity_data_class = GetEntityDataClass(3);
if($entity_data_class){
$rsData = $entity_data_class::getList([
'select' => ['UF_USER'],
'filter' => ['UF_BETA_TESTING' => 2]
]);
$userIds = [];
while($el = $rsData->fetch()){
$userIds[$el["UF_USER"]] = $el["UF_USER"];
}
$result = \Bitrix\Main\UserTable::getList([
'select' => ['ID','NAME',"EMAIL","UF_ISO_COUNTRY"],
'filter' => ['ID'=>$userIds],
'order' => ['LAST_LOGIN'=>'DESC'],
'limit' => 700 //я знаю что их 650
]);
$countryIds = [];
$arUsers = [];
while ($arUser = $result->fetch()) {
if(!empty($arUser["UF_ISO_COUNTRY"])){
$countryIds[$arUser["UF_ISO_COUNTRY"]] = $arUser["UF_ISO_COUNTRY"];
}
$arUsers[] = $arUser;
}
if(!empty($countryIds)){
$dbItems = \Bitrix\Iblock\Elements\ElementCountriesTable::getList([
'filter'=>["ID"=>$countryIds],
'select' => ['ID', 'NAME'],
]);
$arCountries = [];
while ($arCountry = $dbItems->fetch()){
$arCountries[$arCountry["ID"]] = $arCountry["NAME"];
}
}
foreach($arUsers as $arUser){
echo $arUser["ID"]."|",$arUser["NAME"]."|".$arUser["EMAIL"]."|";
if(!empty($arUser["UF_ISO_COUNTRY"]) && !empty($arCountries[$arUser["UF_ISO_COUNTRY"]])){
echo $arCountries[$arUser["UF_ISO_COUNTRY"]];
}
echo "<br>";
}
}
|