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