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.sites.action;
016    
017    import com.liferay.portal.kernel.util.Constants;
018    import com.liferay.portal.kernel.util.ParamUtil;
019    import com.liferay.portal.model.Group;
020    import com.liferay.portal.model.Layout;
021    import com.liferay.portal.model.LayoutTypePortlet;
022    import com.liferay.portal.model.MembershipRequest;
023    import com.liferay.portal.model.PortletPreferencesIds;
024    import com.liferay.portal.model.Team;
025    import com.liferay.portal.service.GroupLocalServiceUtil;
026    import com.liferay.portal.service.LayoutServiceUtil;
027    import com.liferay.portal.service.MembershipRequestLocalServiceUtil;
028    import com.liferay.portal.service.PortletPreferencesLocalServiceUtil;
029    import com.liferay.portal.service.TeamLocalServiceUtil;
030    import com.liferay.portal.theme.ThemeDisplay;
031    import com.liferay.portal.util.PortalUtil;
032    import com.liferay.portal.util.PortletKeys;
033    import com.liferay.portal.util.WebKeys;
034    import com.liferay.portlet.PortletPreferencesFactoryUtil;
035    import com.liferay.portlet.sites.util.SitesUtil;
036    
037    import java.util.List;
038    
039    import javax.portlet.PortletPreferences;
040    import javax.portlet.PortletRequest;
041    
042    import javax.servlet.http.HttpServletRequest;
043    
044    /**
045     * @author Brian Wing Shun Chan
046     */
047    public class ActionUtil
048            extends com.liferay.portlet.rolesadmin.action.ActionUtil {
049    
050            public static void copyPreferences(
051                            HttpServletRequest request, Layout targetLayout,
052                            Layout sourceLayout)
053                    throws Exception {
054    
055                    ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
056                            WebKeys.THEME_DISPLAY);
057    
058                    LayoutTypePortlet sourceLayoutTypePortlet =
059                            (LayoutTypePortlet)sourceLayout.getLayoutType();
060    
061                    List<String> sourcePortletIds = sourceLayoutTypePortlet.getPortletIds();
062    
063                    for (String sourcePortletId : sourcePortletIds) {
064    
065                            // Copy preference
066    
067                            PortletPreferencesIds portletPreferencesIds =
068                                    PortletPreferencesFactoryUtil.getPortletPreferencesIds(
069                                            request, targetLayout, sourcePortletId);
070    
071                            PortletPreferencesLocalServiceUtil.getPreferences(
072                                    portletPreferencesIds);
073    
074                            PortletPreferencesIds sourcePortletPreferencesIds =
075                                    PortletPreferencesFactoryUtil.getPortletPreferencesIds(
076                                            request, sourceLayout, sourcePortletId);
077    
078                            PortletPreferences sourcePreferences =
079                                    PortletPreferencesLocalServiceUtil.getPreferences(
080                                            sourcePortletPreferencesIds);
081    
082                            PortletPreferencesLocalServiceUtil.updatePreferences(
083                                    portletPreferencesIds.getOwnerId(),
084                                    portletPreferencesIds.getOwnerType(),
085                                    portletPreferencesIds.getPlid(),
086                                    portletPreferencesIds.getPortletId(), sourcePreferences);
087    
088                            // Copy portlet setup
089    
090                            PortletPreferences targetPreferences =
091                                    PortletPreferencesLocalServiceUtil.getPreferences(
092                                            themeDisplay.getCompanyId(),
093                                            PortletKeys.PREFS_OWNER_ID_DEFAULT,
094                                            PortletKeys.PREFS_OWNER_TYPE_LAYOUT, targetLayout.getPlid(),
095                                            sourcePortletId);
096    
097                            sourcePreferences =
098                                    PortletPreferencesLocalServiceUtil.getPreferences(
099                                            themeDisplay.getCompanyId(),
100                                            PortletKeys.PREFS_OWNER_ID_DEFAULT,
101                                            PortletKeys.PREFS_OWNER_TYPE_LAYOUT, sourceLayout.getPlid(),
102                                            sourcePortletId);
103    
104                            PortletPreferencesLocalServiceUtil.updatePreferences(
105                                    PortletKeys.PREFS_OWNER_ID_DEFAULT,
106                                    PortletKeys.PREFS_OWNER_TYPE_LAYOUT, targetLayout.getPlid(),
107                                    sourcePortletId, sourcePreferences);
108    
109                            SitesUtil.updateLayoutScopes(
110                                    themeDisplay.getUserId(), sourceLayout, targetLayout,
111                                    sourcePreferences, targetPreferences, sourcePortletId,
112                                    themeDisplay.getLanguageId());
113                    }
114            }
115    
116            public static void copyPreferences(
117                            PortletRequest portletRequest, Layout targetLayout,
118                            Layout sourceLayout)
119                    throws Exception {
120    
121                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
122                            portletRequest);
123    
124                    copyPreferences(request, targetLayout, sourceLayout);
125            }
126    
127            public static Group getGroup(HttpServletRequest request) throws Exception {
128                    ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
129                            WebKeys.THEME_DISPLAY);
130    
131                    String cmd = ParamUtil.getString(request, Constants.CMD);
132    
133                    long groupId = ParamUtil.getLong(request, "groupId");
134    
135                    Group group = null;
136    
137                    if (groupId > 0) {
138                            group = GroupLocalServiceUtil.getGroup(groupId);
139                    }
140                    else if (!cmd.equals(Constants.ADD)) {
141                            group = themeDisplay.getSiteGroup();
142                    }
143    
144                    request.setAttribute(WebKeys.GROUP, group);
145    
146                    return group;
147            }
148    
149            public static Group getGroup(PortletRequest portletRequest)
150                    throws Exception {
151    
152                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
153                            portletRequest);
154    
155                    return getGroup(request);
156            }
157    
158            public static void getMembershipRequest(HttpServletRequest request)
159                    throws Exception {
160    
161                    long membershipRequestId = ParamUtil.getLong(
162                            request, "membershipRequestId");
163    
164                    MembershipRequest membershipRequest = null;
165    
166                    if (membershipRequestId > 0) {
167                            membershipRequest =
168                                    MembershipRequestLocalServiceUtil.getMembershipRequest(
169                                            membershipRequestId);
170                    }
171    
172                    request.setAttribute(WebKeys.MEMBERSHIP_REQUEST, membershipRequest);
173            }
174    
175            public static void getMembershipRequest(PortletRequest portletRequest)
176                    throws Exception {
177    
178                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
179                            portletRequest);
180    
181                    getMembershipRequest(request);
182            }
183    
184            public static void getTeam(HttpServletRequest request) throws Exception {
185                    long teamId = ParamUtil.getLong(request, "teamId");
186    
187                    Team team = null;
188    
189                    if (teamId > 0) {
190                            team = TeamLocalServiceUtil.getTeam(teamId);
191                    }
192    
193                    request.setAttribute(WebKeys.TEAM, team);
194            }
195    
196            public static void getTeam(PortletRequest portletRequest) throws Exception {
197                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
198                            portletRequest);
199    
200                    getTeam(request);
201            }
202    
203            public static void removePortletIds(
204                            HttpServletRequest request, Layout layout)
205                    throws Exception {
206    
207                    ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
208                            WebKeys.THEME_DISPLAY);
209    
210                    LayoutTypePortlet layoutTypePortlet =
211                            (LayoutTypePortlet)layout.getLayoutType();
212    
213                    List<String> portletIds = layoutTypePortlet.getPortletIds();
214    
215                    for (String portletId : portletIds) {
216                            layoutTypePortlet.removePortletId(
217                                    themeDisplay.getUserId(), portletId);
218                    }
219    
220                    LayoutServiceUtil.updateLayout(
221                            layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(),
222                            layout.getTypeSettings());
223            }
224    
225            public static void removePortletIds(
226                            PortletRequest portletRequest, Layout layout)
227                    throws Exception {
228    
229                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
230                            portletRequest);
231    
232                    removePortletIds(request, layout);
233            }
234    
235    }