public function getPageCount($table, $pageRows, $req = array()) { $pageAllRows = xgrid::getTableRowCount($table, $req); $extraRows = 0; $out = 0; if ($pageRows != 0) { $extraRows = $pageAllRows % $pageRows; $out = ($pageAllRows - $extraRows) / $pageRows; } if ((int) $extraRows != 0) { $out++; } return $out; }
public function getOut($req) { $mysql = new mysql_class(); $gname = ''; $gtmp = array(); foreach ($this->tables as $gname => $ttable) { $gtmp[$gname]['gname'] = $gname; $gtmp[$gname]['table'] = $ttable; $gtmp[$gname]['contentDiv'] = $this->contentDiv[$gname]; $gtmp[$gname]['canAdd'] = $this->canAdd[$gname]; $gtmp[$gname]['canEdit'] = $this->canEdit[$gname]; $gtmp[$gname]['canDelete'] = $this->canDelete[$gname]; $gtmp[$gname]['targetFile'] = $this->targetFile[$gname]; $gtmp[$gname]['cssClass'] = $this->cssClass[$gname]; $gtmp[$gname]['start'] = $this->start[$gname]; $gtmp[$gname]['addColCount'] = $this->addColCount[$gname]; $gtmp[$gname]['tableProperty'] = $this->tableProperty[$gname]; $gtmp[$gname]['css'] = $this->css[$gname]; $this->pageAllRows[$gname] = $this->getTableRowCount($ttable, $req); $this->pageCount[$gname] = $this->getPageCount($ttable, $this->pageRows[$gname], $req); $gtmp[$gname]['pageCount'] = $this->pageCount[$gname]; $gtmp[$gname]['pageNumber'] = $this->pageNumber[$gname]; $gtmp[$gname]['eRequest'] = $this->eRequest[$gname]; $gtmp[$gname]['alert'] = $this->alert; $gtmp[$gname]['disableRowColor'] = $this->disableRowColor[$gname]; } if (isset($req['command']) && isset($req['table']) && $req['command'] != 'csv') { $gname = trim($req['table']); $table = $this->tables[$gname]; $this->done = TRUE; $fn = ''; if (isset($req['field'])) { $fn = isset($this->column[$gname][$this->fieldToId($gname, $req['field'])]['cfunction'][1]) ? $this->column[$gname][$this->fieldToId($gname, $req['field'])]['cfunction'][1] : ''; } $this->out[$gname] = 'error'; switch ($req['command']) { case 'update': if (isset($req['field']) && isset($req['value']) && isset($req['id'])) { $this->out[$gname] = $this->update($table, $req['id'], $req['field'], $req['value'], $fn, $gname); } else { $this->out[$gname] = 'failed'; } break; case 'delete': if (isset($req['ids']) && $req['ids'] != '') { $this->out[$gname] = $this->delete($table, $req['ids'], $gname); } else { $this->out[$gname] = 'failed'; } break; case 'insert': $this->out[$gname] = $this->insert($gname, $table, $req); break; /* case 'csv': $all = $req['all']=='1'?TRUE:FALSE; if(!$all) { //$csvTmp = fromJSON($req['data']); $csvFileName = '../csv/'.$req['fname']; $csvF = fopen($csvFileName,"w+"); foreach($csvTmp as $line) fputcsv($csvF,$line); fclose($csvF); $this->out[$gname] = '../csv/'.$req['fname']; } else $this->out[$gname] = ''; break; */ } $this->pageCount[$gname] = $this->getPageCount($table, $this->pageRows[$gname], $req); $this->out[$gname] = $this->out[$gname] . ',' . $this->pageCount[$gname] . ',' . $gname; } else { if (isset($req['pageNumber']) && isset($req['table'])) { $gname = trim($req['table']); $isCsv = isset($req['command']) && $req['command'] == 'csv'; $whereClause = $this->whereClause[$gname]; $werc = isset($req['werc']) ? $req['werc'] : ''; $werc = str_replace('|', '%', $werc); $werc = str_replace('where', ' ', $werc); $werc = str_replace("\\'", "'", $werc); if ($werc != '' || $whereClause != '') { $werc = ' where ' . $werc . ' ' . ($werc != '' && $whereClause != '' ? 'and ' . $whereClause : $whereClause); } $ttable = $this->tables[$gname]; $this->pageCount[$gname] = $this->getPageCount($ttable, $this->pageRows[$gname], $req); $this->done = TRUE; $gname = trim($req['table']); $table = $this->tables[$gname]; if (isset($req['pageNumber'])) { $this->pageNumber[$gname] = (int) $req['pageNumber']; } $sort = ''; $sort_array = array(); foreach ($req as $rk => $rv) { $sort_tmp = explode("-", $rk); if (count($sort_tmp) == 2 && $sort_tmp[0] == 'sort') { $sort_array[] = $rv; } } if (count($sort_array) > 0) { $sort = (strpos($werc, 'order') === FALSE ? " order by `" : ',`') . implode('` desc,`', $sort_array) . "` desc"; } if ($this->echoQuery) { echo 'select * from `' . $table . '` ' . $werc . ' ' . $sort . ' limit ' . (int) (($this->pageNumber[$gname] - 1) * $this->pageRows[$gname]) . ',' . (int) $this->pageRows[$gname] . "<br/>\n"; } $mysql->ex_sql('select * from `' . $table . '` ' . $werc . ' ' . $sort . ' limit ' . (int) (($this->pageNumber[$gname] - 1) * $this->pageRows[$gname]) . ',' . (int) $this->pageRows[$gname], $q); $i = 0; $row = array(); $csvHead = ""; $loadHead = TRUE; $csvBigBody = ""; foreach ($q as $rr) { $cell = array(); $csvBody = ''; foreach ($this->column[$gname] as $k => $field) { $fn = isset($field['cfunction'][0]) ? $field['cfunction'][0] : ''; //$tValue = ($fn!='')?$fn(htmlentities($rr[$field['fieldname']])):htmlentities($rr[$field['fieldname']]); $tValue = $fn != '' ? $fn($rr[$field['fieldname']]) : $rr[$field['fieldname']]; if ($loadHead) { $csvHead .= ($csvHead != '' ? "," : '') . $field['fieldname']; } //$tmpVal = str_replace("\n",'',((!isset($this->column[$gname][$k]['clist']))?$tValue:$this->column[$gname][$k]['clist'][$rr[$field['fieldname']]])); //$tmpVal = str_replace(',','',$tmpVal); //$tmpVal = mb_convert_encoding($tmpVal,'UTF-8');//,"Windows-1256"); //$tmpVal = mb_convert_encoding($tmpVal, 'UTF-16LE', 'UTF-8'); //$tmpVal = mb_convert_encoding($tmpVal,"Windows-1252"); //if($k > 0) // $csvBody .= (($csvBody!='')?",":'').strip_tags($tmpVal); $cell[] = array('value' => $tValue, 'css' => $this->loadCellCss($rr['id'], $field['fieldname']), 'typ' => $field['typ']); if (in_array($field['fieldname'], $sort_array)) { $this->column[$gname][$k]['sort'] = 'done'; } } $loadHead = FALSE; $csvBigBody .= "{$csvBody}\n"; $row[] = array('cell' => $cell, 'css' => $this->loadRowCss($rr['id'], $gname)); } $rowCount = xgrid::getTableRowCount($ttable, $req); foreach ($this->column[$gname] as $indx => $column) { if (isset($column['clist'])) { $this->column[$gname][$indx]['clist'] = $this->arrayToObject($column['clist']); } if (isset($column['searchDetails'])) { $this->column[$gname][$indx]['searchDetails'] = $this->arrayToObject($column['searchDetails']); } } $grid = array('column' => $this->column[$gname], 'rows' => $row, 'cssClass' => $this->css[$gname], 'tableProperty' => $this->tableProperty[$gname], 'css' => '', 'buttonTitles' => $this->buttonTitles[$gname], 'eRequest' => $this->eRequest[$gname], 'pageCount' => $this->pageCount[$gname], 'alert' => $this->alert, 'scrollDown' => $this->scrollDown[$gname], 'xls' => $this->xls[$gname], 'pageRows' => $this->pageRows[$gname], 'rowCount' => $rowCount); if (!$isCsv) { $affn = $this->afterCreateFunction[$gname]; if ($affn != '') { $fgrid = $affn($grid); } else { $fgrid = $grid; } $this->out[$gname] = toJSON($fgrid); } else { $csvOut = ""; header('Content-Type: text/csv; charset=utf8'); header('Content-disposition: attachment;filename=' . $req['table'] . '.csv'); header('Content-type: application/x-msdownload'); $this->out[$gname] = $csvBigBody; //.mb_convert_encoding($csvHead."\n".$csvBigBody, 'UTF-16LE', 'UTF-8'); } } } $gtmp[$gname]['pageCount'] = $this->pageCount[$gname]; $this->arg = toJSON($gtmp); return isset($this->out[$gname]) ? $this->out[$gname] : ''; }