← Back to team overview

mira-dev team mailing list archive

[Branch ~mira-dev/mira/trunk] Rev 213: Patched trunk with Shilpa's fix for Bug ref: 579033

 

------------------------------------------------------------
revno: 213
committer: Max Bossino <max@xxxxxxxxxxxxxxxxx>
branch nick: trunk
timestamp: Tue 2010-05-18 01:27:21 +0200
message:
  Patched trunk with Shilpa's fix for Bug ref: 579033
modified:
  mira-server/include/network/messages/MsgJoinGroup.h


--
lp:mira/trunk
https://code.launchpad.net/~mira-dev/mira/trunk

Your team Mira Core Development Team is subscribed to branch lp:mira/trunk.
To unsubscribe from this branch go to https://code.launchpad.net/~mira-dev/mira/trunk/+edit-subscription
=== modified file 'mira-server/include/network/messages/MsgJoinGroup.h'
--- mira-server/include/network/messages/MsgJoinGroup.h	2010-03-17 02:59:54 +0000
+++ mira-server/include/network/messages/MsgJoinGroup.h	2010-05-17 23:27:21 +0000
@@ -48,9 +48,12 @@
             {
                 //Checking if the Group exist
                 WorkPlace workgroup = Application::get_directory().find_workplace(message_field.at(0));
+            
                 if(workgroup.is_valid())
                 {
                     User user = Application::get_directory().find_user(m_source_connection->get_user_id());
+                    std::string  wg_id_str = IntToString(workgroup.get_id()); 
+
                     //Adding group(id) to user's workplace_list
                     Field field = user.get_field(ATTRIBUTE_WORKPLACE_LIST);
                     if(field.type == Field::type_invalid)
@@ -58,11 +61,20 @@
                         field.type      = Field::list(Field::type_uint16);
                         field.attribute = ATTRIBUTE_WORKPLACE_LIST;
                         field.value     = " ";
-                        field.value_list = std::list<std::string>(1, IntToString(workgroup.get_id()));
+                        field.value_list = std::list<std::string>(1, wg_id_str);
                     }    
                     else
                     {
-                        field.value_list.push_back(IntToString(workgroup.get_id())); 
+                        //Checking if the User is already the member of the workgroup. 
+                        std::list<std::string>::iterator pos = find(field.value_list.begin(), field.value_list.end(), wg_id_str);
+                        if(pos != field.value_list.end())
+                        {
+                            string error_message = "E JG Already Member of the Group ";
+                            error_message += message_field.at(0) + ".Can't rejoin the group ";
+                            m_source_connection->send(error_message);
+                            return;
+                        }
+                        field.value_list.push_back(wg_id_str); 
                     }
                     user.set_field(field);
                     Application::get_directory().update_user(user);