AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
CalendarMgr Class Reference

#include "CalendarMgr.h"

Public Member Functions

void LoadFromDB ()
 
CalendarEventGetEvent (uint64 eventId, CalendarEventStore::iterator *it=nullptr)
 
CalendarEventStore const & GetEvents () const
 
CalendarEventStore GetEventsCreatedBy (ObjectGuid guid, bool includeGuildEvents=false)
 
CalendarEventStore GetPlayerEvents (ObjectGuid guid)
 
CalendarEventStore GetGuildEvents (uint32 guildId)
 
CalendarInviteGetInvite (uint64 inviteId) const
 
CalendarEventInviteStore const & GetInvites () const
 
CalendarInviteStore const & GetEventInvites (uint64 eventId)
 
CalendarInviteStore GetPlayerInvites (ObjectGuid guid)
 
void FreeEventId (uint64 id)
 
uint64 GetFreeEventId ()
 
void FreeInviteId (uint64 id)
 
uint64 GetFreeInviteId ()
 
void DeleteOldEvents ()
 
uint32 GetPlayerNumPending (ObjectGuid guid)
 
void AddEvent (CalendarEvent *calendarEvent, CalendarSendEventType sendType)
 
CalendarEventStore::iterator RemoveEvent (uint64 eventId, ObjectGuid remover)
 
CalendarEventStore::iterator RemoveEvent (CalendarEvent *calendarEvent, ObjectGuid remover, CalendarEventStore::const_iterator *currIt=nullptr)
 
void UpdateEvent (CalendarEvent *calendarEvent)
 
void AddInvite (CalendarEvent *calendarEvent, CalendarInvite *invite, CharacterDatabaseTransaction trans=nullptr)
 
void RemoveInvite (uint64 inviteId, uint64 eventId, ObjectGuid remover)
 
void RemoveInvite (uint64 inviteId, uint64 eventId, uint64 remover)
 
void UpdateInvite (CalendarInvite *invite, CharacterDatabaseTransaction trans=nullptr)
 
void RemoveAllPlayerEventsAndInvites (ObjectGuid guid)
 
void RemovePlayerGuildEventsAndSignups (ObjectGuid guid, uint32 guildId)
 
void SendCalendarEvent (ObjectGuid guid, CalendarEvent const &calendarEvent, CalendarSendEventType sendType)
 
void SendCalendarEventInvite (CalendarInvite const &invite)
 
void SendCalendarEventInviteAlert (CalendarEvent const &calendarEvent, CalendarInvite const &invite)
 
void SendCalendarEventInviteRemove (CalendarEvent const &calendarEvent, CalendarInvite const &invite, uint32 flags)
 
void SendCalendarEventInviteRemoveAlert (ObjectGuid guid, CalendarEvent const &calendarEvent, CalendarInviteStatus status)
 
void SendCalendarEventUpdateAlert (CalendarEvent const &calendarEvent, time_t oldEventTime)
 
void SendCalendarEventStatus (CalendarEvent const &calendarEvent, CalendarInvite const &invite)
 
void SendCalendarEventRemovedAlert (CalendarEvent const &calendarEvent)
 
void SendCalendarEventModeratorStatusAlert (CalendarEvent const &calendarEvent, CalendarInvite const &invite)
 
void SendCalendarClearPendingAction (ObjectGuid guid)
 
void SendCalendarCommandResult (ObjectGuid guid, CalendarError err, char const *param=nullptr)
 
void SendPacketToAllEventRelatives (WorldPacket packet, CalendarEvent const &calendarEvent)
 

Static Public Member Functions

static CalendarMgrinstance ()
 

Private Member Functions

 CalendarMgr ()
 
 ~CalendarMgr ()
 

Private Attributes

CalendarEventStore _events
 
CalendarEventInviteStore _invites
 
std::deque< uint64_freeEventIds
 
std::deque< uint64_freeInviteIds
 
uint64 _maxEventId
 
uint64 _maxInviteId
 

Detailed Description

Constructor & Destructor Documentation

◆ CalendarMgr()

CalendarMgr::CalendarMgr ( )
private
43: _maxEventId(0), _maxInviteId(0) { }
uint64 _maxInviteId
Definition CalendarMgr.h:289
uint64 _maxEventId
Definition CalendarMgr.h:288

◆ ~CalendarMgr()

