$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)) {
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 ""; }