|
|
|
|
<?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<EFBFBD><EFBFBD>o da <EFBFBD>rvove de permiss<EFBFBD>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<EFBFBD>es a <EFBFBD>rvore de usu<EFBFBD>rios
|
|
|
|
|
*/
|
|
|
|
|
if (isset($_GET["acao"]) && (strtolower($_GET["acao"]) == 'add')) {
|
|
|
|
|
if (!IsAdmin() && IsSysAdmin($nomeGp)) {
|
|
|
|
|
$msg = 'Esta opera<EFBFBD><EFBFBD>o pode ser realizada apenas pelo usu<EFBFBD>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<EFBFBD><EFBFBD>o Realizada com Sucesso!';
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$erroDb = pg_last_error($dbcon);
|
|
|
|
|
pg_query($dbcon, 'rollback');
|
|
|
|
|
$msg = 'A Opera<EFBFBD><EFBFBD>o n<EFBFBD>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<EFBFBD><EFBFBD>o Pode ser Realizada Apenas pelo Usu<EFBFBD>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<EFBFBD><EFBFBD>o Realizada com Sucesso!';
|
|
|
|
|
$rem = GetModulosRemovidos($dbcon);
|
|
|
|
|
} else {
|
|
|
|
|
$msg = 'A Opera<EFBFBD><EFBFBD>o n<EFBFBD>o Pode ser Realizada! Erro: N<EFBFBD>o foi poss<EFBFBD>vel concluir a transa<EFBFBD><EFBFBD>o.';
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$erroDb = pg_last_error($dbcon);
|
|
|
|
|
pg_query($dbcon, 'rollback');
|
|
|
|
|
$msg = 'A Opera<EFBFBD><EFBFBD>o n<EFBFBD>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<EFBFBD>dulos Removidos</title></head><body bgcolor="FFFFFF">
|
|
|
|
|
<table width="100%" border="0" cellpadding="2" cellspacing="0" class="formCad">
|
|
|
|
|
<tr>
|
|
|
|
|
<th>M<EFBFBD>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<EFBFBD><EFBFBD>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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|