...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/mysql/crm_activity.php
- Класс: \CCrmActivity
- Вызов: CCrmActivity::PrepareBindingsFilterSql
static function PrepareBindingsFilterSql(&$arBindings, $tableAlias = '') { if(!is_array($arBindings)) { return ''; } $qty = count($arBindings); if($qty === 0) { return ''; } $tableAlias = strval($tableAlias); if($tableAlias === '') { $tableAlias = CAllCrmActivity::TABLE_ALIAS; } $bindingTableName = self::BINDING_TABLE_NAME; $sql = ''; if($qty === 1) { $binding = $arBindings[0]; $ownerTypeID = isset($binding['OWNER_TYPE_ID']) ? intval($binding['OWNER_TYPE_ID']) : 0; if($ownerTypeID > 0) { $sql = "B.OWNER_TYPE_ID = {$ownerTypeID}"; $ownerID = isset($binding['OWNER_ID']) ? intval($binding['OWNER_ID']) : 0; if($ownerID > 0) { $sql .= " AND B.OWNER_ID = {$ownerID}"; } } return $sql !== '' ? "INNER JOIN {$bindingTableName} B ON B.ACTIVITY_ID = {$tableAlias}.ID AND {$sql}" : ''; } else { foreach($arBindings as &$binding) { $ownerTypeID = isset($binding['OWNER_TYPE_ID']) ? intval($binding['OWNER_TYPE_ID']) : 0; if($ownerTypeID <= 0) { continue; } $s = "B.OWNER_TYPE_ID = {$ownerTypeID}"; $ownerID = isset($binding['OWNER_ID']) ? intval($binding['OWNER_ID']) : 0; if($ownerID > 0) { $s .= " AND B.OWNER_ID = {$ownerID}"; } if($sql !== '') { $sql .= ' OR '; } $sql .= "({$s})"; } unset($binding); return $sql !== '' ? "INNER JOIN {$bindingTableName} B ON B.ACTIVITY_ID = {$tableAlias}.ID AND ({$sql})" : ''; } }