How To Fix The Chatlogs In Snowlight

Myworld

New Member
Jun 23, 2011
9
0
First We Go to Game -> Moderation -> ModerationLogs.cs and We Remplace it With :
Code:
using System;
using System.Data;
using System.Collections.Generic;
using System.Collections.ObjectModel;

using SnowLight.Storage;
using SnowLight.Game.Rooms;
using SnowLight.Specialized;

using SnowLight.Game.Sessions;
using SnowLight.Config;

namespace SnowLight.Game.Moderation
{
    public static class ModerationLogs
    {
        public static void LogChatMessage(SqlDatabaseClient MySqlClient, uint UserId, uint RoomId, string Message)
        {

            MySqlClient.SetParameter("userid", UserId);
            MySqlClient.SetParameter("roomid", RoomId);
            MySqlClient.SetParameter("message", Message);
            MySqlClient.SetParameter("timestamp", UnixTimestamp.GetCurrent());
            MySqlClient.ExecuteNonQuery("INSERT INTO moderation_chatlogs (user_id,room_id,message,timestamp) VALUES (@userid,@roomid,@message,@timestamp)");
        }

        public static void LogRoomEntry(uint UserId, uint RoomId)
        {
            using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
            {
                double Stamp = UnixTimestamp.GetCurrent();

                MySqlClient.SetParameter("userid", UserId);
                MySqlClient.SetParameter("timestamp", Stamp);
                MySqlClient.ExecuteNonQuery("UPDATE room_visits SET timestamp_left = @timestamp WHERE user_id = @userid AND timestamp_left = 0 LIMIT 1");

                MySqlClient.SetParameter("userid", UserId);
                MySqlClient.SetParameter("roomid", RoomId);
                MySqlClient.SetParameter("timestamp", Stamp);
                MySqlClient.ExecuteNonQuery("INSERT INTO room_visits (user_id,room_id,timestamp_entered) VALUES (@userid,@roomid,@timestamp)");
            }
        }

        public static ReadOnlyCollection<ModerationRoomVisit> GetRoomVistsForUser(uint UserId, double FromTimestamp)
        {
            List<ModerationRoomVisit> Visits = new List<ModerationRoomVisit>();

            using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
            {
                MySqlClient.SetParameter("userid", UserId);
                MySqlClient.SetParameter("timestamp", FromTimestamp);
                DataTable Table = MySqlClient.ExecuteQueryTable("SELECT room_id,timestamp_entered,timestamp_left FROM room_visits WHERE user_id = @userid AND timestamp_entered >= @timestamp ORDER BY timestamp_entered DESC");

                foreach (DataRow Row in Table.Rows)
                {
                    Visits.Add(new ModerationRoomVisit((uint)Row["room_id"], (double)Row["timestamp_entered"],
                        (double)Row["timestamp_left"]));
                }
            }

            return Visits.AsReadOnly();
        }

        public static Dictionary<ModerationRoomVisit, ReadOnlyCollection<ModerationChatlogEntry>> GetLogsForUser(uint UserId, double FromTimestamp)
        {

            Dictionary<ModerationRoomVisit, ReadOnlyCollection<ModerationChatlogEntry>> Entries =
                new Dictionary<ModerationRoomVisit, ReadOnlyCollection<ModerationChatlogEntry>>();
            ReadOnlyCollection<ModerationRoomVisit> Visits = GetRoomVistsForUser(UserId, FromTimestamp);

            foreach (ModerationRoomVisit Visit in Visits)
            {
                Entries.Add(Visit, GetLogsForRoom(Visit.RoomId, Visit.TimestampEntered, Visit.TimestampLeft > 0 ?
                    Visit.TimestampLeft : UnixTimestamp.GetCurrent()));
            }

            return new Dictionary<ModerationRoomVisit, ReadOnlyCollection<ModerationChatlogEntry>>(Entries);
        }

        public static ReadOnlyCollection<ModerationChatlogEntry> GetLogsForRoom(uint RoomId, double FromTimestamp, double ToTimestamp)
        {
            List<ModerationChatlogEntry> Entries = new List<ModerationChatlogEntry>();

            using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
            {
                MySqlClient.SetParameter("roomid", RoomId);
                MySqlClient.SetParameter("timestamp_from", FromTimestamp);
                MySqlClient.SetParameter("timestamp_to", ToTimestamp);

                DataTable Table = MySqlClient.ExecuteQueryTable("SELECT user_id,room_id,timestamp,message FROM moderation_chatlogs WHERE room_id = @roomid AND timestamp >= @timestamp_from AND timestamp <= @timestamp_to ORDER BY timestamp DESC");

                foreach (DataRow Row in Table.Rows)
                {
                    Entries.Add(new ModerationChatlogEntry((uint)Row["user_id"], (uint)Row["room_id"], (double)Row["timestamp"],
                        (string)Row["message"]));
                }
            }

            return Entries.AsReadOnly();
        }

        public static void LogModerationAction(SqlDatabaseClient MySqlClient, Session Session, string ActionDescr, string ActionDetail)
        {
            MySqlClient.SetParameter("userid", Session.CharacterId);
            MySqlClient.SetParameter("username", Session.CharacterInfo.Username);
            MySqlClient.SetParameter("timestamp", UnixTimestamp.GetCurrent());
            MySqlClient.SetParameter("actiondescr", ActionDescr);
            MySqlClient.SetParameter("actiondetail", ActionDetail);
            MySqlClient.ExecuteNonQuery("INSERT INTO moderation_action_log (moderator_id,moderator_name,action_descr,action_detail,timestamp) VALUES (@userid,@username,@actiondescr,@actiondetail,@timestamp)");
        }
    }
}

Good bye Annd U Welcome
 

Users who are viewing this thread

Top