001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.announcements.service.impl;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.model.Group;
020    import com.liferay.portal.model.Organization;
021    import com.liferay.portal.model.Role;
022    import com.liferay.portal.model.UserGroup;
023    import com.liferay.portal.security.auth.PrincipalException;
024    import com.liferay.portal.security.permission.ActionKeys;
025    import com.liferay.portal.security.permission.PermissionChecker;
026    import com.liferay.portal.service.permission.GroupPermissionUtil;
027    import com.liferay.portal.service.permission.OrganizationPermissionUtil;
028    import com.liferay.portal.service.permission.RolePermissionUtil;
029    import com.liferay.portal.service.permission.UserGroupPermissionUtil;
030    import com.liferay.portal.util.PortalUtil;
031    import com.liferay.portal.util.PortletKeys;
032    import com.liferay.portlet.announcements.model.AnnouncementsEntry;
033    import com.liferay.portlet.announcements.service.base.AnnouncementsEntryServiceBaseImpl;
034    import com.liferay.portlet.announcements.service.permission.AnnouncementsEntryPermission;
035    
036    /**
037     * @author Brian Wing Shun Chan
038     */
039    public class AnnouncementsEntryServiceImpl
040            extends AnnouncementsEntryServiceBaseImpl {
041    
042            public AnnouncementsEntry addEntry(
043                            long plid, long classNameId, long classPK, String title,
044                            String content, String url, String type, int displayDateMonth,
045                            int displayDateDay, int displayDateYear, int displayDateHour,
046                            int displayDateMinute, int expirationDateMonth,
047                            int expirationDateDay, int expirationDateYear,
048                            int expirationDateHour, int expirationDateMinute, int priority,
049                            boolean alert)
050                    throws PortalException, SystemException {
051    
052                    PermissionChecker permissionChecker = getPermissionChecker();
053    
054                    if (alert) {
055                            AnnouncementsEntryPermission.check(
056                                    permissionChecker, plid, PortletKeys.ALERTS,
057                                    ActionKeys.ADD_ENTRY);
058                    }
059                    else {
060                            AnnouncementsEntryPermission.check(
061                                    permissionChecker, plid, PortletKeys.ANNOUNCEMENTS,
062                                    ActionKeys.ADD_ENTRY);
063                    }
064    
065                    if (classNameId == 0) {
066                            if (!permissionChecker.isOmniadmin()) {
067                                    throw new PrincipalException();
068                            }
069                    }
070                    else {
071                            String className = PortalUtil.getClassName(classNameId);
072    
073                            if (className.equals(Group.class.getName()) &&
074                                    !GroupPermissionUtil.contains(
075                                            permissionChecker, classPK,
076                                            ActionKeys.MANAGE_ANNOUNCEMENTS)) {
077    
078                                    throw new PrincipalException();
079                            }
080    
081                            if (className.equals(Organization.class.getName()) &&
082                                    !OrganizationPermissionUtil.contains(
083                                            permissionChecker, classPK,
084                                            ActionKeys.MANAGE_ANNOUNCEMENTS)) {
085    
086                                    throw new PrincipalException();
087                            }
088    
089                            if (className.equals(Role.class.getName()) &&
090                                    !RolePermissionUtil.contains(
091                                            permissionChecker, classPK,
092                                            ActionKeys.MANAGE_ANNOUNCEMENTS)) {
093    
094                                    throw new PrincipalException();
095                            }
096    
097                            if (className.equals(UserGroup.class.getName()) &&
098                                    !UserGroupPermissionUtil.contains(
099                                            permissionChecker, classPK,
100                                            ActionKeys.MANAGE_ANNOUNCEMENTS)) {
101    
102                                    throw new PrincipalException();
103                            }
104                    }
105    
106                    return announcementsEntryLocalService.addEntry(
107                            getUserId(), classNameId, classPK, title, content, url, type,
108                            displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
109                            displayDateMinute, expirationDateMonth, expirationDateDay,
110                            expirationDateYear, expirationDateHour, expirationDateMinute,
111                            priority, alert);
112            }
113    
114            public void deleteEntry(long entryId)
115                    throws PortalException, SystemException {
116    
117                    AnnouncementsEntryPermission.check(
118                            getPermissionChecker(), entryId, ActionKeys.DELETE);
119    
120                    announcementsEntryLocalService.deleteEntry(entryId);
121            }
122    
123            public AnnouncementsEntry getEntry(long entryId)
124                    throws PortalException, SystemException {
125    
126                    AnnouncementsEntry entry = announcementsEntryLocalService.getEntry(
127                            entryId);
128    
129                    AnnouncementsEntryPermission.check(
130                            getPermissionChecker(), entry, ActionKeys.VIEW);
131    
132                    return entry;
133            }
134    
135            public AnnouncementsEntry updateEntry(
136                            long entryId, String title, String content, String url, String type,
137                            int displayDateMonth, int displayDateDay, int displayDateYear,
138                            int displayDateHour, int displayDateMinute, int expirationDateMonth,
139                            int expirationDateDay, int expirationDateYear,
140                            int expirationDateHour, int expirationDateMinute, int priority)
141                    throws PortalException, SystemException {
142    
143                    AnnouncementsEntryPermission.check(
144                            getPermissionChecker(), entryId, ActionKeys.UPDATE);
145    
146                    return announcementsEntryLocalService.updateEntry(
147                            getUserId(), entryId, title, content, url, type, displayDateMonth,
148                            displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
149                            expirationDateMonth, expirationDateDay, expirationDateYear,
150                            expirationDateHour, expirationDateMinute, priority);
151            }
152    
153    }