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());
}
});