Пример #1
0
$arr_page_order_fields["data"]=array();
$arr_not_group_fields=array();

for ( $i=0; $i < count($xml_array['group_fields'])-1; $i++ ) {
	$aGroupFields[] = $xml_array['tables'][0]."_".$xml_array['group_fields'][$i]['name'];
}


$aTotFields=array();


foreach ( $inspect_fields as $fld ) {
	if(is_wr_db())
		$fld_type=WRGetFieldType($fld['table'].".".$fld['name']);
	elseif(is_wr_custom())
		$fld_type=WRCustomGetFieldType($fld['table'],$fld['name']);
	else
		$fld_type=GetFieldType($fld['name'],$fld['table']);	
	
	if ( !IsBinaryType($fld_type)) {
		$aTotFields[] = $fld['table']."_".$fld['name'];
	}
}

$ngFieldNames = array_diff( $aTotFields, $aGroupFields );


$arr_alias = array();
foreach ( $aGroupFields as $gr_name  ) {
	foreach ( $inspect_fields as $fld ) {
		if ( $gr_name == $fld['table']."_".$fld['name'] && !in_array($fld['table']."_".$fld['name'], $arr_alias)) {
Пример #2
0
function GenericStrWhereAdv($strTable, $strField, $SearchFor, $strSearchOption, $SearchFor2, $etype)
{
    global $dal;
    $sfield = $strField;
    $stable = "";
    if (is_wr_db()) {
        WRSplitFieldName($strField, $stable, $sfield);
        $type = WRGetFieldType($strField);
    } else {
        $type = WRCustomGetFieldType($strTable, $strField);
    }
    if (GetDatabaseType() != nDATABASE_MSSQLServer) {
        $ismssql = false;
    } else {
        $ismssql = true;
    }
    $btexttype = IsTextType($type);
    if (GetDatabaseType() == nDATABASE_MySQL) {
        $btexttype = false;
    }
    if (IsBinaryType($type)) {
        return "";
    }
    if (GetDatabaseType() == nDATABASE_MSSQLServer) {
        if ($btexttype && $strSearchOption != "Contains" && $strSearchOption != "Starts with ...") {
            return "";
        }
    }
    if ($strSearchOption == 'Empty') {
        if (IsCharType($type) && (!$ismssql || !$btexttype)) {
            return "(" . WRAddFieldWrappers($strField) . " is null or " . WRAddFieldWrappers($strField) . "='')";
        } elseif ($ismssql && $btexttype) {
            return "(" . WRAddFieldWrappers($strField) . " is null or " . WRAddFieldWrappers($strField) . " LIKE '')";
        } else {
            return WRAddFieldWrappers($strField) . " is null";
        }
    }
    if (GetDatabaseType() == nDATABASE_PostgreSQL) {
        $like = "ilike";
    } else {
        $like = "like";
    }
    if (GetGenericEditFormat($strTable, $sfield) == EDIT_FORMAT_LOOKUP_WIZARD) {
        $pSet = new ProjectSettings($strTable);
        if ($pSet->multiSelect($sfield)) {
            $SearchFor = splitvalues($SearchFor);
        } else {
            $SearchFor = array($SearchFor);
        }
        $ret = "";
        foreach ($SearchFor as $searchItem) {
            $value = $searchItem;
            if (!($value == "null" || $value == "Null" || $value == "")) {
                if (strlen($ret)) {
                    $ret .= " or ";
                }
                if ($strSearchOption == "Equals") {
                    $value = WRmake_db_value($sfield, $value, $strTable);
                    if (!($value == "null" || $value == "Null")) {
                        $ret .= WRAddFieldWrappers($strField) . '=' . $value;
                    }
                } else {
                    $connection = getWebreportConnection();
                    if (strpos($value, ",") !== false || strpos($value, '"') !== false) {
                        $value = '"' . str_replace('"', '""', $value) . '"';
                    }
                    $ret .= WRAddFieldWrappers($strField) . " = " . $connection->prepareString($value);
                    $ret .= " or " . WRAddFieldWrappers($strField) . " " . $like . " " . $connection->prepareString("%," . $value . ",%");
                    $ret .= " or " . WRAddFieldWrappers($strField) . " " . $like . " " . $connection->prepareString("%," . $value);
                    $ret .= " or " . WRAddFieldWrappers($strField) . " " . $like . " " . $connection->prepareString($value . ",%");
                }
            }
        }
        if (strlen($ret)) {
            $ret = "(" . $ret . ")";
        }
        return $ret;
    }
    if (GetGenericEditFormat($strTable, $sfield) == EDIT_FORMAT_CHECKBOX) {
        if ($SearchFor == "none") {
            return "";
        }
        if (NeedQuotes($type)) {
            if ($SearchFor == "on") {
                return "(" . WRAddFieldWrappers($strField) . "<>'0' and " . WRAddFieldWrappers($strField) . "<>'' and " . WRAddFieldWrappers($strField) . " is not null)";
            } else {
                return "(" . WRAddFieldWrappers($strField) . "='0' or " . WRAddFieldWrappers($strField) . "='' or " . WRAddFieldWrappers($strField) . " is null)";
            }
        } else {
            if ($SearchFor == "on") {
                return "(" . WRAddFieldWrappers($strField) . "<>0 and " . WRAddFieldWrappers($strField) . " is not null)";
            } else {
                return "(" . WRAddFieldWrappers($strField) . "=0 or " . WRAddFieldWrappers($strField) . " is null)";
            }
        }
    }
    $value1 = WRmake_db_value($sfield, $SearchFor, $strTable);
    $value2 = false;
    if ($strSearchOption == "Between") {
        $value2 = WRmake_db_value($sfield, $SearchFor2, $strTable);
    }
    if ($strSearchOption != "Contains" && $strSearchOption != "Starts with ..." && ($value1 === "null" || $value2 === "null")) {
        return "";
    }
    $connection = getWebreportConnection();
    if (IsCharType($type) && !$btexttype) {
        $value1 = $connection->upper($value1);
        $value2 = $connection->upper($value2);
        $strField = $connection->upper(WRAddFieldWrappers($strField));
    } elseif ($ismssql && !$btexttype && ($strSearchOption == "Contains" || $strSearchOption == "Starts with ...")) {
        $strField = "convert(varchar," . WRAddFieldWrappers($strField) . ")";
    } elseif (GetDatabaseType() == nDATABASE_PostgreSQL && !$btexttype && ($strSearchOption == "Contains" || $strSearchOption == "Starts with ...")) {
        $strField = "CAST(" . WRAddFieldWrappers($strField) . " AS TEXT)";
    } else {
        $strField = WRAddFieldWrappers($strField);
    }
    $ret = "";
    if ($strSearchOption == "Contains") {
        if (IsCharType($type) && !$btexttype) {
            return $strField . " " . $like . " " . $connection->upper($connection->prepareString("%" . $SearchFor . "%"));
        } else {
            return $strField . " " . $like . " " . $connection->prepareString("%" . $SearchFor . "%");
        }
    } else {
        if ($strSearchOption == "Equals") {
            return $strField . "=" . $value1;
        } else {
            if ($strSearchOption == "Starts with ...") {
                if (IsCharType($type) && !$btexttype) {
                    return $strField . " " . $like . " " . $connection->upper($connection->prepareString($SearchFor . "%"));
                } else {
                    return $strField . " " . $like . " " . $connection->prepareString($SearchFor . "%");
                }
            } else {
                if ($strSearchOption == "More than ...") {
                    return $strField . ">" . $value1;
                } else {
                    if ($strSearchOption == "Less than ...") {
                        return $strField . "<" . $value1;
                    } else {
                        if ($strSearchOption == "Equal or more than ...") {
                            return $strField . ">=" . $value1;
                        } else {
                            if ($strSearchOption == "Equal or less than ...") {
                                return $strField . "<=" . $value1;
                            } else {
                                if ($strSearchOption == "Between") {
                                    $ret = $strField . ">=" . $value1;
                                    $ret .= " and " . $strField . "<=" . $value2;
                                    return $ret;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return "";
}