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