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


Reply via email to