function GetGuests($iblockId, $id, $arParams = array()) { $arResult = array(); $bOnlyOwner = false; if ($arParams && $arParams['bCheckOwner'] && ($arParams['ownerType'] == 'USER' || !$arParams['bHostIsAbsent'])) { $rsHost = CIBlockElement::GetList(array(), array("=ID" => $id), false, false, array("CREATED_BY")); if ($arHost = $rsHost->Fetch()) { $rsHostUser = CUser::GetByID($arHost["CREATED_BY"]); if ($arHostUser = $rsHostUser->Fetch()) { $arHostUser["FULL_NAME"] = CEventCalendar::GetFullUserName($arHostUser); $arResult[$arHost["CREATED_BY"]] = array('CREATED_BY' => $arHostUser, 'PROPERTY_VALUES' => array('CONFIRMED' => 'Y'), 'IS_HOST' => true); $bOnlyOwner = true; } } } if ($ar = CEventCalendar::GetLinkIBlock($iblockId)) { $rsGuests = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $iblockId, "PROPERTY_" . $ar["ID"] => $id), false, false, array("ID", "IBLOCK_ID", "CREATED_BY", "NAME", "ACTIVE_FROM", "ACTIVE_TO", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "IBLOCK_SECTION_ID")); while ($arGuest = $rsGuests->Fetch()) { $guest_id = intval($arGuest["CREATED_BY"]); if ($guest_id > 0) { $rsUser = CUser::GetList($o, $b, array("ID_EQUAL_EXACT" => $guest_id)); $arUser = $rsUser->Fetch(); if ($arUser) { $arUser["FULL_NAME"] = CEventCalendar::GetFullUserName($arUser); $arGuest["CREATED_BY"] = $arUser; $arGuest["PROPERTY_VALUES"] = array(); $rsProp = CIBlockElement::GetProperty($iblockId, $arGuest["ID"], array("EMPTY" => "N")); while ($arProp = $rsProp->Fetch()) { if (strlen($arProp["CODE"]) > 0) { $prop_id = $arProp["CODE"]; } else { $prop_id = $arProp["ID"]; } if ($arProp["PROPERTY_TYPE"] == "L") { $value = $arProp["VALUE_XML_ID"]; } else { $value = $arProp["VALUE"]; } if ($arProp["MULTIPLE"] == "Y") { $arGuest["PROPERTY_VALUES"][$prop_id][$arProp["PROPERTY_VALUE_ID"]] = $value; } else { $arGuest["PROPERTY_VALUES"][$prop_id] = $value; } } $arResult[$guest_id] = $arGuest; $bOnlyOwner = false; } } } } return $bOnlyOwner && $arParams['DontReturnOnlyOwner'] ? array() : $arResult; }