CalendarMgr::~CalendarMgr ( )
private
46{
47 for (CalendarEventStore::iterator itr = _events.begin(); itr != _events.end(); ++itr)
48 delete *itr;
49
50 for (CalendarEventInviteStore::iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
51 for (CalendarInviteStore::iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
52 delete *itr2;
53}
CalendarEventInviteStore _invites
Definition CalendarMgr.h:284
CalendarEventStore _events
Definition CalendarMgr.h:283

References _events, and _invites.

Member Function Documentation

◆ AddEvent()

void CalendarMgr::AddEvent ( CalendarEvent calendarEvent,
CalendarSendEventType  sendType 
)
136{
137 _events.insert(calendarEvent);
138 UpdateEvent(calendarEvent);
139 SendCalendarEvent(calendarEvent->GetCreatorGUID(), *calendarEvent, sendType);
140}
void UpdateEvent(CalendarEvent *calendarEvent)
Definition CalendarMgr.cpp:259
void SendCalendarEvent(ObjectGuid guid, CalendarEvent const &calendarEvent, CalendarSendEventType sendType)
Definition CalendarMgr.cpp:627
ObjectGuid GetCreatorGUID() const
Definition CalendarMgr.h:226

References _events, CalendarEvent::GetCreatorGUID(), SendCalendarEvent(), and UpdateEvent().

◆ AddInvite()

void CalendarMgr::AddInvite ( CalendarEvent calendarEvent,
CalendarInvite invite,
CharacterDatabaseTransaction  trans = nullptr 
)
143{
144 if (!calendarEvent->IsGuildAnnouncement())
146
147 if (!calendarEvent->IsGuildEvent() || invite->GetInviteeGUID() == calendarEvent->GetCreatorGUID())
148 SendCalendarEventInviteAlert(*calendarEvent, *invite);
149
150 if (!calendarEvent->IsGuildAnnouncement())
151 {
152 _invites[invite->GetEventId()].push_back(invite);
153 UpdateInvite(invite, trans);
154 }
155}
void SendCalendarEventInviteAlert(CalendarEvent const &calendarEvent, CalendarInvite const &invite)
Definition CalendarMgr.cpp:603
void UpdateInvite(CalendarInvite *invite, CharacterDatabaseTransaction trans=nullptr)
Definition CalendarMgr.cpp:274
void SendCalendarEventInvite(CalendarInvite const &invite)
Definition CalendarMgr.cpp:503
bool IsGuildAnnouncement() const
Definition CalendarMgr.h:253
bool IsGuildEvent() const
Definition CalendarMgr.h:252
uint64 GetEventId() const
Definition CalendarMgr.h:163
ObjectGuid GetInviteeGUID() const
Definition CalendarMgr.h:169

References _invites, CalendarEvent::GetCreatorGUID(), CalendarInvite::GetEventId(), CalendarInvite::GetInviteeGUID(), CalendarEvent::IsGuildAnnouncement(), CalendarEvent::IsGuildEvent(), SendCalendarEventInvite(), SendCalendarEventInviteAlert(), and UpdateInvite().

◆ DeleteOldEvents()

void CalendarMgr::DeleteOldEvents ( )
386{
387 time_t oldEventsTime = GameTime::GetGameTime().count() - CALENDAR_OLD_EVENTS_DELETION_TIME;
388
389 for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end();)
390 {
391 if (CalendarEvent* event = *itr; event->GetEventTime() < oldEventsTime)
392 {
393 itr = RemoveEvent(event, ObjectGuid::Empty, &itr);
394 continue;
395 }
396 ++itr;
397 }
398}
@ CALENDAR_OLD_EVENTS_DELETION_TIME
Definition CalendarMgr.h:132
CalendarEventStore::iterator RemoveEvent(uint64 eventId, ObjectGuid remover)
Definition CalendarMgr.cpp:157
static ObjectGuid const Empty
Definition ObjectGuid.h:120
Seconds GetGameTime()
Definition GameTime.cpp:38
Definition CalendarMgr.h:195
time_t GetEventTime() const
Definition CalendarMgr.h:244

References _events, CALENDAR_OLD_EVENTS_DELETION_TIME, ObjectGuid::Empty, CalendarEvent::GetEventTime(), GameTime::GetGameTime(), and RemoveEvent().

◆ FreeEventId()

void CalendarMgr::FreeEventId ( uint64  id)
350{
351 if (id == _maxEventId)
352 --_maxEventId;
353 else
354 _freeEventIds.push_back(id);
355}
std::deque< uint64 > _freeEventIds
Definition CalendarMgr.h:286

References _freeEventIds, and _maxEventId.

◆ FreeInviteId()

void CalendarMgr::FreeInviteId ( uint64  id)
368{
369 if (id == _maxInviteId)
370 --_maxInviteId;
371 else
372 _freeInviteIds.push_back(id);
373}
std::deque< uint64 > _freeInviteIds
Definition CalendarMgr.h:287

References _freeInviteIds, and _maxInviteId.

◆ GetEvent()

CalendarEvent * CalendarMgr::GetEvent ( uint64  eventId,
CalendarEventStore::iterator *  it = nullptr 
)
325{
326 for (CalendarEventStore::iterator itr = _events.begin(); itr != _events.end(); ++itr)
327 if ((*itr)->GetEventId() == eventId)
328 {
329 if (it)
330 *it = itr;
331
332 return *itr;
333 }
334
335 return nullptr;
336}

References _events.

Referenced by GetPlayerEvents(), LoadFromDB(), RemoveEvent(), RemoveInvite(), RemovePlayerGuildEventsAndSignups(), and SendCalendarEventInvite().

◆ GetEventInvites()

CalendarInviteStore const & CalendarMgr::GetEventInvites ( uint64  eventId)
445{
446 return _invites[eventId];
447}

References _invites.

◆ GetEvents()

CalendarEventStore const & CalendarMgr::GetEvents ( ) const
inline
297{ return _events; }

References _events.

◆ GetEventsCreatedBy()

CalendarEventStore CalendarMgr::GetEventsCreatedBy ( ObjectGuid  guid,
bool  includeGuildEvents = false 
)
401{
402 CalendarEventStore result;
403 for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end(); ++itr)
404 if ((*itr)->GetCreatorGUID() == guid && (includeGuildEvents || (!(*itr)->IsGuildEvent() && !(*itr)->IsGuildAnnouncement())))
405 result.insert(*itr);
406
407 return result;
408}
std::unordered_set< CalendarEvent * > CalendarEventStore
Definition CalendarMgr.h:274

References _events.

◆ GetFreeEventId()

uint64 CalendarMgr::GetFreeEventId ( )
358{
359 if (_freeEventIds.empty())
360 return ++_maxEventId;
361
362 uint64 eventId = _freeEventIds.front();
363 _freeEventIds.pop_front();
364 return eventId;
365}
std::uint64_t uint64
Definition Define.h:106

References _freeEventIds, and _maxEventId.

◆ GetFreeInviteId()

uint64 CalendarMgr::GetFreeInviteId ( )
376{
377 if (_freeInviteIds.empty())
378 return ++_maxInviteId;
379
380 uint64 inviteId = _freeInviteIds.front();
381 _freeInviteIds.pop_front();
382 return inviteId;
383}

References _freeInviteIds, and _maxInviteId.

◆ GetGuildEvents()

CalendarEventStore CalendarMgr::GetGuildEvents ( uint32  guildId)
411{
412 CalendarEventStore result;
413
414 if (!guildId)
415 return result;
416
417 for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end(); ++itr)
418 if ((*itr)->IsGuildEvent() || (*itr)->IsGuildAnnouncement())
419 if ((*itr)->GetGuildId() == guildId)
420 result.insert(*itr);
421
422 return result;
423}

References _events.

◆ GetInvite()

