Atos Administrativos y 1.4 y Cadastro, Consulta e Publicação de Atos Administrativos 05/11/2007 [04:06:52] ]]> database_name workflow execute_activities_in_debug_mode 0 mail_smtp_profile 1 use_automatic_parsing 0 Compor start Apresentar para o usuário uma tela para inclusão de ato administrativo. 05/11/2007 [02:48:12] y y Editor run ( $_REQUEST['action'] ); ?> ]]> Consultar standalone Consulta os atos administrativos publicados. 05/11/2007 [02:48:12] y n Leitor run ( $_REQUEST['action'] ); ?> ]]> End end Finaliza o Ato Administrativo e cria um registro no Banco de Dados. 05/11/2007 [02:48:12] n y run ( $_REQUEST['action'] ); ?> ]]> Enviar activity Comunica um ato administrativo para os funcionários, através de email. 05/11/2007 [02:48:12] y y Editor mail_smtp wf_to %property__email% wf_cc wf_bcc wf_from %user% wf_replyto %user% wf_subject %property__assunto% wf_message %property__texto% wf_send_mode 0 wf_agent_type mail_smtp run ( $_REQUEST['action'] ); ?> ]]> Manter Categorias standalone 06/11/2007 [10:02:53] y n Administrador run($_REQUEST['action']); ?> ]]> class.consultar.controller.inc.php model->defaultAction(); $this->loadViewVars(); $this->showForm($this->CONSULTAR); } /** * Executa a ação de impressão da atividade consultar. * @return void * @access private */ function imprimir ( ) { $this->model->imprimirAction(); $this->loadViewVars(); $this->showForm($this->IMPRIMIR ); } /** * Executa a ação de visualização da atividade consultar. * @return void * @private */ function visualizar ( ) { $this->model->visualizarAction(); $this->loadViewVars(); $this->showForm($this->VISUALIZAR); } /** * Execucao da atividade. * * @param $action Servico (acao) solicitado * @return void * @access public */ function run($action) { $this->model->DAO->connect ( ); $this->dispatch($action); $this->model->DAO->disconnect ( ); } } ?> ]]> class.compor.controller.inc.php model->defaultAction(); $this->loadViewVars(); $this->showForm($this->COMPOR); } /** * Executa a ação salvar da atividade compor e encerra a execução da atividade. * @return void * @access public */ function salvar() { if ( ! $this->model->salvarAction()) { $this->loadViewVars(); $this->showForm($this->COMPOR); } } /** * Execucao da atividade. * @param $action Servico (acao) solicitado * @return void * @access private */ function run($action) { $this->model->DAO->connect ( ); $this->dispatch($action); $this->model->DAO->disconnect ( ); } } ?> ]]> class.consultar.model.inc.php rowsperpage = 40; $this->pagin_params = ""; if (isset($this->request['pagenum']) && !isset($this->request['novo_filtro'])) $this->pagenum = $this->request['pagenum']; else $this->pagenum = 0; // passa os valores dos campos do filtro para a classe filtro $this->filter->add_field ('ato_in_ano' , 'Ano' , 5 ); $this->filter->add_field ('ato_in_numero' , 'Numero' , 7 ); $this->filter->add_field ('ato_st_area' , 'Area' , 20 ); $this->filter->add_field ('ato_st_assunto' , 'Assunto' , 30 ); $this->filter->add_select_field ('ato_in_categoria' , 'Categoria' , $this->lista_categorias() ); $this->commandBuilder (" SELECT A.ato_in_ano, A.ato_in_numero, A.ato_st_area, A.ato_st_assunto, A.ato_in_categoria, TO_CHAR(A.ato_dt_inc,'DD/MM/YYYY') as data_inc, C.descricao as desc_categoria FROM atos.atos_administrativos as A, atos.categoria as C WHERE A.ato_in_categoria = C.categoria_id"); if (isset($this->request['filtro'])) { $this->commandBuilder (" AND" . $this->filter->get_where($this->request)); $this->pagin_params = $this->filter->get_paging_params($this->request); } $this->commandBuilder(" ORDER BY ato_dt_inc desc"); $this->resultSet['rs'] = $this->DAO->limit_query($this->commandText,($this->rowsperpage*$this->pagenum),__LINE__,__FILE__,$this->rowsperpage); $this->resultSet['resultCount'] = $this->DAO->query ( $this->commandText ); $this->_atos = array ( ); while( $this->_resultRow = $this->resultSet['rs']->fetchRow ( DB_FETCHMODE_ASSOC ) ) $this->_atos [ ] = $this->_resultRow; $this->addViewVar ( "atos" , $this->_atos ); $this->addViewVar ( "pagenum" , $this->pagenum ); $this->addViewVar ( "paging_params" , $this->pagin_params ); $this->addViewVar ( "rowshow" , $this->resultSet['rs']->NumRows() ); $this->addViewVar ( "rowcount" , $this->resultSet['resultCount']->NumRows() ); $this->addViewVar ( "filtro" , $this->filter->build_filter($this->getWfProperty('wf_base_url')) ); $this->addViewVar ( "lastpage" , ceil( $this->resultSet['resultCount']->NumRows()/$this->rowsperpage)-1); $this->addViewVar ( "showpaging" , $this->resultSet['rs']->NumRows()==$this->rowsperpage ); return true; } /** * Implementação padrão para a ação de impressão da atividade. * @access public * @return boolean */ function imprimirAction ( ) { $this->visualizarAction(); return true; } /** * Implementação padrão para a ação de visualização da atividade. * @access public * @return boolean */ function visualizarAction() { $parametros = explode(",",$this->request['params']); $numero = $parametros[0]; $ano = $parametros[1]; $categoria = $parametros[2]; $this->commandText = " SELECT A.ato_in_ano, A.ato_in_numero, A.ato_st_area, A.ato_st_assunto, A.ato_in_categoria, TO_CHAR(A.ato_dt_inc,'DD/MM/YYYY') as data_inc, C.descricao as desc_categoria, A.ato_st_texto FROM atos.atos_administrativos as A, atos.categoria as C WHERE A.ato_in_categoria = C.categoria_id AND A.ato_in_ano = ".$ano." AND A.ato_in_categoria = '".$categoria."' AND A.ato_in_numero = ".$numero; $this->resultSet = $this->DAO->query($this->commandText); $this->addViewVar ("ato", $this->resultSet->fetchRow(DB_FETCHMODE_ASSOC)); return true; } } ?> ]]> class.manter.controller.inc.php model->defaultAction(); $this->loadViewVars(); $this->showForm($this->MANTER); } /** * Executa a ação excluir categoria da atividade. * @return void * @access public */ function excluir() { $this->model->excluirAction(); $this->loadViewVars(); $this->showForm($this->MANTER); } /** * Executa a ação adicionar categoria da atividade. * @return void * @access public */ function adicionar() { $this->model->adicionarAction(); $this->loadViewVars(); $this->showForm($this->MANTER); } /** * Execucao da atividade. * @param $action Servico (acao) solicitado * @return void * @access private */ function run($action) { $this->model->DAO->connect ( ); $this->dispatch($action); $this->model->DAO->disconnect ( ); } } ?> ]]> class.model.inc.php DAO->query($commandText); while ($res = $resultSet->fetchRow(DB_FETCHMODE_ASSOC)) $categlist[] = $res['descricao']; $categorias = array("" => "----- Selecione -----"); foreach ($categlist as $l) $categorias[] = $l; return $categorias; } /** * Valida dados do formulário. * @return array Resultado da validação. * @access public */ function verifica_erros() { $erro = array(); if ($_REQUEST['categoria'] == "" ) $erro[] = "Escolha uma categoria correspondente ao Ato Administrativo."; if (trim($_REQUEST['numero']) == "") $erro[] = "O preenchimento do campo Número é obrigatório."; elseif (!ereg ("^[0-9]{1,3}$", trim($_REQUEST['numero']))) $erro[] = "Número de Ato inválido."; if ( trim($_REQUEST['area']) == "" ) $erro[] = "O preenchimento do campo Área é obrigatório."; if (trim($_REQUEST['assunto']) == "") $erro[] = "O preenchimento do campo Assunto é obrigatório."; if ( trim($_REQUEST['texto']) == "" ) $erro[] = "O preenchimento do campo Texto é obrigatório."; return $erro; } /** * Construtor da camada Model em nivel de processo. * @param array $env Configuracao MVC. * @return Model. * @license http://www.gnu.org/copyleft/gpl.html GPL * @access protected */ function Model(&$env) { $this->super(&$env); $this->filter = & new Filtro(); } } ?> ]]> class.manter.model.inc.php request['desc_categoria']) && (($this->request['action'])=="Pesquisar")) { $desc_categoria = trim(strtoupper($this->request['desc_categoria'])); $where = " WHERE UPPER(descricao) LIKE '%".$this->DAO->quote($desc_categoria)."%'"; $this->commandText = $this->selectCategorias().$where; } /* senão se campo descrição está vazio e o usuario clica em pesquisar */ elseif ((empty($this->request['desc_capegoria'])) && (($this->request["action"])=="Pesquisar")) { $this->commandText = $this->selectCategorias(); $this->addViewVar("icon_msg" , "icon_msg_erro.png" ); $this->addViewVar("class_msg" , "msg_erro" ); $this->addViewVar("msg" , "Digite um termo de busca." ); } /* se o usuario não clicar em pesquisar */ else $this->commandText = $this->selectCategorias(); $this->categoria = $this->viewCategorias($this->commandText); $this->addViewVar("categoria" , $this->categoria); return true; } /** * Monta a linha de comando do sql para fazer a busca no banco de dados * @access public * @return string */ function selectCategorias() { $this->commandText = "SELECT categoria_id, descricao FROM atos.categoria"; return $this->commandText; } /** * Monta um array com os resultados do selectCategorias * @access public * @param string $commandText linha comando sql para selecao no banco de dados * @return array - Array com a descrição de todos as categorias existentes no banco de dados */ function viewCategorias($commandText) { $this->commandText = $commandText." ORDER BY descricao"; $this->resultSet = $this->DAO->query($this->commandText); $this->categoria = array(); while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ) ) $this->categoria[] = array( "categoria_id" => $res['categoria_id'], "descricao" => $res['descricao']); return $this->categoria; } /** * Implementa acao excluir categoria da atividade * @access public * @return bool */ function excluirAction() { $categoria_id = $this->request["params"]; $this->commandText = "SELECT ato_in_categoria FROM atos.atos_administrativos WHERE ato_in_categoria = $categoria_id"; $this->resultSet = $this->DAO->query($this->commandText); $linha = 0; while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ) ) { $linha= $linha+1; } if ($linha == 0) { $this->commandText = "DELETE FROM atos.categoria WHERE categoria_id = $categoria_id"; $this->resultSet = $this->DAO->query($this->commandText); $this->addViewVar("icon_msg" , "icon_msg_sucesso.png" ); $this->addViewVar("class_msg" , "msg_sucesso" ); $this->addViewVar("msg" , "Categoria excluída com sucesso." ); $this->addViewVar("categoria" , $this->viewCategorias($this->selectCategorias()) ); return true; } else { $msg="A categoria não pôde ser excluída! Existem atos administrativos cadastrados no Banco de Dados com esta categoria."; $this->addViewVar("msg" , $msg ); $this->addViewVar("icon_msg" , "icon_msg_erro.png" ); $this->addViewVar("class_msg" , "msg_erro" ); $this->addViewVar("categoria" , $this->viewCategorias($this->selectCategorias()) ); return false; } } /** * Implementa a ação adicionar categoria da atividade. * @access public * @return boolean */ function adicionarAction() { $this->_categ_nova = $_REQUEST['desc_categoria']; if ($this->_categ_nova == "") { $this->addViewVar("msg" , "O campo categoria deve ser preenchido." ); $this->addViewVar("icon_msg" , "icon_msg_erro.png" ); $this->addViewVar("class_msg" , "msg_erro" ); $this->addViewVar("categoria" , $this->viewCategorias($this->selectCategorias()) ); return false; } else { $this->commandText = "INSERT INTO atos.categoria (descricao) VALUES ('".$this->_categ_nova."')"; $this->resultSet = $this->DAO->query($this->commandText); $this->addViewVar("msg" , "A categoria '".$this->_categ_nova."' foi inserida com sucesso." ); $this->addViewVar("icon_msg" , "icon_msg_sucesso.png" ); $this->addViewVar("class_msg" , "msg_sucesso" ); $this->addViewVar("categoria" , $this->viewCategorias($this->selectCategorias()) ); return true; } } } ?> ]]> class.end.model.inc.php ]]> class.compor.model.inc.php addViewVar("categoria" , "10000" ); $this->addViewVar("categlist" , $this->lista_categorias() ); $this->addViewVar("ano" , date('Y', time()) ); return true; } /** * Implementa acao Salvar - Atribui valor as variaveis da instancia e passa para a proxima atividade * @return bool * @access public */ function salvarAction() { if (!count($erro = $this->verifica_erros($this->request))) { $this->_usuario = $this->getWfProperty('wf_user_name'); $this->_categoria = trim($this->request['categoria']); $this->_numero = trim($this->request['numero'] ); $this->_area = trim($this->request['area'] ); $this->_assunto = trim($this->request['assunto'] ); $this->_texto = trim($_POST['texto'] ); $this->_ano = $this->request['ano']; $this->updateInstance(); $this->instance->setNextUser($this->getWfProperty('wf_user_id')); $this->setNameInstance($this->_assunto); $this->commitInstance(); return true; } else { $this->addViewVar("msg" , $erro ); $this->addViewVar("icon_msg" , "icon_msg_erro.png" ); $this->addViewVar("class_msg" , "msg_erro" ); $this->addViewVar("categoria" , $this->request['categoria'] ); $this->addViewVar("numero" , $this->request['numero'] ); $this->addViewVar("area" , $this->request['area'] ); $this->addViewVar("assunto" , $this->request['assunto'] ); $this->addViewVar("texto" , $_POST['texto'] ); $this->addViewVar("ano" , $this->request['ano'] ); $this->addViewVar("categlist" , $this->lista_categorias() ); return false; } } } ?> ]]> class.controller.inc.php super(&$model , &$env); $this->assign('inbox', $this->model->getWfProperty('wf_workflow_path') . SEP . 'index.php?start_tab=0'); $this->assign('processes', $this->model->getWfProperty('wf_workflow_path') . SEP . 'index.php?start_tab=1'); $this->assign('activity_title', 'Atos Administrativos'); } } ?> ]]> class.end.controller.inc.php model->defaultAction(); } /** * Execucao da atividade. * @param $action Servico (acao) solicitado * @return void * @access public */ function run($action) { $this->model->DAO->connect(); $this->__default(); $this->model->DAO->disconnect(); } } ?> ]]> class.enviar.controller.inc.php model->defaultAction(); $this->loadViewVars(); $this->showForm($this->ENVIAR); } /** * Executa a ação enviar e encerra a execução da atividade. * @return void * @access private */ function enviar() { if (! $this->model->enviarAction()) { $this->loadViewVars(); $this->showForm($this->ENVIAR); } } /** * Executa a ação editar da atividade enviar. * @return void. * @access private. */ function editar() { $this->model->defaultAction(); $this->loadViewVars(); $this->showForm($this->ALTERAR); } /** * Executa a ação salvar da atividade enviar. * @return void. * @access private. */ function salvar() { if ($this->model->salvarAction()) { $this->loadViewVars(); $this->showForm($this->ENVIAR); } else { $this->loadViewVars(); $this->showForm($this->ALTERAR); } } /** * Executa a ação imprimir da atividade enviar. * @return void * @access private */ function imprimir() { $this->model->imprimirAction(); $this->loadViewVars(); $this->showForm($this->IMPRIMIR ); } /** * Execucao da atividade. * * @param $action Servico (acao) solicitado * @return void * @access public */ function run($action) { $this->model->DAO->connect(); $this->dispatch($action); $this->model->DAO->disconnect(); } } ?> ]]> class.filtro.inc.php fields[] = array( 'name' => $field_name, 'caption' => $field_caption, 'width' => $field_width, 'type' => 'text' ); } /** * Adiciona um campo de formulário do tipo 'select' para entrada de dados no filtro. \n * @param string $field_name nome do campo interno do formulário (será utilizado no GET/POST da página) * @param string $field_caption nome do campo que será mostrado ao usuário * @param array $values_desc_array array associativo do tipo (valor => descrição) das opções a serem selecionadas. * @return void * @public */ function add_select_field($field_name,$field_caption,$values_desc_array) { $this->fields[] = array( 'name' => $field_name, 'caption' => $field_caption, 'values' => $values_desc_array, 'type' => 'select' ); } /** * Gera o código HTML do filtro, de acordo com os campos informados através dos métodos add_field() e add_select_field(). * @param string $baseurl url base que será usada na propriedade "action" no formulário contruido pelo filtro * @return Código HTML do filtro * @access public */ function build_filter($baseurl) { $filter_code = " "; foreach($this->fields as $field) { $filter_code .= ""; } $filter_code .= "
"; $filter_code .= $field['caption']."
"; if ($field['type'] == 'text') { $filter_code .= ""; } if ($field['type'] == 'select') { $filter_code .= ""; } $filter_code .= "

