28 for (CalendarEventStore::iterator itr =
_events.begin(); itr !=
_events.end(); ++itr)
31 for (CalendarEventInviteStore::iterator itr =
_invites.begin(); itr !=
_invites.end(); ++itr)
32 for (CalendarInviteStore::iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
40 if (
QueryResult result =
CharacterDatabase.Query(
"SELECT id, creator, title, description, type, dungeon, eventtime, flags FROM calendar_events"))
43 Field* fields = result->Fetch();
47 std::string title = fields[2].
GetString();
48 std::string description = fields[3].
GetString();
58 CalendarEvent* calendarEvent =
new CalendarEvent(eventId, creatorGUID, guildId, type, dungeonId, time_t(eventTime), flags, title, description);
64 }
while (result->NextRow());
66 SF_LOG_INFO(
"server.loading",
">> Loaded %u calendar events", count);
70 if (
QueryResult result =
CharacterDatabase.Query(
"SELECT id, event, invitee, sender, status, statustime, mod_rank, text FROM calendar_invites"))
73 Field* fields = result->Fetch();
90 }
while (result->NextRow());
92 SF_LOG_INFO(
"server.loading",
">> Loaded %u calendar invites", count);
112 if (sendEventInvitePacket)
115 if (!calendarEvent->
IsGuildEvent() || forceEventInviteAlertPacket)
142 for (
size_t i = 0; i < eventInvites.size(); ++i)
165 delete calendarEvent;
175 CalendarInviteStore::iterator itr =
_invites[eventId].begin();
176 for (; itr !=
_invites[eventId].end(); ++itr)
177 if ((*itr)->GetInviteId() == inviteId)
185 stmt->
setUInt64(0, (*itr)->GetInviteId());
237 for (CalendarEventStore::const_iterator itr =
_events.begin(); itr !=
_events.end(); ++itr)
238 if ((*itr)->GetCreatorGUID() == guid)
242 for (CalendarInviteStore::const_iterator itr = playerInvites.begin(); itr != playerInvites.end(); ++itr)
243 RemoveInvite((*itr)->GetInviteId(), (*itr)->GetEventId(), guid);
248 for (CalendarEventStore::const_iterator itr =
_events.begin(); itr !=
_events.end(); ++itr)
249 if ((*itr)->GetCreatorGUID() == guid && ((*itr)->IsGuildEvent() || (*itr)->IsGuildAnnouncement()))
253 for (CalendarInviteStore::const_iterator itr = playerInvites.begin(); itr != playerInvites.end(); ++itr)
255 if (calendarEvent->IsGuildEvent() && calendarEvent->GetGuildId() == guildId)
256 RemoveInvite((*itr)->GetInviteId(), (*itr)->GetEventId(), guid);
261 for (CalendarEventStore::const_iterator itr =
_events.begin(); itr !=
_events.end(); ++itr)
262 if ((*itr)->GetEventId() == eventId)
271 for (CalendarEventInviteStore::const_iterator itr =
_invites.begin(); itr !=
_invites.end(); ++itr)
272 for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
273 if ((*itr2)->GetInviteId() == inviteId)
320 for (CalendarEventInviteStore::const_iterator itr =
_invites.begin(); itr !=
_invites.end(); ++itr)
321 for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
322 if ((*itr2)->GetInviteeGUID() == guid)
323 events.insert(
GetEvent(itr->first));
326 for (CalendarEventStore::const_iterator itr =
_events.begin(); itr !=
_events.end(); ++itr)
327 if ((*itr)->GetGuildId() == player->GetGuildId())
342 for (CalendarEventInviteStore::const_iterator itr =
_invites.begin(); itr !=
_invites.end(); ++itr)
343 for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
344 if ((*itr2)->GetInviteeGUID() == guid)
345 invites.push_back(*itr2);
355 for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
357 switch ((*itr)->GetStatus())
374 std::ostringstream strm;
375 strm << remover <<
':' <<
_title;
383 std::ostringstream strm;
406 data <<
uint8(level);
512 player->SendDirectMessage(&data);
660 player->SendDirectMessage(&data);
676 data.
WriteBits(eventInviteeList.size(), 20);
678 for (CalendarInviteStore::const_iterator iter = eventInviteeList.begin(); iter != eventInviteeList.end(); ++iter)
706 inviteeData <<
uint8(inviteeLevel);
761 data <<
uint8(sendType);
772 data <<
uint8(status);
776 player->SendDirectMessage(&data);
785 player->SendDirectMessage(&data);
793 size_t length = param.length();
812 player->SendDirectMessage(&data);
821 guild->BroadcastPacket(&packet);
825 for (CalendarInviteStore::iterator itr = invites.begin(); itr != invites.end(); ++itr)
828 player->SendDirectMessage(&packet);
std::set< CalendarEvent * > CalendarEventStore
@ CALENDAR_ERROR_OTHER_INVITES_EXCEEDED
@ CALENDAR_ERROR_ALREADY_INVITED_TO_EVENT_S
@ CALENDAR_ERROR_IGNORING_YOU_S
@ CALENDAR_ERROR_EVENT_INVALID
@ CALENDAR_FLAG_WITHOUT_INVITES
@ CALENDAR_FLAG_GUILD_EVENT
std::vector< CalendarInvite * > CalendarInviteStore
@ CALENDAR_STATUS_TENTATIVE
@ CALENDAR_STATUS_NOT_SIGNED_UP
@ CALENDAR_STATUS_INVITED
@ CALENDAR_STATUS_REMOVED
@ CHAR_REP_CALENDAR_EVENT
@ CHAR_DEL_CALENDAR_INVITE
@ CHAR_DEL_CALENDAR_EVENT
@ CHAR_REP_CALENDAR_INVITE
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_INFO(filterType__,...)
@ MAIL_CHECK_MASK_COPIED
This mail was returned. Do not allow returning mail back again.
uint32 GUID_LOPART(uint64 x)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
Skyfire::AutoPtr< ResultSet, Skyfire::Mutex > QueryResult
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
bool WriteBit(uint32 bit)
void WriteString(std::string const &str)
void WriteBits(T value, size_t bits)
void AppendPackedTime(time_t time)
void WriteByteSeq(uint8 b)
void SendCalendarEventUpdateAlert(CalendarEvent const &calendarEvent, time_t oldEventTime)
void UpdateEvent(CalendarEvent *calendarEvent)
void FreeInviteId(uint64 id)
CalendarEventInviteStore _invites
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)
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 SendCalendarCommandResult(uint64 guid, CalendarError err, std::string param="")
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 GetString() const
void BroadcastPacket(WorldPacket *packet) const
void SendMailTo(SQLTransaction &trans, MailReceiver const &receiver, MailSender const &sender, MailCheckMask checked=MAIL_CHECK_MASK_NONE, uint32 deliver_delay=0)
static Player * FindPlayer(uint64)
static uint32 GetGuildIdFromDB(uint64 guid)
uint32 GetGuildId() const
void SendDirectMessage(WorldPacket *data)
static uint32 GetLevelFromDB(uint64 guid)
void setString(const uint8 index, const std::string &value)
void setUInt64(const uint8 index, const uint64 value)
void setUInt32(const uint8 index, const uint32 value)
void setUInt8(const uint8 index, const uint8 value)
void setInt32(const uint8 index, const int32 value)
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
@ SMSG_CALENDAR_SEND_EVENT
@ SMSG_CALENDAR_CLEAR_PENDING_ACTION
@ SMSG_CALENDAR_COMMAND_RESULT
@ SMSG_CALENDAR_EVENT_UPDATED_ALERT
@ SMSG_CALENDAR_EVENT_INVITE
@ SMSG_CALENDAR_EVENT_INVITE_REMOVED
@ SMSG_CALENDAR_EVENT_REMOVED_ALERT
@ SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT
@ SMSG_CALENDAR_EVENT_INVITE_STATUS
@ SMSG_CALENDAR_EVENT_MODERATOR_STATUS
@ SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT
@ SMSG_CALENDAR_EVENT_INVITE_ALERT
std::string BuildCalendarMailSubject(uint64 remover) const
bool IsGuildAnnouncement() const
CalendarEventType GetType() const
bool IsGuildEvent() const
uint64 GetEventId() const
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
CalendarModerationRank GetRank() const
CalendarInviteStatus GetStatus() const
uint64 GetInviteId() const
uint64 GetSenderGUID() const
uint64 GetInviteeGUID() const
time_t GetStatusTime() const
std::string GetText() const
uint64 GetEventId() const