function Chart(&$ch_array, $param) { global $field_labels; if ($this->webchart) { $this->chrt_array = Convert_Old_Chart($ch_array); } else { $this->chrt_array = $ch_array; } $this->setConnection(); $this->pSet = new ProjectSettings($this->chrt_array['tables'][0]); $this->showDetails = $param['showDetails']; if ($this->showDetails) { $this->detailTablesData = $this->pSet->getDetailTablesArr(); } $this->hasFlash = $param["hasFlash"]; $this->pageId = $param["pageId"]; $this->chrt_array["appearance"]["autoupdate"] = false; $this->numRecordsToShow = $this->chrt_array['appearance']['maxbarscroll']; if ($this->numRecordsToShow < 1) { $this->numRecordsToShow = 1; } $this->table_type = $this->chrt_array["table_type"]; if (!$this->table_type) { $this->table_type = "project"; } $this->webchart = $param["webchart"]; $this->cname = $param["cname"]; $this->chartPreview = $param["chartPreview"]; $this->dashChart = $param["dashChart"]; $this->sessionPrefix = $this->chrt_array['tables'][0]; if ($this->dashChart) { $this->dashTName = $param["dashTName"]; $this->dashElementName = $param["dashElementName"]; $this->sessionPrefix = $this->dashTName . "_" . $this->sessionPrefix; } $this->gstrOrderBy = $param["gstrOrderBy"]; $TableName = GoodFieldName($this->chrt_array['tables'][0]); // #10461, $this->setConnection(); needs to be called after value is assigned to $this->webchart $this->setConnection(); if ($this->isProjectDB()) { $this->cipherer = new RunnerCipherer($this->chrt_array['tables'][0]); } $this->header = $this->chrt_array['appearance']['head']; $this->footer = $this->chrt_array['appearance']['foot']; $this->y_axis_label = $this->chrt_array['appearance']['y_axis_label']; for ($i = 0; $i < count($this->chrt_array['parameters']) - 1; $i++) { if (isset($this->chrt_array['parameters'][$i]['currencyFormat'])) { $this->arrFormatCurrency[] = $this->chrt_array['parameters'][$i]['currencyFormat']; } else { if ($this->chrt_array['appearance']['scur'] == "false") { $this->arrFormatCurrency[] = ""; } else { $this->arrFormatCurrency[] = $this->chrt_array['appearance']['scur']; } } if (isset($this->chrt_array['parameters'][$i]['decimalFormat'])) { $this->arrFormatDecimal[] = $this->chrt_array['parameters'][$i]['decimalFormat']; } else { $this->arrFormatDecimal[] = $this->chrt_array['appearance']['dec']; } $this->arrFormatCustomer[] = $this->chrt_array['parameters'][$i]['customFormat']; $this->arrFormatCustomerStr[] = $this->chrt_array['parameters'][$i]['customFormatStr']; if ($this->chrt_array["chart_type"]["type"] == "ohlc" || $this->chrt_array["chart_type"]["type"] == "candlestick") { $this->arrOHLC_color[] = "#" . $this->chrt_array['parameters'][$i]['ohlcColor']; if ($this->table_type != "db") { $this->arrOHLC_open[] = $this->chrt_array['parameters'][$i]['ohlcOpen']; $this->arrOHLC_high[] = $this->chrt_array['parameters'][$i]['ohlcHigh']; $this->arrOHLC_low[] = $this->chrt_array['parameters'][$i]['ohlcLow']; $this->arrOHLC_close[] = $this->chrt_array['parameters'][$i]['ohlcClose']; } else { if ($this->chrt_array['parameters'][$i]['agr_func']) { $this->arrOHLC_open[] = $this->chrt_array['parameters'][$i]['agr_func'] . "_" . $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['ohlcOpen']; $this->arrOHLC_high[] = $this->chrt_array['parameters'][$i]['agr_func'] . "_" . $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['ohlcHigh']; $this->arrOHLC_low[] = $this->chrt_array['parameters'][$i]['agr_func'] . "_" . $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['ohlcLow']; $this->arrOHLC_close[] = $this->chrt_array['parameters'][$i]['agr_func'] . "_" . $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['ohlcClose']; } else { $this->arrOHLC_open[] = $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['ohlcOpen']; $this->arrOHLC_high[] = $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['ohlcHigh']; $this->arrOHLC_low[] = $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['ohlcLow']; $this->arrOHLC_close[] = $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['ohlcClose']; } } if ($this->chrt_array["chart_type"]["type"] == "candlestick") { $this->arrOHLC_candle[] = "#" . $this->chrt_array['parameters'][$i]['ohlcCandleColor']; } } elseif ($this->chrt_array['parameters'][$i]['name'] != "") { if ($this->table_type != "db") { $this->arrDataSeries[] = $this->chrt_array['parameters'][$i]['agr_func'] ? $this->chrt_array['parameters'][$i]['label'] : $this->chrt_array['parameters'][$i]['name']; if ($this->chrt_array["chart_type"]["type"] == "bubble") { $this->arrDataSize[] = $this->chrt_array['parameters'][$i]['size']; } } else { $this->arrDataSeries[] = $this->chrt_array['parameters'][$i]['agr_func'] ? $this->chrt_array['parameters'][$i]['agr_func'] . "_" . $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['name'] : $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['name']; if ($this->chrt_array["chart_type"]["type"] == "bubble") { $this->arrDataSize[] = $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['size']; } } if (isset($this->chrt_array['appearance']['scolor' . ($i + 1) . '1'])) { $this->arrDataColor[] = $this->chrt_array['appearance']['scolor' . ($i + 1) . '1']; } else { $this->arrDataColor[] = $this->chrt_array['parameters'][$i]['series_color']; } if ($this->chrt_array["chart_type"]["type"] == "gauge") { for ($k = 0; is_array($this->chrt_array["parameters"][$i]["gaugeColorZone"]) && $k < count($this->chrt_array["parameters"][$i]["gaugeColorZone"]); $k++) { $beginColor = (double) @$this->chrt_array["parameters"][$i]["gaugeColorZone"][$k]["gaugeBeginColor"]; $endColor = (double) @$this->chrt_array["parameters"][$i]["gaugeColorZone"][$k]["gaugeEndColor"]; $gColor = "#" . @$this->chrt_array["parameters"][$i]["gaugeColorZone"][$k]["gaugeColor"]; $this->arrGaugeColor[count($this->arrDataSeries) - 1][] = array($beginColor, $endColor, $gColor); } } } if ($this->table_type == "project" && !$this->webchart) { if ($this->chrt_array["chart_type"]["type"] != "candlestick" && $this->chrt_array["chart_type"]["type"] != "ohlc") { $this->arrDataLabels[] = $this->chart_xmlencode(GetFieldLabel(GoodFieldName($TableName), GoodFieldName($this->chrt_array['parameters'][$i]['name']))); } else { $this->arrDataLabels[] = $this->chart_xmlencode(GetFieldLabel(GoodFieldName($TableName), GoodFieldName($this->chrt_array['parameters'][$i]['ohlcOpen']))); } } else { if (!$this->chart_xmlencode($this->chrt_array['parameters'][$i]['label'])) { if ($this->chrt_array["chart_type"]["type"] != "candlestick" && $this->chrt_array["chart_type"]["type"] != "ohlc") { $this->arrDataLabels[] = $this->chart_xmlencode($this->chrt_array['parameters'][$i]['name']); } else { $this->arrDataLabels[] = $this->chart_xmlencode($this->chrt_array['parameters'][$i]['ohlcOpen']); } } else { $this->arrDataLabels[] = $this->chart_xmlencode($this->chrt_array['parameters'][$i]['label']); } } } if ($this->chrt_array["chart_type"]["type"] != "gauge") { if ($this->table_type != "db") { $this->strLabel = $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name']; } else { $this->strLabel = $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['agr_func'] ? $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['agr_func'] . "_" . $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['table'] . "_" . $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name'] : $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['table'] . "_" . $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name']; } for ($j = 0; $j < count($this->chrt_array['fields']); $j++) { if ($this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name'] == $this->chrt_array['fields'][$j]['name']) { if ($this->table_type == "project") { $this->label2 = $this->chart_xmlencode(GetFieldLabel($TableName, GoodFieldName($this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name']))); } else { $this->label2 = $this->chart_xmlencode($this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name']); } } } } if ($this->chrt_array["chart_type"]["type"] != "ohlc" && $this->chrt_array["chart_type"]["type"] != "candlestick") { foreach ($this->arrDataColor as $ind => $val) { if ($ind == 0) { $this->arrAxesColor = "#000000"; } else { $this->arrAxesColor = "#" . $this->arrDataColor[$ind]; } } } else { foreach ($this->arrOHLC_color as $ind => $val) { if ($ind == 0) { $this->arrAxesColor = "#000000"; } else { $this->arrAxesColor = "#" . $this->arrOHLC_color[$ind]; } } } // prepare search params $gQuery = $this->pSet->getSQLQuery(); $masterWhere = ""; if (!$this->dashChart) { $masterTable = $_SESSION[$this->sessionPrefix . "_mastertable"]; $detailKeysByM = $this->pSet->getDetailKeysByMasterTable($masterTable); if (count($detailKeysByM)) { for ($i = 0; $i < count($detailKeysByM); $i++) { if ($i != 0) { $masterWhere .= " and "; } if ($this->cipherer && isEncryptionByPHPEnabled()) { $mValue = $this->cipherer->MakeDBValue($detailKeysByM[$i], $_SESSION[$this->sessionPrefix . "_masterkey" . ($i + 1)]); } else { $mValue = make_db_value($detailKeysByM[$i], $_SESSION[$this->sessionPrefix . "_masterkey" . ($i + 1)]); } if (strlen($mValue) != 0) { $masterWhere .= RunnerPage::_getFieldSQLDecrypt($detailKeysByM[$i], $this->connection, $this->pSet, $this->cipherer) . "=" . $mValue; } else { $masterWhere .= "1=0"; } } } } $strWhereClause = ""; $searchHavingClause = ""; $strSearchCriteria = "and"; global $strTableName; // search where for basic charts if (!$this->webchart) { if (!$this->chartPreview && isset($_SESSION[$this->sessionPrefix . '_advsearch'])) { $searchClauseObj = SearchClause::UnserializeObject($_SESSION[$this->sessionPrefix . '_advsearch']); include_once getabspath('classes/controls/EditControlsContainer.php'); $editControls = new EditControlsContainer(null, $this->pSet, PAGE_SEARCH, $this->cipherer); $whereComponents = RunnerPage::sGetWhereComponents($gQuery, $this->pSet, $searchClauseObj, $editControls, $this->connection); $strWhereClause = $whereComponents["searchWhere"]; foreach ($whereComponents["filterWhere"] as $fWhere) { $strWhereClause = whereAdd($strWhereClause, $fWhere); } $searchHavingClause = $whereComponents["searchHaving"]; foreach ($whereComponents["filterHaving"] as $fHaving) { $searchHavingClause = whereAdd($searchHavingClause, $fHaving); } $strSearchCriteria = $whereComponents["searchUnionRequired"] ? "or" : "and"; } } else { if ($this->table_type != "project") { $strTableName = "webchart" . $this->cname; } $strWhereClause = CalcSearchParam($this->table_type != "project"); } if ($strWhereClause) { $this->chrt_array['where'] .= $this->chrt_array['where'] ? " AND (" . $strWhereClause . ")" : " WHERE (" . $strWhereClause . ")"; } if ($this->table_type == "project") { if (SecuritySQL("Search", $this->chrt_array['tables'][0])) { $strWhereClause = whereAdd($strWhereClause, SecuritySQL("Search", $strTableName)); } $this->strSQL = $gQuery->gSQLWhere($strWhereClause, $searchHavingClause, $strSearchCriteria); $strOrderBy = $this->gstrOrderBy; $this->strSQL .= " " . $strOrderBy; if ($masterWhere) { $strWhereClause = whereAdd($strWhereClause, $masterWhere); } $strSQLbak = $this->strSQL; if (tableEventExists("BeforeQueryChart", $strTableName)) { $tstrSQL = $this->strSQL; $eventObj = getEventObject($strTableName); $eventObj->BeforeQueryChart($tstrSQL, $strWhereClause, $strOrderBy); $this->strSQL = $tstrSQL; } if ($strSQLbak == $this->strSQL) { $this->strSQL = $gQuery->gSQLWhere($strWhereClause, $searchHavingClause, $strSearchCriteria); $this->strSQL .= " " . $strOrderBy; } } if ($this->cname && $this->table_type == "db") { $this->strSQL = $this->chrt_array['sql'] . $this->chrt_array['where'] . $this->chrt_array['group_by'] . $this->chrt_array['order_by']; } elseif ($this->cname && $this->table_type == "custom") { if (!IsStoredProcedure($this->chrt_array['sql'])) { $sql_query = $this->chrt_array['sql']; if ($this->connection->dbType == nDATABASE_MSSQLServer) { $pos = strrpos(strtoupper($sql_query), "ORDER BY"); if ($pos) { $sql_query = substr($sql_query, 0, $pos); } } if ($this->connection->dbType != nDATABASE_Oracle) { $this->strSQL = "select * from (" . $sql_query . ") as " . $this->connection->addFieldWrappers("custom_query") . $this->chrt_array['where']; } else { $this->strSQL = "select * from (" . $sql_query . ")" . $this->chrt_array['where']; } } else { $this->strSQL = $this->chrt_array['sql']; } } if (tableEventExists("UpdateChartSettings", $strTableName)) { $eventObj = getEventObject($strTableName); $eventObj->UpdateChartSettings($this); } }
function DoInsertRecordSQL($table, &$avalues, &$blobfields, $pageid, &$pageObject, &$cipherer) { global $error_happened, $conn, $inlineadd, $usermessage, $message, $failed_inline_add, $keys, $strTableName; // make SQL string $strSQL = "insert into " . AddTableWrappers($table) . " "; $strFields = "("; $strValues = "("; $blobs = PrepareBlobs($avalues, $blobfields); foreach ($avalues as $akey => $value) { $strFields .= $pageObject->pSet->getTableField($akey) . ", "; if (in_array($akey, $blobfields)) { $strValues .= $value . ", "; } else { if (is_null($cipherer)) { $strValues .= add_db_quotes($akey, $value) . ", "; } else { $strValues .= $cipherer->AddDBQuotes($akey, $value) . ", "; } } } if (substr($strFields, -2) == ", ") { $strFields = substr($strFields, 0, strlen($strFields) - 2); } if (substr($strValues, -2) == ", ") { $strValues = substr($strValues, 0, strlen($strValues) - 2); } $strSQL .= $strFields . ") values " . $strValues . ")"; if (!ExecuteUpdate($pageObject, $strSQL, $blobs, true)) { return false; } if ($error_happened) { return false; } $pageObject->ProcessFiles(); if ($inlineadd == ADD_INLINE) { $status = "ADDED"; $message = "" . "Record was added" . ""; $IsSaved = true; } else { $message = "<<< " . "Record was added" . " >>>"; } if ($usermessage != "") { $message = $usermessage; } $auditObj = GetAuditObject($table); if ($inlineadd == ADD_SIMPLE || $inlineadd == ADD_INLINE || $inlineadd == ADD_ONTHEFLY || $inlineadd == ADD_POPUP || $inlineadd == ADD_MASTER || tableEventExists("AfterAdd", $strTableName) || $auditObj) { $failed_inline_add = false; $keyfields = $pageObject->pSet->getTableKeys(); foreach ($keyfields as $k) { if (array_key_exists($k, $avalues)) { $keys[$k] = $avalues[$k]; } elseif ($pageObject->pSet->isAutoincField($k)) { $lastrs = @db_query("SELECT lastval()", $conn); if ($lastdata = db_fetch_numarray($lastrs)) { $keys[$k] = $lastdata[0]; } } else { $failed_inline_add = true; } } } return true; }
function getReport($from = 0) { global $bSubqueriesSupported; $this->init($from); // include all records in report with pagination $this->_doPaging = $from == -1; $isExistTimeFormatField = false; for ($i = 0; $i < count($this->fieldsArr); $i++) { if ($this->fieldsArr[$i]['viewFormat'] == "Time") { $isExistTimeFormatField = true; break; } } // retrieve ALL records from table $this->_fullRequest = $this->_doPaging || $this->repGlobalSummary && $isExistTimeFormatField; // MYSQL version < 5.0 // a very bad thing to do, but we need this for global summary and pagination if (!$bSubqueriesSupported) { $this->_fullRequest = true; } // use non-optimized algorithm $this->_recordBasedRequest = $this->_fullRequest; // request records if there is no grouping if (!$this->repGroupFieldsCount) { $this->_recordBasedRequest = true; } //////////////////////////////// start building report $this->_sql->setRecordBasedRequest($this->_recordBasedRequest); if ($this->_doPaging || $this->_fullRequest) { $this->_sql->_limitLevel = 0; // no limits } else { if (!$this->repGroupFieldsCount) { $this->_sql->_limitLevel = 2; } else { $this->_sql->_limitLevel = 1; } // limit groups } $page = -1; $nRow = 0; if (!$this->_recordBasedRequest) { // get groups to show $groups = $this->_groups->getDisplayGroups($from); // iterate through records in these groups $hsql = $this->_sql->sql2($groups); if (tableEventExists('BeforeQueryReport', $this->tName)) { $hwhere = $hsql['where']; $eventsObj = getEventObject($this->tName); $eventsObj->BeforeQueryReport($hwhere); $hsql['where'] = $hwhere; } $sql = $this->_sql->buildsql($hsql); $cursor = db_query($sql, $this->_connection); while ($data = $this->cipherer->DecryptFetchedArray($cursor)) { $this->pageObject->recId = $nRow; $this->setSummary($this->repShowDet, $data, $this->recordVisible($nRow) ? $this->getFormattedRow($data) : null); $nRow++; } } else { $this->_groups->init($from); $this->_sql->setOldAlgorithm(); $hsql = $this->_sql->sql2(null); $sql = $this->_sql->buildsql($hsql); $cursor = db_query($sql, $this->_connection); while ($data = $this->cipherer->DecryptFetchedArray($cursor)) { if ($this->repGroupFieldsCount) { // take a record group into account $this->_groups->setGroup($data); } if ($this->_fullRequest) { $this->_groups->setGlobalSummary(true, $data); } if ($this->repGroupFieldsCount) { $visible = $this->_doPaging || $this->_groups->isVisibleGroup() || $this->_pagesize == -1; } else { $visible = $this->recordVisible($nRow); } if ($visible) { $this->pageObject->recId = $nRow; $this->setSummary(true, $data, $this->getFormattedRow($data)); } else { if (!$this->_fullRequest && count($this->_list) > 0) { // exit loop at the end of visible recordset break; } } $nRow++; } $this->_sql->setOldAlgorithm(false); } $this->setFinish(); $this->makeSummary(); $global_totals = $this->getTotals(); $this->writePageSummary(); $globals = $this->writeGlobalSummary($global_totals); if ($this->repGroupFieldsCount) { $countrows = $this->_groups->getCountGroups($this->_fullRequest); $countGroups = $countrows; } else { $countrows = $global_totals['count']; $countGroups = 1; } $maxpages = 1; if ($this->_pagesize > 0) { $maxpages = ceil($countrows / $this->_pagesize); } $returnthis = array('list' => $this->_list, 'global' => $globals, 'page' => $this->_summary, 'maxpages' => $maxpages, 'countRows' => $countrows, 'countGroups' => $countGroups); return $returnthis; }
/** * Get a report's SQL query string * @param String strSQL The report table's SQL query * @return String */ protected function getstrSQL($strSQL) { global $strTableName; $group_x = $this->getIntervalType($this->index_field_x); $group_y = $this->getIntervalType($this->index_field_y); $fName = $this->CrossGoodFieldName($this->dataField); $select_field = "' ', "; $avg_func = ""; if ($fName != " ") { $select_field = $this->dataGroupFunction . "(" . $this->connection->addFieldWrappers($fName) . "), "; $this->is_value_empty = false; $ftype = $this->getFieldType($field); if ($this->dataGroupFunction == "avg" && !IsDateFieldType($ftype)) { $avg_func = ", sum(" . $this->connection->addFieldWrappers($fName) . ") as " . $this->connection->addFieldWrappers("avg_sum") . ", count(" . $this->connection->addFieldWrappers($fName) . ") as " . $this->connection->addFieldWrappers("avg_count"); } else { $avg_func = ", 1 as " . $this->connection->addFieldWrappers("avg_sum") . ", 1 as " . $this->connection->addFieldWrappers("avg_count"); } } $whereClause = ""; if (tableEventExists("BeforeQueryReport", $strTableName)) { $eventObj = getEventObject($strTableName); $eventObj->BeforeQueryReport($whereClause); if ($whereClause) { $whereClause = " where " . $whereClause; } } $selectClause = "select " . $select_field . $group_y[0] . ", " . $group_x[0] . $avg_func; $groupByClause = "group by " . $group_x[1] . ", " . $group_y[1]; $orderByClause = "order by " . $group_x[1] . "," . $group_y[1]; if ($this->connection->dbType != nDATABASE_Oracle) { if ($this->connection->dbType == nDATABASE_MSSQLServer) { $pos = strrpos(strtoupper($strSQL), "ORDER BY"); if ($pos) { $strSQL = substr($strSQL, 0, $pos); } } return $selectClause . " from (" . $strSQL . ") as cross_table" . $whereClause . " " . $groupByClause . " " . $orderByClause; } return $selectClause . " from (" . $strSQL . ")" . $whereClause . " " . $groupByClause . " " . $orderByClause; }
function getstrSQL() { global $strSQL; $gr_x = $_SESSION[$this->TableName . "_gr_x"]; $gr_y = $_SESSION[$this->TableName . "_gr_y"]; $index_field = $_SESSION[$this->TableName . "_field"]; $group_func = $_SESSION[$this->TableName . "_group_func"]; $group_x = array(); $group_y = array(); $arr_value = array(); if ($gr_x == "") { $this->index_field_x = $this->getFirstGroupField("x"); $group_x = $this->getIntervalType($this->index_field_x); } else { $group_x = $this->getIntervalType($gr_x); $this->index_field_x = $gr_x; } if ($gr_y == "") { $this->index_field_y = $this->getFirstGroupField("y"); $group_y = $this->getIntervalType($this->index_field_y); } else { $group_y = $this->getIntervalType($gr_y); $this->index_field_y = $gr_y; } $arr_value = $this->getSelectedValue(); if ($index_field == "") { if (!empty($arr_value)) { $field = $arr_value[0]; $val = AddFieldWrappers($this->CrossGoodFieldName($field)); } else { $field = $_SESSION['webreports']['group_fields'][0]["name"]; $val = AddFieldWrappers($this->CrossGoodFieldName($field)); } } else { $val = AddFieldWrappers($this->CrossGoodFieldName($arr_value[$index_field])); $field = $arr_value[$index_field]; } if ($group_func == "") { $group_func = "sum"; } $gr_func = $this->getGroupFunction($field, $group_func); $select_field = "' ', "; $avg_func = ""; if ($val != " ") { $select_field = $gr_func . "(" . AddFieldWrappers($val) . "), "; $this->is_value_empty = false; $ftype = $this->getFieldType($field); if ($group_func == "avg" && !IsDateFieldType($ftype)) { $avg_func = ", sum(" . AddFieldWrappers($val) . ") as " . AddFieldWrappers("avg_sum") . ", count(" . AddFieldWrappers($val) . ") as " . AddFieldWrappers("avg_count"); } else { $avg_func = ", 1 as " . AddFieldWrappers("avg_sum") . ", 1 as " . AddFieldWrappers("avg_count"); } } global $strTableName; $hwhere = ""; if (tableEventExists("BeforeQueryReport", $strTableName)) { $eventObj = getEventObject($strTableName); $eventObj->BeforeQueryReport($hwhere); if ($hwhere) { $hwhere = " where " . $hwhere; } } $crtableSQL = "select " . $select_field . $group_y[0] . ", " . $group_x[0] . $avg_func . " from (" . $strSQL . ") as cross_table" . $hwhere . " group by " . $group_x[1] . ", " . $group_y[1] . " Order by " . $group_x[1]; //echo $crtableSQL; return $crtableSQL; }
function Chart(&$ch_array, $param) { global $field_labels; if ($this->webchart) { $this->chrt_array = Convert_Old_Chart($ch_array); } else { $this->chrt_array = $ch_array; } $this->pSet = new ProjectSettings($this->chrt_array['tables'][0]); $this->chrt_array["appearance"]["autoupdate"] = false; $this->numRecordsToShow = $this->chrt_array['appearance']['maxbarscroll']; if ($this->numRecordsToShow < 1) { $this->numRecordsToShow = 1; } $this->table_type = $this->chrt_array["table_type"]; if (!$this->table_type) { $this->table_type = "project"; } $this->webchart = $param["webchart"]; $this->cname = $param["cname"]; $this->sessionPrefix = $this->chrt_array['tables'][0]; $this->gstrOrderBy = $param["gstrOrderBy"]; $TableName = GoodFieldName($this->chrt_array['tables'][0]); $this->cipherer = new RunnerCipherer($this->chrt_array['tables'][0]); $this->header = $this->chrt_array['appearance']['head']; $this->footer = $this->chrt_array['appearance']['foot']; $this->y_axis_label = $this->chrt_array['appearance']['y_axis_label']; for ($i = 0; $i < count($this->chrt_array['parameters']) - 1; $i++) { if (isset($this->chrt_array['parameters'][$i]['currencyFormat'])) { $this->arrFormatCurrency[] = $this->chrt_array['parameters'][$i]['currencyFormat']; } else { if ($this->chrt_array['appearance']['scur'] == "false") { $this->arrFormatCurrency[] = ""; } else { $this->arrFormatCurrency[] = $this->chrt_array['appearance']['scur']; } } if (isset($this->chrt_array['parameters'][$i]['decimalFormat'])) { $this->arrFormatDecimal[] = $this->chrt_array['parameters'][$i]['decimalFormat']; } else { $this->arrFormatDecimal[] = $this->chrt_array['appearance']['dec']; } $this->arrFormatCustomer[] = $this->chrt_array['parameters'][$i]['customFormat']; $this->arrFormatCustomerStr[] = $this->chrt_array['parameters'][$i]['customFormatStr']; if ($this->chrt_array["chart_type"]["type"] == "ohlc" || $this->chrt_array["chart_type"]["type"] == "candlestick") { $this->arrOHLC_open[] = $this->chrt_array['parameters'][$i]['ohlcOpen']; $this->arrOHLC_high[] = $this->chrt_array['parameters'][$i]['ohlcHigh']; $this->arrOHLC_low[] = $this->chrt_array['parameters'][$i]['ohlcLow']; $this->arrOHLC_close[] = $this->chrt_array['parameters'][$i]['ohlcClose']; $this->arrOHLC_color[] = "#" . $this->chrt_array['parameters'][$i]['ohlcColor']; if ($this->chrt_array["chart_type"]["type"] == "candlestick") { $this->arrOHLC_candle[] = "#" . $this->chrt_array['parameters'][$i]['ohlcCandleColor']; } } elseif ($this->chrt_array['parameters'][$i]['name'] != "") { if ($this->table_type != "db") { $this->arrDataSeries[] = $this->chrt_array['parameters'][$i]['agr_func'] ? $this->chrt_array['parameters'][$i]['label'] : $this->chrt_array['parameters'][$i]['name']; } else { $this->arrDataSeries[] = $this->chrt_array['parameters'][$i]['agr_func'] ? $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['label'] : $this->chrt_array['parameters'][$i]['table'] . "_" . $this->chrt_array['parameters'][$i]['name']; } if (isset($this->chrt_array['appearance']['scolor' . ($i + 1) . '1'])) { $this->arrDataColor[] = $this->chrt_array['appearance']['scolor' . ($i + 1) . '1']; } else { $this->arrDataColor[] = $this->chrt_array['parameters'][$i]['series_color']; } if ($this->chrt_array["chart_type"]["type"] == "bubble") { $this->arrDataSize[] = $this->chrt_array['parameters'][$i]['size']; } if ($this->chrt_array["chart_type"]["type"] == "gauge") { for ($k = 0; is_array($this->chrt_array["parameters"][$i]["gaugeColorZone"]) && $k < count($this->chrt_array["parameters"][$i]["gaugeColorZone"]); $k++) { $beginColor = (double) @$this->chrt_array["parameters"][$i]["gaugeColorZone"][$k]["gaugeBeginColor"]; $endColor = (double) @$this->chrt_array["parameters"][$i]["gaugeColorZone"][$k]["gaugeEndColor"]; $gColor = "#" . @$this->chrt_array["parameters"][$i]["gaugeColorZone"][$k]["gaugeColor"]; $this->arrGaugeColor[count($this->arrDataSeries) - 1][] = array($beginColor, $endColor, $gColor); } } } if ($this->table_type == "project" && !$this->webchart) { $this->arrDataLabels[] = $this->chart_xmlencode(GetFieldLabel(GoodFieldName($TableName), GoodFieldName($this->chrt_array['parameters'][$i]['name']))); } else { if (!$this->chart_xmlencode($this->chrt_array['parameters'][$i]['label'])) { $this->arrDataLabels[] = $this->chart_xmlencode($this->chrt_array['parameters'][$i]['name']); } else { $this->arrDataLabels[] = $this->chart_xmlencode($this->chrt_array['parameters'][$i]['label']); } } } if ($this->chrt_array["chart_type"]["type"] != "gauge") { if ($this->table_type != "db") { $this->strLabel = $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name']; } else { $this->strLabel = $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['table'] . "_" . $this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name']; } for ($j = 0; $j < count($this->chrt_array['fields']); $j++) { if ($this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name'] == $this->chrt_array['fields'][$j]['name']) { if ($this->table_type == "project") { $this->label2 = $this->chart_xmlencode(GetFieldLabel($TableName, GoodFieldName($this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name']))); } else { $this->label2 = $this->chart_xmlencode($this->chrt_array['parameters'][count($this->chrt_array['parameters']) - 1]['name']); } } } } if ($this->chrt_array["chart_type"]["type"] != "ohlc" && $this->chrt_array["chart_type"]["type"] != "candlestick") { foreach ($this->arrDataColor as $ind => $val) { if ($ind == 0) { $this->arrAxesColor = "#000000"; } else { $this->arrAxesColor = "#" . $this->arrDataColor[$ind]; } } } else { foreach ($this->arrOHLC_color as $ind => $val) { if ($ind == 0) { $this->arrAxesColor = "#000000"; } else { $this->arrAxesColor = "#" . $this->arrOHLC_color[$ind]; } } } // prepare search params $gQuery = $this->pSet->getSQLQuery(); $strWhereClause = ""; $searchHavingClause = ""; $strSearchCriteria = "and"; global $strTableName; // search where for basic charts if (!$this->webchart) { if (isset($_SESSION[$this->sessionPrefix . '_advsearch'])) { $searchClauseObj = unserialize($_SESSION[$this->sessionPrefix . '_advsearch']); include_once getabspath('classes/controls/EditControlsContainer.php'); $editControls = new EditControlsContainer(null, $this->pSet, PAGE_REPORT, $this->cipherer); $strWhereClause = $searchClauseObj->getWhere($this->pSet->getListOfFieldsByExprType(false), $editControls); $searchHavingClause = $searchClauseObj->getWhere($this->pSet->getListOfFieldsByExprType(true), $editControls); $strSearchCriteria = @$_SESSION[$strTableName . "_criteria"]; if ($searchClauseObj->isUsedSearchFor && !$searchClauseObj->isUsedFieldsForSearch) { $strSearchCriteria = "or"; } } } else { if ($this->table_type != "project") { $strTableName = "webchart" . $this->cname; } $strWhereClause = CalcSearchParam($this->table_type != "project"); } if ($strWhereClause) { $this->chrt_array['where'] .= $this->chrt_array['where'] ? " AND (" . $strWhereClause . ")" : " WHERE (" . $strWhereClause . ")"; } if ($this->table_type == "project") { if (SecuritySQL("Search")) { $strWhereClause = whereAdd($strWhereClause, SecuritySQL("Search")); } $this->strSQL = $gQuery->gSQLWhere($strWhereClause, $searchHavingClause, $strSearchCriteria); $strOrderBy = $this->gstrOrderBy; $this->strSQL .= " " . $strOrderBy; $strSQLbak = $this->strSQL; if (tableEventExists("BeforeQueryChart", $strTableName)) { $tstrSQL = $this->strSQL; $eventObj = getEventObject($strTableName); $eventObj->BeforeQueryChart($tstrSQL, $strWhereClause, $strOrderBy); $this->strSQL = $tstrSQL; } if ($strSQLbak == $this->strSQL) { $this->strSQL = $gQuery->gSQLWhere($strWhereClause, $searchHavingClause, $strSearchCriteria); $this->strSQL .= " " . $strOrderBy; } } if ($this->cname && $this->table_type == "db") { $this->strSQL = $this->chrt_array['sql'] . $this->chrt_array['where'] . $this->chrt_array['group_by'] . $this->chrt_array['order_by']; } elseif ($this->cname && $this->table_type == "custom") { if (!IsStoredProcedure($this->chrt_array['sql'])) { $sql_query = $this->chrt_array['sql']; if (GetDatabaseType() == 2) { $pos = strrpos(strtoupper($sql_query), "ORDER BY"); if ($pos) { $sql_query = substr($sql_query, 0, $pos); } } if (GetDatabaseType() != 1) { //Oracle $this->strSQL = "select * from (" . $sql_query . ") as " . AddFieldWrappers("custom_query") . $this->chrt_array['where']; } else { $this->strSQL = "select * from (" . $sql_query . ")" . $this->chrt_array['where']; } } else { $this->strSQL = $this->chrt_array['sql']; } } if (tableEventExists("UpdateChartSettings", $strTableName)) { $eventObj = getEventObject($strTableName); $eventObj->UpdateChartSettings($this); } }
/** * insert record on Add & Register pages * @intellisense */ function DoInsertRecordSQL($table,&$avalues,&$blobfields, $pageid, &$pageObject, &$cipherer, &$keys) { global $error_happened,$conn,$inlineadd,$message,$failed_inline_add,$strTableName; // make SQL string $strSQL = "insert into ".AddTableWrappers($table)." "; $strFields="("; $strValues="("; $blobs = PrepareBlobs($avalues,$blobfields); foreach($avalues as $akey=>$value) { $strFields .= $pageObject->pSet->getTableField($akey).", "; if(in_array($akey, $blobfields)) $strValues.=$value.", "; else if(is_null($cipherer)) $strValues .= add_db_quotes($akey,$value).", "; else $strValues .= $cipherer->AddDBQuotes($akey,$value).", "; } if(substr($strFields,-2)==", ") $strFields=substr($strFields,0,strlen($strFields)-2); if(substr($strValues,-2)==", ") $strValues=substr($strValues,0,strlen($strValues)-2); $strSQL.=$strFields.") values ".$strValues.")"; if(!ExecuteUpdate($pageObject,$strSQL,$blobs,true)) return false; if($error_happened) return false; $pageObject->ProcessFiles(); if ( $inlineadd==ADD_INLINE ) { $status="ADDED"; $message=""."Record was added".""; $IsSaved = true; } else $message="<<< "."Record was added"." >>>"; $auditObj = GetAuditObject($table); if($inlineadd==ADD_SIMPLE || $inlineadd==ADD_INLINE || $inlineadd==ADD_ONTHEFLY || $inlineadd==ADD_POPUP || $inlineadd==ADD_MASTER || tableEventExists("AfterAdd",$strTableName) || $auditObj) { $keys = prepareTableKeysAfterInsert($table, $avalues, $pageObject, $keys); } return true; }