/** * Lista os registros na tela */ function listar($dados = array()) { // Se não tiver definido para exibir a coluna ordem, remove-a if (!$this->exibir_coluna_ordem) { unset($this->colunas_default[self::COLUNA_ORDEM]); } // Define a tabela $this->default_model->set_table_name($this->table_name); if (strlen($dados['function']) == 0) { $dados['function'] = 'listar'; } // Define a página atual $dados['pagina_atual'] = $dados['pagina_atual'] ? $dados['pagina_atual'] : $_POST['pagina_atual']; // $dados ou $_POST $dados['pagina_atual'] = $dados['pagina_atual'] ? $dados['pagina_atual'] : $this->uri->segment(4); // $dados ou URI $dados['pagina_atual'] = $dados['pagina_atual'] ? $dados['pagina_atual'] : 1; // $dados ou 1 // Caso tenha algum filtro, troca para a primeira página if ($this->busca) { $dados['pagina_atual'] = 1; } $this->pagina_atual = $dados['pagina_atual']; $dados['filtro'] = $_POST['filtro']; $dados['params'] = $_POST['params']; $params = MY_Utils::deserializar_dados_jquery($_POST['params']); // Organiza os dados recebidos via POST $filtros = (array) $this->processa_filtros($params); $dados['filtros'] = $filtros; // Deixa os filtros prontos pro SQL $this->filtros = $this->organiza_filtros($dados['filtros']); // Se for listagem, verifica se tem hierarquia, se for busca, remove hierarquia if ($this->tem_hierarquia && count($filtros) == 0) { $this->where[] = 'parent_id IS NULL'; } else { $this->tem_hierarquia = false; unset($this->colunas_default[self::COLUNA_HIERARQUIA]); } // Define o título da tela $dados['titulo'] = $this->titulo; // Registros que irão ser exibidos na "grid" $dados['registros'] = $this->registros; // Colunas da tabela: $colunas = $this->colunas + $this->colunas_default; // array_merge(), mantendo as chaves numéricas ksort($colunas); // reordena $this->colunas = $colunas; // Ordem (quando clica no titulo de uma coluna) (listagem) $ordem = $_POST['ordem']; $this->ordem = $this->organiza_ordem($ordem); $dados['ordem'] = $this->ordem; $dados['params'] = $_POST['params']; $params = MY_Utils::deserializar_dados_jquery($_POST['params']); // Ordem (coluna na base de dados) $ordens = $this->processa_ordens($params); if (is_array($ordens) && count($ordens) > 0) { $dados['info'] = $this->altera_ordens($ordens); } /* * Filtro (busca/pesquisa) */ $this->where = array_merge((array) $this->filtros, (array) $this->where); if (!$this->desabilitar_paginacao) { // Obtém o total de registros $this->total_de_registros = $this->default_model->obter_total($this->where); } $dados['total_de_registros'] = $this->total_de_registros; $dados['registros_por_pagina'] = $this->registros_por_pagina; // (total de páginas - página atual) > 0 $dados['tem_mais_paginas'] = $this->total_de_registros / $this->registros_por_pagina - $this->pagina_atual > 0; // Ações ksort($this->acoes); $dados['acoes'] = $this->acoes; // Where $dados['where'] = $this->where; // Colunas $dados['colunas'] = $this->colunas; /* * Dados */ // Obtém as colunas para o SQL $cols = array(); foreach ($colunas as $coluna) { if ($coluna['coluna']) { $col = $coluna['coluna_sql'] ? $coluna['coluna_sql'] . ' AS ' . $coluna['coluna'] : $coluna['coluna']; if (strpos($col, 'TO_CHAR') !== false) { $col = str_replace('TO_CHAR', 'DATE_FORMAT', $col); $col = str_replace('DD/MM/YYYY', '%e/%m/%Y', $col); $col = str_replace('HH24:MI:SS', '%H:%i:%s', $col); } $cols[] = $col; } } // Obtém os dados para popular a Grid if (!isset($this->registros)) { $this->registros = $this->default_model->listar(array('columns' => $cols, 'order_by' => $this->ordem, 'limit' => $this->registros_por_pagina, 'offset' => ($this->pagina_atual - 1) * $this->registros_por_pagina, 'where' => $this->where)); } $dados['registros'] = $this->registros; // Fim da parte dos dados da grid // Define o modulo $dados['module'] = $this->module; // Define o controller $dados['controller'] = $this->controller; // Define botões extras antes do botão de busca $dados['botoes'] = $this->botoes; // Se tem hierarquia $dados['tem_hierarquia'] = $this->tem_hierarquia; // Desabilita paginação $dados['desabilitar_paginacao'] = $this->desabilitar_paginacao; // Desabilita a busca $dados['desabilitar_buscar'] = $this->desabilitar_buscar; // Desabilita a ordenacao $dados['desabilitar_ordenacao'] = $this->desabilitar_ordenacao; // Desabilita botão inserir $dados['desabilitar_inserir'] = $this->desabilitar_inserir; // Função inserir $dados['funcao_inserir'] = $this->funcao_inserir; // Função editar $dados['funcao_editar'] = $this->funcao_editar; // Função remover $dados['funcao_remover'] = $this->funcao_remover; // Função ativar_inativar $dados['funcao_ativar_inativar'] = $this->funcao_ativar_inativar; // View da linha $dados['view_linha'] = $this->view_linha; $this->load->view($this->view, $dados); }