예제 #1
0
파일: Forums.cs 프로젝트: SLAGG/slaggbot
        public static string GetUsername(long userID)
        {
            var connection = Forums.GetConnection();

            lock (lck)
            {
                if (users == null)
                {
                    users = new Dictionary <long, string> ();
                }

                if (!users.ContainsKey(userID))
                {
                    connection.Open();

                    var cmd = connection.CreateCommand();
                    cmd.CommandText = "SELECT username FROM phpbb_users WHERE (user_id=" + userID + ")";

                    var reader = cmd.ExecuteReader();
                    reader.Read();

                    users.Add(userID, (string)reader["username"]);

                    reader.Close();
                    cmd.Dispose();

                    connection.Close();
                }

                return(users[userID]);
            }
        }
예제 #2
0
파일: Forums.cs 프로젝트: SLAGG/slaggbot
        private static void LoadForums()
        {
            var connection = Forums.GetConnection();

            lock (lck)
            {
                connection.Open();

                if (forums == null)
                {
                    forums = new Dictionary <ulong, string> ();

                    var cmd = connection.CreateCommand();
                    cmd.CommandText = "SELECT forum_name,forum_id FROM phpbb_forums WHERE (auth_read = 0)";

                    var reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        forums.Add(Convert.ToUInt64(reader["forum_id"]), (string)reader["forum_name"]);
                    }

                    reader.Close();
                    cmd.Dispose();
                }

                connection.Close();
            }
        }
예제 #3
0
파일: Forums.cs 프로젝트: SLAGG/slaggbot
        public static bool GetForumVisible(ulong forumID)
        {
            Forums.LoadForums();

            lock (lck)
            {
                return(forums.ContainsKey(forumID));
            }
        }
예제 #4
0
파일: Forums.cs 프로젝트: SLAGG/slaggbot
        public static string GetTopicSubject(ulong topicID)
        {
            var connection = Forums.GetConnection();

            lock (lck)
            {
                connection.Open();

                var cmd = connection.CreateCommand();
                cmd.CommandText = "SELECT topic_title FROM phpbb_topics WHERE (topic_id=" + topicID + ")";

                var reader = cmd.ExecuteReader();
                reader.Read();

                string subject = (string)reader["topic_title"];

                reader.Close();
                cmd.Dispose();

                connection.Close();

                return(subject);
            }
        }
예제 #5
0
파일: Forums.cs 프로젝트: SLAGG/slaggbot
        public static string GetPostSubject(ulong postID)
        {
            var connection = Forums.GetConnection();

            lock (lck)
            {
                connection.Open();

                var cmd = connection.CreateCommand();
                cmd.CommandText = "SELECT post_subject FROM phpbb_posts_text WHERE (post_id=" + postID + ")";

                var reader = cmd.ExecuteReader();
                reader.Read();

                string subject = (string)reader["post_subject"];

                reader.Close();
                cmd.Dispose();

                connection.Close();

                return(subject);
            }
        }
예제 #6
0
        private void Listener()
        {
            try
            {
                while (this.listening)
                {
                    MySqlDataReader reader = null;
                    MySqlCommand    cmd    = null;

                    try
                    {
                        cmd             = connection.CreateCommand();
                        cmd.CommandText = "SELECT post_id,topic_id,forum_id,poster_id FROM phpbb_posts WHERE (post_time>" + this.lastChecked + ")";
                        reader          = cmd.ExecuteReader();

                        ulong checkedTime = DateTime.UtcNow.GetTimeT();

                        while (reader.Read())
                        {
                            if (Forums.GetForumVisible(Convert.ToUInt64(reader["forum_id"])))
                            {
                                ulong postID = Convert.ToUInt64(reader["post_id"]);

                                if (postID != this.lastPostID)
                                {
                                    ulong topicID = Convert.ToUInt64(reader["topic_id"]);

                                    var msgBuilder = new StringBuilder(Forums.GetUsername(Convert.ToInt64(reader["poster_id"])));
                                    msgBuilder.Append(" posted in ");
                                    msgBuilder.Append(Forums.GetTopicSubject(topicID));
                                    msgBuilder.Append(" ( http://www.slagg.org/F0rUmZ/viewtopic.php?p=");
                                    msgBuilder.Append(postID);
                                    msgBuilder.Append("#");
                                    msgBuilder.Append(postID);
                                    msgBuilder.Append(" )");

                                    this.messanger.SendToChannel(msgBuilder.ToString());

                                    this.lastPostID = postID;
                                }
                            }
                        }
                        reader.Close();
                        cmd.Dispose();

                        this.lastChecked = checkedTime;

                        Thread.Sleep(60000);
                        //Thread.Sleep (5000);
                    }
                    catch (Exception ex)
                    {
                        this.messanger.SendToChannel("ForumPosts module b0rked: " + ex.Message);
                        this.Stop();
                    }
                    finally
                    {
                        if (reader != null)
                        {
                            reader.Close();
                        }

                        if (cmd != null)
                        {
                            cmd.Dispose();
                        }
                    }
                }
            }
            finally
            {
                if (this.connection != null)
                {
                    this.connection.Dispose();
                    this.connection = null;
                }
            }
        }