You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

317 lines
12 KiB

<?php
$tpLayout = 1;
if (isset($_GET["lstGrupo"])) {
$_SESSION["lstGrupo"] = $_GET["lstGrupo"];
$_SESSION["nameGrupo"] = $_GET["nameGrupo"];
}
$codGp = $_SESSION["lstGrupo"];
$nomeGp = $_SESSION["nameGrupo"];
$_SESSION["SStreRoot"] = $nomeGp;
$funId = isset($_GET["funId"]) ? $_GET["funId"] : null;
$acao = isset($_GET["acao"]) ? $_GET["acao"] : null;
$erros = 0;
$msg = '';
$acaoRemove = 0;
$tpLayout = 1;
$rem = 0;
// echo "funid => $funId acao => $acao codGp => $codGp nomegp = > $nomeGp";
/*
* Css para formatação da árvove de permissões
*/
$cssBlock = "<style>
a, A:link, a:visited, a:active
{color: #0000aa; text-decoration: none; font-family: Tahoma, Verdana; font-size: 11px}
A:hover
{color: #ff0000; text-decoration: none; font-family: Tahoma, Verdana; font-size: 11px}
</style>";
/*
* 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 = "<div style=\"width:200px; height:800px;position:relative;\">\n";
$menu .= "<script language=\"JavaScript\">\n";
$menu .= "<!--//\n";
$menu .= " new tree (TREE_ITEMS_GP, tree_tpl);\n";
$menu .= "//-->\n";
$menu .= "</script>\n";
$menu .= "</div>\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 = '<html><head><title>Módulos Removidos</title></head><body bgcolor="FFFFFF">
<table width="100%" border="0" cellpadding="2" cellspacing="0" class="formCad">
<tr>
<th>Módulo(s) Removido(s)</th>
</tr>';
while ($row = pg_fetch_array($result)) {
$nomeMod = $row["fun_menu_text"];
$mod .= "<tr>
<td>$nomeMod</td>
</tr>";
}
$mod .= '</table></body></html>';
return $mod;
$str = 'Operação Realizada com Sucesso!';
}
}
function GetMsgRemFormat($msg) {
$mod = '<table width="100%" border="0" cellpadding="2" cellspacing="0" class="formCad">
<tr>
<th>Mensagem</th>
</tr>';
$mod .= "<tr>
<td>$msg</td>
</tr>
</table>";
return $mod;
}
?>