CalendarInvite * CalendarMgr::GetInvite ( uint64  inviteId) const
339{
340 for (CalendarEventInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
341 for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
342 if ((*itr2)->GetInviteId() == inviteId)
343 return *itr2;
344
345 LOG_DEBUG("entities.unit", "CalendarMgr::GetInvite: [{}] not found!", inviteId);
346 return nullptr;
347}
#define LOG_DEBUG(filterType__,...)
Definition Log.h:169

References _invites, and LOG_DEBUG.

Referenced by LoadFromDB().

◆ GetInvites()

CalendarEventInviteStore const & CalendarMgr::GetInvites ( ) const
inline
303{ return _invites; }

References _invites.

◆ GetPlayerEvents()

CalendarEventStore CalendarMgr::GetPlayerEvents ( ObjectGuid  guid)
426{
428
429 for (CalendarEventInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
430 for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
431 if ((*itr2)->GetInviteeGUID() == guid)
432 if (CalendarEvent* event = GetEvent(itr->first)) // nullptr check added as attempt to fix #11512
433 events.insert(event);
434
436 if (player->GetGuildId())
437 for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end(); ++itr)
438 if ((*itr)->GetGuildId() == player->GetGuildId())
439 events.insert(*itr);
440
441 return events;
442}
events
Definition boss_sartura.cpp:43
CalendarEvent * GetEvent(uint64 eventId, CalendarEventStore::iterator *it=nullptr)
Definition CalendarMgr.cpp:324
Definition Player.h:1081
Player * FindConnectedPlayer(ObjectGuid const guid)
Definition ObjectAccessor.cpp:257

References _events, _invites, ObjectAccessor::FindConnectedPlayer(), and GetEvent().

◆ GetPlayerInvites()

CalendarInviteStore CalendarMgr::GetPlayerInvites ( ObjectGuid  guid)
450{
451 CalendarInviteStore invites;
452
453 for (CalendarEventInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
454 for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
455 if ((*itr2)->GetInviteeGUID() == guid)
456 invites.push_back(*itr2);
457
458 return invites;
459}
std::vector< CalendarInvite * > CalendarInviteStore
Definition CalendarMgr.h:273

References _invites.

Referenced by GetPlayerNumPending(), RemoveAllPlayerEventsAndInvites(), and RemovePlayerGuildEventsAndSignups().

◆ GetPlayerNumPending()

uint32 CalendarMgr::GetPlayerNumPending ( ObjectGuid  guid)
462{
463 CalendarInviteStore const& invites = GetPlayerInvites(guid);
464
465 uint32 pendingNum = 0;
466 for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
467 {
468 switch ((*itr)->GetStatus())
469 {
473 ++pendingNum;
474 break;
475 default:
476 break;
477 }
478 }
479
480 return pendingNum;
481}
@ CALENDAR_STATUS_TENTATIVE
Definition CalendarMgr.h:84
@ CALENDAR_STATUS_NOT_SIGNED_UP
Definition CalendarMgr.h:83
@ CALENDAR_STATUS_INVITED
Definition CalendarMgr.h:76
std::uint32_t uint32
Definition Define.h:107
CalendarInviteStore GetPlayerInvites(ObjectGuid guid)
Definition CalendarMgr.cpp:449

References CALENDAR_STATUS_INVITED, CALENDAR_STATUS_NOT_SIGNED_UP, CALENDAR_STATUS_TENTATIVE, and GetPlayerInvites().

◆ instance()

CalendarMgr * CalendarMgr::instance ( )
static
56{
57 static CalendarMgr instance;
58 return &instance;
59}
Definition CalendarMgr.h:278
static CalendarMgr * instance()
Definition CalendarMgr.cpp:55

References instance().

Referenced by instance().

◆ LoadFromDB()

void CalendarMgr::LoadFromDB ( )
62{
63 uint32 count = 0;
64 _maxEventId = 0;
65 _maxInviteId = 0;
66
67 // 0 1 2 3 4 5 6 7 8
68 if (QueryResult result = CharacterDatabase.Query("SELECT id, creator, title, description, type, dungeon, eventtime, flags, time2 FROM calendar_events"))
69 do
70 {
71 Field* fields = result->Fetch();
72
73 uint64 eventId = fields[0].Get<uint64>();
74 ObjectGuid creatorGUID = ObjectGuid::Create<HighGuid::Player>(fields[1].Get<uint32>());
75 std::string title = fields[2].Get<std::string>();
76 std::string description = fields[3].Get<std::string>();
77 CalendarEventType type = CalendarEventType(fields[4].Get<uint8>());
78 int32 dungeonId = fields[5].Get<int32>();
79 uint32 eventTime = fields[6].Get<uint32>();
80 uint32 flags = fields[7].Get<uint32>();
81 uint32 timezoneTime = fields[8].Get<uint32>();
82 uint32 guildId = 0;
83
85 {
86 guildId = sCharacterCache->GetCharacterGuildIdByGuid(creatorGUID);
87 }
88
89 CalendarEvent* calendarEvent = new CalendarEvent(eventId, creatorGUID, guildId, type, dungeonId, time_t(eventTime), flags, time_t(timezoneTime), title, description);
90 _events.insert(calendarEvent);
91
92 _maxEventId = std::max(_maxEventId, eventId);
93
94 ++count;
95 } while (result->NextRow());
96
97 LOG_INFO("server.loading", ">> Loaded {} calendar events", count);
98 count = 0;
99
100 // 0 1 2 3 4 5 6 7
101 if (QueryResult result = CharacterDatabase.Query("SELECT id, event, invitee, sender, status, statustime, `rank`, text FROM calendar_invites"))
102 do
103 {
104 Field* fields = result->Fetch();
105
106 uint64 inviteId = fields[0].Get<uint64>();
107 uint64 eventId = fields[1].Get<uint64>();
108 ObjectGuid invitee = ObjectGuid::Create<HighGuid::Player>(fields[2].Get<uint32>());
109 ObjectGuid senderGUID = ObjectGuid::Create<HighGuid::Player>(fields[3].Get<uint32>());
110 CalendarInviteStatus status = CalendarInviteStatus(fields[4].Get<uint8>());
111 uint32 statusTime = fields[5].Get<uint32>();
112 CalendarModerationRank rank = CalendarModerationRank(fields[6].Get<uint8>());
113 std::string text = fields[7].Get<std::string>();
114
115 CalendarInvite* invite = new CalendarInvite(inviteId, eventId, invitee, senderGUID, time_t(statusTime), status, rank, text);
116 _invites[eventId].push_back(invite);
117
118 _maxInviteId = std::max(_maxInviteId, inviteId);
119
120 ++count;
121 } while (result->NextRow());
122
123 LOG_INFO("server.loading", ">> Loaded {} calendar invites", count);
124 LOG_INFO("server.loading", " ");
125
126 for (uint64 i = 1; i < _maxEventId; ++i)
127 if (!GetEvent(i))
128 _freeEventIds.push_back(i);
129
130 for (uint64 i = 1; i < _maxInviteId; ++i)
131 if (!GetInvite(i))
132 _freeInviteIds.push_back(i);
133}
CalendarModerationRank
Definition CalendarMgr.h:44
@ CALENDAR_FLAG_WITHOUT_INVITES
Definition CalendarMgr.h:39
@ CALENDAR_FLAG_GUILD_EVENT
Definition CalendarMgr.h:40
CalendarEventType
Definition CalendarMgr.h:58
CalendarInviteStatus
Definition CalendarMgr.h:75
#define sCharacterCache
Definition CharacterCache.h:83
std::shared_ptr< ResultSet > QueryResult
Definition DatabaseEnvFwd.h:27
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::int32_t int32
Definition Define.h:103
#define LOG_INFO(filterType__,...)
Definition Log.h:165
CalendarInvite * GetInvite(uint64 inviteId) const
Definition CalendarMgr.cpp:338
Class used to access individual fields of database query result.
Definition Field.h:98
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:112
Definition ObjectGuid.h:118
Definition CalendarMgr.h:136

References _events, _freeEventIds, _freeInviteIds, _invites, _maxEventId, _maxInviteId, CALENDAR_FLAG_GUILD_EVENT, CALENDAR_FLAG_WITHOUT_INVITES, CharacterDatabase, Field::Get(), GetEvent(), GetInvite(), LOG_INFO, and sCharacterCache.

◆ RemoveAllPlayerEventsAndInvites()

void CalendarMgr::RemoveAllPlayerEventsAndInvites ( ObjectGuid  guid)
289{
290 for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end();)
291 {
292 if (CalendarEvent* event = *itr; event->GetCreatorGUID() == guid)
293 {
294 itr = RemoveEvent(event, ObjectGuid::Empty, &itr);
295 continue;
296 }
297 ++itr;
298 }
299
300 CalendarInviteStore playerInvites = GetPlayerInvites(guid);
301 for (CalendarInviteStore::const_iterator itr = playerInvites.begin(); itr != playerInvites.end(); ++itr)
302 RemoveInvite((*itr)->GetInviteId(), (*itr)->GetEventId(), guid);
303}
void RemoveInvite(uint64 inviteId, uint64 eventId, ObjectGuid remover)
Definition CalendarMgr.cpp:224

References _events, ObjectGuid::Empty, CalendarEvent::GetCreatorGUID(), GetPlayerInvites(), RemoveEvent(), and RemoveInvite().

◆ RemoveEvent() [1/2]

CalendarEventStore::iterator CalendarMgr::RemoveEvent ( CalendarEvent calendarEvent,
ObjectGuid  remover,
CalendarEventStore::const_iterator *  currIt = nullptr 
)
172 {
173 if (!calendarEvent)
174 {
176 return _events.end();
177 }
178
179 SendCalendarEventRemovedAlert(*calendarEvent);
180
181 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
183 MailDraft mail(calendarEvent->BuildCalendarMailSubject(remover), calendarEvent->BuildCalendarMailBody());
184
185 CalendarInviteStore& eventInvites = _invites[calendarEvent->GetEventId()];
186 for (std::size_t i = 0; i < eventInvites.size(); ++i)
187 {
188 CalendarInvite* invite = eventInvites[i];
189 stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_INVITE);
190 stmt->SetData(0, invite->GetInviteId());
191 trans->Append(stmt);
192
193 // guild events only? check invite status here?
194 // When an event is deleted, all invited (accepted/declined? - verify) guildies are notified via in-game mail. (wowwiki)
195 if (remover && invite->GetInviteeGUID() != remover)
196 mail.SendMailTo(trans, MailReceiver(invite->GetInviteeGUID().GetCounter()), calendarEvent, MAIL_CHECK_MASK_COPIED);
197
198 delete invite;
199 }
200
201 _invites.erase(calendarEvent->GetEventId());
202
203 stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_EVENT);
204 stmt->SetData(0, calendarEvent->GetEventId());
205 trans->Append(stmt);
206 CharacterDatabase.CommitTransaction(trans);
207
208 if (currIt)
209 {
210 delete calendarEvent;
211 return _events.erase(*currIt);
212 }
213
214 if (auto it = _events.find(calendarEvent); it != _events.end())
215 {
216 delete calendarEvent;
217 return _events.erase(it);
218 }
219
220 delete calendarEvent;
221 return _events.end();
222}
@ CALENDAR_ERROR_EVENT_INVALID
Definition CalendarMgr.h:96
@ CHAR_DEL_CALENDAR_INVITE
Definition CharacterDatabase.h:464
@ CHAR_DEL_CALENDAR_EVENT
Definition CharacterDatabase.h:462
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition DatabaseEnvFwd.h:69
@ MAIL_CHECK_MASK_COPIED
This mail was returned. Do not allow returning mail back again.
Definition Mail.h:49
void SendCalendarEventRemovedAlert(CalendarEvent const &calendarEvent)
Definition CalendarMgr.cpp:571
void SendCalendarCommandResult(ObjectGuid guid, CalendarError err, char const *param=nullptr)
Definition CalendarMgr.cpp:696
Definition Mail.h:119
Definition Mail.h:105
LowType GetCounter() const
Definition ObjectGuid.h:145
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition PreparedStatement.h:77
Definition PreparedStatement.h:157
std::string BuildCalendarMailSubject(ObjectGuid remover) const
Definition CalendarMgr.cpp:483
uint64 GetEventId() const
Definition CalendarMgr.h:223
std::string BuildCalendarMailBody() const
Definition CalendarMgr.cpp:490
uint64 GetInviteId() const
Definition CalendarMgr.h:160

