- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integrity/automaticduplicatelist.php
- Класс: Bitrix\Crm\Integrity\AutomaticDuplicateList
- Вызов: AutomaticDuplicateList::getRootItemCount
public function getRootItemCount()
{
$typeIDs = $this->getTypeIDs();
if (empty($typeIDs))
{
throw new Main\NotSupportedException("Criterion types are required.");
}
$query = new Main\Entity\Query(Entity\AutomaticDuplicateIndexTable::getEntity());
$query->registerRuntimeField('', new Main\Entity\ExpressionField('CNT', 'COUNT(*)'));
$query->addSelect('CNT');
$permissionSql = '';
if ($this->enablePermissionCheck)
{
$permissions = \CCrmPerms::GetUserPermissions($this->userID);
$permissionSql = \CCrmPerms::BuildSql(
\CCrmOwnerType::ResolveName($this->entityTypeID),
'',
'READ',
array('RAW_QUERY' => true, 'PERMS' => $permissions)
);
if ($permissionSql === false)
{
//Access denied;
return null;
}
}
$query->addFilter('=USER_ID', $this->userID);
$query->addFilter('=ENTITY_TYPE_ID', $this->entityTypeID);
$query->addFilter('@TYPE_ID', $typeIDs);
if ($this->matchHash != '')
{
$query->addFilter('=MATCH_HASH', $this->matchHash);
}
$query->addFilter('=SCOPE', $this->scope);
if (!empty($this->statusIDs))
{
$query->addFilter('@STATUS_ID', $this->statusIDs);
}
if ($this->enablePermissionCheck && $permissionSql !== '')
{
$query->addFilter('@ROOT_ENTITY_ID', new Main\DB\SqlExpression($permissionSql));
}
$dbResult = $query->exec();
$fields = $dbResult->fetch();
return is_array($fields) && isset($fields['CNT']) ? (int)$fields['CNT'] : 0;
}