Example #1
0
 function SearchValueIsNumeric($Fld, $Value)
 {
     if (ew_IsFloatFormat($Fld->FldType)) {
         $Value = ew_StrToFloat($Value);
     }
     return is_numeric($Value);
 }
Example #2
0
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;
}