References _events, _invites, CalendarEvent::BuildCalendarMailBody(), CalendarEvent::BuildCalendarMailSubject(), CALENDAR_ERROR_EVENT_INVALID, CHAR_DEL_CALENDAR_EVENT, CHAR_DEL_CALENDAR_INVITE, CharacterDatabase, ObjectGuid::GetCounter(), CalendarEvent::GetEventId(), CalendarInvite::GetInviteeGUID(), CalendarInvite::GetInviteId(), MAIL_CHECK_MASK_COPIED, SendCalendarCommandResult(), SendCalendarEventRemovedAlert(), MailDraft::SendMailTo(), and PreparedStatementBase::SetData().

◆ RemoveEvent() [2/2]

CalendarEventStore::iterator CalendarMgr::RemoveEvent ( uint64  eventId,
ObjectGuid  remover 
)
158{
159 CalendarEventStore::iterator current;
160 CalendarEvent* calendarEvent = GetEvent(eventId, &current);
161
162 if (!calendarEvent)
163 {
165 return _events.end();
166 }
167
168 CalendarEventStore::const_iterator constItr(current);
169 return RemoveEvent(calendarEvent, remover, &constItr);
170}

References _events, CALENDAR_ERROR_EVENT_INVALID, GetEvent(), RemoveEvent(), and SendCalendarCommandResult().

Referenced by DeleteOldEvents(), RemoveAllPlayerEventsAndInvites(), RemoveEvent(), and RemovePlayerGuildEventsAndSignups().

◆ RemoveInvite() [1/2]

