• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/sqlwhere.php
  • Класс: CAllSQLWhere
  • Вызов: CAllSQLWhere::addIntFilter
public function addIntFilter(&$result, $isMultiple, $FIELD_NAME, $operation, $value)
{
	if (is_array($value))
		$FIELD_VALUE = array_map("intval", $value);
	elseif (is_object($value))
		$FIELD_VALUE = $value;
	else
		$FIELD_VALUE = intval($value);

	switch ($operation)
	{
	case "I":
	case "E":
	case "S":
	case "M":
	case "SE":
		if (is_array($FIELD_VALUE))
		{
			if (!empty($FIELD_VALUE))
				$result[] = "(".$this->_NumberIN($FIELD_NAME, $FIELD_VALUE).")";
			else
				$result[] = "1=0";

			if ($isMultiple)
				$this->bDistinctReqired = true;
		}
		elseif (is_object($FIELD_VALUE))
			$result[] = $FIELD_NAME." = ".$FIELD_VALUE->compile();
		elseif ($FIELD_VALUE == 0 && $operation !== "SE")
			$result[] = "(".$FIELD_NAME." IS NULL OR ".$FIELD_NAME." = 0)";
		else
			$result[] = $FIELD_NAME." = ".$FIELD_VALUE;
		break;
	case "NI":
	case "N":
	case "NS":
	case "NM":
		if (is_array($FIELD_VALUE))
		{
			if (!empty($FIELD_VALUE))
				$result[] = "(".$this->_NumberNotIN($FIELD_NAME, $FIELD_VALUE).")";
			else
				$result[] = "1=1";
		}
		elseif ($FIELD_VALUE instanceof BitrixMainDBSqlExpression)
		{
			$result[] = $FIELD_NAME." <> ".$FIELD_VALUE->compile();
		}
		elseif ($FIELD_VALUE == 0)
			$result[] = "(".$FIELD_NAME." IS NOT NULL AND ".$FIELD_NAME." <> 0)";
		else
			$result[] = $FIELD_NAME." <> ".$FIELD_VALUE;

		if ($isMultiple)
			$this->bDistinctReqired = true;
		break;
	case "G":
		if (is_array($FIELD_VALUE))
			$result[] = $FIELD_NAME." > ".$FIELD_VALUE[0];
		elseif ($FIELD_VALUE instanceof BitrixMainDBSqlExpression)
		{
			$result[] = $FIELD_NAME." > ".$FIELD_VALUE->compile();
		}
		else
			$result[] = $FIELD_NAME." > ".$FIELD_VALUE;

		if ($isMultiple)
			$this->bDistinctReqired = true;
		break;
	case "L":
		if (is_array($FIELD_VALUE))
			$result[] = $FIELD_NAME." < ".$FIELD_VALUE[0];
		elseif ($FIELD_VALUE instanceof BitrixMainDBSqlExpression)
		{
			$result[] = $FIELD_NAME." < ".$FIELD_VALUE->compile();
		}
		else
			$result[] = $FIELD_NAME." < ".$FIELD_VALUE;

		if ($isMultiple)
			$this->bDistinctReqired = true;
		break;
	case "GE":
		if (is_array($FIELD_VALUE))
			$result[] = $FIELD_NAME." >= ".$FIELD_VALUE[0];
		elseif ($FIELD_VALUE instanceof BitrixMainDBSqlExpression)
		{
			$result[] = $FIELD_NAME." >= ".$FIELD_VALUE->compile();
		}
		else
			$result[] = $FIELD_NAME." >= ".$FIELD_VALUE;

		if ($isMultiple)
			$this->bDistinctReqired = true;
		break;
	case "LE":
		if (is_array($FIELD_VALUE))
			$result[] = $FIELD_NAME." <= ".$FIELD_VALUE[0];
		elseif ($FIELD_VALUE instanceof BitrixMainDBSqlExpression)
		{
			$result[] = $FIELD_NAME." <= ".$FIELD_VALUE->compile();
		}
		else
			$result[] = $FIELD_NAME." <= ".$FIELD_VALUE;

		if ($isMultiple)
			$this->bDistinctReqired = true;
		break;
	case "B":
		if (is_array($FIELD_VALUE) && count($FIELD_VALUE) > 1)
			$result[] = $FIELD_NAME." between ".$FIELD_VALUE[0]." AND ".$FIELD_VALUE[1];

		if ($isMultiple)
			$this->bDistinctReqired = true;
		break;
	case "NB":
		if (is_array($FIELD_VALUE) && count($FIELD_VALUE) > 1)
			$result[] = $FIELD_NAME." not between ".$FIELD_VALUE[0]." AND ".$FIELD_VALUE[1];

		if ($isMultiple)
			$this->bDistinctReqired = true;
		break;
	case "IN":
		if(is_object($FIELD_VALUE))
			$result[] = $FIELD_NAME." IN (".$FIELD_VALUE->compile().")";
		elseif(is_array($FIELD_VALUE))
			$result[] = $FIELD_NAME." IN (".implode(",", $FIELD_VALUE).")";
		else
			$result[] = $FIELD_NAME." IN (".$FIELD_VALUE.")";
		break;
	case "NIN":
		if(is_object($FIELD_VALUE))
			$result[] = $FIELD_NAME." NOT IN (".$FIELD_VALUE->compile().")";
		elseif(is_array($FIELD_VALUE))
			$result[] = $FIELD_NAME." NOT IN (".implode(",", $FIELD_VALUE).")";
		else
			$result[] = $FIELD_NAME." NOT IN (".$FIELD_VALUE.")";
		break;
	}
}