You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by vd...@apache.org on 2013/07/26 06:48:31 UTC

svn commit: r1507192 - in /openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: data/calendar/daos/AppointmentDao.java data/calendar/management/MeetingMemberLogic.java data/conference/InvitationManager.java web/pages/MainPage.java

Author: vdegtyarev
Date: Fri Jul 26 04:48:30 2013
New Revision: 1507192

URL: http://svn.apache.org/r1507192
Log:
OPENMEETINGS-714 is improved;
OPENMEETINGS-716 is fixed

Modified:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java?rev=1507192&r1=1507191&r2=1507192&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java Fri Jul 26 04:48:30 2013
@@ -293,11 +293,8 @@ public class AppointmentDao {
 					urlPostfix = "#room/" + r.getRooms_id();
 				}
 					
-				meetingMemberLogic.addMeetingMemberInvitation(
-							mm, a, WebSession.get().getBaseUrl() + urlPostfix,
-							u.getUser_id(), timezoneUtil.getTimezoneByUser(u), u.getOmTimeZone(),
-							u.getFirstname() + " " + u.getLastname() 
-						);
+				meetingMemberLogic.addMeetingMemberInvitation(mm, a,
+						WebSession.get().getBaseUrl() + urlPostfix,	u);
 			}
 		}
 		return a;

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java?rev=1507192&r1=1507191&r2=1507192&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java Fri Jul 26 04:48:30 2013
@@ -31,6 +31,7 @@ import org.apache.openmeetings.persisten
 import org.apache.openmeetings.persistence.beans.invitation.Invitations;
 import org.apache.openmeetings.persistence.beans.user.User;
 import org.apache.openmeetings.utils.math.CalendarPatterns;
+import org.apache.openmeetings.utils.math.TimezoneUtil;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -50,6 +51,8 @@ public class MeetingMemberLogic {
 	private InvitationManager invitationManager;
 	@Autowired
 	private MeetingMemberDao meetingMemberDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
 
 	/**
 	 * This can be either an internal or an external user, internal users have a
@@ -198,19 +201,16 @@ public class MeetingMemberLogic {
 	 * @param meetingMember
 	 * @param appointment
 	 * @param baseUrl
-	 * @param meeting_organizer
+	 * @param organizer
 	 * @param timezone
 	 * @param jNameInternalTimeZone
 	 * @param invitorName
 	 * @return
 	 */
 	public Long addMeetingMemberInvitation(MeetingMember member,
-			Appointment appointment,  String baseUrl, Long meeting_organizer,
-			TimeZone timezone, OmTimeZone omTimeZone, String invitorName) {
+			Appointment appointment,  String baseUrl, User organizer) {
 
 		try {
-			Boolean isInvitor = member.getInvitor();
-
 			Long invitationId = null;
 
 			if (appointment.getRemind() == null) {
@@ -221,9 +221,10 @@ public class MeetingMemberLogic {
 			log.debug(":::: addMeetingMemberInvitation ..... "
 					+ appointment.getRemind().getTypId());
 
-			String subject = formatSubject(member.getUserid().getLanguage_id(), appointment, timezone);
+			String subject = formatSubject(member.getUserid().getLanguage_id(), appointment, timezoneUtil.getTimezoneByUser(organizer));
 
-			String message = formatMessage(member.getUserid().getLanguage_id(), appointment, timezone,
+			String invitorName = organizer.getFirstname() + " " + organizer.getLastname();
+			String message = formatMessage(member.getUserid().getLanguage_id(), appointment, timezoneUtil.getTimezoneByUser(organizer),
 					invitorName);
 
 			// appointment.getRemind().getTypId() == 1 will not receive emails
@@ -233,28 +234,14 @@ public class MeetingMemberLogic {
 
 				Invitations invitation = invitationManager
 						.addInvitationLink(
-								new Long(2), // userlevel
-								member.getFirstname() + " " + member.getLastname(), // username
+								member,
+								appointment,
 								message,
 								baseUrl, // baseURl
-								member.getUserid().getAdresses().getEmail(), // email
 								subject, // subject
-								appointment.getRoom().getRooms_id(), // room_id
 								"public",
-								appointment.getIsPasswordProtected(), // passwordprotected
-								appointment.getPassword(), // invitationpass
 								2, // valid type
-								appointment.getAppointmentStarttime(), // valid from
-								appointment.getAppointmentEndtime(), // valid to
-								meeting_organizer, // created by
-								baseUrl,
-								member.getUserid().getLanguage_id(),
-								true, // really send mail sendMail
-								appointment.getAppointmentStarttime(),
-								appointment.getAppointmentEndtime(),
-								appointment.getAppointmentId(),
-								invitorName,
-								omTimeZone);
+								organizer);
 
 				invitationId = invitation.getInvitations_id();
 
@@ -264,25 +251,15 @@ public class MeetingMemberLogic {
 				System.out.println("### SENDING iCAL EMAIL");
 
 				invitationId = invitationManager
-						.addInvitationIcalLink(
-								new Long(2), // userlevel
-								member.getFirstname() + " " + member.getLastname(), // username
+						.addInvitationIcalLink(member,
+								appointment,
 								message,
 								baseUrl, // baseURl
-								member.getUserid().getAdresses().getEmail(), // email
 								subject, // subject
-								appointment.getRoom().getRooms_id(), // room_id
-								"public",
-								appointment.getIsPasswordProtected(), // passwordprotected
-								appointment.getPassword(), // invitationpass
+								"public",	// conference domain
 								2, // valid
-								appointment.getAppointmentStarttime(), // valid from
-								appointment.getAppointmentEndtime(), // valid to
-								meeting_organizer, // created by
-								appointment.getAppointmentId(), isInvitor,
-								member.getUserid().getLanguage_id(), timezone,
-								appointment.getAppointmentId(),
-								invitorName);
+								organizer // created by
+								);
 
 			}
 
@@ -335,7 +312,8 @@ public class MeetingMemberLogic {
 			String message = fieldManager.getString(1151L, language_id) + " "
 					+ point.getAppointmentName();
 
-			if (point.getAppointmentDescription().length() != 0) {
+			if (point.getAppointmentDescription() != null && 
+					point.getAppointmentDescription().length() != 0) {
 				message += fieldManager.getString(1152L, language_id)
 						+ point.getAppointmentDescription();
 			}

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java?rev=1507192&r1=1507191&r2=1507192&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java Fri Jul 26 04:48:30 2013
@@ -49,6 +49,7 @@ import org.apache.openmeetings.persisten
 import org.apache.openmeetings.persistence.beans.invitation.Invitations;
 import org.apache.openmeetings.persistence.beans.lang.Fieldlanguagesvalues;
 import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.persistence.beans.user.User.Type;
 import org.apache.openmeetings.templates.InvitationTemplate;
 import org.apache.openmeetings.utils.crypt.MD5;
 import org.apache.openmeetings.utils.crypt.ManageCryptStyle;
@@ -210,6 +211,101 @@ public class InvitationManager {
 		return null;
 	}
 
+
+	/**
+	 * @author vasya
+	 * 
+	 * @param meetingMember
+	 * @param appointment
+	 * @param message
+	 * @param baseurl
+	 * @param subject
+	 * @param conferencedomain
+	 * @param valid
+	 * @param createdBy
+	 * @return
+	 */
+	// ---------------------------------------------------------------------------------------------------------
+	public Invitations addInvitationLink(MeetingMember meetingMember,
+			Appointment appointment,
+			String message, String baseUrl, String subject,
+			String conferencedomain,
+			Integer valid,
+			User createdBy) {
+		try {
+			Invitations invitation = new Invitations();
+			invitation.setIsPasswordProtected(appointment.getIsPasswordProtected());
+			if (appointment.getIsPasswordProtected()) {
+				invitation.setInvitationpass(manageCryptStyle
+						.getInstanceOfCrypt().createPassPhrase(
+								appointment.getPassword()));
+			}
+
+			invitation.setInvitationWasUsed(false);
+			log.debug(baseUrl);
+			invitation.setBaseUrl(baseUrl);
+			invitation.setOmTimeZone(createdBy.getOmTimeZone());
+
+			// valid period of Invitation
+			if (valid == 1) {
+				// endless
+				invitation.setIsValidByTime(false);
+				invitation.setCanBeUsedOnlyOneTime(false);
+			} else if (valid == 2) {
+				// period
+				invitation.setIsValidByTime(true);
+				invitation.setCanBeUsedOnlyOneTime(false);
+
+				Date gmtTimeStartShifted = new Date(appointment.getAppointmentStarttime().getTime()
+						- (5 * 60 * 1000));
+
+				invitation.setValidFrom(gmtTimeStartShifted);
+				invitation.setValidTo(appointment.getAppointmentEndtime());
+
+			} else {
+				// one-time
+				invitation.setIsValidByTime(false);
+				invitation.setCanBeUsedOnlyOneTime(true);
+				invitation.setInvitationWasUsed(false);
+			}
+
+			invitation.setDeleted(false);
+
+			String hashRaw = "HASH" + (System.currentTimeMillis());
+			invitation.setHash(MD5.do_checksum(hashRaw));
+
+			invitation.setInvitedBy(createdBy);
+			String userName = meetingMember.getFirstname() + " " + meetingMember.getLastname();
+			invitation.setInvitedname(userName);
+			invitation.setInvitedEMail(meetingMember.getEmail());
+			invitation.setRoom(appointment.getRoom());
+			invitation.setConferencedomain(conferencedomain);
+			invitation.setStarttime(new Date());
+			invitation.setAppointmentId(appointment.getAppointmentId());
+
+			invitation = em.merge(invitation);
+			long invitationId = invitation.getInvitations_id();
+
+			invitation.setInvitations_id(invitationId);
+
+			if (invitationId > 0) {
+
+				this.sendInvitionLink(createdBy,
+						meetingMember,
+						appointment,
+						message,
+						baseUrl,
+						subject,
+						invitation.getHash());
+
+				return invitation;
+			}
+		} catch (Exception err) {
+			log.error("addInvitationLink", err);
+		}
+		return null;
+	}
+	
 	// ----------------------------------------------------------------------------------------------------------------
 
 	/**
@@ -312,7 +408,8 @@ public class InvitationManager {
 			String message = fieldManager.getString(1157L, language_id)
 					+ appointment.getAppointmentName();
 
-			if (appointment.getAppointmentDescription().length() != 0) {
+			if (appointment.getAppointmentDescription() != null &&
+					appointment.getAppointmentDescription().length() != 0) {
 
 				Fieldlanguagesvalues labelid1152 = fieldManager
 						.getFieldByIdAndLanguage(new Long(1152), language_id);
@@ -583,7 +680,7 @@ public class InvitationManager {
 				if (invitationId > 0) {
 					this.sendInvitionIcalLink(username, message, baseurl,
 							email, subject, invitation.getHash(),
-							appointMentId, createdBy, invitor, language_id,
+							appointMentId, us, invitor, language_id,
 							validFrom, validTo, timezone, fromUserField);
 					return invitationId;
 				}
@@ -594,6 +691,93 @@ public class InvitationManager {
 		return null;
 	}
 
+	// -----------------------------------------------------------------------------------------------
+
+	/**
+	 * @author vasya
+	 * @param meetingMember
+	 * @param appointment
+	 * @param message
+	 * @param baseurl
+	 * @param subject
+	 * @param conferencedomain
+	 * @param valid
+	 * @param createdBy
+	 * @return
+	 */
+	// ---------------------------------------------------------------------------------------------------------
+	public Long addInvitationIcalLink(MeetingMember meetingMember, Appointment appointment,
+			String message, String baseurl, String subject,
+			String conferencedomain, Integer valid, User createdBy) {
+		log.debug("addInvitationIcalLink");
+
+		try {
+			Invitations invitation = new Invitations();
+			invitation.setIsPasswordProtected(appointment.getIsPasswordProtected());
+			if (appointment.getIsPasswordProtected()) {
+				invitation.setInvitationpass(manageCryptStyle
+						.getInstanceOfCrypt().createPassPhrase(
+								appointment.getPassword()));
+			}
+
+			String username = meetingMember.getFirstname() + " " + meetingMember.getLastname();
+			invitation.setInvitationWasUsed(false);
+
+			// valid period of Invitation
+			if (valid == 1) {
+				// endless
+				invitation.setIsValidByTime(false);
+				invitation.setCanBeUsedOnlyOneTime(false);
+			} else if (valid == 2) {
+				// period
+				invitation.setIsValidByTime(true);
+				invitation.setCanBeUsedOnlyOneTime(false);
+				invitation.setValidFrom(appointment.getAppointmentStarttime());
+				invitation.setValidTo(appointment.getAppointmentEndtime());
+			} else {
+				// one-time
+				invitation.setIsValidByTime(false);
+				invitation.setCanBeUsedOnlyOneTime(true);
+				invitation.setInvitationWasUsed(false);
+			}
+
+			invitation.setDeleted(false);
+
+			if (meetingMember.getUserid().getType() == Type.contact) {
+				String hashRaw = "InvitationHash"
+						+ (System.currentTimeMillis());
+				log.debug("addInvitationIcalLink : rawHash = " + hashRaw);
+				invitation.setHash(MD5.do_checksum(hashRaw));
+			} else {
+				invitation.setHash("");
+			}
+
+			invitation.setInvitedBy(createdBy);
+			invitation.setBaseUrl(baseurl);
+			invitation.setInvitedname(username);
+			invitation.setInvitedEMail(meetingMember.getEmail());
+			invitation.setRoom(appointment.getRoom());
+			invitation.setConferencedomain(conferencedomain);
+			invitation.setStarttime(new Date());
+			invitation.setAppointmentId(appointment.getAppointmentId());
+
+			invitation = em.merge(invitation);
+			long invitationId = invitation.getInvitations_id();
+
+			if (invitationId > 0) {
+				this.sendInvitionIcalLink(username, message, baseurl,
+						meetingMember.getEmail(), subject, invitation.getHash(),
+						appointment.getAppointmentId(), createdBy, meetingMember.getInvitor(), meetingMember.getUserid().getLanguage_id(),
+						appointment.getAppointmentStarttime(), appointment.getAppointmentEndtime(),
+						timezoneUtil.getTimezoneByUser(createdBy), createdBy.getFirstname() + " " + createdBy.getLastname());
+				return invitationId;
+			}
+		} catch (Exception err) {
+			log.error("addInvitationIcalLink", err);
+		}
+		return null;
+	}
+	
 	// ---------------------------------------------------------------------------------------------------------
 	public String sendInvitionLink(User us, Invitations inv, String message, String baseurl, String subject, Long language_id) {
 		return sendInvitionLink(us != null ? us.getAdresses().getEmail() : inv.getInvitedEMail()
@@ -638,6 +822,48 @@ public class InvitationManager {
 		return null;
 	}
 
+
+	/**
+	 * @author vasya
+	 * 
+     * @param invitor
+     * @param meetingMember
+     * @param appointment
+     * @param message
+     * @param baseurl
+     * @param subject
+     * @param invitationsHash
+	 */
+	private String sendInvitionLink(User invitor, MeetingMember meetingMember,
+			Appointment appointment,
+			String message,
+			String baseurl, String subject,
+			String invitationsHash) {
+		try {
+
+			String invitation_link = baseurl;
+			if (meetingMember.getUserid().getType() == Type.contact) {
+				invitation_link += "?invitationHash="
+					+ invitationsHash;
+
+	            if (invitor.getLanguage_id() > 0) {
+	                invitation_link += "&language=" + invitor.getLanguage_id().toString();
+	            }
+			}
+
+			String template = invitationTemplate.getRegisterInvitationTemplate(
+					invitor.getFirstname() + " " + invitor.getLastname(), message, invitation_link, invitor.getLanguage_id(),
+					appointment.getAppointmentStarttime(),
+					appointment.getAppointmentEndtime());
+
+			mailHandler.send(meetingMember.getEmail(), invitor.getAdresses().getEmail(), subject, template);
+			return "success";
+		} catch (Exception err) {
+			log.error("sendInvitationLink", err);
+		}
+		return null;
+	}
+
 	/**
 	 * @author o.becherer
 	 * @param userName
@@ -853,17 +1079,20 @@ public class InvitationManager {
 	 */
 	public String sendInvitionIcalLink(String username, String message,
 			String baseurl, String email, String subject,
-			String invitationsHash, Long appointMentId, Long organizer_userId,
+			String invitationsHash, Long appointMentId, User organizer,
 			Boolean invitor, Long language_id, Date starttime, Date endtime,
 			TimeZone timezone, String fromUserField) {
 		try {
 
-			String invitation_link = baseurl + "?invitationHash="
+			String invitation_link = baseurl;
+			if (invitationsHash.length() > 0) {
+				invitation_link += "?invitationHash="
 					+ invitationsHash;
 
-            if (language_id > 0) {
-                invitation_link += "&language=" + language_id.toString();
-            }
+	            if (language_id > 0) {
+	                invitation_link += "&language=" + language_id.toString();
+	            }
+			}
 
 			String template = invitationTemplate.getRegisterInvitationTemplate(
 					fromUserField, message, invitation_link, language_id, starttime,
@@ -884,14 +1113,13 @@ public class InvitationManager {
 			atts.add(attendeeList);
 
 			// Defining Organizer
-			User user = userManager.getUserById(organizer_userId);
 
 			HashMap<String, String> organizerAttendee = handler
 					.getAttendeeData(email, username, invitor);
 			String replyToEmail = null;
-			if (user != null) {
-				replyToEmail = user.getAdresses().getEmail();
-				organizerAttendee = handler.getAttendeeData(replyToEmail, user.getLogin(), invitor);
+			if (organizer != null) {
+				replyToEmail = organizer.getAdresses().getEmail();
+				organizerAttendee = handler.getAttendeeData(replyToEmail, organizer.getLogin(), invitor);
 			}
 
 			// Create ICal Message

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java?rev=1507192&r1=1507191&r2=1507192&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java Fri Jul 26 04:48:30 2013
@@ -154,7 +154,11 @@ public class MainPage extends BaseInited
 			
 			@Override
 			protected void respond(AjaxRequestTarget target) {
-				StringValue baseUrl = getRequestCycle().getRequest().getRequestParameters().getParameterValue("baseUrl");
+				StringValue url = getRequestCycle().getRequest().getRequestParameters().getParameterValue("baseUrl");
+				String baseUrl = url.toString(); 
+				if (baseUrl.indexOf('#') > 0){
+					baseUrl = baseUrl.substring(0, baseUrl.indexOf('#'));
+				}
 				WebSession.get().setBaseUrl(baseUrl.toString());
 			}
 		});