db=$db; $this->table=$table; $this->fields_edit=$fields_edit; $this->fields_list=$fields_list; $this->url=$url; $this->tpl=$tpl; } public function show() { $op=$_GET['op'] ?? ''; switch($op) { default: $this->json=false; return $this->list(); break; case 'get_list': //$arr_model=$model->select_to_array(); return $this->get_list(); break; } } public function get_list() { $error=1; $message=''; $this->json=true; #return {'items': items, 'error': 0, 'total_num_items': total_num_items} $items=[]; $total_num_items=0; $this->db->connect(); $total_num_items=$this->db->select_count($this->table, '', []); //select($table, $fields, $where_sql, $values) /* * begin_page=request.args.get('begin_page', 0) try: begin_page=int(begin_page) except: begin_page=0 num_elements=request.args.get('num_elements', 0) try: num_elements=int(num_elements) except: num_elements=20 order_field=request.args.get('order_field', 'date_reserved') if not order_field in reservas.fields: order_field='date_reserved' arr_order=['ASC', 'DESC'] try: order=int(request.args.get('order', '0')) if order<0 or order>1: order=0 except: order=0*/ settype($_GET['begin_page'], 'integer'); settype($_GET['num_elements'], 'integer'); $begin_page=$_GET['begin_page']; $num_elements=$_GET['num_elements']; if($num_elements<=0) { $num_elements=20; } $arr_order=['ASC', 'DESC']; settype($_GET['order'], 'integer'); $order=$_GET['order']; $order_field=array_key_first($this->fields_list); $get_order_field=trim($_GET['order_field'] ?? ''); if(in_array($get_order_field, $this->fields_list, true) && $get_order_field!='') { $order_field=$get_order_field; } $search_values=[$order_field, $arr_order[$order]]; $sql_search_text='WHERE 1=1'; settype($_GET['search_all_text'], 'string'); $search_all_text=trim($_GET['search_all_text']); if($search_all_text!='') { //$search_all_text='WHERE '; } $this->db->select($this->table, array_keys($this->fields_list), $sql_search_text.' order by ? ? limit '.$begin_page.','.$num_elements, $search_values); foreach($this->db->get_result() as $v) { $items[]=$v; $items[count($items)-1]['options']=''._('Edit').'
'._('Delete').''; } if($items) { $error=0; } return ['items' =>$items, 'total_num_items' => $total_num_items, 'error' => $error, 'message' => $message]; } public function list() { return $this->tpl->load_template('list', ['fields_list' => $this->fields_list, 'table' => $this->db->tables[$this->table]->name, 'url' => $this->url]); } } class AppController extends Admin\AdminController\AdminController { public function app($op='') { $domain_url=\PhangoApp\PhaRouter\Config::$domain_url; $admin=new GenerateAdminClass($this->db, 'useradmin', ['username', 'password', 'email', 'double_auth', 'theme'], ['username' => _('Username'), 'email' => _('Email')], $domain_url.\PhangoApp\PhaRouter\Url::make_url('admin', 'users'), $this->tpl); $admin_html=$admin->show(); if(!$admin->json) { echo $this->tpl->load_template('users', ['title' => _('Edit users'), 'path_module' => 'admin.users', 'content' => $admin_html]); } else { echo $this->json($admin_html); } } }