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