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 LayoutsRemotePublisherMessageListener extends BaseMessageListener {
42
43 public LayoutsRemotePublisherMessageListener() {
44 }
45
46
49 public LayoutsRemotePublisherMessageListener(
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 LayoutsRemotePublisherRequest publisherRequest =
60 (LayoutsRemotePublisherRequest)message.getPayload();
61
62 messageStatus.setPayload(publisherRequest);
63
64 long userId = publisherRequest.getUserId();
65 long sourceGroupId = publisherRequest.getSourceGroupId();
66 boolean privateLayout = publisherRequest.isPrivateLayout();
67 Map<Long, Boolean> layoutIdMap = publisherRequest.getLayoutIdMap();
68 Map<String, String[]> parameterMap = publisherRequest.getParameterMap();
69 String remoteAddress = publisherRequest.getRemoteAddress();
70 int remotePort = publisherRequest.getRemotePort();
71 boolean secureConnection = publisherRequest.isSecureConnection();
72 long remoteGroupId = publisherRequest.getRemoteGroupId();
73 boolean remotePrivateLayout = publisherRequest.isRemotePrivateLayout();
74 Date startDate = publisherRequest.getStartDate();
75 Date endDate = publisherRequest.getEndDate();
76
77 String range = MapUtil.getString(parameterMap, "range");
78
79 if (range.equals("last")) {
80 int last = MapUtil.getInteger(parameterMap, "last");
81
82 if (last > 0) {
83 Date scheduledFireTime =
84 publisherRequest.getScheduledFireTime();
85
86 startDate = new Date(
87 scheduledFireTime.getTime() - (last * Time.HOUR));
88
89 endDate = scheduledFireTime;
90 }
91 }
92
93 PrincipalThreadLocal.setName(userId);
94
95 User user = UserLocalServiceUtil.getUserById(userId);
96
97 PermissionChecker permissionChecker =
98 PermissionCheckerFactoryUtil.create(user, false);
99
100 PermissionThreadLocal.setPermissionChecker(permissionChecker);
101
102 try {
103 StagingUtil.copyRemoteLayouts(
104 sourceGroupId, privateLayout, layoutIdMap, parameterMap,
105 remoteAddress, remotePort, secureConnection, remoteGroupId,
106 remotePrivateLayout, parameterMap, startDate, endDate);
107 }
108 finally {
109 PrincipalThreadLocal.setName(null);
110 PermissionThreadLocal.setPermissionChecker(null);
111 }
112 }
113
114 }