001
014
015 package com.liferay.portlet.communities.messaging;
016
017 import com.liferay.portal.kernel.messaging.BaseMessageListener;
018 import com.liferay.portal.kernel.messaging.Message;
019 import com.liferay.portal.kernel.messaging.MessageStatus;
020 import com.liferay.portal.kernel.messaging.sender.MessageSender;
021 import com.liferay.portal.kernel.messaging.sender.SingleDestinationMessageSender;
022 import com.liferay.portal.kernel.staging.StagingUtil;
023 import com.liferay.portal.kernel.util.MapUtil;
024 import com.liferay.portal.kernel.util.Time;
025 import com.liferay.portal.model.User;
026 import com.liferay.portal.security.auth.PrincipalThreadLocal;
027 import com.liferay.portal.security.permission.PermissionChecker;
028 import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil;
029 import com.liferay.portal.security.permission.PermissionThreadLocal;
030 import com.liferay.portal.service.UserLocalServiceUtil;
031
032 import java.util.Date;
033 import java.util.Map;
034
035
038 public class LayoutsRemotePublisherMessageListener extends BaseMessageListener {
039
040 public LayoutsRemotePublisherMessageListener() {
041 }
042
043
046 public LayoutsRemotePublisherMessageListener(
047 SingleDestinationMessageSender statusSender,
048 MessageSender responseSender) {
049
050 super(statusSender, responseSender);
051 }
052
053 protected void doReceive(Message message, MessageStatus messageStatus)
054 throws Exception {
055
056 LayoutsRemotePublisherRequest publisherRequest =
057 (LayoutsRemotePublisherRequest)message.getPayload();
058
059 messageStatus.setPayload(publisherRequest);
060
061 long userId = publisherRequest.getUserId();
062 long sourceGroupId = publisherRequest.getSourceGroupId();
063 boolean privateLayout = publisherRequest.isPrivateLayout();
064 Map<Long, Boolean> layoutIdMap = publisherRequest.getLayoutIdMap();
065 Map<String, String[]> parameterMap = publisherRequest.getParameterMap();
066 String remoteAddress = publisherRequest.getRemoteAddress();
067 int remotePort = publisherRequest.getRemotePort();
068 boolean secureConnection = publisherRequest.isSecureConnection();
069 long remoteGroupId = publisherRequest.getRemoteGroupId();
070 boolean remotePrivateLayout = publisherRequest.isRemotePrivateLayout();
071 Date startDate = publisherRequest.getStartDate();
072 Date endDate = publisherRequest.getEndDate();
073
074 String range = MapUtil.getString(parameterMap, "range");
075
076 if (range.equals("last")) {
077 int last = MapUtil.getInteger(parameterMap, "last");
078
079 if (last > 0) {
080 Date scheduledFireTime =
081 publisherRequest.getScheduledFireTime();
082
083 startDate = new Date(
084 scheduledFireTime.getTime() - (last * Time.HOUR));
085
086 endDate = scheduledFireTime;
087 }
088 }
089
090 PrincipalThreadLocal.setName(userId);
091
092 User user = UserLocalServiceUtil.getUserById(userId);
093
094 PermissionChecker permissionChecker =
095 PermissionCheckerFactoryUtil.create(user, false);
096
097 PermissionThreadLocal.setPermissionChecker(permissionChecker);
098
099 try {
100 StagingUtil.copyRemoteLayouts(
101 sourceGroupId, privateLayout, layoutIdMap, parameterMap,
102 remoteAddress, remotePort, secureConnection, remoteGroupId,
103 remotePrivateLayout, parameterMap, startDate, endDate);
104 }
105 finally {
106 PrincipalThreadLocal.setName(null);
107 PermissionThreadLocal.setPermissionChecker(null);
108 }
109 }
110
111 }