"; $filter_code .= ""; $filter_code .= "
"; $filter_code .= ""; return $filter_code; } /** * Gera a string WHERE do SELECT, de acordo com os campos preenchidos do filtro. * Para utilizar essa função, o nome dos campos no formulário devem ser os mesmos dos * campos na tabela do banco de dados. * @param array $request_array array com os dados do request (geralmente $_REQUEST), para que seja possível identificar os campos do filtro que foram preenchidos * @return string sequência a ser adicionada na cláusula WHERE do SELECT Ex.: nome_campo LIKE '\%palavra\%' */ function get_where($request_array) { $str = ''; foreach($this->fields as $field) { $str .= isset($request_array[$field['name']])?' AND upper('.$field['name'].') LIKE \'%'.addslashes(strtoupper($request_array[$field['name']])).'%\'':''; } //retira o AND do início da string if (strlen($str)) { $str = substr($str,4,strlen($str)-4); } return $str; } /** * Gera uma string com os parametros a serem colocados no link de paginação caso os dados estejam filtrados * @param array $request_array array com os dados do request (geralmente $_REQUEST), para que seja possível identificar os campos do filtro que foram preenchidos * @return string sequência a ser adicionada na cláusula WHERE do SELECT Ex.: nome_campo LIKE '\%palavra\%' */ function get_paging_params($request_array) { $str = '&filtro=1'; foreach($this->fields as $field) { $str .= isset($request_array[$field['name']])?'&'.$field['name'].'='.$request_array[$field['name']]:''; } return $str; } } ?> ]]>
class.enviar.model.inc.php updateAttributes(); $this->addViewVar("categlist" , $this->lista_categorias() ); $this->addViewVar("categoria" , $this->_categoria ); $this->addViewVar("ano" , $this->_ano ); $this->addViewVar("numero" , $this->_numero ); $this->addViewVar("area" , $this->_area ); $this->addViewVar("assunto" , $this->_assunto ); $this->addViewVar("texto" , $this->_texto ); $this->addViewVar("email" , $this->_email ); return true; } /** * Implementação a ação Enviar * @access public * @return boolean */ function enviarAction ( ) { $this->updateAttributes( ); if ($this->request['email'] != "") { $this->_email = $_POST['email']; $this->commandText = " INSERT INTO atos.atos_administrativos( ato_in_categoria, ato_in_ano, ato_in_numero, ato_st_area, ato_st_assunto, ato_st_texto, ato_st_email, ato_st_usu_inc, ato_dt_inc) VALUES(?,?,?,?,?,?,?,?,now())"; $values = array( "$this->_categoria", "$this->_ano", "$this->_numero", "$this->_area", "$this->_assunto", "$this->_texto", "$this->_email", "$this->_usuario"); $this->resultSet = $this->DAO->query($this->commandText,$values); $this->updateInstance ( ); $this->commitInstance ( ); return true; } else { $this->addViewVar("categlist" , $this->lista_categorias() ); $this->addViewVar("categoria" , $this->_categoria ); $this->addViewVar("ano" , $this->_ano ); $this->addViewVar("numero" , $this->_numero ); $this->addViewVar("area" , $this->_area ); $this->addViewVar("assunto" , $this->_assunto ); $this->addViewVar("texto" , $this->_texto ); $this->addViewVar("icon_msg" , "icon_msg_erro.png" ); $this->addViewVar("class_msg" , "msg_erro" ); $this->addViewVar("msg" , "O preenchimento do campo 'Enviar para' é obrigatório."); return false; } } /** * Implementação a ação salvar da atividade enviar * @access public * @return boolean */ function salvarAction() { $this->_categoria = $this->request['categoria']; $this->_ano = $this->request['ano']; $this->_numero = $this->request['numero']; $this->_area = $this->request['area']; $this->_assunto = $this->request['assunto']; $this->_texto = $_POST['texto']; $this->_email = $this->request['email']; $this->addViewVar("categlist" , $this->lista_categorias() ); $this->addViewVar("categoria" , $this->_categoria ); $this->addViewVar("ano" , $this->_ano ); $this->addViewVar("numero" , $this->_numero ); $this->addViewVar("area" , $this->_area ); $this->addViewVar("assunto" , $this->_assunto ); $this->addViewVar("texto" , $this->_texto ); $this->addViewVar("email" , $this->_email ); if (!count($erro = $this->verifica_erros($this->request))) { $this->updateInstance(); return true; } else { $this->addViewVar("icon_msg" , "icon_msg_erro.png" ); $this->addViewVar("class_msg" , "msg_erro" ); $this->addViewVar("msg" , $erro ); return false; } } /** * Implementação a ação Imprimir da atividade Enviar * @access public * @return boolean */ function imprimirAction ( ) { $this->updateAttributes(); $dados_ato = array ( ); $dados_ato [ 'ato_in_categoria' ] = $this->_categoria; $dados_ato [ 'ato_in_ano' ] = $this->_ano; $dados_ato [ 'ato_in_numero' ] = $this->_numero; $dados_ato [ 'ato_st_area' ] = $this->_area; $dados_ato [ 'ato_st_assunto' ] = $this->_assunto; $dados_ato [ 'ato_st_texto' ] = $this->_texto; $dados_ato [ 'data_inc' ] = date ( 'd/m/Y' ); $this->addViewVar ( 'ato' , $dados_ato ); return true; } } ?> ]]>
atos.css governo.gif data.gif first.png atos_logo.jpg add_group.png icon.gif icon.png celepar.gif previous.png proximo.png imprimir.png doclink.gif last.png view.png voltar.png print.gif print.png Compor Enviar Enviar End