• Модуль: socialservices
  • Путь к файлу: ~/bitrix/modules/socialservices/lib/contact.php
  • Класс: BitrixSocialservicesContactTable
  • Вызов: ContactTable::onNetworkBroadcast
static function onNetworkBroadcast($data)
{
	$contactsList = array();
	$possibleContactsList = array();

	if(isset($data["contact"]) && is_array($data["contact"]))
	{
		foreach($data["contact"] as $contact)
		{
			if(!isset($contactsList[$contact['CONTACT_OWNER']]))
			{
				$contactsList[$contact['CONTACT_OWNER']] = array();
			}

			$contactsList[$contact['CONTACT_OWNER']][] = $contact;
		}
	}

	if(isset($data["contact_possible"]) && is_array($data["contact_possible"]))
	{
		foreach($data["contact_possible"] as $contact)
		{
			if(!isset($possibleContactsList[$contact['CONTACT_OWNER']]))
			{
				$possibleContactsList[$contact['CONTACT_OWNER']] = array();
			}

			$possibleContactsList[$contact['CONTACT_OWNER']][] = $contact;
		}
	}

	$dbRes = UserTable::getList(array(
		'filter' => array(
			'=EXTERNAL_AUTH_ID' => CSocServBitrix24Net::ID,
			'=XML_ID' => array_unique(
				array_merge(
					array_keys($contactsList),
					array_keys($possibleContactsList)
				)
			),
		),
		'select' => array('ID', 'USER_ID', 'XML_ID')
	));

	while($owner = $dbRes->fetch())
	{
		if(
			count($contactsList) > 0
			&& count($contactsList[$owner["XML_ID"]]) > 0
		)
		{
			static::processContacts($owner, $contactsList[$owner["XML_ID"]]);
		}

		if(
			count($possibleContactsList) > 0
			&& count($possibleContactsList[$owner["XML_ID"]]) > 0
		)
		{
			static::processPossibleContacts($owner, $possibleContactsList[$owner["XML_ID"]]);
		}
	}
}