Gerenciamento das aplicações sincronizadas

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.

Será que teria algum problema em colocar esse código na aplicação ‘app_sync_apps’ do sc, dentro do evento ‘onValidate’?

Somente testando. Mas acho que não.
Aproveite e envie como sugestão ao feedback@netmake.com.br .
E obrigado por compartilhar.

Uma boa idéia, realmente!

Pessoal, vcs são demais. Estamos juntos para, até, mostrar problemas, mas para criar alternativas. Parabéns @utechii e colegas.