/** * Static function for create list page * Read params from setting * Create object of class in accordance with mode displaying page */ function &createListPage($table, $options) { global $bSubqueriesSupported, $strTableName, $conn, $locale_info, $isGroupSecurity; $gQuery = GetTableData($table, ".sqlquery", null); $params = array(); $params = $options; $params['origTName'] = GetTableData($table, ".OriginalTable", ''); $params['sessionPrefix'] = $strTableName; $params['tName'] = $table; $params['conn'] =& $conn; $params['gPageSize'] = GetTableData($table, ".pageSize", 0); $params['gOrderIndexes'] = GetTableData($table, ".orderindexes", array()); $params['gstrOrderBy'] = GetTableData($table, ".strOrderBy", ''); $params['gsqlHead'] = GetTableData($table, ".sqlHead", ''); $params['gsqlFrom'] = GetTableData($table, ".sqlFrom", ''); $params['gsqlWhereExpr'] = GetTableData($table, ".sqlWhereExpr", ''); $params['gsqlGroupBy'] = $gQuery->GroupByToSql(); $oHaving = $gQuery->Having(); $params['gsqlHaving'] = $oHaving->toSql($gQuery); $params['locale_info'] =& $locale_info; $params["subQueriesSupp"] = $bSubqueriesSupported; $params['nSecOptions'] = GetTableData($table, ".nSecOptions", 0); $params['nLoginMethod'] = GetGlobalData("nLoginMethod", 0); $params['recsPerRowList'] = GetTableData($table, ".recsPerRowList", 0); $params['tableGroupBy'] = GetTableData($table, ".tableGroupBy", ''); $params['dbType'] = GetGlobalData("dbType", 0); $params['mainTableOwnerID'] = GetTableData($table, ".mainTableOwnerID", ''); $params['moveNext'] = GetTableData($table, ".moveNext", 0); $params['exportTo'] = GetTableData($table, ".exportTo", false); $params['printFriendly'] = GetTableData($table, ".printFriendly", false); $params['deleteRecs'] = GetTableData($table, ".delete", false); $params['rowHighlite'] = GetTableData($table, ".rowHighlite", false); $params["delFile"] = GetGlobalData("delFile", false); $params["isGroupSecurity"] = $isGroupSecurity; $params['arrKeyFields'] = GetTableData($table, ".arrKeyFields", array()); $params["useIbox"] = GetTableData($table, ".useIbox", false); $params["isUseInlineAdd"] = GetTableData($table, ".isUseInlineAdd", false); $params["isUseInlineEdit"] = GetTableData($table, ".isUseInlineEdit", false); $params["isUseInlineJs"] = $params["isUseInlineAdd"] || $params["isUseInlineEdit"]; $params["globSearchFields"] = GetTableData($table, ".globSearchFields", array()); $params["panelSearchFields"] = GetTableData($table, ".panelSearchFields", array()); $params['isVerLayout'] = GetTableData($table, ".isVerLayout", false); $params['isDisplayLoading'] = GetTableData($table, ".isDisplayLoading", false); $params['createLoginPage'] = GetGlobalData("createLoginPage", false); $params['subQueriesSupAccess'] = GetTableData($table, ".subQueriesSupAccess", false); $params['noRecordsFirstPage'] = GetTableData($table, ".noRecordsFirstPage", false); $params['totalsFields'] = GetTableData($table, ".totalsFields", array()); $params['listIcons'] = GetTableData($table, ".listIcons", false); $params['edit'] = GetTableData($table, ".edit", false); $params['inlineEdit'] = GetTableData($table, ".inlineEdit", false); $params['iCopy'] = GetTableData($table, ".copy", false); $params['iView'] = GetTableData($table, ".view", false); $params['listAjax'] = GetTableData($table, ".listAjax", false); $params['arrRecsPerPage'] = GetTableData($table, ".arrRecsPerPage", array()); $params['audit'] = GetAuditObject($table); $params['listFields'] = array(); $allfields = GetFieldsList($table); foreach ($allfields as $f) { if (!AppearOnListPage($f, $table)) { continue; } $params['listFields'][] = array("fName" => $f, "goodFieldName" => GoodFieldName($f), "valueFieldName" => GoodFieldName($f) . "_value", "viewFormat" => GetFieldData($table, $f, "ViewFormat", ""), "editFormat" => GetFieldData($table, $f, "EditFormat", "")); } // choose class by mode if ($params["mode"] == LIST_SIMPLE) { $pageObject = new ListPage_Simple($params); } else { if ($params["mode"] == LIST_AJAX) { $pageObject = new ListPage_Ajax($params); } else { if ($params["mode"] == LIST_LOOKUP) { $pageObject = new ListPage_Lookup($params); } else { if ($params["mode"] == LIST_DETAILS) { $pageObject = new ListPage_DPInline($params); } else { if ($params["mode"] == RIGHTS_PAGE) { $pageObject = new RightsPage($params); } else { if ($params["mode"] == MEMBERS_PAGE) { $pageObject = new MembersPage($params); } } } } } } return $pageObject; }
function getFieldNamesByHeaders($fields) { global $strTableName, $conn, $strOriginalTableName, $ext; // check fields in column headers // check that we have labes in column headers $fieldsNotFoundArr = array(); $fNamesArr = array(); $fNamesFromQuery = GetFieldsList($strTableName); $fieldLabelError = false; $labelFieldsNotFoundArr = array(); for ($j = 0; $j < count($fields); $j++) { $labelNotFound = true; for ($i = 0; $i < count($fNamesFromQuery); $i++) { if ($ext == ".CSV") { $label = GoodFieldName($fNamesFromQuery[$i]); } else { $label = GetFieldLabel(GoodFieldName($strTableName), GoodFieldName($fNamesFromQuery[$i])); } if ($fields[$j] == $label) { $fNamesArr[$j] = $fNamesFromQuery[$i]; $labelNotFound = false; break; } } if ($labelNotFound) { $fieldLabelError = true; $labelFieldsNotFoundArr[] = $fields[$j]; } } // if field names are not labels, than compare them with fields from query $fieldsListError = false; $queryFieldsNotFoundArr = array(); if ($fieldLabelError) { $fieldFromListNotFound = true; $fNamesArr = array(); for ($j = 0; $j < count($fields); $j++) { $fieldNotFound = true; for ($i = 0; $i < count($fNamesFromQuery); $i++) { if ($fields[$j] == $fNamesFromQuery[$i]) { $fNamesArr[$j] = $fNamesFromQuery[$i]; $fieldNotFound = false; $fieldFromListNotFound = false; break; } } if ($fieldNotFound) { $fieldsListError = true; $queryFieldsNotFoundArr[] = $fields[$j]; } } } // if field list not lables or fields from query, than compare fields from DB $fieldsDbError = false; $dbFieldsNotFoundArr = array(); if ($fieldLabelError && $fieldsListError) { $fNamesArr = array(); $strSQL = "select * from " . AddTableWrappers($strOriginalTableName); $rs = db_query($strSQL, $conn); $dbFieldNum = db_numfields($rs); for ($j = 0; $j < count($fields); $j++) { $fieldFromDBNotFound = true; for ($i = 0; $i < $dbFieldNum; $i++) { $fNameFromDB = db_fieldname($rs, $i); if ($fields[$j] == $fNameFromDB) { $fNamesArr[$j] = $fNameFromDB; $fieldFromDBNotFound = false; break; } } if ($fieldFromDBNotFound) { $fieldsDbError = true; $dbFieldsNotFoundArr[] = $fields[$j]; } } } // if fields are not labels, fields from list and fields from table if ($fieldLabelError && $fieldsListError && $fieldsDbError) { if (count($labelFieldsNotFoundArr) < count($dbFieldsNotFoundArr) && count($labelFieldsNotFoundArr) < count($queryFieldsNotFoundArr)) { $fieldsNotFoundArr = $labelFieldsNotFoundArr; } elseif (count($dbFieldsNotFoundArr) < count($labelFieldsNotFoundArr) && count($dbFieldsNotFoundArr) < count($queryFieldsNotFoundArr)) { $fieldsNotFoundArr = $dbFieldsNotFoundArr; } elseif (count($queryFieldsNotFoundArr) < count($labelFieldsNotFoundArr) && count($queryFieldsNotFoundArr) < count($dbFieldsNotFoundArr)) { $fieldsNotFoundArr = $queryFieldsNotFoundArr; } elseif (count($queryFieldsNotFoundArr) == count($labelFieldsNotFoundArr) && count($queryFieldsNotFoundArr) == count($dbFieldsNotFoundArr)) { $fieldsNotFoundArr = $dbFieldsNotFoundArr; } echo "Import didn't succeed, couldn't find followind fields: " . implode(", ", $fieldsNotFoundArr); exit; } else { return $fNamesArr; } }
$checkResult = false; } if ($field == "Password") { $checkResult = false; } if ($checkResult) { if (!@$_SESSION["UserID"]) { return; } if (!CheckSecurity(@$_SESSION["_" . $strTableName . "_OwnerID"], "Edit") && !CheckSecurity(@$_SESSION["_" . $strTableName . "_OwnerID"], "Add") && !CheckSecurity(@$_SESSION["_" . $strTableName . "_OwnerID"], "Search")) { return; } } } $hasWhere = false; $fieldsArr = GetFieldsList($strTableName); foreach ($fieldsArr as $f) { $fEditFormat = GetFieldData($strTableName, $f, 'EditFormat', ''); if ($fEditFormat != EDIT_FORMAT_LOOKUP_WIZARD || GoodFieldName($f) != $field) { continue; } $LookupType = GetFieldData($strTableName, $f, 'LookupType', ''); if ($LookupType == LT_LOOKUPTABLE) { $LookupSQL = "SELECT "; if (GetFieldData($strTableName, $f, 'LookupUnique', false)) { $LookupSQL .= "DISTINCT "; } $LookupSQL .= GetLWLinkField($f, $strTableName, true); $LookupSQL .= "," . GetLWDisplayField($f, $strTableName, true); $LookupSQL .= " FROM " . AddTableWrappers(GetFieldData($strTableName, $f, 'LookupTable', '')) . " "; $strLookupWhere = LookupWhere($f, $strTableName);
/** * Get array of fields by current page type * return array - of fields */ function getFieldsByPageType() { $arrFields = array(); $allfields = GetFieldsList($this->tName); foreach ($allfields as $fName) { if ($this->pageType == PAGE_EDIT && $this->pageEditLikeInline) { $app = AppearOnCurrentPage($fName, $this->pageType, true); } else { if ($this->pageType == PAGE_ADD && $this->pageAddLikeInline) { $app = AppearOnCurrentPage($fName, $this->pageType, true); } else { $app = AppearOnCurrentPage($fName, $this->pageType); } } if ($app === 'break') { break; } elseif (!$app) { continue; } $arrFields[] = $fName; } return $arrFields; }
function GetListOfFieldsByExprType($needaggregate, $table = "") { global $strTableName, $tables_data; if (!strlen($table)) { $table = $strTableName; } if (!array_key_exists($table, $tables_data)) { return array(); } $query =& $tables_data[$table][".sqlquery"]; $fields = GetFieldsList($table); $out = array(); foreach ($fields as $idx => $f) { $aggr = $query->IsAggrFuncField($idx); if ($needaggregate && $aggr || !$needaggregate && !$aggr) { $out[] = $f; } } return $out; }
function ExportToExcel() { global $rs, $nPageSize, $strTableName, $conn, $eventObj; if ($eventObj->exists("ListFetchArray")) { $row = $eventObj->ListFetchArray($rs); } else { $row = db_fetch_array($rs); } // if(!$row) // return; $arrLabel = array(); $arrColumnWidth = array(); $arrTotal = array(); $arrTotalMessage = array(); $totals = array(); $arrFields = array(); $arrTmpTotal = array(); $arrFields = GetFieldsList($strTableName); $arrTmpTotal = GetTableData($strTableName, ".totalsFields", array()); foreach ($arrFields as $value) { $arrLabel[$value] = label($value, $strTableName); $arrColumnWidth[$value] = 10; $totals[$value] = 0; $totalsType = ""; foreach ($arrTmpTotal as $tvalue) { if ($tvalue["fName"] == $value) { $totalsType = $tvalue["totalsType"]; } } $totalsFields[] = array('fName' => $value, 'totalsType' => $totalsType, 'viewFormat' => ViewFormat($value, $strTableName)); } // write data rows $iNumberOfRows = 0; $objPHPExcel = ExportExcelInit($arrLabel, $arrColumnWidth); while ((!$nPageSize || $iNumberOfRows < $nPageSize) && $row) { countTotals($totals, $totalsFields, $row); $values = array(); $arrData = array(); $arrDataType = array(); foreach ($arrFields as $value) { if (GetEditFormat($value, $strTableName) == EDIT_FORMAT_LOOKUP_WIZARD || GetEditFormat($value, $strTableName) == EDIT_FORMAT_RADIO) { $values[$value] = ""; if (strlen($row[$value])) { $values[$value] = DisplayLookupWizard($value, $row[$value], $row, "", MODE_EXPORT); } } elseif (IsBinaryType(GetFieldType($value, $strTableName))) { $values[$value] = $row[$value]; } else { if (ViewFormat($value, $strTableName) != FORMAT_FILE_IMAGE && ViewFormat($value, $strTableName) != FORMAT_FILE && ViewFormat($value, $strTableName) != FORMAT_HYPERLINK && ViewFormat($value, $strTableName) != FORMAT_EMAILHYPERLINK && ViewFormat($value, $strTableName) != FORMAT_CHECKBOX) { $format = ViewFormat($value, $strTableName); } else { $format = FORMAT_NONE; } $values[$value] = GetData($row, $value, $format); } } $eventRes = true; if ($eventObj->exists('BeforeOut')) { $eventRes = $eventObj->BeforeOut($row, $values, $arrColumnWidth, $iNumberOfRows + 1, $objPHPExcel); } if ($eventRes) { $iNumberOfRows++; $i = 0; foreach ($arrFields as $value) { if (IsBinaryType(GetFieldType($value, $strTableName))) { $arrDataType[$value] = "binary"; } elseif (ViewFormat($value, $strTableName) == FORMAT_FILE_IMAGE) { $arrDataType[$value] = "file"; } elseif (ViewFormat($value, $strTableName) == FORMAT_DATE_SHORT || ViewFormat($value, $strTableName) == FORMAT_DATE_LONG || ViewFormat($value, $strTableName) == FORMAT_DATE_TIME) { $arrDataType[$value] = "date"; } else { $arrDataType[$value] = ""; } $arrData[$value] = $values[$value]; } ExportExcelRecord($arrData, $arrDataType, $iNumberOfRows, $objPHPExcel); } if ($eventObj->exists("ListFetchArray")) { $row = $eventObj->ListFetchArray($rs); } else { $row = db_fetch_array($rs); } } if (count($arrTmpTotal)) { foreach ($arrFields as $fName) { $value = array(); foreach ($arrTmpTotal as $tvalue) { if ($tvalue["fName"] == $fName) { $value = $tvalue; } } $total = ""; $totalMess = ""; if ($value["totalsType"]) { if ($value["totalsType"] == "COUNT") { $totalMess = "Count" . ": "; } elseif ($value["totalsType"] == "TOTAL") { $totalMess = "Total" . ": "; } elseif ($value["totalsType"] == "AVERAGE") { $totalMess = "Average" . ": "; } $total = GetTotals($fName, $totals[$fName], $value["totalsType"], $iNumberOfRows, $value["viewFormat"]); } $arrTotal[$fName] = $total; $arrTotalMessage[$fName] = $totalMess; } } ExportExcelTotals($arrTotal, $arrTotalMessage, ++$iNumberOfRows, $objPHPExcel); $formatExcel = "Excel2007"; $extExcel = ".xlsx"; if (@$_REQUEST["type"] == "excel5") { $formatExcel = "Excel5"; $extExcel = ".xls"; } ExportExcelSave(GoodFieldName($strTableName) . $extExcel, $formatExcel, $objPHPExcel); }