- Модуль: 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;
}
}