Caribasius
9/4/2017 - 10:50 AM

#user #group #logic #d7

#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();
}