/** * Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados. * * e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro * dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do * Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão. * * Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA; * sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. * Veja a Licença Pública Geral Menor GNU para maiores detalhes. */ package br.gov.camara.edemocracia.portlets.comunidades.portlet; import java.io.IOException; import java.util.List; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletException; import javax.portlet.PortletURL; import javax.portlet.ProcessAction; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.servlet.SessionMessages; import com.liferay.portal.kernel.util.WebKeys; import com.liferay.portal.model.Group; import com.liferay.portal.model.GroupConstants; import com.liferay.portal.model.Layout; import com.liferay.portal.model.User; import com.liferay.portal.service.GroupLocalServiceUtil; import com.liferay.portal.theme.ThemeDisplay; import com.liferay.portal.util.PortalUtil; import com.liferay.util.bridges.mvc.MVCPortlet; public class TopoComunidade extends MVCPortlet { private static Log _log = LogFactoryUtil.getLog(TopoComunidade.class); @Override public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException { ThemeDisplay td = (ThemeDisplay) renderRequest .getAttribute(WebKeys.THEME_DISPLAY); long groupId = td.getScopeGroup().getGroupId(); String urlImgCom = null; Group grp = td.getScopeGroup(); String tituloCom = grp.getName(); String descCom = grp.getDescription(); try { urlImgCom = CommunityIconFinder.findUrl(td, groupId); boolean podeAssinar; User user = td.getUser(); if (grp.isRegularSite()) { if (user.isDefaultUser()) { if (grp.getType() == GroupConstants.TYPE_SITE_OPEN) podeAssinar = true; else podeAssinar = false; } else { // Se não estiver no grupo, mostra a mensagem if (!GroupLocalServiceUtil.hasUserGroup(user.getUserId(), groupId)) { if (grp.getType() == GroupConstants.TYPE_SITE_OPEN) podeAssinar = true; else podeAssinar = false; } else { podeAssinar = false; } } } else { podeAssinar = false; } // URL de inscricao if (podeAssinar) { if (user.isDefaultUser()) renderRequest.setAttribute("urlInscricao", td.getURLSignIn()); else { PortletURL url = renderResponse.createActionURL(); url.setParameter(ActionRequest.ACTION_NAME, "entraComunidade"); renderRequest.setAttribute("urlInscricao", url.toString()); } } else { renderRequest.setAttribute("urlInscricao", ""); } String urlInicial = null; // URL de página inicial da comunidade List<Layout> layouts = td.getLayouts(); if (layouts.size() > 0) urlInicial = PortalUtil.getLayoutFullURL(layouts.get(0), td); renderRequest.setAttribute("titulo", tituloCom); renderRequest.setAttribute("descricao", descCom); renderRequest.setAttribute("imagem", urlImgCom); renderRequest.setAttribute("podeAssinar", podeAssinar); renderRequest.setAttribute("urlInicial", urlInicial); } catch (PortalException e) { _log.error("Erro. Avalie o Log", e); renderRequest.setAttribute("titulo", "--Erro--"); renderRequest.setAttribute("descricao", "--Erro--"); renderRequest.setAttribute("imagem", ""); renderRequest.setAttribute("podeAssinar", false); renderRequest.setAttribute("urlInscricao", ""); renderRequest.setAttribute("urlInicial", null); } catch (SystemException e) { _log.error("Erro. Avalie o Log", e); renderRequest.setAttribute("titulo", "--Erro--"); renderRequest.setAttribute("descricao", "--Erro--"); renderRequest.setAttribute("imagem", ""); renderRequest.setAttribute("podeAssinar", false); renderRequest.setAttribute("urlInscricao", ""); renderRequest.setAttribute("urlInicial", null); } super.doView(renderRequest, renderResponse); } @ProcessAction(name = "entraComunidade") public void entraComunidade(ActionRequest req, ActionResponse rsp) { ThemeDisplay themeDisplay = (ThemeDisplay) req.getAttribute(WebKeys.THEME_DISPLAY); try { User userLog = themeDisplay.getUser(); if (userLog.isDefaultUser()) { rsp.sendRedirect(themeDisplay.getURLSignIn()); return; } // Verifica se o usuário tem permissão para entrar no grupo Group group = themeDisplay.getScopeGroup(); if (!GroupLocalServiceUtil.hasUserGroup(userLog.getUserId(), group.getGroupId())) { if (group.getType() == GroupConstants.TYPE_SITE_OPEN) { long[] groupIds = { themeDisplay.getScopeGroupId() }; GroupLocalServiceUtil.addUserGroups(userLog.getUserId(), groupIds); SessionMessages.add(req, "membro-usuario"); } } } catch (SystemException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }