Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
CalendarMgr.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SKYFIRE_CALENDARMGR_H
7#define SKYFIRE_CALENDARMGR_H
8
9#include "Common.h"
10#include "Platform/Singleton.h"
11#include "WorldPacket.h"
12
14{
15 // else
17 // if ( *(_DWORD *)(a1 + 8292) & 0x100 )
19};
20
28
35
42
52
60
74
112
113#define CALENDAR_MAX_EVENTS 30
114#define CALENDAR_MAX_GUILD_EVENTS 100
115#define CALENDAR_MAX_INVITES 100
116
123
125{
126public:
127 CalendarInvite(CalendarInvite const& calendarInvite, uint64 inviteId, uint64 eventId, uint64 creatorGuid)
128 {
129 _inviteId = inviteId;
130 _eventId = eventId;
131 _invitee = calendarInvite.GetInviteeGUID();
132 _senderGUID = creatorGuid;
133 _statusTime = 0;
134 _status = creatorGuid == calendarInvite.GetInviteeGUID() ? CALENDAR_STATUS_CONFIRMED : CALENDAR_STATUS_INVITED;
135 _rank = creatorGuid == calendarInvite.GetInviteeGUID() ? CALENDAR_RANK_OWNER : (calendarInvite.GetRank() == CALENDAR_RANK_OWNER ? CALENDAR_RANK_MODERATOR : calendarInvite.GetRank());
136 _text = calendarInvite.GetText();
137 }
138
141
142 CalendarInvite(uint64 inviteId, uint64 eventId, uint64 invitee, uint64 senderGUID, time_t statusTime,
143 CalendarInviteStatus status, CalendarModerationRank rank, std::string text) :
144 _inviteId(inviteId), _eventId(eventId), _invitee(invitee), _senderGUID(senderGUID), _statusTime(statusTime),
145 _status(status), _rank(rank), _text(text) { }
146
148
149 void SetInviteId(uint64 inviteId) { _inviteId = inviteId; }
150 uint64 GetInviteId() const { return _inviteId; }
151
152 void SetEventId(uint64 eventId) { _eventId = eventId; }
153 uint64 GetEventId() const { return _eventId; }
154
155 void SetSenderGUID(uint64 guid) { _senderGUID = guid; }
156 uint64 GetSenderGUID() const { return _senderGUID; }
157
158 void SetInvitee(uint64 guid) { _invitee = guid; }
159 uint64 GetInviteeGUID() const { return _invitee; }
160
161 void SetStatusTime(time_t statusTime) { _statusTime = statusTime; }
162 time_t GetStatusTime() const { return _statusTime; }
163
164 void SetText(const std::string& text) { _text = text; }
165 std::string GetText() const { return _text; }
166
167 void SetStatus(CalendarInviteStatus status) { _status = status; }
169
170 void SetRank(CalendarModerationRank rank) { _rank = rank; }
172
173private:
181 std::string _text;
182};
183
185{
186public:
187 CalendarEvent(CalendarEvent const& calendarEvent, uint64 eventId, uint64 newCreatorGuid)
188 {
189 _eventId = eventId;
190 _creatorGUID = newCreatorGuid;
191 _guildId = calendarEvent.GetGuildId();
192 _type = calendarEvent.GetType();
193 _dungeonId = calendarEvent.GetDungeonId();
194 _eventTime = calendarEvent.GetEventTime();
195 _flags = calendarEvent.GetFlags();
196 _title = calendarEvent.GetTitle();
197 _description = calendarEvent.GetDescription();
198 }
199
200 CalendarEvent(uint64 eventId, uint64 creatorGUID, uint32 guildId, CalendarEventType type, int32 dungeonId,
201 time_t eventTime, uint32 flags, std::string title, std::string description) :
202 _eventId(eventId), _creatorGUID(creatorGUID), _guildId(guildId), _type(type), _dungeonId(dungeonId),
203 _eventTime(eventTime), _flags(flags), _title(title),
204 _description(description) { }
205
208
210
211 void SetEventId(uint64 eventId) { _eventId = eventId; }
212 uint64 GetEventId() const { return _eventId; }
213
214 void SetCreatorGUID(uint64 guid) { _creatorGUID = guid; }
216
217 void SetGuildId(uint32 guildId) { _guildId = guildId; }
218 uint32 GetGuildId() const { return _guildId; }
219
220 void SetTitle(const std::string& title) { _title = title; }
221 std::string GetTitle() const { return _title; }
222
223 void SetDescription(const std::string& description) { _description = description; }
224 std::string GetDescription() const { return _description; }
225
226 void SetType(CalendarEventType type) { _type = type; }
227 CalendarEventType GetType() const { return _type; }
228
229 void SetDungeonId(int32 dungeonId) { _dungeonId = dungeonId; }
230 int32 GetDungeonId() const { return _dungeonId; }
231
232 void SetEventTime(time_t eventTime) { _eventTime = eventTime; }
233 time_t GetEventTime() const { return _eventTime; }
234
235 void SetFlags(uint32 flags) { _flags = flags; }
236 uint32 GetFlags() const { return _flags; }
237
240
241 std::string BuildCalendarMailSubject(uint64 remover) const;
242 std::string BuildCalendarMailBody() const;
243
244private:
252 std::string _title;
253 std::string _description;
254};
255typedef std::vector<CalendarInvite*> CalendarInviteStore;
256typedef std::set<CalendarEvent*> CalendarEventStore;
257typedef std::map<uint64 /* eventId */, CalendarInviteStore > CalendarEventInviteStore;
258
260{
261 friend class Skyfire::Singleton<CalendarMgr, Skyfire::NullMutex>;
262
263private:
265 ~CalendarMgr();
266
269
270 std::deque<uint64> _freeEventIds;
271 std::deque<uint64> _freeInviteIds;
274
275public:
276 void LoadFromDB();
277
278 CalendarEvent* GetEvent(uint64 eventId) const;
279 CalendarEventStore const& GetEvents() const { return _events; }
281
282 CalendarInvite* GetInvite(uint64 inviteId) const;
286
287 void FreeEventId(uint64 id);
289 void FreeInviteId(uint64 id);
291
293
294 void AddEvent(CalendarEvent* calendarEvent, CalendarSendEventType sendType);
295 void RemoveEvent(uint64 eventId, uint64 remover);
296 void UpdateEvent(CalendarEvent* calendarEvent);
297
298 void AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, bool sendEventInvitePacket = true, bool forceEventInviteAlertPacket = false);
299 void RemoveInvite(uint64 inviteId, uint64 eventId, uint64 remover);
300 void UpdateInvite(CalendarInvite* invite);
301
304
305 void SendCalendarEvent(uint64 playerGuid, CalendarEvent const& calendarEvent, CalendarSendEventType sendType);
306 void SendCalendarEventInvite(CalendarInvite const& invite);
307 void SendCalendarEventInviteAlert(CalendarEvent const& calendarEvent, CalendarInvite const& invite, bool broadcast);
308 void SendCalendarEventInviteRemove(CalendarEvent const& calendarEvent, CalendarInvite const& invite, uint32 flags);
309 void SendCalendarEventInviteRemoveAlert(uint64 guid, CalendarEvent const& calendarEvent, CalendarInviteStatus status);
310 void SendCalendarEventUpdateAlert(CalendarEvent const& calendarEvent, time_t oldEventTime);
311 void SendCalendarEventStatus(CalendarEvent const& calendarEvent, CalendarInvite const& invite);
312 void SendCalendarEventStatusAlert(CalendarEvent const& calendarEvent, CalendarInvite const& invite);
313 void SendCalendarEventRemovedAlert(CalendarEvent const& calendarEvent);
314 void SendCalendarEventModeratorStatus(CalendarEvent const& calendarEvent, CalendarInvite const& invite);
316 void SendCalendarCommandResult(uint64 guid, CalendarError err, std::string param = "");
317
318 void SendPacketToAllEventRelatives(WorldPacket packet, CalendarEvent const& calendarEvent);
319};
320
321#define sCalendarMgr Skyfire::Singleton<CalendarMgr, Skyfire::NullMutex>::instance()
322
323#endif
std::set< CalendarEvent * > CalendarEventStore
CalendarError
Definition CalendarMgr.h:76
@ CALENDAR_ERROR_INTERNAL
Definition CalendarMgr.h:85
@ CALENDAR_ERROR_INVALID_SIGNUP
@ CALENDAR_ERROR_NO_INVITE
@ CALENDAR_ERROR_SYSTEM_DISABLED
Definition CalendarMgr.h:99
@ CALENDAR_ERROR_EVENT_PASSED
Definition CalendarMgr.h:96
@ CALENDAR_ERROR_NOT_INVITED
Definition CalendarMgr.h:84
@ CALENDAR_ERROR_EVENT_LOCKED
Definition CalendarMgr.h:97
@ CALENDAR_ERROR_ARENA_EVENTS_EXCEEDED
@ CALENDAR_ERROR_OTHER_INVITES_EXCEEDED
Definition CalendarMgr.h:81
@ CALENDAR_ERROR_SELF_INVITES_EXCEEDED
Definition CalendarMgr.h:80
@ CALENDAR_ERROR_NOT_ALLIED
Definition CalendarMgr.h:89
@ CALENDAR_ERROR_PERMISSIONS
Definition CalendarMgr.h:82
@ CALENDAR_ERROR_EVENTS_EXCEEDED
Definition CalendarMgr.h:79
@ CALENDAR_ERROR_NO_GUILD_INVITES
@ CALENDAR_ERROR_INVALID_DATE
Definition CalendarMgr.h:92
@ CALENDAR_ERROR_NEEDS_TITLE
Definition CalendarMgr.h:95
@ CALENDAR_ERROR_RESTRICTED_LEVEL
@ CALENDAR_ERROR_DELETE_CREATOR_FAILED
Definition CalendarMgr.h:98
@ CALENDAR_ERROR_GUILD_EVENTS_EXCEEDED
Definition CalendarMgr.h:78
@ CALENDAR_ERROR_NO_MODERATOR
@ CALENDAR_ERROR_INVITE_WRONG_SERVER
@ CALENDAR_ERROR_ALREADY_INVITED_TO_EVENT_S
Definition CalendarMgr.h:87
@ CALENDAR_ERROR_INVITES_EXCEEDED
Definition CalendarMgr.h:91
@ CALENDAR_ERROR_INVALID_TIME
Definition CalendarMgr.h:93
@ CALENDAR_ERROR_EVENT_WRONG_SERVER
@ CALENDAR_ERROR_RESTRICTED_ACCOUNT
@ CALENDAR_ERROR_IGNORING_YOU_S
Definition CalendarMgr.h:90
@ CALENDAR_ERROR_USER_SQUELCHED
@ CALENDAR_ERROR_PLAYER_NOT_FOUND
Definition CalendarMgr.h:88
@ CALENDAR_OK
Definition CalendarMgr.h:77
@ CALENDAR_ERROR_EVENT_INVALID
Definition CalendarMgr.h:83
@ CALENDAR_ERROR_GUILD_PLAYER_NOT_IN_GUILD
Definition CalendarMgr.h:86
CalendarRepeatType
Definition CalendarMgr.h:54
@ CALENDAR_REPEAT_BIWEEKLY
Definition CalendarMgr.h:57
@ CALENDAR_REPEAT_WEEKLY
Definition CalendarMgr.h:56
@ CALENDAR_REPEAT_NEVER
Definition CalendarMgr.h:55
@ CALENDAR_REPEAT_MONTHLY
Definition CalendarMgr.h:58
CalendarModerationRank
Definition CalendarMgr.h:30
@ CALENDAR_RANK_PLAYER
Definition CalendarMgr.h:31
@ CALENDAR_RANK_MODERATOR
Definition CalendarMgr.h:32
@ CALENDAR_RANK_OWNER
Definition CalendarMgr.h:33
CalendarFlags
Definition CalendarMgr.h:22
@ CALENDAR_FLAG_WITHOUT_INVITES
Definition CalendarMgr.h:25
@ CALENDAR_FLAG_INVITES_LOCKED
Definition CalendarMgr.h:24
@ CALENDAR_FLAG_GUILD_EVENT
Definition CalendarMgr.h:26
@ CALENDAR_FLAG_ALL_ALLOWED
Definition CalendarMgr.h:23
std::vector< CalendarInvite * > CalendarInviteStore
CalendarSendEventType
Definition CalendarMgr.h:37
@ CALENDAR_SENDTYPE_GET
Definition CalendarMgr.h:38
@ CALENDAR_SENDTYPE_COPY
Definition CalendarMgr.h:40
@ CALENDAR_SENDTYPE_ADD
Definition CalendarMgr.h:39
CalendarMailAnswers
Definition CalendarMgr.h:14
@ CALENDAR_EVENT_REMOVED_MAIL_SUBJECT
Definition CalendarMgr.h:16
@ CALENDAR_INVITE_REMOVED_MAIL_SUBJECT
Definition CalendarMgr.h:18
CalendarEventType
Definition CalendarMgr.h:44
@ CALENDAR_TYPE_OTHER
Definition CalendarMgr.h:49
@ CALENDAR_TYPE_HEROIC
Definition CalendarMgr.h:50
@ CALENDAR_TYPE_RAID
Definition CalendarMgr.h:45
@ CALENDAR_TYPE_MEETING
Definition CalendarMgr.h:48
@ CALENDAR_TYPE_PVP
Definition CalendarMgr.h:47
@ CALENDAR_TYPE_DUNGEON
Definition CalendarMgr.h:46
CalendarInviteStatus
Definition CalendarMgr.h:62
@ CALENDAR_STATUS_TENTATIVE
Definition CalendarMgr.h:71
@ CALENDAR_STATUS_NOT_SIGNED_UP
Definition CalendarMgr.h:70
@ CALENDAR_STATUS_STANDBY
Definition CalendarMgr.h:68
@ CALENDAR_STATUS_INVITED
Definition CalendarMgr.h:63
@ CALENDAR_STATUS_ACCEPTED
Definition CalendarMgr.h:64
@ CALENDAR_STATUS_SIGNED_UP
Definition CalendarMgr.h:69
@ CALENDAR_STATUS_REMOVED
Definition CalendarMgr.h:72
@ CALENDAR_STATUS_DECLINED
Definition CalendarMgr.h:65
@ CALENDAR_STATUS_CONFIRMED
Definition CalendarMgr.h:66
@ CALENDAR_STATUS_OUT
Definition CalendarMgr.h:67
std::map< uint64, CalendarInviteStore > CalendarEventInviteStore
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
void SendCalendarEventUpdateAlert(CalendarEvent const &calendarEvent, time_t oldEventTime)
void UpdateEvent(CalendarEvent *calendarEvent)
uint64 _maxInviteId
uint64 GetFreeEventId()
void FreeInviteId(uint64 id)
CalendarEventInviteStore _invites
CalendarEventStore const & GetEvents() const
void SendPacketToAllEventRelatives(WorldPacket packet, CalendarEvent const &calendarEvent)
std::deque< uint64 > _freeEventIds
CalendarEventStore GetPlayerEvents(uint64 guid)
void FreeEventId(uint64 id)
void SendCalendarEventInviteAlert(CalendarEvent const &calendarEvent, CalendarInvite const &invite, bool broadcast)
uint64 GetFreeInviteId()
CalendarEventStore _events
void RemoveEvent(uint64 eventId, uint64 remover)
void SendCalendarEventModeratorStatus(CalendarEvent const &calendarEvent, CalendarInvite const &invite)
void SendCalendarEventInviteRemove(CalendarEvent const &calendarEvent, CalendarInvite const &invite, uint32 flags)
void SendCalendarEventRemovedAlert(CalendarEvent const &calendarEvent)
void SendCalendarEventStatusAlert(CalendarEvent const &calendarEvent, CalendarInvite const &invite)
void SendCalendarClearPendingAction(uint64 guid)
CalendarInvite * GetInvite(uint64 inviteId) const
uint32 GetPlayerNumPending(uint64 guid)
void SendCalendarEventStatus(CalendarEvent const &calendarEvent, CalendarInvite const &invite)
void RemovePlayerGuildEventsAndSignups(uint64 guid, uint32 guildId)
void SendCalendarEventInviteRemoveAlert(uint64 guid, CalendarEvent const &calendarEvent, CalendarInviteStatus status)
void UpdateInvite(CalendarInvite *invite)
void LoadFromDB()
CalendarEventInviteStore const & GetInvites() const
void SendCalendarCommandResult(uint64 guid, CalendarError err, std::string param="")
uint64 _maxEventId
std::deque< uint64 > _freeInviteIds
void AddInvite(CalendarEvent *calendarEvent, CalendarInvite *invite, bool sendEventInvitePacket=true, bool forceEventInviteAlertPacket=false)
CalendarEvent * GetEvent(uint64 eventId) const
CalendarInviteStore const & GetEventInvites(uint64 eventId)
void RemoveAllPlayerEventsAndInvites(uint64 guid)
void RemoveInvite(uint64 inviteId, uint64 eventId, uint64 remover)
void SendCalendarEventInvite(CalendarInvite const &invite)
void AddEvent(CalendarEvent *calendarEvent, CalendarSendEventType sendType)
CalendarInviteStore GetPlayerInvites(uint64 guid)
void SendCalendarEvent(uint64 playerGuid, CalendarEvent const &calendarEvent, CalendarSendEventType sendType)
std::string BuildCalendarMailSubject(uint64 remover) const
bool IsGuildAnnouncement() const
void SetGuildId(uint32 guildId)
CalendarEvent(uint64 eventId, uint64 creatorGUID, uint32 guildId, CalendarEventType type, int32 dungeonId, time_t eventTime, uint32 flags, std::string title, std::string description)
CalendarEventType GetType() const
std::string _description
CalendarEventType _type
CalendarEvent(CalendarEvent const &calendarEvent, uint64 eventId, uint64 newCreatorGuid)
bool IsGuildEvent() const
void SetDescription(const std::string &description)
void SetEventId(uint64 eventId)
uint64 _creatorGUID
void SetTitle(const std::string &title)
void SetEventTime(time_t eventTime)
uint64 GetEventId() const
time_t _eventTime
void SetType(CalendarEventType type)
std::string _title
void SetCreatorGUID(uint64 guid)
void SetDungeonId(int32 dungeonId)
uint64 GetCreatorGUID() const
int32 GetDungeonId() const
std::string GetTitle() const
std::string BuildCalendarMailBody() const
uint32 GetGuildId() const
time_t GetEventTime() const
std::string GetDescription() const
uint32 GetFlags() const
void SetFlags(uint32 flags)
void SetStatus(CalendarInviteStatus status)
void SetInvitee(uint64 guid)
CalendarModerationRank GetRank() const
void SetRank(CalendarModerationRank rank)
CalendarModerationRank _rank
CalendarInviteStatus GetStatus() const
CalendarInvite(CalendarInvite const &calendarInvite, uint64 inviteId, uint64 eventId, uint64 creatorGuid)
uint64 GetInviteId() const
uint64 GetSenderGUID() const
uint64 GetInviteeGUID() const
void SetSenderGUID(uint64 guid)
void SetStatusTime(time_t statusTime)
void SetInviteId(uint64 inviteId)
std::string _text
void SetText(const std::string &text)
CalendarInvite(uint64 inviteId, uint64 eventId, uint64 invitee, uint64 senderGUID, time_t statusTime, CalendarInviteStatus status, CalendarModerationRank rank, std::string text)
time_t GetStatusTime() const
std::string GetText() const
uint64 GetEventId() const
CalendarInviteStatus _status
void SetEventId(uint64 eventId)