$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
';
return $mod;
$str = 'Operação Realizada com Sucesso!';
}
}
function GetMsgRemFormat($msg) {
$mod = '";
return $mod;
}
?>