• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/task/viewedgroup.php
  • Класс: BitrixTasksInternalsTaskViewedGroupTable
  • Вызов: ViewedGroupTable::upsert
static function upsert(array $data): void
{
	$now = new DateTime();

	$typeId = (int)($data['TYPE_ID']) ? (int)$data['TYPE_ID'] : Enum::UNDEFINED;
	$userId = isset($data['USER_ID']) ? (int)$data['USER_ID'] : 0;
	$groupId = isset($data['GROUP_ID']) ? (int)$data['GROUP_ID'] : 0;
	$memberType = in_array($data['MEMBER_TYPE'], MemberTable::possibleTypes()) ? $data['MEMBER_TYPE']: Group::MEMBER_TYPE_UNDEFINED;

	$insertFields = [

		'TYPE_ID' => $typeId,
		'USER_ID' => $userId,
		'GROUP_ID' => $groupId,
		'VIEWED_DATE' => $now,
		'MEMBER_TYPE' => $memberType,
	];

	$updateFields = [
		'VIEWED_DATE' => $now,
	];

	$connection = MainApplication::getConnection();
	$queries = $connection->getSqlHelper()->prepareMerge(
		static::getTableName(),
		[
			'MEMBER_TYPE',
			'USER_ID',
			'GROUP_ID',
			'TYPE_ID'
		],
		$insertFields,
		$updateFields
	);

	foreach($queries as $query)
	{
		$connection->queryExecute($query);
	}
}