void CalendarMgr::RemoveInvite ( uint64  inviteId,
uint64  eventId,
ObjectGuid  remover 
)
225{
226 CalendarEvent* calendarEvent = GetEvent(eventId);
227
228 if (!calendarEvent)
229 return;
230
231 CalendarInviteStore::iterator itr = _invites[eventId].begin();
232 for (; itr != _invites[eventId].end(); ++itr)
233 if ((*itr)->GetInviteId() == inviteId)
234 break;
235
236 if (itr == _invites[eventId].end())
237 return;
238
239 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
241 stmt->SetData(0, (*itr)->GetInviteId());
242 trans->Append(stmt);
243 CharacterDatabase.CommitTransaction(trans);
244
245 if (!calendarEvent->IsGuildEvent())
246 SendCalendarEventInviteRemoveAlert((*itr)->GetInviteeGUID(), *calendarEvent, CALENDAR_STATUS_REMOVED);
247
248 SendCalendarEventInviteRemove(*calendarEvent, **itr, calendarEvent->GetFlags());
249
250 // we need to find out how to use CALENDAR_INVITE_REMOVED_MAIL_SUBJECT to force client to display different mail
251 //if ((*itr)->GetInviteeGUID() != remover)
252 // MailDraft(calendarEvent->BuildCalendarMailSubject(remover), calendarEvent->BuildCalendarMailBody())
253 // .SendMailTo(trans, MailReceiver((*itr)->GetInvitee()), calendarEvent, MAIL_CHECK_MASK_COPIED);
254
255 delete *itr;
256 _invites[eventId].erase(itr);
257}
@ CALENDAR_STATUS_REMOVED
Definition CalendarMgr.h:85
void SendCalendarEventInviteRemove(CalendarEvent const &calendarEvent, CalendarInvite const &invite, uint32 flags)
Definition CalendarMgr.cpp:581
void SendCalendarEventInviteRemoveAlert(ObjectGuid guid, CalendarEvent const &calendarEvent, CalendarInviteStatus status)
Definition CalendarMgr.cpp:673
uint32 GetFlags() const
Definition CalendarMgr.h:247

References _invites, CALENDAR_STATUS_REMOVED, CHAR_DEL_CALENDAR_INVITE, CharacterDatabase, GetEvent(), CalendarEvent::GetFlags(), CalendarEvent::IsGuildEvent(), SendCalendarEventInviteRemove(), SendCalendarEventInviteRemoveAlert(), and PreparedStatementBase::SetData().

Referenced by RemoveAllPlayerEventsAndInvites(), and RemovePlayerGuildEventsAndSignups().

◆ RemoveInvite() [2/2]

void CalendarMgr::RemoveInvite ( uint64  inviteId,
uint64  eventId,
uint64  remover 
)

◆ RemovePlayerGuildEventsAndSignups()

void CalendarMgr::RemovePlayerGuildEventsAndSignups ( ObjectGuid  guid,
uint32  guildId 
)
306{
307 for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end();)
308 {
309 if ((*itr)->GetCreatorGUID() == guid && ((*itr)->IsGuildEvent() || (*itr)->IsGuildAnnouncement()))
310 {
311 itr = RemoveEvent((*itr)->GetEventId(), guid);
312 continue;
313 }
314 ++itr;
315 }
316
317 CalendarInviteStore playerInvites = GetPlayerInvites(guid);
318 for (CalendarInviteStore::const_iterator itr = playerInvites.begin(); itr != playerInvites.end(); ++itr)
319 if (CalendarEvent* calendarEvent = GetEvent((*itr)->GetEventId(), nullptr))
320 if (calendarEvent->IsGuildEvent() && calendarEvent->GetGuildId() == guildId)
321 RemoveInvite((*itr)->GetInviteId(), (*itr)->GetEventId(), guid);
322}

References _events, GetEvent(), GetPlayerInvites(), RemoveEvent(), and RemoveInvite().

◆ SendCalendarClearPendingAction()

void CalendarMgr::SendCalendarClearPendingAction ( ObjectGuid  guid)
688{
690 {
692 player->SendDirectMessage(&data);
693 }
694}
Definition WorldPacket.h:26
@ SMSG_CALENDAR_CLEAR_PENDING_ACTION
Definition Opcodes.h:1241

References ObjectAccessor::FindConnectedPlayer(), and SMSG_CALENDAR_CLEAR_PENDING_ACTION.

◆ SendCalendarCommandResult()

void CalendarMgr::SendCalendarCommandResult ( ObjectGuid  guid,
CalendarError  err,
char const *  param = nullptr 
)
697{
699 {
701 data << uint32(0);
702 data << uint8(0);
703 switch (err)
704 {
708 data << param;
709 break;
710 default:
711 data << uint8(0);
712 break;
713 }
714
715 data << uint32(err);
716
717 player->SendDirectMessage(&data);
718 }
719}
@ CALENDAR_ERROR_OTHER_INVITES_EXCEEDED
Definition CalendarMgr.h:94
@ CALENDAR_ERROR_ALREADY_INVITED_TO_EVENT_S
Definition CalendarMgr.h:100
@ CALENDAR_ERROR_IGNORING_YOU_S
Definition CalendarMgr.h:103
std::uint8_t uint8
Definition Define.h:109
@ SMSG_CALENDAR_COMMAND_RESULT
Definition Opcodes.h:1115

References CALENDAR_ERROR_ALREADY_INVITED_TO_EVENT_S, CALENDAR_ERROR_IGNORING_YOU_S, CALENDAR_ERROR_OTHER_INVITES_EXCEEDED, ObjectAccessor::FindConnectedPlayer(), and SMSG_CALENDAR_COMMAND_RESULT.

Referenced by RemoveEvent(), and RemoveEvent().

◆ SendCalendarEvent()

