/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This file is part of Liferay Social Office. Liferay Social Office is free * software: you can redistribute it and/or modify it under the terms of the GNU * Affero General Public License as published by the Free Software Foundation, * either version 3 of the License, or (at your option) any later version. * * Liferay Social Office 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 Affero General Public License * for more details. * * You should have received a copy of the GNU General Public License along with * Liferay Social Office. If not, see http://www.gnu.org/licenses/agpl-3.0.html. */ package com.liferay.so.hook.service.impl; import com.liferay.announcements.kernel.model.AnnouncementsEntry; import com.liferay.announcements.kernel.service.AnnouncementsEntryLocalServiceUtil; import com.liferay.announcements.kernel.service.AnnouncementsEntryService; import com.liferay.announcements.kernel.service.AnnouncementsEntryServiceWrapper; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.portlet.PortletProvider; import com.liferay.portal.kernel.portlet.PortletProviderUtil; 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.security.permission.PermissionThreadLocal; import com.liferay.portal.kernel.service.permission.PortletPermissionUtil; import com.liferay.portal.kernel.util.PortalUtil; /** * @author Jonathan Lee */ public class SOAnnouncementsEntryServiceImpl extends AnnouncementsEntryServiceWrapper { public SOAnnouncementsEntryServiceImpl( AnnouncementsEntryService announcementsEntryService) { super(announcementsEntryService); } @Override public AnnouncementsEntry addEntry( long plid, long classNameId, long classPK, String title, String content, String url, String type, int displayDateMonth, int displayDateDay, int displayDateYear, int displayDateHour, int displayDateMinute, boolean displayImmediately, int expirationDateMonth, int expirationDateDay, int expirationDateYear, int expirationDateHour, int expirationDateMinute, int priority, boolean alert) throws PortalException { AnnouncementsEntry announcementEntry = null; try { announcementEntry = super.addEntry( plid, classNameId, classPK, title, content, url, type, displayDateMonth, displayDateDay, displayDateYear, displayDateHour, displayDateMinute, displayImmediately, expirationDateMonth, expirationDateDay, expirationDateYear, expirationDateHour, expirationDateMinute, priority, alert); } catch (PrincipalException pe) { String className = PortalUtil.getClassName(classNameId); if (className.equals(Group.class.getName())) { PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker(); String portletId = PortletProviderUtil.getPortletId( AnnouncementsEntry.class.getName(), PortletProvider.Action.EDIT); PortletPermissionUtil.check( permissionChecker, plid, portletId, ActionKeys.ADD_ENTRY); announcementEntry = AnnouncementsEntryLocalServiceUtil.addEntry( permissionChecker.getUserId(), classNameId, classPK, title, content, url, type, displayDateMonth, displayDateDay, displayDateYear, displayDateHour, displayDateMinute, displayImmediately, expirationDateMonth, expirationDateDay, expirationDateYear, expirationDateHour, expirationDateMinute, priority, alert); } else { throw pe; } } return announcementEntry; } }