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