void CalendarMgr::SendCalendarEvent ( ObjectGuid  guid,
CalendarEvent const &  calendarEvent,
CalendarSendEventType  sendType 
)
628{
630 if (!player)
631 return;
632
633 CalendarInviteStore const& eventInviteeList = _invites[calendarEvent.GetEventId()];
634
635 WorldPacket data(SMSG_CALENDAR_SEND_EVENT, 60 + eventInviteeList.size() * 32);
636 data << uint8(sendType);
637 data << calendarEvent.GetCreatorGUID().WriteAsPacked();
638 data << uint64(calendarEvent.GetEventId());
639 data << calendarEvent.GetTitle();
640 data << calendarEvent.GetDescription();
641 data << uint8(calendarEvent.GetType());
642 data << uint8(CALENDAR_REPEAT_NEVER); // repeatable
644 data << int32(calendarEvent.GetDungeonId());
645 data << uint32(calendarEvent.GetFlags());
646 data.AppendPackedTime(calendarEvent.GetEventTime());
647 data.AppendPackedTime(calendarEvent.GetTimeZoneTime());
648 data << uint32(calendarEvent.GetGuildId());
649
650 data << uint32(eventInviteeList.size());
651 for (CalendarInviteStore::const_iterator itr = eventInviteeList.begin(); itr != eventInviteeList.end(); ++itr)
652 {
653 CalendarInvite const* calendarInvite = (*itr);
654 ObjectGuid inviteeGuid = calendarInvite->GetInviteeGUID();
655 Player* invitee = ObjectAccessor::FindConnectedPlayer(inviteeGuid);
656
657 uint8 inviteeLevel = invitee ? invitee->GetLevel() : sCharacterCache->GetCharacterLevelByGuid(inviteeGuid);
658 uint32 inviteeGuildId = invitee ? invitee->GetGuildId() : sCharacterCache->GetCharacterGuildIdByGuid(inviteeGuid);
659
660 data << inviteeGuid.WriteAsPacked();
661 data << uint8(inviteeLevel);
662 data << uint8(calendarInvite->GetStatus());
663 data << uint8(calendarInvite->GetRank());
664 data << uint8(calendarEvent.IsGuildEvent() && calendarEvent.GetGuildId() == inviteeGuildId);
665 data << uint64(calendarInvite->GetInviteId());
666 data.AppendPackedTime(calendarInvite->GetStatusTime());
667 data << calendarInvite->GetText();
668 }
669
670 player->SendDirectMessage(&data);
671}
@ CALENDAR_REPEAT_NEVER
Definition CalendarMgr.h:68
@ CALENDAR_MAX_INVITES
Definition CalendarMgr.h:130
PackedGuid WriteAsPacked() const
Definition ObjectGuid.h:316
uint32 GetGuildId() const
Definition Player.h:1908
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5733
uint8 GetLevel() const
Definition Unit.h:1033
@ SMSG_CALENDAR_SEND_EVENT
Definition Opcodes.h:1109
CalendarModerationRank GetRank() const
Definition CalendarMgr.h:181
CalendarInviteStatus GetStatus() const
Definition CalendarMgr.h:178
time_t GetStatusTime() const
Definition CalendarMgr.h:172
std::string GetText() const
Definition CalendarMgr.h:175

References _invites, ByteBuffer::AppendPackedTime(), CALENDAR_MAX_INVITES, CALENDAR_REPEAT_NEVER, ObjectAccessor::FindConnectedPlayer(), CalendarEvent::GetCreatorGUID(), CalendarEvent::GetDescription(), CalendarEvent::GetDungeonId(), CalendarEvent::GetEventId(), CalendarEvent::GetEventTime(), CalendarEvent::GetFlags(), CalendarEvent::GetGuildId(), Player::GetGuildId(), CalendarInvite::GetInviteeGUID(), CalendarInvite::GetInviteId(), Unit::GetLevel(), CalendarInvite::GetRank(), CalendarInvite::GetStatus(), CalendarInvite::GetStatusTime(), CalendarInvite::GetText(), CalendarEvent::GetTimeZoneTime(), CalendarEvent::GetTitle(), CalendarEvent::GetType(), CalendarEvent::IsGuildEvent(), sCharacterCache, Player::SendDirectMessage(), SMSG_CALENDAR_SEND_EVENT, and ObjectGuid::WriteAsPacked().

Referenced by AddEvent().

◆ SendCalendarEventInvite()

void CalendarMgr::SendCalendarEventInvite ( CalendarInvite const &  invite)
504{
505 CalendarEvent* calendarEvent = GetEvent(invite.GetEventId());
506 time_t statusTime = invite.GetStatusTime();
507 bool hasStatusTime = statusTime != 946684800; // 01/01/2000 00:00:00
508
509 ObjectGuid invitee = invite.GetInviteeGUID();
511
512 uint8 level = player ? player->GetLevel() : sCharacterCache->GetCharacterLevelByGuid(invitee);
513
514 WorldPacket data(SMSG_CALENDAR_EVENT_INVITE, 8 + 8 + 8 + 1 + 1 + 1 + (statusTime ? 4 : 0) + 1);
515 data << invitee.WriteAsPacked();
516 data << uint64(invite.GetEventId());
517 data << uint64(invite.GetInviteId());
518 data << uint8(level);
519 data << uint8(invite.GetStatus());
520 data << uint8(hasStatusTime);
521 if (hasStatusTime)
522 data.AppendPackedTime(statusTime);
523 data << uint8(invite.GetSenderGUID() != invite.GetInviteeGUID()); // false only if the invite is sign-up
524
525 if (!calendarEvent) // Pre-invite
526 {
527 if (Player* player = ObjectAccessor::FindConnectedPlayer(invite.GetSenderGUID()))
528 player->SendDirectMessage(&data);
529 }
530 else
531 {
532 if (calendarEvent->GetCreatorGUID() != invite.GetInviteeGUID()) // correct?
533 SendPacketToAllEventRelatives(data, *calendarEvent);
534 }
535}
void AppendPackedTime(time_t time)
Definition ByteBuffer.cpp:137
void SendPacketToAllEventRelatives(WorldPacket packet, CalendarEvent const &calendarEvent)
Definition CalendarMgr.cpp:721
@ SMSG_CALENDAR_EVENT_INVITE
Definition Opcodes.h:1112

References ByteBuffer::AppendPackedTime(), ObjectAccessor::FindConnectedPlayer(), CalendarEvent::GetCreatorGUID(), GetEvent(), CalendarInvite::GetEventId(), CalendarInvite::GetInviteeGUID(), CalendarInvite::GetInviteId(), Unit::GetLevel(), CalendarInvite::GetSenderGUID(), CalendarInvite::GetStatus(), CalendarInvite::GetStatusTime(), sCharacterCache, Player::SendDirectMessage(), SendPacketToAllEventRelatives(), SMSG_CALENDAR_EVENT_INVITE, and ObjectGuid::WriteAsPacked().

Referenced by AddInvite().

◆ SendCalendarEventInviteAlert()

void CalendarMgr::SendCalendarEventInviteAlert ( CalendarEvent const &  calendarEvent,
CalendarInvite const &  invite 
)
604{
606 data << uint64(calendarEvent.GetEventId());
607 data << calendarEvent.GetTitle();
608 data.AppendPackedTime(calendarEvent.GetEventTime());
609 data << uint32(calendarEvent.GetFlags());
610 data << uint32(calendarEvent.GetType());
611 data << int32(calendarEvent.GetDungeonId());
612 data << uint64(invite.GetInviteId());
613 data << uint8(invite.GetStatus());
614 data << uint8(invite.GetRank());
615 data << calendarEvent.GetCreatorGUID().WriteAsPacked();
616 data << invite.GetSenderGUID().WriteAsPacked();
617
618 if (calendarEvent.IsGuildEvent() || calendarEvent.IsGuildAnnouncement())
619 {
620 if (Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId()))
621 guild->BroadcastPacket(&data);
622 }
623 else if (Player* player = ObjectAccessor::FindConnectedPlayer(invite.GetInviteeGUID()))
624 player->SendDirectMessage(&data);
625}
#define sGuildMgr
Definition GuildMgr.h:51
Definition Guild.h:292
@ SMSG_CALENDAR_EVENT_INVITE_ALERT
Definition Opcodes.h:1118

