function SearchValueIsNumeric($Fld, $Value) { if (ew_IsFloatFormat($Fld->FldType)) { $Value = ew_StrToFloat($Value); } return is_numeric($Value); }
function ew_GetSearchSql(&$Fld, $FldVal, $FldOpr, $FldCond, $FldVal2, $FldOpr2, $dbid) { $sSql = ""; $virtual = $Fld->FldIsVirtual && $Fld->FldVirtualSearch; $sFldExpression = $virtual ? $Fld->FldVirtualExpression : $Fld->FldExpression; $FldDataType = $Fld->FldDataType; if (ew_IsFloatFormat($Fld->FldType)) { $FldVal = ew_StrToFloat($FldVal); $FldVal2 = ew_StrToFloat($FldVal2); } if ($virtual) { $FldDataType = EW_DATATYPE_STRING; } if ($FldDataType == EW_DATATYPE_NUMBER) { // Fix wrong operator if ($FldOpr == "LIKE" || $FldOpr == "STARTS WITH" || $FldOpr == "ENDS WITH") { $FldOpr = "="; } elseif ($FldOpr == "NOT LIKE") { $FldOpr = "<>"; } if ($FldOpr2 == "LIKE" || $FldOpr2 == "STARTS WITH" || $FldOpr2 == "ENDS WITH") { $FldOpr2 = "="; } elseif ($FldOpr2 == "NOT LIKE") { $FldOpr2 = "<>"; } } if ($FldOpr == "BETWEEN") { $IsValidValue = $FldDataType != EW_DATATYPE_NUMBER || $FldDataType == EW_DATATYPE_NUMBER && is_numeric($FldVal) && is_numeric($FldVal2); if ($FldVal != "" && $FldVal2 != "" && $IsValidValue) { $sSql = $sFldExpression . " BETWEEN " . ew_QuotedValue($FldVal, $FldDataType, $dbid) . " AND " . ew_QuotedValue($FldVal2, $FldDataType, $dbid); } } else { // Handle first value if ($FldVal == EW_NULL_VALUE || $FldOpr == "IS NULL") { $sSql = $Fld->FldExpression . " IS NULL"; } elseif ($FldVal == EW_NOT_NULL_VALUE || $FldOpr == "IS NOT NULL") { $sSql = $Fld->FldExpression . " IS NOT NULL"; } else { $IsValidValue = $FldDataType != EW_DATATYPE_NUMBER || $FldDataType == EW_DATATYPE_NUMBER && is_numeric($FldVal); if ($FldVal != "" && $IsValidValue && ew_IsValidOpr($FldOpr, $FldDataType)) { $sSql = $sFldExpression . ew_SearchString($FldOpr, $FldVal, $FldDataType, $dbid); if ($Fld->FldDataType == EW_DATATYPE_BOOLEAN && $FldVal == $Fld->FalseValue && $FldOpr == "=") { $sSql = "(" . $sSql . " OR " . $sFldExpression . " IS NULL)"; } } } // Handle second value $sSql2 = ""; if ($FldVal2 == EW_NULL_VALUE || $FldOpr2 == "IS NULL") { $sSql2 = $Fld->FldExpression . " IS NULL"; } elseif ($FldVal2 == EW_NOT_NULL_VALUE || $FldOpr2 == "IS NOT NULL") { $sSql2 = $Fld->FldExpression . " IS NOT NULL"; } else { $IsValidValue = $FldDataType != EW_DATATYPE_NUMBER || $FldDataType == EW_DATATYPE_NUMBER && is_numeric($FldVal2); if ($FldVal2 != "" && $IsValidValue && ew_IsValidOpr($FldOpr2, $FldDataType)) { $sSql2 = $sFldExpression . ew_SearchString($FldOpr2, $FldVal2, $FldDataType, $dbid); if ($Fld->FldDataType == EW_DATATYPE_BOOLEAN && $FldVal2 == $Fld->FalseValue && $FldOpr2 == "=") { $sSql2 = "(" . $sSql2 . " OR " . $sFldExpression . " IS NULL)"; } } } // Combine SQL if ($sSql2 != "") { if ($sSql != "") { $sSql = "(" . $sSql . " " . ($FldCond == "OR" ? "OR" : "AND") . " " . $sSql2 . ")"; } else { $sSql = $sSql2; } } } return $sSql; }