table=new table_builder($tags);
$this->img_path=ABS_PATH.'images/admin/';
}
/*prepare*/
function set_link($link){
$this->link=$link;
}
function set_table_name($table){
$this->table_name=$table;
}
function set_key_col($key_col){
$this->key_col=$key_col;
}
function set_items_per_page($items){
$this->items_per_page=$items;
}
function set_order_default($field){
$this->order_default=$field;
}
function add_col($name,$arr){
$this->cols[$name]=$arr;
}
function use_form($method='post'){
$this->form=new form_builder('',$method);
}
/*process*/
function process(){
if(!$page=get_var('page',$_GET,'i'))
$page=1;
$order=get_var('order',$_GET);
if($order){
//проверим что ордер это один из стобцов по которому мы можем сортировать
$tmp=isset($this->cols[$order]) &&
isset($this->cols[$order]['in_table']) &&
$this->cols[$order]['in_table'] &&
isset($this->cols[$order]['is_ordered']) &&
$this->cols[$order]['is_ordered'];
if(!$tmp) $order=false;
}
if(!$order)
$order=$this->order_default;
$desc=get_var('desc',$_GET,'bi');
//общее число элементов в таблице
$num=DB::Fast_Query("SELECT COUNT(*) FROM `".$this->table_name."`");
$this->max_page=$max_page=ceil($num/$this->items_per_page);
if(!$page) $page=1;
if($page>$max_page) $page=$max_page;
if($max_page>1){
$page_line='
'.make_pages($page,$max_page," [%s] ","
%1\$s ",2).'
';
}
$this->order=$order;
$this->page=$page;
//задаем ширину столбцов
$widths=array_one_dimension($this->cols,'name','width');
call_user_func_array(array(&$this->table, "set_widths"),$widths);
//установка параметров для столбцов
foreach($this->cols as $coldata){
$additions[] = get_var('addition',$coldata);
$footers[] = get_var('footer',$coldata);
}
call_user_func_array(array(&$this->table, "set_addition"),$additions);
//получаем и добавляем данные в таблицу
$this->items=DB::Fast_Arr_Query("SELECT * FROM `{$this->table_name}` ".
"ORDER BY `$order` ".($desc?'DESC ':'').
"LIMIT ".($page-1)*$this->items_per_page.', '.$this->items_per_page);
$this->items=make_id_array($this->items,$this->key_col,0);
//добавление строк в таблицу
foreach($this->items as $id=>$item){
$cols=array();
foreach($this->cols as $colname=>$coldata){
$function_name=$coldata['handler'];
if(is_callable($function_name))
$cols[]=call_user_func($function_name, $id, (isset($item[$colname])?$item[$colname]:''),$item);
else
$cols[]=$item[$colname];
}
call_user_func_array(array(&$this->table, "add_row"),$cols);
}
//добавление заглавной строки в таблицу
$cols=array();
foreach($this->cols as $colname=>$coldata){
$title=$coldata['title'];
if($coldata['is_ordered'])
$title="'.make_pages($this->page,$this->max_page," [%s] ","
%1\$s ",2).'
';
print $page_line;
}
print $this->table->generate();
if ($this->max_page>1)
print $page_line;
}
}
?>