References ByteBuffer::AppendPackedTime(), ObjectAccessor::FindConnectedPlayer(), CalendarEvent::GetCreatorGUID(), CalendarEvent::GetDungeonId(), CalendarEvent::GetEventId(), CalendarEvent::GetEventTime(), CalendarEvent::GetFlags(), CalendarEvent::GetGuildId(), CalendarInvite::GetInviteeGUID(), CalendarInvite::GetInviteId(), CalendarInvite::GetRank(), CalendarInvite::GetSenderGUID(), CalendarInvite::GetStatus(), CalendarEvent::GetTitle(), CalendarEvent::GetType(), CalendarEvent::IsGuildAnnouncement(), CalendarEvent::IsGuildEvent(), sGuildMgr, SMSG_CALENDAR_EVENT_INVITE_ALERT, and ObjectGuid::WriteAsPacked().

Referenced by AddInvite().

◆ SendCalendarEventInviteRemove()

void CalendarMgr::SendCalendarEventInviteRemove ( CalendarEvent const &  calendarEvent,
CalendarInvite const &  invite,
uint32  flags 
)
582{
584 data<< invite.GetInviteeGUID().WriteAsPacked();
585 data << uint64(invite.GetEventId());
586 data << uint32(flags);
587 data << uint8(1); // FIXME
588
589 SendPacketToAllEventRelatives(data, calendarEvent);
590}
@ SMSG_CALENDAR_EVENT_INVITE_REMOVED
Definition Opcodes.h:1113

References CalendarInvite::GetEventId(), CalendarInvite::GetInviteeGUID(), SendPacketToAllEventRelatives(), SMSG_CALENDAR_EVENT_INVITE_REMOVED, and ObjectGuid::WriteAsPacked().

Referenced by RemoveInvite().

◆ SendCalendarEventInviteRemoveAlert()

void CalendarMgr::SendCalendarEventInviteRemoveAlert ( ObjectGuid  guid,
CalendarEvent const &  calendarEvent,
CalendarInviteStatus  status 
)
674{
676 {
678 data << uint64(calendarEvent.GetEventId());
679 data.AppendPackedTime(calendarEvent.GetEventTime());
680 data << uint32(calendarEvent.GetFlags());
681 data << uint8(status);
682
683 player->SendDirectMessage(&data);
684 }
685}
@ SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT
Definition Opcodes.h:1119

References ByteBuffer::AppendPackedTime(), ObjectAccessor::FindConnectedPlayer(), CalendarEvent::GetEventId(), CalendarEvent::GetEventTime(), CalendarEvent::GetFlags(), and SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT.

Referenced by RemoveInvite().

◆ SendCalendarEventModeratorStatusAlert()

void CalendarMgr::SendCalendarEventModeratorStatusAlert ( CalendarEvent const &  calendarEvent,
CalendarInvite const &  invite 
)
593{
595 data << invite.GetInviteeGUID().WriteAsPacked();
596 data << uint64(invite.GetEventId());
597 data << uint8(invite.GetRank());
598 data << uint8(1); // Unk boolean - Display to client?
599
600 SendPacketToAllEventRelatives(data, calendarEvent);
601}
@ SMSG_CALENDAR_EVENT_MODERATOR_STATUS_ALERT
Definition Opcodes.h:1123

References CalendarInvite::GetEventId(), CalendarInvite::GetInviteeGUID(), CalendarInvite::GetRank(), SendPacketToAllEventRelatives(), SMSG_CALENDAR_EVENT_MODERATOR_STATUS_ALERT, and ObjectGuid::WriteAsPacked().

◆ SendCalendarEventRemovedAlert()

void CalendarMgr::SendCalendarEventRemovedAlert ( CalendarEvent const &  calendarEvent)
572{
574 data << uint8(1); // FIXME: If true does not SignalEvent(EVENT_CALENDAR_ACTION_PENDING)
575 data << uint64(calendarEvent.GetEventId());
576 data.AppendPackedTime(calendarEvent.GetEventTime());
577
578 SendPacketToAllEventRelatives(data, calendarEvent);
579}
@ SMSG_CALENDAR_EVENT_REMOVED_ALERT
Definition Opcodes.h:1121

References ByteBuffer::AppendPackedTime(), CalendarEvent::GetEventId(), CalendarEvent::GetEventTime(), SendPacketToAllEventRelatives(), and SMSG_CALENDAR_EVENT_REMOVED_ALERT.

Referenced by RemoveEvent().

◆ SendCalendarEventStatus()

void CalendarMgr::SendCalendarEventStatus ( CalendarEvent const &  calendarEvent,
CalendarInvite const &  invite 
)
558{
559 WorldPacket data(SMSG_CALENDAR_EVENT_STATUS, 8 + 8 + 4 + 4 + 1 + 1 + 4);
560 data << invite.GetInviteeGUID().WriteAsPacked();
561 data << uint64(calendarEvent.GetEventId());
562 data.AppendPackedTime(calendarEvent.GetEventTime());
563 data << uint32(calendarEvent.GetFlags());
564 data << uint8(invite.GetStatus());
565 data << uint8(invite.GetRank());
566 data.AppendPackedTime(invite.GetStatusTime());
567
568 SendPacketToAllEventRelatives(data, calendarEvent);
569}
@ SMSG_CALENDAR_EVENT_STATUS
Definition Opcodes.h:1114

References ByteBuffer::AppendPackedTime(), CalendarEvent::GetEventId(), CalendarEvent::GetEventTime(), CalendarEvent::GetFlags(), CalendarInvite::GetInviteeGUID(), CalendarInvite::GetRank(), CalendarInvite::GetStatus(), CalendarInvite::GetStatusTime(), SendPacketToAllEventRelatives(), SMSG_CALENDAR_EVENT_STATUS, and ObjectGuid::WriteAsPacked().

◆ SendCalendarEventUpdateAlert()

