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