Esempio n. 1
0
 /**
  * Constrói os menus de uma página com base no recurso ativo e no acl
  * @param StdClass $usuario
  * @param Recurso  $recurso
  * @param Core_Acl $acl
  * 
  * return array
  */
 public static function getMenus($usuario, Recurso $recurso, Core_Acl $acl)
 {
     $retorno = array();
     // Verificar permissao de cada botao em $recurso->filhos
     foreach ($recurso->filhos as $botao) {
         $hasBotao = AclFactory::checaPermissao($acl, $usuario, $botao);
         // verifica se no fim das contas o botão foi inserido
         if ($hasBotao) {
             // botão deve ser inserido
             // verifica se o botao em questao tem um dialog
             if ($botao->hasDialog()) {
                 $botao = $botao->dialog;
             }
             // verifica se o botao em questao é de um dialog
             // caso positivo, adicioná-lo às dependencias
             if ($botao->id_recurso_tipo == Recurso::TIPO_DIALOG && $botao->hasUrl()) {
                 $recurso->addDependencia($botao);
             }
             // verifica se o recurso em questão é de uma aba
             // caso positivo, adicioná-la à lista de abas
             if ($botao->id_recurso_tipo == Recurso::TIPO_ABA) {
                 $recurso->addAba($botao);
                 // verifica se a aba possui dependencias
                 if (is_array($botao->filhos)) {
                     foreach ($botao->filhos as $dependencia) {
                         if ($dependencia->hasUrl() && ($dependencia->id_recurso_tipo != Recurso::TIPO_PAGINA && $dependencia->id_recurso_tipo != Recurso::TIPO_POPUP) && AclFactory::checaPermissao($acl, $usuario, $dependencia)) {
                             $recurso->addDependencia($dependencia);
                         }
                     }
                 }
             }
             if ($botao->hasImage() && ($botao->hasUrl() || $botao->hasDomId())) {
                 $retorno[] = $botao;
             }
         }
     }
     // ao final de todas as verificacoes, retorna a array de recursos
     return $retorno;
 }