No módulo de segurança, quando sincronizamos as novas aplicações são colocadas nas tabelas: sec_apps e sec_apps_groups, essa segunda tabela é para linkar grupo de usuário e aplicação.
O problema é que essa funcionalidade não retira dessas tabelas as aplicações que foram excluídas e quando vamos alterar permissões de tela está ficando chato identificar as aplicações corretas.
Pensando nisso elaboramos o seguinte código para limpar esses nomes de aplicações removidas:
$query = "SELECT app_name FROM sec_apps";
sc_select(apps, $query);
if ({apps} === false){
echo "Erro de acesso. Mensagem = " . {apps};
}else{
while (!$apps->EOF){
verifica($apps->fields[0]);
$apps->MoveNext();
}
$apps->Close();
}
function verifica($name){
echo "app: ".$name." -- ";
if(is_dir( "../".$name)){
echo "ok</br>";
}else{
echo "remover</br>";
remover($name);
}
}
function remover($name){
$query = "DELETE FROM sec_groups_apps WHERE app_name = '".$name."'";
sc_exec_sql($query);
$query = "DELETE FROM sec_apps WHERE app_name = '".$name."'";
sc_exec_sql($query);
}
Gostaria de saber se existe algum problema com relação ao scriptcase em realizar essa remoção de dados do banco de dados, e se existe mais algum lugar para remover esse nomes de aplicações.