aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/CalendarHandler.cpp
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2014-05-18 19:40:30 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2014-05-18 19:40:30 +0200
commitef5bc9c70a6b50e1244a91fb922ecab455f6966f (patch)
treec018aa80719c1050314e67d9a5a8d5b2e173232a /src/server/game/Handlers/CalendarHandler.cpp
parenta3793b1741a6ff8cb71c858d12f8de6ca259f338 (diff)
parent7228bd3664d9fa6a808e338a2fb2f519a6370672 (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/game/Entities/Player/Player.cpp src/server/game/Entities/Player/Player.h src/server/game/Guilds/Guild.cpp src/server/game/Handlers/TradeHandler.cpp src/server/scripts/Commands/cs_modify.cpp src/server/scripts/Kalimdor/zone_durotar.cpp
Diffstat (limited to 'src/server/game/Handlers/CalendarHandler.cpp')
-rw-r--r--src/server/game/Handlers/CalendarHandler.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp
index 89e09484458..2f1a726f9cf 100644
--- a/src/server/game/Handlers/CalendarHandler.cpp
+++ b/src/server/game/Handlers/CalendarHandler.cpp
@@ -259,7 +259,14 @@ void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
uint32 inviteCount;
recvData >> inviteCount;
- for (uint32 i = 0; i < inviteCount; ++i)
+ SQLTransaction trans;
+ if (inviteCount > 1)
+ trans = CharacterDatabase.BeginTransaction();
+
+ // client limits the amount of players to be invited to 100
+ const uint32 MaxPlayerInvites = 100;
+
+ for (uint32 i = 0; i < inviteCount && i < MaxPlayerInvites; ++i)
{
uint64 invitee = 0;
uint8 status = 0;
@@ -269,8 +276,11 @@ void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
// 946684800 is 01/01/2000 00:00:00 - default response time
CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEvent.GetEventId(), invitee, guid, 946684800, CalendarInviteStatus(status), CalendarModerationRank(rank), "");
- sCalendarMgr->AddInvite(&calendarEvent, invite);
+ sCalendarMgr->AddInvite(&calendarEvent, invite, trans);
}
+
+ if (inviteCount > 1)
+ CharacterDatabase.CommitTransaction(trans);
}
sCalendarMgr->AddEvent(new CalendarEvent(calendarEvent, calendarEvent.GetEventId()), CALENDAR_SENDTYPE_ADD);
@@ -354,10 +364,15 @@ void WorldSession::HandleCalendarCopyEvent(WorldPacket& recvData)
sCalendarMgr->AddEvent(newEvent, CALENDAR_SENDTYPE_COPY);
CalendarInviteStore invites = sCalendarMgr->GetEventInvites(eventId);
+ SQLTransaction trans;
+ if (invites.size() > 1)
+ trans = CharacterDatabase.BeginTransaction();
for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
- sCalendarMgr->AddInvite(newEvent, new CalendarInvite(**itr, sCalendarMgr->GetFreeInviteId(), newEvent->GetEventId()));
+ sCalendarMgr->AddInvite(newEvent, new CalendarInvite(**itr, sCalendarMgr->GetFreeInviteId(), newEvent->GetEventId()), trans);
+ if (invites.size() > 1)
+ CharacterDatabase.CommitTransaction(trans);
// should we change owner when somebody makes a copy of event owned by another person?
}
else