1
19
20 package com.liferay.portlet.communities.messaging;
21
22 import com.liferay.portal.kernel.json.JSONFactoryUtil;
23 import com.liferay.portal.kernel.log.Log;
24 import com.liferay.portal.kernel.log.LogFactoryUtil;
25 import com.liferay.portal.kernel.messaging.Message;
26 import com.liferay.portal.kernel.messaging.MessageListener;
27 import com.liferay.portal.kernel.util.MapUtil;
28 import com.liferay.portal.kernel.util.Time;
29 import com.liferay.portal.model.User;
30 import com.liferay.portal.security.auth.PrincipalThreadLocal;
31 import com.liferay.portal.security.permission.PermissionChecker;
32 import com.liferay.portal.security.permission.PermissionCheckerFactory;
33 import com.liferay.portal.security.permission.PermissionThreadLocal;
34 import com.liferay.portal.service.UserLocalServiceUtil;
35 import com.liferay.portlet.communities.util.StagingUtil;
36
37 import java.util.Date;
38 import java.util.Map;
39
40
47 public class LayoutsLocalPublisherMessageListener implements MessageListener {
48
49 public void receive(Message message) {
50 PermissionChecker permissionChecker = null;
51
52 try {
53 LayoutsLocalPublisherRequest publisherRequest =
54 (LayoutsLocalPublisherRequest)JSONFactoryUtil.deserialize(
55 (String)message.getPayload());
56
57 String command = publisherRequest.getCommand();
58
59 long userId = publisherRequest.getUserId();
60 long sourceGroupId = publisherRequest.getSourceGroupId();
61 long targetGroupId = publisherRequest.getTargetGroupId();
62 boolean privateLayout = publisherRequest.isPrivateLayout();
63 Map<Long, Boolean> layoutIdMap = publisherRequest.getLayoutIdMap();
64 Map<String, String[]> parameterMap =
65 publisherRequest.getParameterMap();
66 Date startDate = publisherRequest.getStartDate();
67 Date endDate = publisherRequest.getEndDate();
68
69 String range = MapUtil.getString(parameterMap, "range");
70
71 if (range.equals("last")) {
72 int last = MapUtil.getInteger(parameterMap, "last");
73
74 if (last > 0) {
75 Date scheduledFireTime =
76 publisherRequest.getScheduledFireTime();
77
78 startDate = new Date(
79 scheduledFireTime.getTime() - (last * Time.HOUR));
80
81 endDate = scheduledFireTime;
82 }
83 }
84
85 PrincipalThreadLocal.setName(userId);
86
87 User user = UserLocalServiceUtil.getUserById(userId);
88
89 permissionChecker = PermissionCheckerFactory.create(user, false);
90
91 PermissionThreadLocal.setPermissionChecker(permissionChecker);
92
93 if (command.equals(
94 LayoutsLocalPublisherRequest.COMMAND_ALL_PAGES)) {
95
96 StagingUtil.publishLayouts(
97 sourceGroupId, targetGroupId, privateLayout, parameterMap,
98 startDate, endDate);
99 }
100 else if (command.equals(
101 LayoutsLocalPublisherRequest.COMMAND_SELECTED_PAGES)) {
102
103 StagingUtil.publishLayouts(
104 sourceGroupId, targetGroupId, privateLayout, layoutIdMap,
105 parameterMap, startDate, endDate);
106 }
107 }
108 catch (Exception e) {
109 _log.error(e, e);
110 }
111 finally {
112 try {
113 PermissionCheckerFactory.recycle(permissionChecker);
114 }
115 catch (Exception e) {
116 }
117 }
118 }
119
120 private static Log _log =
121 LogFactoryUtil.getLog(LayoutsLocalPublisherMessageListener.class);
122
123 }