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