• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/update/workgroupdeptsync.php
  • Класс: BitrixSocialnetworkUpdateWorkgroupDeptSync
  • Вызов: WorkgroupDeptSync::getCount
static function getCount(): int
{
	$result = 0;

	$workgroupsToSync = Option::get('socialnetwork', 'workgroupsToSync');
	$workgroupsToSync = ($workgroupsToSync !== '' ? @unserialize($workgroupsToSync, [ 'allowed_classes' => false ]) : []);

	if (
		is_array($workgroupsToSync)
		&& !empty($workgroupsToSync)
	)
	{
		$workgroupsToSync = self::reduceList($workgroupsToSync);

		$nonEmptyWorkgroupList = [];

		foreach ($workgroupsToSync as $workgroupData)
		{
			$workgroupId = $workgroupData['groupId'];
			$groupCounter = 0;

			$data = self::getUsers($workgroupId);

			if (
				isset($data['PLUS'])
				&& is_array($data['PLUS'])
			)
			{
				$groupCounter += count($data['PLUS']);
			}

			if (
				isset($data['MINUS'])
				&& is_array($data['MINUS'])
			)
			{
				foreach ($data['MINUS'] as $userId)
				{
					if (isset($data['OLD_RELATIONS'][$userId]))
					{
						$groupCounter++;
					}
				}
			}

			if ($groupCounter > 0)
			{
				$nonEmptyWorkgroupList[] = [
					'groupId' => $workgroupId,
					'initiatorId' => $workgroupData['initiatorId'],
					'exclude' => ($workgroupData['exclude'] ?? false),
				];
				$result += $groupCounter;
			}
		}

		Option::set('socialnetwork', 'workgroupsToSync', serialize($nonEmptyWorkgroupList));
	}

	return $result;
}