/** * 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; }