/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.message.boards.web.internal.portlet.action; import com.liferay.message.boards.kernel.exception.NoSuchMessageException; import com.liferay.message.boards.kernel.model.MBCategory; import com.liferay.message.boards.kernel.model.MBMessage; import com.liferay.message.boards.kernel.model.MBMessageDisplay; import com.liferay.message.boards.kernel.model.MBThread; import com.liferay.message.boards.kernel.service.MBBanLocalServiceUtil; import com.liferay.message.boards.kernel.service.MBCategoryServiceUtil; import com.liferay.message.boards.kernel.service.MBMessageServiceUtil; import com.liferay.message.boards.kernel.service.MBThreadLocalServiceUtil; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.security.auth.PrincipalException; import com.liferay.portal.kernel.security.permission.ActionKeys; import com.liferay.portal.kernel.security.permission.PermissionChecker; import com.liferay.portal.kernel.theme.ThemeDisplay; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.portal.kernel.util.WebKeys; import com.liferay.portal.kernel.workflow.WorkflowConstants; import com.liferay.portlet.messageboards.service.permission.MBPermission; import javax.portlet.PortletRequest; import javax.servlet.http.HttpServletRequest; /** * @author Brian Wing Shun Chan */ public class ActionUtil { public static MBCategory getCategory(HttpServletRequest request) throws Exception { ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute( WebKeys.THEME_DISPLAY); String mvcRenderCommandName = ParamUtil.getString( request, "mvcRenderCommandName"); PermissionChecker permissionChecker = themeDisplay.getPermissionChecker(); if (mvcRenderCommandName.equals("/message_boards/view_banned_users") && !MBPermission.contains( permissionChecker, themeDisplay.getScopeGroupId(), ActionKeys.BAN_USER)) { throw new PrincipalException.MustHavePermission( permissionChecker, ActionKeys.BAN_USER); } MBBanLocalServiceUtil.checkBan( themeDisplay.getScopeGroupId(), themeDisplay.getUserId()); long categoryId = ParamUtil.getLong(request, "mbCategoryId"); MBCategory category = null; if (categoryId > 0) { category = MBCategoryServiceUtil.getCategory(categoryId); } else { MBPermission.check( permissionChecker, themeDisplay.getScopeGroupId(), ActionKeys.VIEW); } return category; } public static MBCategory getCategory(PortletRequest portletRequest) throws Exception { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getCategory(request); } public static MBMessage getMessage(HttpServletRequest request) throws Exception { long messageId = ParamUtil.getLong(request, "messageId"); MBMessage message = null; if (messageId > 0) { message = MBMessageServiceUtil.getMessage(messageId); } if ((message != null) && message.isInTrash()) { throw new NoSuchMessageException("{messageId=" + messageId + "}"); } return message; } public static MBMessage getMessage(PortletRequest portletRequest) throws Exception { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getMessage(request); } public static MBMessageDisplay getMessageDisplay(HttpServletRequest request) throws PortalException { long messageId = ParamUtil.getLong(request, "messageId"); ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute( WebKeys.THEME_DISPLAY); PermissionChecker permissionChecker = themeDisplay.getPermissionChecker(); int status = WorkflowConstants.STATUS_APPROVED; if (permissionChecker.isContentReviewer( themeDisplay.getUserId(), themeDisplay.getScopeGroupId())) { status = WorkflowConstants.STATUS_ANY; } MBMessageDisplay messageDisplay = MBMessageServiceUtil.getMessageDisplay(messageId, status); if (messageDisplay != null) { MBMessage message = messageDisplay.getMessage(); if ((message != null) && message.isInTrash()) { throw new NoSuchMessageException( "{messageId=" + messageId + "}"); } } return messageDisplay; } public static MBMessageDisplay getMessageDisplay( PortletRequest portletRequest) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getMessageDisplay(request); } public static MBMessage getThreadMessage(HttpServletRequest request) throws Exception { long threadId = ParamUtil.getLong(request, "threadId"); MBMessage message = null; if (threadId > 0) { MBThread thread = MBThreadLocalServiceUtil.getThread(threadId); message = MBMessageServiceUtil.getMessage( thread.getRootMessageId()); } if ((message != null) && message.isInTrash()) { throw new NoSuchMessageException("{threadId=" + threadId + "}"); } return message; } public static MBMessage getThreadMessage(PortletRequest portletRequest) throws Exception { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getThreadMessage(request); } }