$funId acao => $acao codGp => $codGp nomegp = > $nomeGp"; /* * Css para formatação da árvove de permissões */ $cssBlock = ""; /* * Adiciona uma ou mais permissões a árvore de usuários */ if (isset($_GET["acao"]) && (strtolower($_GET["acao"]) == 'add')) { if (!IsAdmin() && IsSysAdmin($nomeGp)) { $msg = 'Esta operação pode ser realizada apenas pelo usuário "Admin"!'; } else { /* * lista as funcoes disponiveis no sistema * e as adiciona ao array $dadosMenu */ $dadosMenu = array(); $query = "Select * from pbx_funcoes order by fun_id"; $result = pg_query($dbcon, $query); if ($result) { while ($row = pg_fetch_array($result)) { $dadosMenu[$row["fun_id"]] = $row["fun_id_pai"]; } /* * lista as funcoes do grupo */ $funcGrupo = array(); $query = " Select gp_id, fun_id from pbx_grupo_funcoes where gp_id = $codGp order by fun_id"; $result = pg_query($dbcon, $query); if ($result) { while ($row = pg_fetch_array($result)) { $funcGrupo[$row["fun_id"]] = $row["fun_id"]; } $result = pg_query($dbcon, 'begin'); addFuncaoDB($dbcon, $codGp, $funId, $funcGrupo); if (!$erros) { addFuncaoAbaixo($dbcon, $codGp, $funId, $dadosMenu, $funcGrupo); } if (!$erros) { addFuncaoAcima($dbcon, $codGp, $dadosMenu[$funId], $dadosMenu, $funcGrupo); } if (!$erros) { $result = pg_query($dbcon, 'commit'); if ($result) $msg = 'Operação Realizada com Sucesso!'; } else { $erroDb = pg_last_error($dbcon); pg_query($dbcon, 'rollback'); $msg = 'A Operação não Pode ser Realizada!' . (empty($erroDb) ? '' : ' Erro: ' . $erroDb); } } } } } else if (isset($_GET["acao"]) && (strtolower($_GET["acao"]) == 'rem')) { $acaoRemove = 1; if (!IsAdmin() && IsSysAdmin($nomeGp)) { $rem = GetMsgRemFormat('Esta Operação Pode ser Realizada Apenas pelo Usuário "Admin"!'); } else { //lista as funcoes disponiveis no sistema $dadosMenu = array(); $idUser = GetIdUser(); $query = IsAdmin() ? "Select * from pbx_funcoes order by fun_id " : "Select * from pbx_funcoes where fun_id in(select gf.fun_id from pbx_grupo_funcoes gf, pbx_grupo_usuario gu where gf.gp_id = gu.gp_id and gu.user_id = '$idUser' ) order by fun_id "; $result = pg_query($dbcon, $query); if ($result) { while ($row = pg_fetch_array($result)) { $dadosMenu[$row["fun_id"]] = $row["fun_id_pai"]; } //lista as funcoes do grupo $funcGrupo = array(); $query = " Select gp_id, fun_id from pbx_grupo_funcoes where gp_id = $codGp order by fun_id"; $result = pg_query($dbcon, $query); if ($result) { while ($row = pg_fetch_array($result)) { $funcGrupo[$row["fun_id"]] = $dadosMenu[$row["fun_id"]]; } remFuncaoDB($dbcon, $codGp, $funId, $funcGrupo); if (!$erros) { remFuncaoAbaixo($dbcon, $codGp, $funId, $dadosMenu, $funcGrupo); } if (!$erros) { remFuncaoAcima($dbcon, $codGp, $dadosMenu[$funId], $dadosMenu, $funcGrupo); } if (!$erros) { $result = pg_query($dbcon, 'commit'); if ($result) { //$msg = 'Operação Realizada com Sucesso!'; $rem = GetModulosRemovidos($dbcon); } else { $msg = 'A Operação não Pode ser Realizada! Erro: Não foi possível concluir a transação.'; } } else { $erroDb = pg_last_error($dbcon); pg_query($dbcon, 'rollback'); $msg = 'A Operação não Pode ser Realizada!' . (empty($erroDb) ? '' : ' Erro: ' . $erroDb); } } } } } if (!$acaoRemove) $_SESSION["modulosRemovidos"] = array(); $jsPage[] = "scriptApl/tree.js"; $jsPage[] = "scriptApl/tree_tpl.js"; $jsStartup[] = "document.getElementById('footer').style.visibility='hidden';"; //$jsStartup[] = "function hiddeFooter(){document.getElementById('footer').visibility='hidden;'"; if (!$acaoRemove) $funcs = GetFunc($dbcon, $codGp, 0); $smarty->assign("funcs", $funcs); $smarty->assign("msg", $msg); $smarty->assign("rem", $rem); GetTemplate($smarty, 'seguranca/perfilFuncoesGrupos.tpl'); function GetFunc($dbcon, $idGrupo, $notMenu = 0) { $_SESSION["SStreView"] = 1; $_SESSION["SSperfilAcao"] = "rem"; //$dadosMenu = Menu($dbcon, QueryPerfilHead($idGrupo), QueryPerfilItens($idGrupo)); $dadosMenu = MontaMenu(0, -$idGrupo, 2, $notMenu, "rem"); $dadosMenu = str_replace("MENU_ITEMS", "TREE_ITEMS_GP", $dadosMenu); $GLOBALS["jsBlok"][] = $dadosMenu; $menu = "
\n"; $menu .= "\n"; $menu .= "
\n"; return $menu; } function QueryPerfilHead($idGrupo) { $query = "select b.fun_id, b.fun_nome, b.fun_menu, b.fun_menu_text, b.fun_menu_url, b.fun_menu_img, b.fun_id_pai from pbx_funcoes b where coalesce(b.fun_id_pai, 0) = 0 and b.fun_id in(select gf.fun_id from pbx_grupo_funcoes gf where gf.gp_id = '$idGrupo') Union select b.fun_id, b.fun_nome, b.fun_menu, b.fun_menu_text, b.fun_menu_url, b.fun_menu_img, b.fun_id_pai from pbx_funcoes b where coalesce(b.fun_id_pai, 0) = 0 and fun_public = 1 order by 1 "; return $query; } function QueryPerfilItens($idGrupo) { $idUser = GetIdUser(); $query = "select b.fun_id, b.fun_nome, b.fun_menu, b.fun_menu_text, b.fun_menu_url, b.fun_menu_img, b.fun_id_pai from pbx_funcoes b where 1=1 and b.fun_id in(select g.fun_id from pbx_grupo_funcoes g where g.gp_id = '$idGrupo') order by b.fun_id "; return $query; } function FuncExiste($funId, $funcGrupo) { foreach ($funcGrupo as $value) { if ($funId == $value) return 1; } return 0; } function addFuncaoAbaixo($dbcon, $codGP, $fun_id, $dadosMenu, $funcGrupo) { foreach ($dadosMenu as $key => $value) { if ($value == $fun_id) { addFuncaoDB($dbcon, $codGP, $key, $funcGrupo); addFuncaoAbaixo($dbcon, $codGP, $key, $dadosMenu, $funcGrupo); } } } function addFuncaoAcima($dbcon, $codGP, $fun_id_pai, $dadosMenu, $funcGrupo) { foreach ($dadosMenu as $key => $value) { if ($key == $fun_id_pai) { addFuncaoDB($dbcon, $codGP, $key, $funcGrupo); if ($value) addFuncaoAcima($dbcon, $codGP, $value, $dadosMenu, $funcGrupo); } } } function addFuncaoDB($dbcon, $codGP, $fun_id, $funcGrupo) { $result = false; if (!isset($funcGrupo[$fun_id]) || (!$funcGrupo[$fun_id])) { $query = "insert into pbx_grupo_funcoes( gp_id, fun_id) values($codGP, $fun_id)"; $result = @pg_query($dbcon, $query); if (!$result) $GLOBALS["erros"] ++; } return $result; } function remFuncaoDB($dbcon, $codGp, $funId, &$funcGrupo) { if (!$funcGrupo[$fun_id]) { $query = "delete from pbx_grupo_funcoes where gp_id = $codGp and fun_id = $funId"; $result = @pg_query($dbcon, $query); if ($result) { $_SESSION["modulosRemovidos"][] = $funId; $rmFunc = array(); foreach ($funcGrupo as $key => $value) { if ($funId != $key) $rmFunc[$key] = $value; } $funcGrupo = array(); $funcGrupo = $rmFunc; } else { $GLOBALS["erros"] ++; } } } function remFuncaoAbaixo($dbcon, $codGp, $fun_id, $dadosMenu, $funcGrupo) { foreach ($dadosMenu as $key => $value) { if ($value == $fun_id) { remFuncaoDB($dbcon, $codGp, $key, $funcGrupo); remFuncaoAbaixo($dbcon, $codGp, $key, $dadosMenu, $funcGrupo); } } } function remFuncaoAcima($dbcon, $codGP, $fun_id_pai, $dadosMenu, $funcGrupo) { if (!ExisteFilhos($fun_id_pai, $funcGrupo)) { foreach ($dadosMenu as $key => $value) { if ($key == $fun_id_pai) { remFuncaoDB($dbcon, $codGP, $key, $funcGrupo); if ($value) remFuncaoAcima($dbcon, $codGP, $key, $value, $dadosMenu, $funcGrupo); } } } } function ExisteFilhos($fun_id_pai, $funcGrupo) { foreach ($funcGrupo as $key => $value) { if ($value == $fun_id_pai) return true; } return false; } function GetModulosRemovidos($dbcon) { $modRem = $_SESSION["modulosRemovidos"]; $modIn = ''; foreach ($modRem as $value) { $modIn .= empty($modIn) ? $value : ',' . $value; } $query = "Select * from pbx_funcoes where fun_id in($modIn) order by fun_menu_text"; $result = pg_query($dbcon, $query); if ($result) { $mod = 'Módulos Removidos '; while ($row = pg_fetch_array($result)) { $nomeMod = $row["fun_menu_text"]; $mod .= ""; } $mod .= '
Módulo(s) Removido(s)
$nomeMod
'; return $mod; $str = 'Operação Realizada com Sucesso!'; } } function GetMsgRemFormat($msg) { $mod = ''; $mod .= "
Mensagem
$msg
"; return $mod; } ?>