1
14
15 package com.liferay.portlet.communities.action;
16
17 import com.liferay.portal.NoSuchGroupException;
18 import com.liferay.portal.PortalException;
19 import com.liferay.portal.kernel.log.Log;
20 import com.liferay.portal.kernel.log.LogFactoryUtil;
21 import com.liferay.portal.kernel.servlet.SessionErrors;
22 import com.liferay.portal.kernel.util.ContentTypes;
23 import com.liferay.portal.kernel.util.ParamUtil;
24 import com.liferay.portal.kernel.util.Time;
25 import com.liferay.portal.security.auth.PrincipalException;
26 import com.liferay.portal.service.LayoutServiceUtil;
27 import com.liferay.portal.struts.ActionConstants;
28 import com.liferay.portal.struts.PortletAction;
29 import com.liferay.portal.theme.ThemeDisplay;
30 import com.liferay.portal.util.PortalUtil;
31 import com.liferay.portal.util.WebKeys;
32 import com.liferay.util.servlet.ServletResponseUtil;
33
34 import java.io.File;
35 import java.io.FileInputStream;
36
37 import java.util.Calendar;
38 import java.util.Date;
39
40 import javax.portlet.ActionRequest;
41 import javax.portlet.ActionResponse;
42 import javax.portlet.PortletConfig;
43 import javax.portlet.RenderRequest;
44 import javax.portlet.RenderResponse;
45
46 import javax.servlet.http.HttpServletRequest;
47 import javax.servlet.http.HttpServletResponse;
48
49 import org.apache.struts.action.ActionForm;
50 import org.apache.struts.action.ActionForward;
51 import org.apache.struts.action.ActionMapping;
52
53
59 public class ExportPagesAction extends PortletAction {
60
61 public void processAction(
62 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
63 ActionRequest actionRequest, ActionResponse actionResponse)
64 throws Exception {
65
66 try {
67 ThemeDisplay themeDisplay =
68 (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
69
70 long groupId = ParamUtil.getLong(actionRequest, "groupId");
71 boolean privateLayout = ParamUtil.getBoolean(
72 actionRequest, "privateLayout");
73 String fileName = ParamUtil.getString(
74 actionRequest, "exportFileName");
75 String range = ParamUtil.getString(actionRequest, "range");
76 Date startDate = null;
77 Date endDate = null;
78
79 if (range.equals("dateRange")) {
80 int startDateMonth = ParamUtil.getInteger(
81 actionRequest, "startDateMonth");
82 int startDateDay = ParamUtil.getInteger(
83 actionRequest, "startDateDay");
84 int startDateYear = ParamUtil.getInteger(
85 actionRequest, "startDateYear");
86 int startDateHour = ParamUtil.getInteger(
87 actionRequest, "startDateHour");
88 int startDateMinute = ParamUtil.getInteger(
89 actionRequest, "startDateMinute");
90 int startDateAmPm = ParamUtil.getInteger(
91 actionRequest, "startDateAmPm");
92
93 if (startDateAmPm == Calendar.PM) {
94 startDateHour += 12;
95 }
96
97 startDate = PortalUtil.getDate(
98 startDateMonth, startDateDay, startDateYear, startDateHour,
99 startDateMinute, themeDisplay.getTimeZone(),
100 new PortalException());
101
102 int endDateMonth = ParamUtil.getInteger(
103 actionRequest, "endDateMonth");
104 int endDateDay = ParamUtil.getInteger(
105 actionRequest, "endDateDay");
106 int endDateYear = ParamUtil.getInteger(
107 actionRequest, "endDateYear");
108 int endDateHour = ParamUtil.getInteger(
109 actionRequest, "endDateHour");
110 int endDateMinute = ParamUtil.getInteger(
111 actionRequest, "endDateMinute");
112 int endDateAmPm = ParamUtil.getInteger(
113 actionRequest, "endDateAmPm");
114
115 if (endDateAmPm == Calendar.PM) {
116 endDateHour += 12;
117 }
118
119 endDate = PortalUtil.getDate(
120 endDateMonth, endDateDay, endDateYear, endDateHour,
121 endDateMinute, themeDisplay.getTimeZone(),
122 new PortalException());
123 }
124 else if (range.equals("last")) {
125 int rangeLast = ParamUtil.getInteger(actionRequest, "last");
126
127 Date now = new Date();
128
129 startDate = new Date(now.getTime() - (rangeLast * Time.HOUR));
130
131 endDate = now;
132 }
133
134 File file = LayoutServiceUtil.exportLayoutsAsFile(
135 groupId, privateLayout, null, actionRequest.getParameterMap(),
136 startDate, endDate);
137
138 HttpServletRequest request = PortalUtil.getHttpServletRequest(
139 actionRequest);
140 HttpServletResponse response = PortalUtil.getHttpServletResponse(
141 actionResponse);
142
143 ServletResponseUtil.sendFile(
144 request, response, fileName, new FileInputStream(file),
145 ContentTypes.APPLICATION_ZIP);
146
147 setForward(actionRequest, ActionConstants.COMMON_NULL);
148 }
149 catch (Exception e) {
150 _log.error(e, e);
151
152 SessionErrors.add(actionRequest, e.getClass().getName());
153
154 String pagesRedirect = ParamUtil.getString(
155 actionRequest, "pagesRedirect");
156
157 sendRedirect(actionRequest, actionResponse, pagesRedirect);
158 }
159 }
160
161 public ActionForward render(
162 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
163 RenderRequest renderRequest, RenderResponse renderResponse)
164 throws Exception {
165
166 try {
167 ActionUtil.getGroup(renderRequest);
168 }
169 catch (Exception e) {
170 if (e instanceof NoSuchGroupException ||
171 e instanceof PrincipalException) {
172
173 SessionErrors.add(renderRequest, e.getClass().getName());
174
175 return mapping.findForward("portlet.communities.error");
176 }
177 else {
178 throw e;
179 }
180 }
181
182 return mapping.findForward(
183 getForward(renderRequest, "portlet.communities.export_pages"));
184 }
185
186 private static Log _log = LogFactoryUtil.getLog(ExportPagesAction.class);
187
188 }