var $marker_txt;
var $marker_class;
var $notice_class;
-
+ var $header_fun; // additional row between title and body
+ var $header_class;
+ var $footer_fun;
+ var $footer_class;
var $data = array();
var $curr_page,
$group;
var $extra_where;
- var $ready = false;
+ var $ready = false; // this var is false after change in sql before first
+ // and before first query.
// db_pager constructor
// accepts $sql like 'SELECT .... FROM .... [WHERE ...] [GROUP ...]'
$group = $this->group;
if(count($this->extra_where)) {
- $wherw .= ($where=='' ? '' : ' AND ')
+ $where .= ($where=='' ? '' : ' AND ')
.implode( $this->extra_where, ' AND ');
}
if ($where) $where = " WHERE($where)";
$this->marker_class = $markercl;
$this->notice_class = $msgclass;
}
+ //
+ // Set handler to display additional row between titles and pager body.
+ // Return array of column contents.
+ //
+ function set_header($func, $headercl='inquirybg')
+ {
+ $this->header_fun = $func;
+ $this->header_class = $headercl;
+ }
+ //
+ // Set handler to display additional row between pager body and navibar.
+ // Return array of column contents.
+ //
+ function set_footer($func, $footercl='inquirybg')
+ {
+ $this->footer_fun = $func;
+ $this->footer_class = $footercl;
+ }
};
//-----------------------------------------------------------------------------
// Creates new db_pager $_SESSION object on first page call.
function &new_db_pager($name, $sql, $coldef, $page_len = 0) {
- if (isset($name) && isset($_SESSION[$name])) {
- // kill old pager if any on first page call
- if ($_SERVER['REQUEST_METHOD'] == 'GET')
- unset($_SESSION[$name]);
- else
- return $_SESSION[$name];
- }
- $ret =& new db_pager($sql, $name, $page_len);
- $ret->set_columns($coldef);
+ if ($_SERVER['REQUEST_METHOD'] == 'GET')
+ unset($_SESSION[$name]); // kill old pager if any exists on first page call
- if (isset($name)) $_SESSION[$name] = &$ret;
+ if (!isset($_SESSION[$name]))
+ $_SESSION[$name] =& new db_pager($sql, $name, $page_len);
+
+ $ret = &$_SESSION[$name];
+ $ret->set_sql($sql);
+ $ret->set_columns($coldef);
return $ret;
}
start_table("$table_style width=95%");
table_header($headers);
+ if($pager->header_fun) { // if set header handler
+ start_row("class='{$pager->header_class}'");
+ $fun = $pager->header_fun;
+ if (method_exists($pager, $fun)) {
+ $h = $pager->$fun($pager);
+ } elseif (function_exists($fun)) {
+ $h = $fun($pager);
+ }
+
+ foreach($h as $c) { // draw header columns
+ $pars = isset($c[1]) ? $c[1] : '';
+ label_cell($c[0], $pars);
+ }
+ end_row();
+ }
+
$cc = 0; //row colour counter
foreach($pager->data as $line_no => $row) {
case 'percent':
percent_cell($cell); break;
case 'amount':
- amount_cell($cell, false); break;
+ if ($cell=='')
+ label_cell('');
+ else
+ amount_cell($cell, false); break;
case 'qty':
qty_cell($cell); break;
case 'rate':
end_row();
}
//end of while loop
+
+ if($pager->footer_fun) { // if set footer handler
+ start_row("class='{$pager->footer_class}'");
+ $fun = $pager->footer_fun;
+ if (method_exists($pager, $fun)) {
+ $h = $pager->$fun($pager);
+ } elseif (function_exists($fun)) {
+ $h = $fun($pager);
+ }
+
+ foreach($h as $c) { // draw footer columns
+ $pars = isset($c[1]) ? $c[1] : '';
+ label_cell($c[0], $pars);
+ }
+ end_row();
+ }
+
end_table();
start_table("$table_style align='center' class='navibar' width=95%");
start_row();