...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_event.php
- Класс: \CCrmEvent
- Вызов: CCrmEvent::RegisterViewEvent
public function RegisterViewEvent($entityTypeID, $entityID, $userID = 0) { $entityTypeName = CCrmOwnerType::ResolveName($entityTypeID); if(is_int($entityID)) { $entityID = (int)$entityID; } if($userID <= 0) { $userID = CCrmSecurityHelper::GetCurrentUserID(); } if($userID <= 0) { return false; } $user = \Bitrix\Main\UserTable::query() ->where('ID', $userID) ->setSelect(['IS_REAL_USER']) ->fetch(); if (!$user || $user['IS_REAL_USER'] !== 'Y') { return false; } $timestamp = time() + CTimeZone::GetOffset(); //Event grouping interval in seconds $interval = HistorySettings::getCurrent()->getViewEventGroupingInterval() * 60; $query = new Bitrix\Main\Entity\Query(Bitrix\Crm\EventTable::getEntity()); $query->setSelect(['ID']); $query->addFilter('=EVENT_TYPE', CCrmEvent::TYPE_VIEW); $query->addFilter('>=DATE_CREATE', ConvertTimeStamp(($timestamp - $interval), 'FULL')); $query->addFilter('=CREATED_BY_ID', $userID); $query->registerRuntimeField( '', new ReferenceField('RELATIONS', Bitrix\Crm\EventRelationsTable::getEntity(), [ 'ref.EVENT_ID' => 'this.ID', 'ref.ENTITY_TYPE' => new \Bitrix\Main\DB\SqlExpression('?s', $entityTypeName), 'ref.ENTITY_ID' => new \Bitrix\Main\DB\SqlExpression('?i', $entityID), ], ['join_type' => Join::TYPE_INNER] ) ); $query->setLimit(1); $dbResult = $query->exec()->fetch(); if ($dbResult) { return false; } $entity = new CCrmEvent(); $entity->Add( array( 'USER_ID' => $userID, 'ENTITY_ID' => $entityID, 'ENTITY_TYPE' => $entityTypeName, 'EVENT_TYPE' => CCrmEvent::TYPE_VIEW, 'EVENT_NAME' => CCrmEvent::GetEventTypeName(CCrmEvent::TYPE_VIEW), 'DATE_CREATE' => ConvertTimeStamp($timestamp, 'FULL', SITE_ID) ), false ); return true; }