Sistema Normativo y 1.2 y Sistema que instrumentaliza todas as diretrizes inerentes aos documentos normativos da Celepar. 07/08/2007 [10:06:07] ]]> execute_activities_in_debug_mode 1 ownership_give_abort_right 1 disable_advanced_actions 0 database_name workflow mail_smtp_profile default Consulta standalone Consulta de Documentos Normativos em vigor. 12/06/2007 [10:11:14] y n Gerência Usuário Adm run($_REQUEST['action']); ?> ]]> Editar Norma standalone Atividade de Gerencia para editar uma norma já existente sem passar pro aprovação de outros departamentos 12/06/2007 [10:11:14] y n Adm run($_REQUEST['action']); ?> ]]> Elaborar start Elaborar proposta de documento normativo. 12/06/2007 [10:11:14] y y Gerência Adm run($_REQUEST['action']); ?> ]]> end end default end activity 12/06/2007 [10:11:14] n y ]]> Macroprocesso standalone Manter 12/06/2007 [10:11:14] y n Gerência Adm run($_REQUEST['action']); ?> ]]> Processo standalone Manter 12/06/2007 [10:11:14] y n Gerência Adm run($_REQUEST['action']); ?> ]]> Tipo de Documento standalone Manter 12/06/2007 [10:11:14] y n Gerência Adm run($_REQUEST['action']); ?> ]]> class.ajax.elaboracao.inc.php DAO->connect(); $query = "SELECT " . "* " . "FROM " . "normas.processo " . "WHERE " . "macroprocesso_id = $selected_mpr " . "ORDER BY " . "descricao"; $result = $this->DAO->query($query); while($row = $result->fetchRow()) $rows[] = $row; $processos[] = array('id' => 0, 'nome' => "--- Selecione um processo ---"); if(count($rows)) foreach($rows as $elem){ $processos[] = array('id' => $elem['processo_id'], 'nome' => $elem['descricao']); } $this->DAO->disconnect(); return $processos; } } ?> ]]> class.consulta.controller.php model->pesquisarAction(); $this->loadViewVars(); } /** * Executa a chamada do método visualizarAction da Model, * mostra o template de visualização e carrega as variáveis da camada view * * @access public * @return void */ function visualizar(){ $this->model->visualizarAction(); $this->showForm($this->VISUALIZAR); $this->loadViewVars(); } /** * Executa a chamada do método switchVisualizacaoAction * @access public * @return void * @param string $tipo_normas ativas ou inativas */ function switchVisualizacao(){ $this->model->switchVisualizacaoAction(); $this->loadViewVars(); } /** * Ação padrão da atividade. * * @return boolean * @access private */ function __default(){ $this->model->defaultAction(); $this->loadViewVars(); } /** * Execução da aplicação. * * @return void * @access public */ function run ($action){ $this->model->DAO->connect(); $this->dispatch($action); $this->model->DAO->disconnect(); } } ?> ]]> class.consulta.model.php pLdap = $this->factory->getInstance('wf_ldap'); $this->pOrgchart = $this->factory->getInstance('wf_orgchart'); } /** * Filtra a consulta das normas por tipo de documento, macroprocesso, processo e título * * @access public * @return void */ function pesquisarAction(){ $this->_montaTela(); $where['mpr_id'] = $this->request['cbMacroprocessos']; $where['pro_id'] = $this->request['cbProcessos']; $where['tpd_id'] = $this->request['cbTiposDocumento']; $where['titulo'] = $this->request['titulo_busca']; $where['status'] = $this->request['mostra_normas']; $_GET['status'] = $this->request['mostra_normas']; $this->addViewVar('mostra_normas', $where['status']); $this->_showConsulta($where); } /** * carrega os atributos da classe a partir de dados do banco para mostrar * a visualização de uma norma * * @access public * @return void */ function visualizarAction(){ $this->_visualizarNorma(); } /** * Muda a visualização das normas de ativas para inativas e vice-versa * @access public * @return void */ function switchVisualizacaoAction(){ $tipo_normas = $this->request['params']; $this->_montaTela(); $this->addViewVar('mostra_normas', $tipo_normas); $_GET['status'] = $tipo_normas; $this->_showConsulta(array('status' => $tipo_normas)); } /** * lista as normas existentes utilizando a classe de paginação * * @access public * @return void */ function defaultAction(){ $this->_montaTela(); if (!$_GET['status']){ $where['status'] = "ativas"; } else { $where['status'] = $_GET['status']; } $this->addViewVar('mostra_normas', $where['status']); $_GET['status'] = $where['status']; $this->_showConsulta($where); } /** * Monta os campos de pesquisa da tela * @access private * @return void */ function _montaTela(){ $this->addViewVar("activity_title", "Sistema Normativo - Consultar"); $query = "SELECT " . "* " . "FROM " . "normas.macroprocesso " . "ORDER BY " . "sigla"; $result = $this->DAO->query($query); while($row = $result->fetchRow()) $rows[] = $row; $macroprocessos[] = "--- Selecione um macroprocesso ---"; foreach($rows as $row) $macroprocessos[$row['macroprocesso_id']] = $row['sigla']. " - ". $row['descricao']; unset($rows); $this->addViewVar('cbMacroprocessos', $macroprocessos); $query = "SELECT " . "* " . "FROM " . "normas.tipo_documento " . "ORDER BY " . "sigla"; $result = $this->DAO->query($query); while($row = $result->fetchRow()) $rows[] = $row; $tipos_documento[] = "--- Selecione um tipo de documento ---"; foreach($rows as $row) $tipos_documento[$row['tipo_documento_id']] = $row['sigla']. " - ". $row['descricao']; unset($rows); $this->addViewVar('cbTiposDocumento', $tipos_documento); } /** * método auxiliar para a consulta * * @param array $where Array com o id do macroprocesso, o id do processo, id do tipo do documento e uma substring do título * @access private * @return void */ function _showConsulta($where = ""){ if ($_GET['s_co'] == 0){ $_GET['s_co'] = 4; $_GET['s_so'] = 1; } $query_where = "WHERE "; if($where['status'] == "ativas") $query_where .= "nrm.status = 1"; else $query_where .= "nrm.status <> 1"; if (count($where) > 1){ $_GET['mpr_id'] = $where['mpr_id']; $_GET['pro_id'] = $where['pro_id']; $_GET['tpd_id'] = $where['tpd_id']; $_GET['titulo'] = $where['titulo']; } else { $where['mpr_id'] = $_GET['mpr_id']; $where['pro_id'] = $_GET['pro_id']; $where['tpd_id'] = $_GET['tpd_id']; $where['titulo'] = $_GET['titulo']; } if($where['mpr_id']) $query_where .= " AND mpr.macroprocesso_id = ".$where['mpr_id']; if($where['pro_id']) $query_where .= " AND pro.processo_id = ".$where['pro_id']; if($where['tpd_id']) $query_where .= " AND tpd.tipo_documento_id = ".$where['tpd_id']; if($where['titulo']) $query_where .= " AND LOWER(nrm.titulo) LIKE '%".$this->DAO->quote(strtolower($where['titulo']))."%'"; $query = "SELECT ". "mpr.sigla AS mpr_sigla, " . "pro.descricao AS pro_descricao, " . "tpd.sigla AS tpd_sigla, " . "(CASE WHEN nrm.status = 0 ". "THEN 'EM_ELAB' " . "ELSE (tpd.sigla || '-' || mpr.sigla || '-' || ltrim(to_char(nrm.sequencia,'000')) || '-' || ltrim(to_char(nrm.num_revisao,'00'))) ". "END) AS nrm_codigo, ". "(CASE ". "WHEN nrm.status = 0 THEN 'EE' ". "WHEN nrm.status = 1 THEN 'VG' ". "WHEN nrm.status = 2 THEN 'OB' ". "WHEN nrm.status = 3 THEN 'SP' ". "WHEN nrm.status = 4 THEN 'RV' ". "WHEN nrm.status = 5 THEN 'ER' ". "ELSE 'XX' ". "END) AS nrm_situacao_ref, ". "nrm.titulo AS nrm_titulo, " . "nrm.norma_id AS nrm_id, " . "nrm.macroprocesso_id AS nrm_mpr_id, " . "nrm.processo_id AS nrm_pro_id, " . "tpd.tipo_documento_id AS tpd_id, " . "nrm.tipo_documento_id AS nrm_tpd_id, " . "mpr.macroprocesso_id AS mpr_id, " . "pro.processo_id AS pro_id " . "FROM ". "normas.norma nrm ". "INNER JOIN ". "normas.tipo_documento tpd ". "ON ". "(nrm.tipo_documento_id = tpd.tipo_documento_id) ". "INNER JOIN ". "normas.macroprocesso mpr ". "ON ". "(nrm.macroprocesso_id = mpr.macroprocesso_id) ". "INNER JOIN ". "normas.processo pro ". "ON ". "(nrm.processo_id = pro.processo_id) " . $query_where; $titulos_ordenacao = array(); $titulos_ordenacao[] = array('name' => "Mpr.", 'id' => "1"); $titulos_ordenacao[] = array('name' => "Processo", 'id' => "2"); $titulos_ordenacao[] = array('name' => "Tpd.", 'id' => "3"); $titulos_ordenacao[] = array('name' => "Código", 'id' => "4"); $titulos_ordenacao[] = array('name' => "Sit.", 'id' => "5"); $titulos_ordenacao[] = array('name' => "Título", 'id' => "6"); $paging = $this->factory->getInstance("wf_paging"); $paging->configure(PAGING_NUMBER_OF_ITEMS, $_GET); $paging->useDatabase(true); $paging->enableSorting(true); $paging->setSortingTitles($titulos_ordenacao); $result = $paging->restrictDBItems($this->DAO, $query); $this->addViewVar('count_items', $paging->itemsCount); $this->addViewVar('titulos_ordenacao', $paging->getSortingTitles()); $this->addViewVar('linksPaginacao', $paging->autoLinks(PAGING_MAX_NUMBER_OF_LINKS)); $this->addViewVar('result', $result); } } ?> ]]> class.controller.inc.php super(&$model, &$env); } /** * executa a chamada do método downloadDataBaseAction * * @access public * @return void */ function downloadDataBase(){ $this->model->downloadDataBaseAction(); } /** * Executa a chamada do método downloadPropertiesAction * * @access public * @return void */ function downloadProperties(){ $this->model->downloadPropertiesAction(); } } ?> ]]> class.editarnorma.controller.php model->pesquisarAction(); $this->loadViewVars(); } function editar(){ $this->model->editarAction(); $this->showForm($this->EDT); $this->loadViewVars(); } function alterar(){ $this->model->alterarAction(); $this->__default(); } /** * Executa a chamada do método visualizarAction da Model, * mostra o template de visualização e carrega as variáveis da camada view * * @access public * @return void */ function visualizar(){ $this->model->visualizarAction(); $this->showForm($this->VISUALIZAR); $this->loadViewVars(); } /** * função para remover uma norma */ function remover(){ $this->model->removerAction(); $this->__default(); } /** * Ação padrão da atividade. * * @return boolean * @access private */ function __default(){ $this->model->defaultAction(); $this->loadViewVars(); } /** * Execução da aplicação. * * @return void * @access public */ function run ($action){ $this->model->DAO->connect(); $this->dispatch($action); $this->model->DAO->disconnect(); } } ?> ]]> class.editarnorma.model.php pLdap = $this->factory->getInstance('wf_ldap'); $this->pOrgchart = $this->factory->getInstance('wf_orgchart'); } /** * carrega os atributos da classe a partir de dados do banco para mostrar * a visualização de uma norma * * @access public * @return void */ function visualizarAction(){ $this->_visualizarNorma(); } /** * lista as normas existentes utilizando a classe de paginação * * @access public * @return void */ function defaultAction(){ $this->addViewVar("titulo","Sistema de Normas"); $this->addViewVar("activity_title", "Sistema Normativo - Editar Normas"); $this->_showConsulta(); } /** * remove uma norma * * @access public * @return void */ function removerAction(){ $nrm_id = $this->request['normaId']; $this->DAO->Link_ID->StartTrans(); $query = "DELETE FROM " . "normas.arquivo " . "WHERE " . "norma_id = ?"; $queryOK = true; if(!$this->DAO->Link_ID->query($query, array($nrm_id))) $queryOK = false; $query = "DELETE FROM " . "normas.norma " . "WHERE " . "norma_id = ?"; if(!$this->DAO->Link_ID->query($query, array($nrm_id))) $queryOK = false; if($queryOK) $this->DAO->Link_ID->CompleteTrans(); else { $this->addViewVar('msgs', array("A transação no banco falhou")); $this->addViewVar('msgclass', "msg_erro"); $this->DAO->Link_ID->FailTrans(); } } /** * carrega a página de edição de normas * * @access public * @return void */ function editarAction(){ $nrm_id = $this->request['params']; $this->_updateDataBaseAttributesAction($nrm_id); $OrgchartAreas = $this->pOrgchart->getOrganizationAreas($this->_Elaborador['employee']['organizacao_id']); foreach($OrgchartAreas as $area){ $areas[$area['area_id']] = $area['sigla']. " - ". $area['descricao']; } $query = "SELECT " . "* " . "FROM " . "normas.tipo_documento " . "ORDER BY " . "sigla"; $result = $this->DAO->query($query); while($row = $result->fetchRow()) $tiposDocumentos[$row['tipo_documento_id']] = $row['sigla']. " - ". $row['descricao']; $query = "SELECT " . "* " . "FROM " . "normas.macroprocesso " . "ORDER BY " . "sigla"; $result = $this->DAO->query($query); while($row = $result->fetchRow()) $macroprocessos[$row['macroprocesso_id']] = $row['sigla']. " - " . $row['descricao']; $query = "SELECT " . "* " . "FROM " . "normas.processo " . "WHERE " . "macroprocesso_id = ?" . "ORDER BY " . "descricao"; $result = $this->DAO->Link_ID->query($query, array($this->_Macroprocesso['id'])); while($row = $result->fetchRow()) $processos[$row['processo_id']] = $row['descricao']; $status = array(); $status[0] = "Em Elaboração"; $status[1] = "Vigente"; $status[2] = "Obsoleta"; $status[3] = "Suspensa"; $status[4] = "Revogada"; $status[5] = "Em Revisão"; $this->addViewVar('normaId', $nrm_id); $this->addViewVar('idElaborador', $this->_Elaborador['user']['uidnumber']); $this->addViewVar('nomeElaborador', $this->_Elaborador['user']['cn']); $this->addViewVar('organizacaoId', $this->_Elaborador['employee']['organizacao_id']); $this->addViewVar('idGestor', $this->_Gestor['user']['uidnumber']); $this->addViewVar('nomeGestor', $this->_Gestor['user']['cn']); $this->addViewVar('idDiretor', $this->_Diretor['user']['uidnumber']); $this->addViewVar('nomeDiretor', $this->_Diretor['user']['cn']); $this->addViewVar('idDiretorJuridico', $this->_DiretorJuridico['user']['uidnumber']); $this->addViewVar('nomeDiretorJuridico', $this->_DiretorJuridico['user']['cn']); $this->addViewVar('cbTiposDocumentos', $tiposDocumentos); $this->addViewVar('sctTipoDocumento', $this->_TipoDocumento['id']); $this->addViewVar('cbMacroprocessos', $macroprocessos); $this->addViewVar('sctMacroprocesso', $this->_Macroprocesso['id']); $this->addViewVar('cbProcessos', $processos); $this->addViewVar('sctProcesso', $this->_Processo['id']); $this->addViewVar('TituloNorma', $this->_TituloNorma); $this->addViewVar('DataVigencia', $this->_DataVigencia); $this->addViewVar('ObjetivoNorma', $this->_ObjetivoNorma); $this->addViewVar('PalavrasChave', $this->_PalavrasChave); $this->addViewVar('txNumRevisao', $this->_NumRevisao); for($i = 0; $i < count($this->_Arquivos); $i++){ $Arquivos[$i]['id'] = $this->_Arquivos[$i]['arquivo_id']; $Arquivos[$i]['nome'] = $this->_Arquivos[$i]['name']; $Arquivos[$i]['is_anexo'] = $this->_Arquivos[$i]['is_anexo']; } $this->addViewVar('Arquivos', $Arquivos); $this->addViewVar('cbStatus', $status); $this->addViewVar('cbAreas', $areas); $this->addViewVar('sctStatus', $this->_Status); $this->addViewVar('sctAreaElaborador', $this->_Elaborador['area']['area_id']); $this->addViewVar('sctAreaGestora', $this->_Gestor['area']['area_id']); $this->addViewVar('sctDiretoria', $this->_Diretor['area']['area_id']); $this->addViewVar('sctAmbitoAplicacao', $this->_AmbitoAplicacao['id']); $this->addViewVar('downloadMethod', "downloadDataBase"); $this->addViewVar('activity_title', "Sistema Normativo - Editar Norma"); } /** * Executa a ação de alteração dos dados no banco * * @access public * @return void */ function alterarAction(){ $nrm_id = $this->request['normaId']; $this->_Elaborador = $this->_setEmployee($this->request['idElaborador'], $this->request['cbAreaElaborador']); $this->_Gestor = $this->_setEmployee($this->request['idGestor'], $this->request['cbAreasGestoras']); $this->_Diretor = $this->_setEmployee($this->request['idDiretor'], $this->request['cbDiretorias']); $this->_DiretorJuridico = $this->_setEmployee($this->request['idDiretorJuridico'], ID_AREA_DJ); $this->_TipoDocumento['id'] = $this->request['cbTiposDocumentos']; $this->_Macroprocesso['id'] = $this->request['cbMacroprocessos']; $this->_Processo['id'] = $this->request['cbProcessos']; $this->_TituloNorma = $this->request['txTituloNorma']; $this->_DataVigencia = $this->request['dtDataVigencia']; $this->_ObjetivoNorma = $this->request['txObjetivoNorma']; $this->_AmbitoAplicacao['id'] = $this->request['cbAmbitoAplicacao']; $this->_PalavrasChave = $this->request['txPalavrasChave']; $this->_Status['id'] = $this->request['cbStatus']; $this->_NumRevisao = $this->request['txNumRevisao']; $arquivo = array(); $anexos = array(); $this->_Arquivos = array(); $arquivo = wf_get_uploaded_files("arquivo"); $anexos = wf_get_uploaded_files("anexos"); if(count($arquivo)) if(!$arquivo[0]['error']){ $arquivo[0]['is_anexo'] = 0; $this->_Arquivos[] = $arquivo[0]; } if(count($anexos)) foreach($anexos as $elem){ if(!$elem['error']){ $elem['is_anexo'] = 1; $this->_Arquivos[] = $elem; } } if(strlen($this->request['params'])) $filesToRemove = explode(';', $this->request['params']); $this->_updateNorma($nrm_id, $filesToRemove); } /** * método auxiliar para a consulta * * @param array $where Array com o id do macroprocesso, o id do processo, id do tipo do documento e uma substring do título * @access private * @return void */ function _showConsulta($where = ""){ if ($_GET['s_co'] == 0){ $_GET['s_co'] = 4; $_GET['s_so'] = 1; } if(!$where){ $where['mpr_id'] = $_GET['mpr_id']; $where['pro_id'] = $_GET['pro_id']; $where['tpd_id'] = $_GET['tpd_id']; $where['titulo'] = $_GET['titulo']; } else { $_GET['mpr_id'] = $where['mpr_id']; $_GET['pro_id'] = $where['pro_id']; $_GET['tpd_id'] = $where['tpd_id']; $_GET['titulo'] = $where['titulo']; } if(count($where)){ $query_where = "WHERE " . "1 = 1"; if($where['mpr_id']) $query_where .= " AND mpr.macroprocesso_id = ".$where['mpr_id']; if($where['pro_id']) $query_where .= " AND pro.processo_id = ".$where['pro_id']; if($where['tpd_id']) $query_where .= " AND tpd.tipo_documento_id = ".$where['tpd_id']; if($where['titulo']) $query_where .= " AND nrm.titulo LIKE '%".$where['titulo']."%'"; } $query = "SELECT ". "mpr.sigla AS mpr_sigla, " . "pro.descricao AS pro_descricao, " . "tpd.sigla AS tpd_sigla, " . "(CASE WHEN nrm.status = 0 ". "THEN 'EM_ELAB' " . "ELSE (tpd.sigla || '-' || mpr.sigla || '-' || ltrim(to_char(nrm.sequencia,'000')) || '-' || ltrim(to_char(nrm.num_revisao,'00'))) ". "END) AS nrm_codigo, ". "(CASE ". "WHEN nrm.status = 0 THEN 'EE' ". "WHEN nrm.status = 1 THEN 'VG' ". "WHEN nrm.status = 2 THEN 'OB' ". "WHEN nrm.status = 3 THEN 'SP' ". "WHEN nrm.status = 4 THEN 'RV' ". "WHEN nrm.status = 5 THEN 'ER' ". "ELSE 'XX' ". "END) AS nrm_situacao_ref, ". "nrm.titulo AS nrm_titulo, " . "nrm.norma_id AS nrm_id, " . "nrm.macroprocesso_id AS nrm_mpr_id, " . "nrm.processo_id AS nrm_pro_id, " . "tpd.tipo_documento_id AS tpd_id, " . "nrm.tipo_documento_id AS nrm_tpd_id, " . "mpr.macroprocesso_id AS mpr_id, " . "pro.processo_id AS pro_id " . "FROM ". "normas.norma nrm ". "INNER JOIN ". "normas.tipo_documento tpd ". "ON ". "(nrm.tipo_documento_id = tpd.tipo_documento_id) ". "INNER JOIN ". "normas.macroprocesso mpr ". "ON ". "(nrm.macroprocesso_id = mpr.macroprocesso_id) ". "INNER JOIN ". "normas.processo pro ". "ON ". "(nrm.processo_id = pro.processo_id) " . $query_where; $titulos_ordenacao = array(); $titulos_ordenacao[] = array('name' => "Mpr.", 'id' => "1"); $titulos_ordenacao[] = array('name' => "Processo", 'id' => "2"); $titulos_ordenacao[] = array('name' => "Tpd", 'id' => "3"); $titulos_ordenacao[] = array('name' => "Código", 'id' => "4"); $titulos_ordenacao[] = array('name' => "Sit.", 'id' => "5"); $titulos_ordenacao[] = array('name' => "Título", 'id' => "6"); $paging = $this->factory->getInstance("wf_paging"); $paging->configure(PAGING_NUMBER_OF_ITEMS, $_GET); $paging->useDatabase(true); $paging->enableSorting(true); $paging->setSortingTitles($titulos_ordenacao); $result = $paging->restrictDBItems($this->DAO, $query); $this->addViewVar('count_items', $paging->itemsCount); $this->addViewVar('titulos_ordenacao', $paging->getSortingTitles()); $this->addViewVar('linksPaginacao', $paging->autoLinks(PAGING_MAX_NUMBER_OF_LINKS)); $this->addViewVar('result', $result); } /** * Atualiza a tabela de arquivos * * @access private * @param int $nrm_id O Id da norma a ser atualizada * @param array $filesToRemove Array com os "is_anexo" para serem removidos * @return false se ocorrer algum problema no update ou true se tudo correr bem */ function _updateFiles($nrm_id, $filesToRemove){ // verifica se o arquivo foi removido e se existe um para reposição if(count($filesToRemove)){ $query = "SELECT " . "is_anexo " . "FROM " . "normas.arquivo " . "WHERE " . "arquivo_id = ?"; $rem = false; foreach($filesToRemove as $f){ $result = $this->DAO->Link_ID->query($query, array($f)); if($result->fields['is_anexo'] == 0){ $rem = true; break; } } $ins = false; if(count($this->_Arquivos)){ foreach($this->_Arquivos as $arquivo) if(!$arquivo['is_anexo']){ $ins = true; break; } } if(!(($rem && $ins) || !($rem || $ins))) return false; } if(count($filesToRemove)){ foreach($filesToRemove as $arq_id){ $query = "DELETE FROM " . "normas.arquivo " . "WHERE " . "arquivo_id = ?"; if(!$this->DAO->Link_ID->query($query, array($arq_id))) return false; } } if(count($this->_Arquivos)){ $query = "INSERT INTO " . "normas.arquivo(" . "norma_id, " . "nome, " . "tipo, " . "tamanho, " . "is_anexo," . "conteudo) ". "VALUES(?,?,?,?,?,?)"; for($i=0; $i < count($this->_Arquivos); $i++ ){ $args[] = $nrm_id; $args[] = $this->_Arquivos[$i]['name']; $args[] = $this->_Arquivos[$i]['type']; $args[] = $this->_Arquivos[$i]['size']; $args[] = $this->_Arquivos[$i]['is_anexo']; $args[] = base64_encode(serialize(array($this->_Arquivos[$i]['content']))); if(!$this->DAO->Link_ID->query($query, $args)) return false; unset($args); } } return true; } /** * Atualiza a tabela de normas * * @access protected * @param int $nrm_id O Id da norma a ser atualizada * @param array $filesToRemove Array com os "is_anexo" para serem removidos * @return false se ocorrer algum problema no update ou true se tudo correr bem */ function _updateNorma($nrm_id, $filesToRemove){ $query = "SELECT " . "* " . "FROM " . "normas.norma " . "WHERE " . "norma_id = ?"; if(!$this->DAO->Link_ID->query($query, array($nrm_id))) return false; $query = " UPDATE " . "normas.norma " . "SET " . "elaborador_id = ?, " . "area_elaborador_id = ?, " . "area_gestora_id = ?, " . "gerente_id = ?, " . "diretor_juridico_id = ?, " . "diretoria_id = ?, " . "diretor_id = ?, " . "tipo_documento_id = ?, " . "macroprocesso_id = ?, " . "processo_id = ?, " . "titulo = ?, " . "num_revisao = ?, " . "data_vigencia = ?, " . "objetivo = ?, " . "ambito_aplicacao = ?, " . "palavras_chave = ?, " . "status = ? " . "WHERE " . "norma_id = ?"; $args[] = $this->_Elaborador['user']['uidnumber']; $args[] = $this->_Elaborador['area']['area_id']; $args[] = $this->_Gestor['area']['area_id']; $args[] = $this->_Gestor['user']['uidnumber']; $args[] = $this->_DiretorJuridico['user']['uidnumber']; $args[] = $this->_Diretor['area']['area_id']; $args[] = $this->_Diretor['user']['uidnumber']; $args[] = $this->_TipoDocumento['id']; $args[] = $this->_Macroprocesso['id']; $args[] = $this->_Processo['id']; $args[] = $this->_TituloNorma; $args[] = $this->_NumRevisao; if($this->_DataVigencia){ $data = explode('/', $this->_DataVigencia); $args[] = $data[2].$data[1].$data[0]; } else $args[] = ""; $args[] = $this->_ObjetivoNorma; $args[] = $this->_AmbitoAplicacao['id']; $args[] = $this->_PalavrasChave; $args[] = $this->_Status['id']; $args[] = $nrm_id; $this->DAO->Link_ID->StartTrans(); if($this->DAO->Link_ID->query($query, $args)) $queryOK = true; else $queryOK = false; $queryOK = $this->_updateFiles($nrm_id, $filesToRemove); if($queryOK){ $this->addViewVar('msgs', array("A modificação foi feita com sucesso")); $this->addViewVar('msgclass', "msg_sucesso"); $this->DAO->Link_ID->CompleteTrans(); return true; } else { $this->addViewVar('msgs', array("A transação falhou")); $this->addViewVar('msgclass', "msg_erro"); $this->DAO->Link_ID->FailTrans(); return false; } } } ?> ]]> class.elaboracao.controller.php model->adicionarArquivosAction()){ $this->loadViewVars(); $this->showForm($this->ADD_FILES); } else { $this->__default(); } } /** * Executa a chamada do método enviarAction * * @return void * @access public */ function enviar(){ $this->model->enviarAction(); } /** * Executa o método default * * @return void * @access public */ function cancelar(){ $this->__default(); } /** * Ação padrão da atividade. * * @return boolean * @access private */ function __default(){ $this->model->defaultAction(); $this->loadViewVars(); } /** * Execução da aplicação. * * @return void * @access public */ function run ($action){ $this->model->DAO->connect(); $this->dispatch($action); $this->model->DAO->disconnect(); } } ?> ]]> class.elaboracao.model.php pLdap = $this->factory->getInstance('wf_ldap'); $this->pOrgchart = $this->factory->getInstance('wf_orgchart'); $elaborador = $this->pOrgchart->getEmployee($this->getWfProperty('wf_user_id')); $this->_Elaborador = $this->_setEmployee($this->getWfProperty('wf_user_id'), $elaborador['area_id']); $area_dj = $this->pOrgchart->getArea(ID_AREA_DJ); $this->_DiretorJuridico = $this->_setEmployee($area_dj['titular_funcionario_id'], $area_dj['area_id']); $this->pOrganizacaoAreas = $this->pOrgchart->getOrganizationAreas($this->_Elaborador['area']['organizacao_id']); $this->pRegex = $this->factory->getInstance('wf_regex'); } /** * retorna a diretoria de uma área. * * @return (Objeto área - Orgchart) a diretoria de uma área ou ela própria caso não tenha diretoria. * @access private */ function getDiretoria($area_id){ $area = $this->pOrgchart->getArea($area_id); if($area['area_status_id'] == 3){ //diretoria return $area; } else { if(($area['superior_area_id'] == $this->_Gestor['organizacao_id']) // a área superior é a organização || ($area['superior_area_id'] == $area['area_id']) // a área superior é a própria área || empty($area['superior_area_id'])){ // não tem área superior return $this->_Gestor['area']; } return $this->getDiretoria($area['superior_area_id']); } } /** * função que consiste os dados do formulário * * @access public * @return true caso o formulário esteja consistente * @return false caso o formulário esteja incosistente */ function adicionarArquivosAction(){ // verifica se foi selecionada alguma área na combo de áreas gestoras if(($area_gestora_id = $this->request['cbAreasGestoras']) == 0){ $this->addViewVar('msgclass', "msg_erro"); $msgs[] = "Uma área gestora deve ser selecionada"; } else { $area_gestora = $this->pOrgchart->getArea($area_gestora_id); $this->_Gestor = $this->_setEmployee($area_gestora['titular_funcionario_id'], $area_gestora['area_id']); $diretoria = $this->getDiretoria($this->_Gestor['area']['area_id']); $this->_Diretor = $this->_setEmployee($diretoria['titular_funcionario_id'], $diretoria['area_id']); $this->addViewVar('Gestor', htmlspecialchars(serialize($this->_Gestor))); $this->addViewVar('Diretor', htmlspecialchars(serialize($this->_Diretor))); } // verifica se algum tipo de documento foi selecionado if(($tipo_documento_id = $this->request['cbTiposDocumentos']) == 0){ $this->addViewVar('msgclass', "msg_erro"); $msgs[] = "Um tipo de documento deve ser selecionado"; } else { $this->_TipoDocumento['id'] = $tipo_documento_id; $query = " SELECT * FROM normas.tipo_documento WHERE tipo_documento_id = ? "; $result = $this->DAO->Link_ID->query($query, array($tipo_documento_id)); $this->_TipoDocumento['cn'] = $result->fields['sigla'] . " - " . $result->fields['descricao']; unset($result); $this->addViewVar('TipoDocumento', htmlspecialchars(serialize($this->_TipoDocumento))); } // verifica se algum maprocesso foi selecionado if(($macroprocesso_id = $this->request['cbMacroprocessos']) == 0){ $this->addViewVar('msgclass', "msg_erro"); $msgs[] = "Um macroprocesso deve ser selecionado"; } else { $this->_Macroprocesso['id'] = $macroprocesso_id; $query = " SELECT * FROM normas.macroprocesso WHERE macroprocesso_id = ? "; $result = $this->DAO->Link_ID->query($query, array($macroprocesso_id)); $this->_Macroprocesso['cn'] = $result->fields['sigla']. " - " . $result->fields['descricao']; unset($result); $this->addViewVar('Macroprocesso', htmlspecialchars(serialize($this->_Macroprocesso))); } if(($processo_id = $this->request['cbProcessos']) == 0){ $this->addViewVar('msgclass', "msg_erro"); $msgs[] = "Um processo deve ser selecionado"; $macroprocesso_id = 0; } else { $this->_Processo['id'] = $processo_id; $query = " SELECT * FROM normas.processo WHERE processo_id = ? "; $result = $this->DAO->Link_ID->query($query, array($processo_id)); $this->_Processo['cn'] = $result->fields['descricao']; unset($result); $this->addViewVar('Processo',htmlspecialchars(serialize($this->_Processo))); } if(($this->_TituloNorma = $this->request['txTituloNorma']) == ""){ $this->addViewVar('msgclass', "msg_erro"); $msgs[] = "O campo TITULO deve ser preenchido"; } else { $this->addViewVar('TituloNorma', $this->_TituloNorma); } if(($this->_ObjetivoNorma = $this->request['txObjetivoNorma']) == ""){ $this->addViewVar('msgclass', "msg_erro"); $msgs[] = "A área OBJETIVO deve ser preenchida"; } else { $this->addViewVar('ObjetivoNorma', $this->_ObjetivoNorma); } if(($ambito_aplicacao = $this->request['cbAmbitoAplicacao']) == 0){ $this->addViewVar('msgclass', "msg_erro"); $msgs[] = "Uma área deve ser selecionado para o âmbito da aplicação da norma"; } else { $this->_AmbitoAplicacao['id'] = $ambito_aplicacao; $result = $this->pOrgchart->getArea($this->_AmbitoAplicacao); $this->_AmbitoAplicacao['cn'] = $result['sigla']. " - ". $result['descricao']; $this->addViewVar('AmbitoAplicacao', htmlspecialchars(serialize($this->_AmbitoAplicacao))); } if(($this->_PalavrasChave = $this->request['txPalavrasChave']) == ""){ $this->addViewVar('msgclass', "msg_erro"); $msgs[] = "O campo PALAVRAS CHAVE deve ser preenchido"; } else { $this->addViewVar('PalavrasChave', $this->_PalavrasChave); } $this->addViewVar('activity_title', "Sistema Normativo - Adicionar arquivos"); $this->addViewVar('sctAreaGestora', $this->_Gestor['area']['area_id']); $this->addViewVar('sctTipoDocumento', $this->_TipoDocumento['id']); $this->addViewVar('sctMacroprocesso', $this->_Macroprocesso['id']); $this->addViewVar('sctProcesso', $this->_Processo['id']); $this->addViewVar('sctAmbitoAplicacao', $this->_AmbitoAplicacao); $this->addViewVar('nomeElaborador', $this->_Elaborador['user']['cn']); $this->addViewVar('nomeArea', $this->_Elaborador['area']['sigla']. " - ". $this->_Elaborador['area']['descricao']); $this->addViewVar('nomeAreaGestora', $this->_Gestor['area']['sigla']. " - " . $this->_Gestor['area']['descricao']); $this->addViewVar('nomeGestor', $this->_Gestor['user']['cn']); $this->addViewVar('nomeDiretorJuridico', $this->_DiretorJuridico['user']['cn']); $this->addViewVar('nomeDiretoria', $this->_Diretor['area']['sigla']. " - ". $this->_Diretor['area']['descricao']); $this->addViewVar('nomeDiretor', $this->_Diretor['user']['cn']); $this->addViewVar('nomeTipoDocumento', $this->_TipoDocumento['cn']); $this->addViewVar('nomeMacroprocesso', $this->_Macroprocesso['cn']); $this->addViewVar('nomeProcesso', $this->_Processo['cn']); $this->addViewVar('TituloNorma', $this->_TituloNorma); $this->addViewVar('DataVigencia', $this->_DataVigencia); $this->addViewVar('ObjetivoNorma', $this->_ObjetivoNorma); $this->addViewVar('nomeAmbitoAplicacao', $this->_AmbitoAplicacao['cn']); $this->addViewVar('PalavrasChave', $this->_PalavrasChave); // carrega as mensagens de erro, se houverem. $this->addViewVar('msgs', $msgs); if(count($msgs)) return false; return true; } /** * função que, provisóriamente, insere uma nova norma no banco de dados. * * A intúito horiginal dessa função é que ela apenas jogue os dados para as properties da instancia * e comite a mesma, fazendo com que a próxima instancia, uma switch inicie o restante do processo. * * @return void * @access public */ function enviarAction(){ // $this->_Elaborador; Carregada na construtora // $this->_DiretorJuridico; Carregada na construtora $this->_Gestor = unserialize($this->request['Gestor']); $this->_Diretor = unserialize($this->request['Diretor']); $this->_TipoDocumento = unserialize($this->request['TipoDocumento']); $this->_Macroprocesso = unserialize($this->request['Macroprocesso']); $this->_Processo = unserialize($this->request['Processo']); $this->_AmbitoAplicacao = unserialize($this->request['AmbitoAplicacao']); $this->_TituloNorma = $this->request['TituloNorma']; $this->_ObjetivoNorma = $this->request['ObjetivoNorma']; $this->_PalavrasChave = $this->request['PalavrasChave']; $tmp_Arquivos = array_merge(wf_get_uploaded_files("arquivo"), wf_get_uploaded_files("anexos")); $this->_Arquivos = array(); foreach($tmp_Arquivos as $elem){ if(!$elem['error']) $this->_Arquivos[] = $elem; } $this->DAO->Link_ID->StartTrans(); $query = " SELECT nextval('normas.seq_norma')"; $norma_id = $this->DAO->query($query); $query = " INSERT INTO " . "normas.norma(" . "norma_id, " . "elaborador_id, " . "area_elaborador_id, " . "area_gestora_id, " . "gerente_id, " . "diretor_juridico_id, " . "diretoria_id, " . "diretor_id, " . "tipo_documento_id, " . "macroprocesso_id, " . "processo_id, " . "titulo, " . "num_revisao, " . "sequencia, ". "objetivo, " . "ambito_aplicacao, " . "palavras_chave, " . "status) " . "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; $args[] = $norma_id->fields['nextval']; $args[] = $this->_Elaborador['user']['uidnumber']; $args[] = $this->_Elaborador['area']['area_id']; $args[] = $this->_Gestor['area']['area_id']; $args[] = $this->_Gestor['user']['uidnumber']; $args[] = $this->_DiretorJuridico['user']['uidnumber']; $args[] = $this->_Diretor['area']['area_id']; $args[] = $this->_Diretor['user']['uidnumber']; $args[] = $this->_TipoDocumento['id']; $args[] = $this->_Macroprocesso['id']; $args[] = $this->_Processo['id']; $args[] = $this->_TituloNorma; $args[] = 1; $args[] = $this->_getCodeSequence($this->_TipoDocumento['id'], $this->_Macroprocesso['id']); $args[] = $this->_ObjetivoNorma; $args[] = $this->_AmbitoAplicacao['id']; $args[] = $this->_PalavrasChave; $args[] = 0; $queryOK = ($this->DAO->Link_ID->query($query, $args)) ? true : false; unset($args); $query = "INSERT INTO " . "normas.arquivo(" . "norma_id, " . "nome, " . "tipo, " . "tamanho, " . "is_anexo," . "conteudo) ". "VALUES(?,?,?,?,?,?)"; for($i=0; $i < count($this->_Arquivos); $i++ ){ $args[] = $norma_id->fields['nextval']; $args[] = $this->_Arquivos[$i]['name']; $args[] = $this->_Arquivos[$i]['type']; $args[] = $this->_Arquivos[$i]['size']; $args[] = (!$i) ? 0 : 1; // false se não for anexo $args[] = base64_encode(serialize(array($this->_Arquivos[$i]['content']))); if(!$this->DAO->Link_ID->query($query, $args)){ $queryOK = false; break; } unset($args); } if($queryOK) $this->DAO->Link_ID->CompleteTrans(); else { $this->DAO->Link_ID->FailTrans(); $msgs[] = "A atualização no banco de dados falhou"; $this->addViewVar('msgs', $msgs); $this->addViewVar('msgclass', "msg_erro"); } $this->commitInstance(); } /** * função padrão da atividade. Preenche os arrays para posteriormente popular as combos da camada view, * recupera as informações automáticas. * * @return void * @access public */ function defaultAction(){ $area_elaborador = $this->_Elaborador['area']['sigla']. " - ". $this->_Elaborador['area']['descricao']; $areas_gestoras[0] = "--- Selecione a área gestora ---"; foreach($this->pOrganizacaoAreas as $area){ $areas_gestoras[$area['area_id']] = $area['sigla']. " - ". $area['descricao']; } $query = "SELECT ". "* ". "FROM " . "normas.tipo_documento " . "ORDER BY " . "sigla"; $result = $this->DAO->query($query); while($row = $result->fetchRow()) if($row) $rows[] = $row; $tipos_documentos[0] = "--- Selecione um tipo ---"; foreach($rows as $elem){ $tipos_documentos[$elem['tipo_documento_id']] = $elem['sigla']. " - ". $elem['descricao']; } $query = "SELECT ". "* ". "FROM " . "normas.macroprocesso " . "ORDER BY " . "sigla"; $result = $this->DAO->query($query); unset($rows); while($row = $result->fetchRow()) if($row) $rows[] = $row; $macroprocessos[0] = "--- Selecione um macroprocesso ---"; foreach($rows as $elem){ $macroprocessos[$elem['macroprocesso_id']] = $elem['sigla']. " - ". $elem['descricao']; } $result = $this->pOrgchart->getOrganizationAreas($this->_Elaborador['employee']['organizacao_id']); $ambito_aplicacao[0] = "--- Selecione uma área ---"; foreach($result as $area){ $ambito_aplicacao[$area['area_id']] = $area['sigla']. " - ". $area['descricao']; } $this->addViewVar('activity_title', "Sistema Normativo - Elaborar Norma"); $this->addViewVar('nomeElaborador', $this->_Elaborador['user']['cn']); $this->addViewVar('nomeArea', $area_elaborador); $this->addViewVar('cbAreasGestoras', $areas_gestoras); $this->addViewVar('cbTiposDocumentos', $tipos_documentos); $this->addViewVar('cbMacroprocessos', $macroprocessos); $this->addViewVar('cbAmbitoAplicacao', $ambito_aplicacao); } } ?> ]]> class.macroprocesso.controller.php model->incluirAction(); $this->showForm($this->INS); $this->loadViewVars(); } /** * Executa a chamada do método inserirAction e executa o método * default * * @return void * @access public */ function inserir(){ $this->model->inserirAction(); $this->__default(); } /** * Executa o método default */ function cancelar(){ $this->__default(); } /** * Executa a chamada do método editarAction * carrega as variáveis da camada view e mostra o * template de edição de macroprocessos * * @access public * @return void */ function editar(){ $this->model->editarAction(); $this->loadViewVars(); $this->showForm($this->EDT); } /** * Executa a chamada do método alterarAction * e executa o método default * * @access public * @return void */ function alterar(){ $this->model->alterarAction(); $this->__default(); } /** * Ação padrão da atividade. * * @return boolean * @access private */ function __default(){ $this->model->defaultAction(); $this->loadViewVars(); } /** * Execução da aplicação. * * @return void * @access public */ function run ($action){ $this->model->DAO->connect(); $this->dispatch($action); $this->model->DAO->disconnect(); } } ?> ]]> class.macroprocesso.model.php request['params']; $query = "SELECT * FROM normas.macroprocesso ". "WHERE macroprocesso_id = ?"; $result = $this->DAO->Link_ID->query($query, array($id)); $this->addViewVar('modo', "alterar"); $this->addViewVar('macroprocesso', $result->fields); $this->addViewVar('activity_title', "Sistema Normativo - Alterar Macroprocesso"); } /** * método de atualização dos dados de um macroprocesso no banco de dados * * @access public * @return void */ function alterarAction(){ $id = $this->request['id']; $query = "UPDATE " . "normas.macroprocesso ". "SET " . "sigla = ?, " . "descricao = ? " . "WHERE " . "macroprocesso_id = ?"; $args[] = $this->request['sigla']; $args[] = $this->request['descricao']; $args[] = $id; $result = $this->DAO->Link_ID->query($query, $args); if($result){ $this->addViewVar('msgclass', "msg_sucesso"); $this->addViewVar('msgs', array("Cadastro atualizado com sucesso")); } else { $this->addViewVar('msgclass', "msg_erro"); $this->addViewVar('msgs', array("Não foi possível atualizar o cadastro")); } } /** * Carrega as variáveis da view para mostrar a tela de inclusão de macroprocessos * * @access public * @return void */ function incluirAction(){ $this->addViewVar('modo', "inserir"); $this->addViewVar('activity_title', "Sistema Normativo - Incluir Macroprocesso"); } /** * Método de inclusão de um macroprocesso no banco de dados * * @access public * @return void */ function inserirAction(){ if(!($args[] = $this->request['sigla'])) $msgs[] = "O campo SIGLA deve ser preenchido."; if(!($args[] = $this->request['descricao'])) $msgs[] = "O campo DESCRIÇÃO deve ser preenchido."; if(!count($msgs)){ $query = "INSERT INTO " . "normas.macroprocesso(sigla, descricao) ". "VALUES(?,?)"; if($this->DAO->Link_ID->query($query, $args)){ $this->addViewVar('msgclass', "msg_sucesso"); $this->addViewVar('msgs', array("Cadastro realizado com sucesso")); } else { $this->addViewVar('msgclass', "msg_erro"); $this->addViewVar('msgs', array("Não foi possível fazer o cadastro")); } } else { $this->addViewVar('msgclass', "msg_erro"); $this->addViewVar('msgs', $msgs); } } /** * Mostra a listagem de todos os macroprocessos existentes utilizando a classe de paginação * * @access public * @return void */ function defaultAction(){ $this->addViewVar("titulo","Sistema de Normas"); $this->addViewVar("activity_title", "Sistema Normativo - Manter Macroprocesso"); $query = "SELECT " . "* " . "FROM " . "normas.macroprocesso"; $titulos_ordenacao = array(); $titulos_ordenacao[] = array('name' => "Sigla", 'id' => "1"); $titulos_ordenacao[] = array('name' => "Descricao", 'id' => "2"); $paging = $this->factory->getInstance("wf_paging"); $paging->configure(PAGING_NUMBER_OF_ITEMS, $_GET); $paging->useDatabase(true); $paging->enableSorting(true); $paging->setSortingTitles($titulos_ordenacao); $result = $paging->restrictDBItems($this->DAO, $query); $this->addViewVar('titulos_ordenacao', $paging->getSortingTitles()); $this->addViewVar('count_items', $paging->itemsCount); $this->addViewVar('result', $result); $this->addViewVar('linksPaginacao', $paging->autoLinks(PAGING_MAX_NUMBER_OF_LINKS)); } } ?> ]]> class.model.inc.php DAO->query($query); echo "quantidade ".$result->fields['qtd']; return $result->fields['qtd'] + 1; } /** * função para carregar as properties a partir do banco de dados * * @access protected * @return void * @param int $nrm_id o id da norma da qual serão extraídos os dados para a carga das properties */ function _updateDataBaseAttributesAction($nrm_id){ $query = "SELECT ". "nrm.norma_id AS nrm_id, " . "nrm.elaborador_id AS nrm_elaborador_id, " . "nrm.area_elaborador_id AS nrm_area_elaborador_id, " . "nrm.gerente_id AS nrm_gerente_id, " . "nrm.area_gestora_id AS nrm_area_gestora_id, " . "nrm.diretor_id AS nrm_diretor_id, " . "nrm.diretoria_id AS nrm_diretoria_id, " . "nrm.diretor_juridico_id AS nrm_diretor_juridico_id, " . "nrm.tipo_documento_id AS nrm_tpd_id, " . "nrm.macroprocesso_id AS nrm_mpr_id, " . "nrm.processo_id AS nrm_pro_id, " . "nrm.titulo AS nrm_titulo, " . "(tpd.sigla || '-' || mpr.sigla || '-' || ltrim(to_char(nrm.sequencia,'000')) || '-' || ltrim(to_char(nrm.num_revisao,'00'))) AS nrm_codigo, ". "to_char(nrm.data_vigencia, 'DD/MM/YYYY') AS nrm_data_vigencia, " . "nrm.objetivo AS nrm_objetivo, " . "nrm.ambito_aplicacao AS nrm_ambito_aplicacao, " . "nrm.palavras_chave AS nrm_palavras_chave, " . "nrm.status AS nrm_status, " . "nrm.num_revisao AS nrm_num_revisao, " . "tpd.tipo_documento_id AS tpd_id, " . "tpd.sigla AS tpd_sigla, " . "tpd.descricao AS tpd_descricao, " . "mpr.macroprocesso_id AS mpr_id, " . "mpr.sigla AS mpr_sigla, " . "mpr.descricao AS mpr_descricao, " . "pro.processo_id AS pro_id, " . "pro.descricao AS pro_descricao " . "FROM ". "normas.norma nrm ". "INNER JOIN ". "normas.tipo_documento tpd ". "ON ". "(nrm.tipo_documento_id = tpd.tipo_documento_id) ". "INNER JOIN ". "normas.macroprocesso mpr ". "ON ". "(nrm.macroprocesso_id = mpr.macroprocesso_id) ". "INNER JOIN ". "normas.processo pro ". "ON ". "(nrm.processo_id = pro.processo_id) " . "WHERE " . "nrm.norma_id = ?"; $result = $this->DAO->Link_ID->query($query, array($nrm_id)); $this->_Elaborador = $this->_setEmployee($result->fields['nrm_elaborador_id'], $result->fields['nrm_area_elaborador_id']); $this->_Gestor = $this->_setEmployee($result->fields['nrm_gerente_id'], $result->fields['nrm_area_gestora_id']); $this->_Diretor = $this->_setEmployee($result->fields['nrm_diretor_id'], $result->fields['nrm_diretoria_id']); $this->_DiretorJuridico = $this->_setEmployee($result->fields['nrm_diretor_juridico_id'], ID_AREA_DJ); $this->_TipoDocumento['id'] = $result->fields['tpd_id']; $this->_TipoDocumento['cn'] = $result->fields['tpd_sigla']. " - ". $result->fields['tpd_descricao']; $this->_Macroprocesso['id'] = $result->fields['mpr_id']; $this->_Macroprocesso['cn'] = $result->fields['mpr_sigla']. " - ". $result->fields['mpr_descricao']; $this->_Processo['id'] = $result->fields['pro_id']; $this->_Processo['cn'] = $result->fields['pro_descricao']; $this->_TituloNorma = $result->fields['nrm_titulo']; $this->_CodigoNorma = $result->fields['nrm_codigo']; $this->_DataVigencia = $result->fields['nrm_data_vigencia']; $this->_ObjetivoNorma = $result->fields['nrm_objetivo']; $ambito_aplicacao = $this->pOrgchart->getArea($result->fields['nrm_ambito_aplicacao']); $this->_AmbitoAplicacao['id'] = $ambito_aplicacao['area_id']; $this->_AmbitoAplicacao['cn'] = $ambito_aplicacao['sigla']. " - ". $ambito_aplicacao['descricao']; $this->_PalavrasChave = $result->fields['nrm_palavras_chave']; $this->_Status['id'] = $result->fields['nrm_status']; $this->_NumRevisao = $result->fields['nrm_num_revisao']; switch($result->fields['nrm_status']){ case 0: $this->_Status['cn'] = "Em Elaboração"; break; case 1: $this->_Status['cn'] = "Vigente"; break; case 2: $this->_Status['cn'] = "Obsoleta"; break; case 3: $this->_Status['cn'] = "Suspensa"; break; case 4: $this->_Status['cn'] = "Revogada"; break; case 5: $this->_Status['cn'] = "Em Revisão"; break; default: $this->_Status['cn'] = "ERROR"; } $this->_updateDataBaseFilesAction($nrm_id); } /** * função que carrega a property _Arquivos a partir de dados do banco de dados * * @access protected * @return void * @param int $nrm_id O id da norma da qual se quer fazer download dos arquivos */ function _updateDataBaseFilesAction( $nrm_id ){ $query = "SELECT " . "* " . "FROM " . "normas.arquivo " . "WHERE " . "norma_id = ? " . "ORDER BY " . "is_anexo"; $result = $this->DAO->Link_ID->query($query, array($nrm_id)); while($row = $result->fetchRow()) if($row) $tmpArquivos[] = $row; for($i = 0; $i < count($tmpArquivos); $i++){ $this->_Arquivos[$i]['arquivo_id'] = $tmpArquivos[$i]['arquivo_id']; $this->_Arquivos[$i]['name'] = $tmpArquivos[$i]['nome']; $this->_Arquivos[$i]['type'] = $tmpArquivos[$i]['tipo']; $this->_Arquivos[$i]['size'] = $tmpArquivos[$i]['tamanho']; $conteudo = unserialize(base64_decode($tmpArquivos[$i]['conteudo'])); $this->_Arquivos[$i]['content'] = $conteudo[0]; $this->_Arquivos[$i]['is_anexo'] = $tmpArquivos[$i]['is_anexo']; } } /** * função para automatizar o carregamento dos atributos _Elaborador, _Gestor, * _Diretor e _DiretorJuridico * * @access protected * @param int $uid O Id do usuário * @param int $area_id O Id da área * @return Um array de arrays com os dados de user (ldap), employee (orgchart) e área (orgchart) */ function _setEmployee($uid, $area_id){ $ret['user'] = $this->pLdap->get_entry($uid); $ret['employee'] = $this->pOrgchart->getEmployee($uid); $ret['area'] = $this->pOrgchart->getArea($area_id); return $ret; } /** * função para fazer download de arquivos que estejam no banco de dados * * @access protected * @return void */ function downloadDataBaseAction(){ $this->_updateDataBaseFilesAction( $_GET['norma_id'] ); $this->_downloadAction(); } /** * função para fazer download de arquivos que estejam em na property _Arquivos * da instancia * * @access protected * @return void */ function downloadPropertiesAction(){ $this->updateAttributes(); $this->_downloadAction(); } /** * função para fazer downloads de arquivos desde que eles estejam no * atributo _Arquivos da classe model * * @access privado * $return void */ function _downloadAction(){ function download($params){ foreach($params['model']->_Arquivos as $arq) if($arq['arquivo_id'] == $params['id']){ $fileToDownload = array(); $fileToDownload['filename'] = $arq['name']; $fileToDownload['content'] = $arq['content']; } return $fileToDownload; } wf_handle_download(array_merge($_GET, array('model' => $this)), "download"); } /** * carrega os atributos da classe model dos dados do banco e * carrega as variáveis da camada view * * @access protected * @return void */ function _visualizarNorma(){ $nrm_id = $this->request['params']; $this->_updateDataBaseAttributesAction($nrm_id); for($i = 0; $i < count($this->_Arquivos); $i++){ $Arquivos[$i]['id'] = $this->_Arquivos[$i]['arquivo_id']; $Arquivos[$i]['nome'] = $this->_Arquivos[$i]['name']; } $this->addViewVar('NormaId', $nrm_id); $this->addViewVar('nomeElaborador', $this->_Elaborador['user']['cn']); $this->addViewVar('nomeArea', $this->_Elaborador['area']['sigla']. " - ". $this->_Elaborador['area']['descricao']); $this->addViewVar('nomeAreaGestora', $this->_Gestor['area']['sigla']. " - " . $this->_Gestor['area']['descricao']); $this->addViewVar('nomeGestor', $this->_Gestor['user']['cn']); $this->addViewVar('nomeDiretorJuridico', $this->_DiretorJuridico['user']['cn']); $this->addViewVar('nomeDiretoria', $this->_Diretor['area']['sigla']. " - ". $this->_Diretor['area']['descricao']); $this->addViewVar('nomeDiretor', $this->_Diretor['user']['cn']); $this->addViewVar('nomeTipoDocumento', $this->_TipoDocumento['cn']); $this->addViewVar('nomeMacroprocesso', $this->_Macroprocesso['cn']); $this->addViewVar('nomeProcesso', $this->_Processo['cn']); $this->addViewVar('TituloNorma', $this->_TituloNorma); $this->addViewVar('CodigoNorma', $this->_CodigoNorma); $this->addViewVar('DataVigencia', $this->_DataVigencia); $this->addViewVar('ObjetivoNorma', $this->_ObjetivoNorma); $this->addViewVar('nomeAmbitoAplicacao', $this->_AmbitoAplicacao['cn']); $this->addViewVar('PalavrasChave', $this->_PalavrasChave); $this->addViewVar('nomeStatus', $this->_Status['cn']); $this->addViewVar('Arquivos', $Arquivos); $this->addViewVar('downloadMethod', "downloadDataBase"); $this->addViewVar('activity_title', "Sistema Normativo - Visualizar Norma - ".$this->_CodigoNorma); } } ?> ]]> class.processo.controller.php model->incluirAction(); $this->loadViewVars(); $this->showForm($this->INS); } /** * Executa a ação de inserir um novo processo no banco * * @return NULL * @access public */ function inserir(){ $this->model->inserirAction(); $this->__default(); } /** * Mostra o formulário de edição de um processo existente * * @return NULL * @access public */ function editar(){ $this->model->editarAction(); $this->loadViewVars(); $this->showForm($this->EDT); } /** * Executa a ação de alteração de um processo no banco * * @return NULL * @access public */ function alterar(){ $this->model->alterarAction(); $this->__default(); } /** * Ação padrão da atividade. * * @return boolean * @access private */ function __default(){ $this->model->defaultAction(); $this->loadViewVars(); } /** * Execução da aplicação. * * @return void * @access public */ function run ($action){ $this->model->DAO->connect(); $this->dispatch($action); $this->model->DAO->disconnect(); } } ?> ]]> class.processo.model.php addViewVar('activity_title', "Sistema Normativo - Incluir Processo"); $this->addViewVar('modo', "inserir"); $query = "SELECT ". "* ". "FROM ". "normas.macroprocesso ". "ORDER BY ". "sigla"; $result = $this->DAO->query($query); while($row = $result->fetchRow()) if($row) $rows[] = $row; $this->addViewVar('macroprocesso', $rows); } /** * Carrega as variáveis variáveis da camada view para mostrar a tela de alteração de um processo * * @access public * @return void */ function editarAction(){ $params = explode(';',$this->request['params']); $query = "SELECT " . "* " . "FROM " . "normas.macroprocesso " . "ORDER BY " . "sigla"; $result = $this->DAO->query($query); while($row = $result->fetchRow()) if($row) $rows[] = $row; $this->addViewVar('selected', $params[0]); $this->addViewVar('macroprocesso', $rows); $this->addViewVar('proc_descricao', $params[1]); $this->addViewVar('proc_id', $params[2]); $this->addViewVar('activity_title', "Sistema Normativo - Alterar Processo"); } /** * Insere um processo no banco de dados * * @access public * @return void */ function inserirAction(){ $sucesso = true; if(($args[] = $this->request['cb_macroprocesso']) == 0){ $sucesso = false; $msgclass = "msg_erro"; $msgs[] = "Um macro-processo deve ser selecionado"; } if(!($args[] = $this->request['descricao'])){ $sucesso = false; $msgclass = "msg_erro"; $msgs[] = "O campo DESCRICAO deve ser preenchido"; } if($sucesso){ $query = "INSERT INTO ". "normas.processo " . "(macroprocesso_id, descricao) " . "VALUES " . "(?,?)"; if($this->DAO->Link_ID->query($query, $args)){ $msgclass = "msg_sucesso"; $msgs[] = "Cadastro realizado com sucesso"; } else { $msgclass = "msg_erro"; $msgs[] = "Não foi possível executar a inserção"; } } $this->addViewVar('msgs', $msgs); $this->addViewVar('msgclass', $msgclass); $this->addViewVar('activity_title', "Incluir Processo"); } /** * Altera um processo no banco de dados * * @access public * @return void */ function alterarAction(){ $sucesso = true; if(($args[] = $this->request['cb_macroprocesso']) == 0){ $sucesso = false; $msgclass = "msg_erro"; $msgs[] = "Um macroprocesso deve ser selecionado"; } if(!($args[] = $this->request['descricao'])){ $sucesso = false; $msgclass = "msg_erro"; $msgs[] = "O campo DESCRIÇÃO deve ser preenchido"; } $args[] = $this->request['params']; if($sucesso){ $query = "UPDATE " . "normas.processo " . "SET " . "macroprocesso_id = ?, " . "descricao = ? " . "WHERE " . "processo_id = ?"; if(!($this->DAO->Link_ID->query($query, $args))){ $msgclass = "msg_erro"; $msgs[] = "Não foi possível atualizar o cadastro"; } else { $msgclass = "msg_sucesso"; $msgs[] = "Cadastro atualizado com sucesso"; } } $this->addViewVar('msgclass', $msgclass); $this->addViewVar('msgs', $msgs); } /** * mostra a listagem de processos salvos no banco de dados utilizando a classe de paginação * * @access public * @return void */ function defaultAction(){ $this->addViewVar("titulo","Sistema de Normas"); $this->addViewVar("activity_title", "Sistema Normativo - Manter Processos"); $query = "SELECT " . "mpr.sigla AS mpr_sigla, ". "mpr.descricao AS mpr_descricao, ". "pro.descricao AS pro_descricao, ". "mpr.macroprocesso_id AS mpr_id, ". "pro.processo_id AS pro_id, ". "pro.macroprocesso_id AS pro_mpr_id ". "FROM ". "normas.macroprocesso mpr, ". "normas.processo pro ". "WHERE ". "mpr.macroprocesso_id = pro.macroprocesso_id"; $titulos_ordenacao = array(); $titulos_ordenacao[] = array('name' => "Sigla", 'id' => "1"); $titulos_ordenacao[] = array('name' => "Macroprocesso", 'id' => "2"); $titulos_ordenacao[] = array('name' => "Processo", 'id' => "3"); $paging = $this->factory->getInstance("wf_paging"); $paging->configure(PAGING_NUMBER_OF_ITEMS, $_GET); $paging->useDatabase(true); $paging->enableSorting(true); $paging->setSortingTitles($titulos_ordenacao); $result = $paging->restrictDBItems($this->DAO, $query); $this->addViewVar('titulos_ordenacao', $paging->getSortingTitles()); $this->addViewVar('count_items', $paging->itemsCount); $this->addViewVar('result', $result); $this->addViewVar('linksPaginacao', $paging->autoLinks(PAGING_MAX_NUMBER_OF_LINKS)); } } ?> ]]> class.tipodocumento.controller.php model->incluirAction(); $this->showForm($this->INS); $this->loadViewVars(); } /** * Executa o método inserirAction e o método default * * @access public * @return void */ function inserir(){ $this->model->inserirAction(); $this->__default(); } /** * Executa a chamada do métodp editarAction, mostra o template de alteração * e carrega as variáveis da camada view * * @access public * @return void */ function editar(){ $this->model->editarAction(); $this->showForm($this->EDT); $this->loadViewVars(); } /** * Executa o metodo alterarAction e o método default * * @access public * @return void */ function alterar(){ $this->model->alterarAction(); $this->__default(); } /** * Executa a chamada do método default * * @access public * @return void */ function cancelar(){ $this->__default(); } /** * Ação padrão da atividade. * * @return boolean * @access private */ function __default(){ $this->model->defaultAction(); $this->loadViewVars(); } /** * Execução da aplicação. * * @return void * @access public */ function run ($action){ $this->model->DAO->connect(); $this->dispatch($action); $this->model->DAO->disconnect(); } } ?> ]]> class.tipodocumento.model.php request['params']; $query = "SELECT " . "* " . "FROM " . "normas.tipo_documento ". "WHERE " . "tipo_documento_id = ?"; $result = $this->DAO->Link_ID->query($query, array($id)); $this->addViewVar('modo', "alterar"); $this->addViewVar('tipo_documento', $result->fields); $this->addViewVar('activity_title', "Sistema Normativo - Alterar Tipo de Documento"); } /** * Altera um tipo de documento no banco de dados * * @access public * @return void */ function alterarAction(){ $id = $this->request['id']; $query = "UPDATE " . "normas.tipo_documento ". "SET " . "sigla = ?, " . "descricao = ? " . "WHERE " . "tipo_documento_id = ?"; $args[] = $this->request['sigla']; $args[] = $this->request['descricao']; $args[] = $id; $result = $this->DAO->Link_ID->query($query, $args); if($result){ $this->addViewVar('msgclass', "msg_sucesso"); $this->addViewVar('msgs', array("Cadastro atualizado com sucesso")); } else { $this->addViewVar('msgclass', "msg_erro"); $this->addViewVar('msgs', array("Não foi possível atualizar o cadastro")); } } /** * Carrega as variáveis da camada view para mostrar a tela de inclusão de um tipo de documento * * @access public * @return void */ function incluirAction(){ $this->addViewVar('modo', "inserir"); $this->addViewVar('activity_title', "Sistema Normativo - Incluir Tipo de Documento"); } /** * Insere um tipo de documento no banco de dados * * @access public * @return void */ function inserirAction(){ if(!($args[] = $this->request['sigla'])) $msgs[] = "O campo SIGLA deve ser preenchido."; if(!($args[] = $this->request['descricao'])) $msgs[] = "O campo DESCRIÇÃO deve ser preenchido."; if(!count($msgs)){ $query = "INSERT INTO " . "normas.tipo_documento(" . "sigla, " . "descricao) ". "VALUES(?,?)"; if($this->DAO->Link_ID->query($query, $args)){ $this->addViewVar('msgclass', "msg_sucesso"); $this->addViewVar('msgs', array("Cadastro realizado com sucesso")); } else { $this->addViewVar('msgclass', "msg_erro"); $this->addViewVar('msgs', array("Não foi possível fazer o cadastro")); } } else { $this->addViewVar('msgclass', "msg_erro"); $this->addViewVar('msgs', $msgs); } } /** * Mostra a listagem dos tipos de documento utilizando a classe de paginação * * @access public * @return void */ function defaultAction(){ $this->addViewVar("titulo","Sistema de Normas"); $this->addViewVar("activity_title", "Sistema Normativo - Manter Tipo de Documentos"); $query = "SELECT " . "* " . "FROM " . "normas.tipo_documento"; $titulos_ordenacao = array(); $titulos_ordenacao[] = array('name' => "Sigla", 'id' => "1"); $titulos_ordenacao[] = array('name' => "Tipo de Documento", 'id' => "2"); $paging = $this->factory->getInstance("wf_paging"); $paging->configure(PAGING_NUMBER_OF_ITEMS, $_GET); $paging->useDatabase(true); $paging->enableSorting(true); $paging->setSortingTitles($titulos_ordenacao); $result = $paging->restrictDBItems($this->DAO, $query); $this->addViewVar('titulos_ordenacao', $paging->getSortingTitles()); $this->addViewVar('count_items', $paging->itemsCount); $this->addViewVar('result', $result); $this->addViewVar('linksPaginacao', $paging->autoLinks(PAGING_MAX_NUMBER_OF_LINKS)); } } ?> ]]> add_user.png ajaxCalls.js formatInput.js icon.png icon_ajuda.png icon_edit.png icon_msg_erro.png icon_msg_sucesso.png toggleDetails.js view.png normas.css Elaborar end