001    /**
002     * Copyright (c) 2000-2012 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.GetterUtil;
019    import com.liferay.portal.kernel.util.ParamUtil;
020    import com.liferay.portal.kernel.util.Validator;
021    import com.liferay.portal.model.Group;
022    import com.liferay.portal.model.Layout;
023    import com.liferay.portal.model.LayoutTypePortlet;
024    import com.liferay.portal.model.MembershipRequest;
025    import com.liferay.portal.model.PortletPreferencesIds;
026    import com.liferay.portal.model.Team;
027    import com.liferay.portal.service.GroupLocalServiceUtil;
028    import com.liferay.portal.service.LayoutLocalServiceUtil;
029    import com.liferay.portal.service.MembershipRequestLocalServiceUtil;
030    import com.liferay.portal.service.PortletPreferencesLocalServiceUtil;
031    import com.liferay.portal.service.TeamLocalServiceUtil;
032    import com.liferay.portal.theme.ThemeDisplay;
033    import com.liferay.portal.util.PortalUtil;
034    import com.liferay.portal.util.PortletKeys;
035    import com.liferay.portal.util.WebKeys;
036    import com.liferay.portlet.PortletPreferencesFactoryUtil;
037    
038    import java.util.List;
039    
040    import javax.portlet.PortletPreferences;
041    import javax.portlet.PortletRequest;
042    
043    import javax.servlet.http.HttpServletRequest;
044    
045    /**
046     * @author Brian Wing Shun Chan
047     */
048    public class ActionUtil
049            extends com.liferay.portlet.rolesadmin.action.ActionUtil {
050    
051            public static void copyPreferences(
052                            HttpServletRequest request, Layout targetLayout,
053                            Layout sourceLayout)
054                    throws Exception {
055    
056                    long companyId = targetLayout.getCompanyId();
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                                            companyId, PortletKeys.PREFS_OWNER_ID_DEFAULT,
093                                            PortletKeys.PREFS_OWNER_TYPE_LAYOUT, targetLayout.getPlid(),
094                                            sourcePortletId);
095    
096                            sourcePreferences =
097                                    PortletPreferencesLocalServiceUtil.getPreferences(
098                                            companyId, PortletKeys.PREFS_OWNER_ID_DEFAULT,
099                                            PortletKeys.PREFS_OWNER_TYPE_LAYOUT, sourceLayout.getPlid(),
100                                            sourcePortletId);
101    
102                            PortletPreferencesLocalServiceUtil.updatePreferences(
103                                    PortletKeys.PREFS_OWNER_ID_DEFAULT,
104                                    PortletKeys.PREFS_OWNER_TYPE_LAYOUT, targetLayout.getPlid(),
105                                    sourcePortletId, sourcePreferences);
106    
107                            String scopeType = GetterUtil.getString(
108                                    sourcePreferences.getValue("lfrScopeType", null));
109    
110                            if (Validator.isNotNull(scopeType) && scopeType.equals("layout")) {
111                                    ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
112                                            WebKeys.THEME_DISPLAY);
113    
114                                    Layout targetScopeLayout =
115                                            LayoutLocalServiceUtil.getLayoutByUuidAndGroupId(
116                                                    targetLayout.getUuid(), targetLayout.getGroupId());
117    
118                                    String languageId = themeDisplay.getLanguageId();
119    
120                                    if (!targetScopeLayout.hasScopeGroup()) {
121                                            GroupLocalServiceUtil.addGroup(
122                                                    themeDisplay.getUserId(), Layout.class.getName(),
123                                                    targetLayout.getPlid(),
124                                                    targetLayout.getName(languageId), null, 0, null, false,
125                                                    true, null);
126                                    }
127    
128                                    String portletTitle = PortalUtil.getPortletTitle(
129                                            sourcePortletId, languageId);
130    
131                                    String newPortletTitle = PortalUtil.getNewPortletTitle(
132                                            portletTitle, String.valueOf(sourceLayout.getLayoutId()),
133                                            targetLayout.getName(languageId));
134    
135                                    targetPreferences.setValue(
136                                            "groupId", String.valueOf(targetLayout.getGroupId()));
137                                    targetPreferences.setValue("lfrScopeType", "layout");
138                                    targetPreferences.setValue(
139                                            "lfrScopeLayoutUuid", targetLayout.getUuid());
140                                    targetPreferences.setValue(
141                                            "portletSetupTitle_" + languageId, newPortletTitle);
142                                    targetPreferences.setValue(
143                                            "portletSetupUseCustomTitle", Boolean.TRUE.toString());
144    
145                                    targetPreferences.store();
146                            }
147                    }
148            }
149    
150            public static void copyPreferences(
151                            PortletRequest portletRequest, Layout targetLayout,
152                            Layout sourceLayout)
153                    throws Exception {
154    
155                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
156                            portletRequest);
157    
158                    copyPreferences(request, targetLayout, sourceLayout);
159            }
160    
161            public static Group getGroup(HttpServletRequest request) throws Exception {
162                    ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
163                            WebKeys.THEME_DISPLAY);
164    
165                    String cmd = ParamUtil.getString(request, Constants.CMD);
166    
167                    long groupId = ParamUtil.getLong(request, "groupId");
168    
169                    Group group = null;
170    
171                    if (groupId > 0) {
172                            group = GroupLocalServiceUtil.getGroup(groupId);
173                    }
174                    else if (!cmd.equals(Constants.ADD)) {
175                            group = themeDisplay.getScopeGroup();
176                    }
177    
178                    request.setAttribute(WebKeys.GROUP, group);
179    
180                    return group;
181            }
182    
183            public static Group getGroup(PortletRequest portletRequest)
184                    throws Exception {
185    
186                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
187                            portletRequest);
188    
189                    return getGroup(request);
190            }
191    
192            public static void getMembershipRequest(HttpServletRequest request)
193                    throws Exception {
194    
195                    long membershipRequestId = ParamUtil.getLong(
196                            request, "membershipRequestId");
197    
198                    MembershipRequest membershipRequest = null;
199    
200                    if (membershipRequestId > 0) {
201                            membershipRequest =
202                                    MembershipRequestLocalServiceUtil.getMembershipRequest(
203                                            membershipRequestId);
204                    }
205    
206                    request.setAttribute(WebKeys.MEMBERSHIP_REQUEST, membershipRequest);
207            }
208    
209            public static void getMembershipRequest(PortletRequest portletRequest)
210                    throws Exception {
211    
212                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
213                            portletRequest);
214    
215                    getMembershipRequest(request);
216            }
217    
218            public static void getTeam(HttpServletRequest request)
219                    throws Exception {
220    
221                    long teamId = ParamUtil.getLong(request, "teamId");
222    
223                    Team team = null;
224    
225                    if (teamId > 0) {
226                            team = TeamLocalServiceUtil.getTeam(teamId);
227                    }
228    
229                    request.setAttribute(WebKeys.TEAM, team);
230            }
231    
232            public static void getTeam(PortletRequest portletRequest)
233                    throws Exception {
234    
235                    HttpServletRequest request = PortalUtil.getHttpServletRequest(
236                            portletRequest);
237    
238                    getTeam(request);
239            }
240    
241    }