Changeset 6257 for branches/licq_group/src/icqd-srv.cpp
- Timestamp:
- 06/11/08 08:20:10 (6 months ago)
- Files:
-
- 1 modified
-
branches/licq_group/src/icqd-srv.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/licq_group/src/icqd-srv.cpp
r6246 r6257 118 118 { 119 119 // Export groups 120 GroupList groups; 121 GroupList *g = gUserManager.LockGroupList(LOCK_R); 122 GroupIDList *gID = gUserManager.LockGroupIDList(LOCK_R); 123 124 for (unsigned int i = 0; i < gID->size(); i++) 125 { 126 if ((*gID)[i] == 0) 127 { 128 groups.push_back((*g)[i]); 129 } 130 } 131 132 gUserManager.UnlockGroupList(); 133 gUserManager.UnlockGroupIDList(); 134 135 if (groups.size()) 120 GroupNameMap groups; 121 FOR_EACH_GROUP_START(LOCK_R) 122 { 123 if (pGroup->icqGroupId() == 0) 124 groups[pGroup->id()] = pGroup->name(); 125 } 126 FOR_EACH_GROUP_END 127 128 if (groups.size() > 0) 136 129 icqExportGroups(groups); 137 130 … … 224 217 if (!UseServerContactList()) return; 225 218 CSrvPacketTcp *pReply; 226 219 227 220 pReply = new CPU_UpdateToServerList("", ICQ_ROSTxGROUP, 0); 228 221 addToModifyUsers(pReply->SubSequence(), ""); 229 222 gLog.Info(tr("%sUpdating top level group.\n"), L_SRVxSTR); 230 223 SendExpectEvent_Server(0, pReply, NULL); 231 232 GroupList *g = gUserManager.LockGroupList(LOCK_R); 233 GroupIDList *gID = gUserManager.LockGroupIDList(LOCK_R); 234 235 for (unsigned int i = 0; i < gID->size(); i++) 236 { 237 if ((*gID)[i]) 238 { 239 pReply = new CPU_UpdateToServerList((*g)[i], ICQ_ROSTxGROUP, 240 (*gID)[i]); 241 gLog.Info(tr("%sUpdating group %s.\n"), L_SRVxSTR, (*g)[i]); 224 225 FOR_EACH_GROUP_START(LOCK_R) 226 { 227 unsigned int gid = pGroup->icqGroupId(); 228 if (gid != 0) 229 { 230 const char* gname = pGroup->name().c_str(); 231 pReply = new CPU_UpdateToServerList(gname, ICQ_ROSTxGROUP, gid); 232 gLog.Info(tr("%sUpdating group %s.\n"), L_SRVxSTR, gname); 242 233 addToModifyUsers(pReply->SubSequence(), ""); 243 234 SendExpectEvent_Server(0, pReply, NULL); 244 235 } 245 236 } 246 247 gUserManager.UnlockGroupList(); 248 gUserManager.UnlockGroupIDList(); 237 FOR_EACH_GROUP_END 249 238 } 250 239 … … 310 299 311 300 //-----icqExportGroups---------------------------------------------------------- 312 void CICQDaemon::icqExportGroups( GroupList &groups)301 void CICQDaemon::icqExportGroups(const GroupNameMap& groups) 313 302 { 314 303 if (!UseServerContactList()) return; … … 4271 4260 } 4272 4261 } 4273 4262 4274 4263 u->SetIgnoreList(nType == ICQ_ROSTxIGNORE); 4275 4264 4276 4265 if (!isOnList) 4277 4266 { … … 4280 4269 } 4281 4270 4271 // Save GSID, SID and group memberships 4272 u->SaveLicqInfo(); 4273 4282 4274 PushPluginSignal(new CICQSignal(SIGNAL_UPDATExUSER, USER_GENERAL, 4283 4275 u->IdString(), u->PPID())); … … 4302 4294 { 4303 4295 if (!UseServerContactList()) break; 4304 4296 4305 4297 if (szId[0] != '\0' && nTag != 0) 4306 4298 { 4307 4299 // Rename the group if we have it already or else add it 4308 4300 unsigned short nGroup = gUserManager.GetGroupFromID(nTag); 4309 if (nGroup == gUserManager.NumGroups())4301 if (nGroup == 0) 4310 4302 { 4311 4303 if (!gUserManager.AddGroup(szUnicodeName, nTag)) … … 4520 4512 4521 4513 4522 GroupList *g = gUserManager.LockGroupList(LOCK_R);4514 LicqGroup* group = gUserManager.FetchGroup(n, LOCK_R); 4523 4515 std::string groupName; 4524 if (e->ExtraInfo() == 0 )4516 if (e->ExtraInfo() == 0 || group == NULL) 4525 4517 groupName = ""; // top level 4526 4518 else 4527 groupName = (*g)[n-1]; 4528 gUserManager.UnlockGroupList(); 4519 groupName = group->name(); 4520 if (group != NULL) 4521 gUserManager.DropGroup(group); 4529 4522 4530 4523 // Start editing server list
