1
19
20 package com.liferay.portlet.communities.messaging;
21
22 import com.liferay.portal.kernel.json.JSONFactoryUtil;
23 import com.liferay.portal.kernel.log.Log;
24 import com.liferay.portal.kernel.log.LogFactoryUtil;
25 import com.liferay.portal.kernel.messaging.Message;
26 import com.liferay.portal.kernel.messaging.MessageListener;
27 import com.liferay.portal.kernel.util.MapUtil;
28 import com.liferay.portal.kernel.util.Time;
29 import com.liferay.portal.model.User;
30 import com.liferay.portal.security.auth.PrincipalThreadLocal;
31 import com.liferay.portal.security.permission.PermissionChecker;
32 import com.liferay.portal.security.permission.PermissionCheckerFactory;
33 import com.liferay.portal.security.permission.PermissionThreadLocal;
34 import com.liferay.portal.service.UserLocalServiceUtil;
35 import com.liferay.portlet.communities.util.StagingUtil;
36
37 import java.util.Date;
38 import java.util.Map;
39
40
47 public class LayoutsRemotePublisherMessageListener implements MessageListener {
48
49 public void receive(Message message) {
50 PermissionChecker permissionChecker = null;
51
52 try {
53 LayoutsRemotePublisherRequest publisherRequest =
54 (LayoutsRemotePublisherRequest)JSONFactoryUtil.deserialize(
55 (String)message.getPayload());
56
57 long userId = publisherRequest.getUserId();
58 long sourceGroupId = publisherRequest.getSourceGroupId();
59 boolean privateLayout = publisherRequest.isPrivateLayout();
60 Map<Long, Boolean> layoutIdMap = publisherRequest.getLayoutIdMap();
61 Map<String, String[]> parameterMap =
62 publisherRequest.getParameterMap();
63 String remoteAddress = publisherRequest.getRemoteAddress();
64 int remotePort = publisherRequest.getRemotePort();
65 boolean secureConnection = publisherRequest.isSecureConnection();
66 long remoteGroupId = publisherRequest.getRemoteGroupId();
67 boolean remotePrivateLayout =
68 publisherRequest.isRemotePrivateLayout();
69 Date startDate = publisherRequest.getStartDate();
70 Date endDate = publisherRequest.getEndDate();
71
72 String range = MapUtil.getString(parameterMap, "range");
73
74 if (range.equals("last")) {
75 int last = MapUtil.getInteger(parameterMap, "last");
76
77 if (last > 0) {
78 Date scheduledFireTime =
79 publisherRequest.getScheduledFireTime();
80
81 startDate = new Date(
82 scheduledFireTime.getTime() - (last * Time.HOUR));
83
84 endDate = scheduledFireTime;
85 }
86 }
87
88 PrincipalThreadLocal.setName(userId);
89
90 User user = UserLocalServiceUtil.getUserById(userId);
91
92 permissionChecker = PermissionCheckerFactory.create(user, false);
93
94 PermissionThreadLocal.setPermissionChecker(permissionChecker);
95
96 StagingUtil.copyRemoteLayouts(
97 sourceGroupId, privateLayout, layoutIdMap, parameterMap,
98 remoteAddress, remotePort, secureConnection, remoteGroupId,
99 remotePrivateLayout, parameterMap, startDate, endDate);
100 }
101 catch (Exception e) {
102 _log.error(e, e);
103 }
104 finally {
105 try {
106 PermissionCheckerFactory.recycle(permissionChecker);
107 }
108 catch (Exception e) {
109 }
110 }
111 }
112
113 private static Log _log =
114 LogFactoryUtil.getLog(LayoutsRemotePublisherMessageListener.class);
115
116 }