CCrmActivity::PrepareBindingsFilterSql

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmActivity
  4. PrepareBindingsFilterSql
  • Модуль: 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})" : '';
	}
}

Добавить комментарий