void CalendarMgr::SendCalendarEventUpdateAlert ( CalendarEvent const &  calendarEvent,
time_t  oldEventTime 
)
538{
539 WorldPacket data(SMSG_CALENDAR_EVENT_UPDATED_ALERT, 1 + 8 + 4 + 4 + 4 + 1 + 4 +
540 calendarEvent.GetTitle().size() + calendarEvent.GetDescription().size() + 1 + 4 + 4);
541 data << uint8(1); // unk
542 data << uint64(calendarEvent.GetEventId());
543 data.AppendPackedTime(oldEventTime);
544 data << uint32(calendarEvent.GetFlags());
545 data.AppendPackedTime(calendarEvent.GetEventTime());
546 data << uint8(calendarEvent.GetType());
547 data << int32(calendarEvent.GetDungeonId());
548 data << calendarEvent.GetTitle();
549 data << calendarEvent.GetDescription();
550 data << uint8(CALENDAR_REPEAT_NEVER); // repeatable
552 data << uint32(0); // unk
553
554 SendPacketToAllEventRelatives(data, calendarEvent);
555}
@ SMSG_CALENDAR_EVENT_UPDATED_ALERT
Definition Opcodes.h:1122

References ByteBuffer::AppendPackedTime(), CALENDAR_MAX_INVITES, CALENDAR_REPEAT_NEVER, CalendarEvent::GetDescription(), CalendarEvent::GetDungeonId(), CalendarEvent::GetEventId(), CalendarEvent::GetEventTime(), CalendarEvent::GetFlags(), CalendarEvent::GetTitle(), CalendarEvent::GetType(), SendPacketToAllEventRelatives(), and SMSG_CALENDAR_EVENT_UPDATED_ALERT.

◆ SendPacketToAllEventRelatives()

void CalendarMgr::SendPacketToAllEventRelatives ( WorldPacket  packet,
CalendarEvent const &  calendarEvent 
)
722{
723 // Send packet to all guild members
724 if (calendarEvent.IsGuildEvent() || calendarEvent.IsGuildAnnouncement())
725 if (Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId()))
726 guild->BroadcastPacket(&packet);
727
728 // Send packet to all invitees if event is non-guild, in other case only to non-guild invitees (packet was broadcasted for them)
729 CalendarInviteStore invites = _invites[calendarEvent.GetEventId()];
730 for (CalendarInviteStore::iterator itr = invites.begin(); itr != invites.end(); ++itr)
731 if (Player* player = ObjectAccessor::FindConnectedPlayer((*itr)->GetInviteeGUID()))
732 if (!calendarEvent.IsGuildEvent() || player->GetGuildId() != calendarEvent.GetGuildId())
733 player->SendDirectMessage(&packet);
734}

References _invites, ObjectAccessor::FindConnectedPlayer(), CalendarEvent::GetEventId(), CalendarEvent::GetGuildId(), CalendarEvent::IsGuildAnnouncement(), CalendarEvent::IsGuildEvent(), and sGuildMgr.

Referenced by SendCalendarEventInvite(), SendCalendarEventInviteRemove(), SendCalendarEventModeratorStatusAlert(), SendCalendarEventRemovedAlert(), SendCalendarEventStatus(), and SendCalendarEventUpdateAlert().

◆ UpdateEvent()

void CalendarMgr::UpdateEvent ( CalendarEvent calendarEvent)
260{
262 stmt->SetData(0, calendarEvent->GetEventId());
263 stmt->SetData(1, calendarEvent->GetCreatorGUID().GetCounter());
264 stmt->SetData(2, calendarEvent->GetTitle());
265 stmt->SetData(3, calendarEvent->GetDescription());
266 stmt->SetData(4, calendarEvent->GetType());
267 stmt->SetData(5, calendarEvent->GetDungeonId());
268 stmt->SetData(6, uint32(calendarEvent->GetEventTime()));
269 stmt->SetData(7, calendarEvent->GetFlags());
270 stmt->SetData(8, (int64)calendarEvent->GetTimeZoneTime()); // correct?
271 CharacterDatabase.Execute(stmt);
272}
@ CHAR_REP_CALENDAR_EVENT
Definition CharacterDatabase.h:461
std::int64_t int64
Definition Define.h:102
CalendarEventType GetType() const
Definition CalendarMgr.h:238
time_t GetTimeZoneTime() const
Definition CalendarMgr.h:250
int32 GetDungeonId() const
Definition CalendarMgr.h:241
std::string GetTitle() const
Definition CalendarMgr.h:232
std::string GetDescription() const
Definition CalendarMgr.h:235

References CHAR_REP_CALENDAR_EVENT, CharacterDatabase, ObjectGuid::GetCounter(), CalendarEvent::GetCreatorGUID(), CalendarEvent::GetDescription(), CalendarEvent::GetDungeonId(), CalendarEvent::GetEventId(), CalendarEvent::GetEventTime(), CalendarEvent::GetFlags(), CalendarEvent::GetTimeZoneTime(), CalendarEvent::GetTitle(), CalendarEvent::GetType(), and PreparedStatementBase::SetData().

Referenced by AddEvent().

◆ UpdateInvite()

void CalendarMgr::UpdateInvite ( CalendarInvite invite,
CharacterDatabaseTransaction  trans = nullptr 
)
275{
277 stmt->SetData(0, invite->GetInviteId());
278 stmt->SetData(1, invite->GetEventId());
279 stmt->SetData(2, invite->GetInviteeGUID().GetCounter());
280 stmt->SetData(3, invite->GetSenderGUID().GetCounter());
281 stmt->SetData(4, invite->GetStatus());
282 stmt->SetData(5, uint32(invite->GetStatusTime()));
283 stmt->SetData(6, invite->GetRank());
284 stmt->SetData(7, invite->GetText());
285 CharacterDatabase.ExecuteOrAppend(trans, stmt);
286}
@ CHAR_REP_CALENDAR_INVITE
Definition CharacterDatabase.h:463
ObjectGuid GetSenderGUID() const
Definition CalendarMgr.h:166

References CHAR_REP_CALENDAR_INVITE, CharacterDatabase, ObjectGuid::GetCounter(), CalendarInvite::GetEventId(), CalendarInvite::GetInviteeGUID(), CalendarInvite::GetInviteId(), CalendarInvite::GetRank(), CalendarInvite::GetSenderGUID(), CalendarInvite::GetStatus(), CalendarInvite::GetStatusTime(), CalendarInvite::GetText(), and PreparedStatementBase::SetData().

Referenced by AddInvite().

Member Data Documentation

◆ _events

◆ _freeEventIds

std::deque<uint64> CalendarMgr::_freeEventIds
private

◆ _freeInviteIds

std::deque<uint64> CalendarMgr::_freeInviteIds
private

◆ _invites

◆ _maxEventId

uint64 CalendarMgr::_maxEventId
private

◆ _maxInviteId

uint64 CalendarMgr::_maxInviteId
private

The documentation for this class was generated from the following files: