diff --git a/alerts.go b/alerts.go new file mode 100644 index 00000000..4e72774f --- /dev/null +++ b/alerts.go @@ -0,0 +1,113 @@ +package main + +import "strings" +import "strconv" +import "errors" + +/* +"You received a friend invite from {user}" +"{x}{mentioned you on}{user}{'s profile}" +"{x}{mentioned you in}{topic}" +"{x}{likes}{you}" +"{x}{liked}{your topic}{topic}" +"{x}{liked}{your post on}{user}{'s profile}" todo +"{x}{liked}{your post in}{topic}" +"{x}{replied to}{your post in}{topic}" todo +"{x}{replied to}{topic}" +"{x}{replied to}{your topic}{topic}" +"{x}{created a new topic}{topic}" +*/ + +func build_alert(event string, elementType string, actor_id int, targetUser_id int, elementID int, user User /* The current user */) (string, error) { + var targetUser *User + + actor, err := users.CascadeGet(actor_id) + if err != nil { + return "", errors.New("Unable to find the actor") + } + + /*if elementType != "forum" { + targetUser, err = users.CascadeGet(targetUser_id) + if err != nil { + LocalErrorJS("Unable to find the target user",w,r) + return + } + }*/ + + if event == "friend_invite" { + return `{"msg":"You received a friend invite from {0}","sub":["` + actor.Name + `"],"path":"\/user\/`+strconv.Itoa(actor.ID)+`","avatar":"`+strings.Replace(actor.Avatar,"/","\\/",-1)+`"}`, nil + } + + var act, post_act, url, area string + var start_frag, end_frag string + switch(elementType) { + case "forum": + if event == "reply" { + act = "created a new topic" + topic, err := topics.CascadeGet(elementID) + if err != nil { + return "", errors.New("Unable to find the linked topic") + } + url = build_topic_url(elementID) + area = topic.Title + // Store the forum ID in the targetUser column instead of making a new one? o.O + // Add an additional column for extra information later on when we add the ability to link directly to posts. We don't need the forum data for now... + } else { + act = "did something in a forum" + } + case "topic": + topic, err := topics.CascadeGet(elementID) + if err != nil { + return "", errors.New("Unable to find the linked topic") + } + url = build_topic_url(elementID) + area = topic.Title + + if targetUser_id == user.ID { + post_act = " your topic" + } + case "user": + targetUser, err = users.CascadeGet(elementID) + if err != nil { + return "", errors.New("Unable to find the target user") + } + area = targetUser.Name + end_frag = "'s profile" + url = build_profile_url(elementID) + case "post": + topic, err := get_topic_by_reply(elementID) + if err != nil { + return "", errors.New("Unable to find the linked reply or parent topic") + } + url = build_topic_url(topic.ID) + area = topic.Title + if targetUser_id == user.ID { + post_act = " your post in" + } + default: + return "", errors.New("Invalid elementType") + } + + switch(event) { + case "like": + if elementType == "user" { + act = "likes" + end_frag = "" + if targetUser.ID == user.ID { + area = "you" + } + } else { + act = "liked" + } + case "mention": + if elementType == "user" { + act = "mentioned you on" + } else { + act = "mentioned you in" + post_act = "" + } + case "reply": act = "replied to" + } + + return `{"msg":"{0} ` + start_frag + act + post_act + ` {1}` + end_frag + `","sub":["` + actor.Name + `","` + area + `"],"path":"` + url + `","avatar":"` + actor.Avatar + `"}`, nil +} diff --git a/gen_mysql.go b/gen_mysql.go index 45a283c9..0675c54f 100644 --- a/gen_mysql.go +++ b/gen_mysql.go @@ -40,7 +40,17 @@ var create_reply_stmt *sql.Stmt var create_action_reply_stmt *sql.Stmt var create_like_stmt *sql.Stmt var add_activity_stmt *sql.Stmt +var notify_one_stmt *sql.Stmt var register_stmt *sql.Stmt +var create_profile_reply_stmt *sql.Stmt +var create_forum_stmt *sql.Stmt +var add_forum_perms_to_forum_stmt *sql.Stmt +var add_plugin_stmt *sql.Stmt +var add_theme_stmt *sql.Stmt +var create_group_stmt *sql.Stmt +var add_modlog_entry_stmt *sql.Stmt +var add_adminlog_entry_stmt *sql.Stmt +var add_forum_perms_to_group_stmt *sql.Stmt var add_replies_to_topic_stmt *sql.Stmt var remove_replies_from_topic_stmt *sql.Stmt var add_topics_to_forum_stmt *sql.Stmt @@ -60,6 +70,22 @@ var set_avatar_stmt *sql.Stmt var set_username_stmt *sql.Stmt var change_group_stmt *sql.Stmt var activate_user_stmt *sql.Stmt +var update_user_level_stmt *sql.Stmt +var increment_user_score_stmt *sql.Stmt +var increment_user_posts_stmt *sql.Stmt +var increment_user_bigposts_stmt *sql.Stmt +var increment_user_megaposts_stmt *sql.Stmt +var increment_user_topics_stmt *sql.Stmt +var edit_profile_reply_stmt *sql.Stmt +var delete_forum_stmt *sql.Stmt +var update_forum_stmt *sql.Stmt +var update_setting_stmt *sql.Stmt +var update_plugin_stmt *sql.Stmt +var update_theme_stmt *sql.Stmt +var update_user_stmt *sql.Stmt +var update_group_perms_stmt *sql.Stmt +var update_group_rank_stmt *sql.Stmt +var update_group_stmt *sql.Stmt func gen_mysql() (err error) { if debug { @@ -270,12 +296,72 @@ func gen_mysql() (err error) { return err } + log.Print("Preparing notify_one statement.") + notify_one_stmt, err = db.Prepare("INSERT INTO `activity_stream_matches`(`watcher`,`asid`) VALUES (?,?)") + if err != nil { + return err + } + log.Print("Preparing register statement.") register_stmt, err = db.Prepare("INSERT INTO `users`(`name`,`email`,`password`,`salt`,`group`,`is_super_admin`,`session`,`active`,`message`) VALUES (?,?,?,?,?,0,?,?,'')") if err != nil { return err } + log.Print("Preparing create_profile_reply statement.") + create_profile_reply_stmt, err = db.Prepare("INSERT INTO `users_replies`(`uid`,`content`,`parsed_content`,`createdAt`,`createdBy`) VALUES (?,?,?,NOW(),?)") + if err != nil { + return err + } + + log.Print("Preparing create_forum statement.") + create_forum_stmt, err = db.Prepare("INSERT INTO `forums`(`name`,`desc`,`active`,`preset`) VALUES (?,?,?,?)") + if err != nil { + return err + } + + log.Print("Preparing add_forum_perms_to_forum statement.") + add_forum_perms_to_forum_stmt, err = db.Prepare("INSERT INTO `forums_permissions`(`gid`,`fid`,`preset`,`permissions`) VALUES (?,?,?,?)") + if err != nil { + return err + } + + log.Print("Preparing add_plugin statement.") + add_plugin_stmt, err = db.Prepare("INSERT INTO `plugins`(`uname`,`active`) VALUES (?,?)") + if err != nil { + return err + } + + log.Print("Preparing add_theme statement.") + add_theme_stmt, err = db.Prepare("INSERT INTO `themes`(`uname`,`default`) VALUES (?,?)") + if err != nil { + return err + } + + log.Print("Preparing create_group statement.") + create_group_stmt, err = db.Prepare("INSERT INTO `users_groups`(`name`,`tag`,`is_admin`,`is_mod`,`is_banned`,`permissions`) VALUES (?,?,?,?,?,?)") + if err != nil { + return err + } + + log.Print("Preparing add_modlog_entry statement.") + add_modlog_entry_stmt, err = db.Prepare("INSERT INTO `moderation_logs`(`action`,`elementID`,`elementType`,`ipaddress`,`actorID`,`doneAt`) VALUES (?,?,?,?,?,NOW())") + if err != nil { + return err + } + + log.Print("Preparing add_adminlog_entry statement.") + add_adminlog_entry_stmt, err = db.Prepare("INSERT INTO `administration_logs`(`action`,`elementID`,`elementType`,`ipaddress`,`actorID`,`doneAt`) VALUES (?,?,?,?,?,NOW())") + if err != nil { + return err + } + + log.Print("Preparing add_forum_perms_to_group statement.") + add_forum_perms_to_group_stmt, err = db.Prepare("REPLACE INTO `forums_permissions`(`gid`,`fid`,`preset`,`permissions`) VALUES (?,?,?,?)") + if err != nil { + return err + } + log.Print("Preparing add_replies_to_topic statement.") add_replies_to_topic_stmt, err = db.Prepare("UPDATE `topics` SET `postCount` = `postCount` + ?,`lastReplyAt` = NOW() WHERE `tid` = ? ") if err != nil { @@ -389,6 +475,102 @@ func gen_mysql() (err error) { if err != nil { return err } + + log.Print("Preparing update_user_level statement.") + update_user_level_stmt, err = db.Prepare("UPDATE `users` SET `level` = ? WHERE `uid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing increment_user_score statement.") + increment_user_score_stmt, err = db.Prepare("UPDATE `users` SET `score` = `score` + ? WHERE `uid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing increment_user_posts statement.") + increment_user_posts_stmt, err = db.Prepare("UPDATE `users` SET `posts` = `posts` + ? WHERE `uid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing increment_user_bigposts statement.") + increment_user_bigposts_stmt, err = db.Prepare("UPDATE `users` SET `posts` = `posts` + ?,`bigposts` = `bigposts` + ? WHERE `uid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing increment_user_megaposts statement.") + increment_user_megaposts_stmt, err = db.Prepare("UPDATE `users` SET `posts` = `posts` + ?,`bigposts` = `bigposts` + ?,`megaposts` = `megaposts` + ? WHERE `uid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing increment_user_topics statement.") + increment_user_topics_stmt, err = db.Prepare("UPDATE `users` SET `topics` = `topics` + ? WHERE `uid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing edit_profile_reply statement.") + edit_profile_reply_stmt, err = db.Prepare("UPDATE `users_replies` SET `content` = ?,`parsed_content` = ? WHERE `rid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing delete_forum statement.") + delete_forum_stmt, err = db.Prepare("UPDATE `forums` SET `name` = '',`active` = 0 WHERE `fid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing update_forum statement.") + update_forum_stmt, err = db.Prepare("UPDATE `forums` SET `name` = ?,`desc` = ?,`active` = ?,`preset` = ? WHERE `fid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing update_setting statement.") + update_setting_stmt, err = db.Prepare("UPDATE `settings` SET `content` = ? WHERE `name` = ? ") + if err != nil { + return err + } + + log.Print("Preparing update_plugin statement.") + update_plugin_stmt, err = db.Prepare("UPDATE `plugins` SET `active` = ? WHERE `uname` = ? ") + if err != nil { + return err + } + + log.Print("Preparing update_theme statement.") + update_theme_stmt, err = db.Prepare("UPDATE `themes` SET `default` = ? WHERE `uname` = ? ") + if err != nil { + return err + } + + log.Print("Preparing update_user statement.") + update_user_stmt, err = db.Prepare("UPDATE `users` SET `name` = ?,`email` = ?,`group` = ? WHERE `uid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing update_group_perms statement.") + update_group_perms_stmt, err = db.Prepare("UPDATE `users_groups` SET `permissions` = ? WHERE `gid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing update_group_rank statement.") + update_group_rank_stmt, err = db.Prepare("UPDATE `users_groups` SET `is_admin` = ?,`is_mod` = ?,`is_banned` = ? WHERE `gid` = ? ") + if err != nil { + return err + } + + log.Print("Preparing update_group statement.") + update_group_stmt, err = db.Prepare("UPDATE `users_groups` SET `name` = ?,`tag` = ? WHERE `gid` = ? ") + if err != nil { + return err + } return nil } diff --git a/general_test.go b/general_test.go index 29c92ebd..d92dd6b4 100644 --- a/general_test.go +++ b/general_test.go @@ -1,34 +1,40 @@ package main -import "os" -import "fmt" -import "log" -import "bytes" -import "strings" -import "strconv" -import "math/rand" -import "testing" -import "net/http" -import "net/http/httptest" -import "io/ioutil" -import "database/sql" -import "runtime/pprof" -//import _ "github.com/go-sql-driver/mysql" -//import "github.com/erikstmartin/go-testdb" -//import "github.com/husobee/vestigo" +import ( + "os" + "fmt" + "log" + "bytes" + "strings" + "strconv" + //"math/rand" + "testing" + "time" + "net/http" + "net/http/httptest" + "io/ioutil" + "database/sql" + "runtime/pprof" + + //_ "github.com/go-sql-driver/mysql" + //"github.com/erikstmartin/go-testdb" + //"github.com/husobee/vestigo" +) -var db_test *sql.DB -var db_prod *sql.DB +var db_test, db_prod *sql.DB var gloinited bool = false func gloinit() { debug = false - nogrouplog = true + //nogrouplog = true // init_database is a little noisy for a benchmark //discard := ioutil.Discard //log.SetOutput(discard) + startTime = time.Now() + timeLocation = startTime.Location() + init_themes() err := init_database() if err != nil { @@ -352,7 +358,7 @@ func BenchmarkForumsGuestRouteParallel(b *testing.B) { } -func BenchmarkRoutesSerial(b *testing.B) { +/*func BenchmarkRoutesSerial(b *testing.B) { b.ReportAllocs() admin, err := users.CascadeGet(1) if err != nil { @@ -404,13 +410,13 @@ func BenchmarkRoutesSerial(b *testing.B) { gloinit() } - /*f, err := os.Create("routes_bench_cpu.prof") - if err != nil { - log.Fatal(err) - } - pprof.StartCPUProfile(f)*/ - //defer pprof.StopCPUProfile() - //pprof.StopCPUProfile() + //f, err := os.Create("routes_bench_cpu.prof") + //if err != nil { + // log.Fatal(err) + //} + //pprof.StartCPUProfile(f) + ///defer pprof.StopCPUProfile() + ///pprof.StopCPUProfile() b.Run("static_recorder", func(b *testing.B) { for i := 0; i < b.N; i++ { @@ -490,11 +496,11 @@ func BenchmarkRoutesSerial(b *testing.B) { } }) b.Run("forums_guest_recorder", func(b *testing.B) { - /*f, err := os.Create("routes_bench_forums_cpu_2.prof") - if err != nil { - log.Fatal(err) - } - pprof.StartCPUProfile(f)*/ + //f, err := os.Create("routes_bench_forums_cpu_2.prof") + //if err != nil { + // log.Fatal(err) + //} + //pprof.StartCPUProfile(f) for i := 0; i < b.N; i++ { //forums_w.Code = 200 forums_w.Body.Reset() @@ -508,11 +514,11 @@ func BenchmarkRoutesSerial(b *testing.B) { } b.Run("topic_admin_recorder_with_plugins", func(b *testing.B) { - /*f, err := os.Create("routes_bench_topic_cpu.prof") - if err != nil { - log.Fatal(err) - } - pprof.StartCPUProfile(f)*/ + //f, err := os.Create("routes_bench_topic_cpu.prof") + //if err != nil { + // log.Fatal(err) + //} + //pprof.StartCPUProfile(f) for i := 0; i < b.N; i++ { //topic_w.Code = 200 topic_w.Body.Reset() @@ -525,11 +531,11 @@ func BenchmarkRoutesSerial(b *testing.B) { //pprof.StopCPUProfile() }) b.Run("topic_guest_recorder_with_plugins", func(b *testing.B) { - /*f, err := os.Create("routes_bench_topic_cpu_2.prof") - if err != nil { - log.Fatal(err) - } - pprof.StartCPUProfile(f)*/ + //f, err := os.Create("routes_bench_topic_cpu_2.prof") + //if err != nil { + // log.Fatal(err) + //} + //pprof.StartCPUProfile(f) for i := 0; i < b.N; i++ { //topic_w.Code = 200 topic_w.Body.Reset() @@ -573,11 +579,11 @@ func BenchmarkRoutesSerial(b *testing.B) { } }) b.Run("forums_guest_recorder_with_plugins", func(b *testing.B) { - /*f, err := os.Create("routes_bench_forums_cpu_2.prof") - if err != nil { - log.Fatal(err) - } - pprof.StartCPUProfile(f)*/ + //f, err := os.Create("routes_bench_forums_cpu_2.prof") + //if err != nil { + // log.Fatal(err) + //} + //pprof.StartCPUProfile(f) for i := 0; i < b.N; i++ { //forums_w.Code = 200 forums_w.Body.Reset() @@ -585,7 +591,7 @@ func BenchmarkRoutesSerial(b *testing.B) { } //pprof.StopCPUProfile() }) -} +}*/ func BenchmarkQueryTopicParallel(b *testing.B) { b.ReportAllocs() @@ -1224,7 +1230,7 @@ func TestStaticRoute(t *testing.T) { fmt.Println("No problems found in the static route!") } -func TestTopicAdminRoute(t *testing.T) { +/*func TestTopicAdminRoute(t *testing.T) { if !gloinited { gloinit() } @@ -1256,9 +1262,9 @@ func TestTopicAdminRoute(t *testing.T) { panic("HTTP Error!") } fmt.Println("No problems found in the topic-admin route!") -} +}*/ -func TestTopicGuestRoute(t *testing.T) { +/*func TestTopicGuestRoute(t *testing.T) { if !gloinited { gloinit() } @@ -1276,7 +1282,7 @@ func TestTopicGuestRoute(t *testing.T) { panic("HTTP Error!") } fmt.Println("No problems found in the topic-guest route!") -} +}*/ func TestForumsAdminRoute(t *testing.T) { if !gloinited { @@ -1331,7 +1337,7 @@ func TestForumsGuestRoute(t *testing.T) { fmt.Println("No problems found in the forums-guest route!") } -func TestForumAdminRoute(t *testing.T) { +/*func TestForumAdminRoute(t *testing.T) { if !gloinited { gloinit() } @@ -1362,9 +1368,9 @@ func TestForumAdminRoute(t *testing.T) { panic("HTTP Error!") } fmt.Println("No problems found in the forum-admin route!") -} +}*/ -func TestForumGuestRoute(t *testing.T) { +/*func TestForumGuestRoute(t *testing.T) { if !gloinited { gloinit() } @@ -1382,7 +1388,7 @@ func TestForumGuestRoute(t *testing.T) { panic("HTTP Error!") } fmt.Println("No problems found in the forum-guest route!") -} +}*/ /*func TestAlerts(t *testing.T) { if !gloinited { diff --git a/mysql.go b/mysql.go index df2aaef8..b66a9829 100644 --- a/mysql.go +++ b/mysql.go @@ -16,49 +16,23 @@ var db_collation string = "utf8mb4_general_ci" var get_topic_replies_offset_stmt *sql.Stmt // I'll need to rewrite this one to stop it hard-coding the per page setting before moving it to the query generator var get_forum_topics_offset_stmt *sql.Stmt var notify_watchers_stmt *sql.Stmt -var notify_one_stmt *sql.Stmt var add_subscription_stmt *sql.Stmt var delete_reply_stmt *sql.Stmt var delete_topic_stmt *sql.Stmt var get_activity_feed_by_watcher_stmt *sql.Stmt +var get_activity_count_by_watcher_stmt *sql.Stmt var add_email_stmt *sql.Stmt var update_email_stmt *sql.Stmt var verify_email_stmt *sql.Stmt -var update_user_level_stmt *sql.Stmt -var increment_user_score_stmt *sql.Stmt -var increment_user_posts_stmt *sql.Stmt -var increment_user_bigposts_stmt *sql.Stmt -var increment_user_megaposts_stmt *sql.Stmt -var increment_user_topics_stmt *sql.Stmt -var create_profile_reply_stmt *sql.Stmt -var edit_profile_reply_stmt *sql.Stmt var delete_profile_reply_stmt *sql.Stmt -var create_forum_stmt *sql.Stmt -var delete_forum_stmt *sql.Stmt -var update_forum_stmt *sql.Stmt var forum_entry_exists_stmt *sql.Stmt var group_entry_exists_stmt *sql.Stmt var delete_forum_perms_by_forum_stmt *sql.Stmt -var add_forum_perms_to_forum_stmt *sql.Stmt var add_forum_perms_to_forum_admins_stmt *sql.Stmt var add_forum_perms_to_forum_staff_stmt *sql.Stmt var add_forum_perms_to_forum_members_stmt *sql.Stmt -var add_forum_perms_to_group_stmt *sql.Stmt -//var forum_perm_exists_for_group_stmt *sql.Stmt var update_forum_perms_for_group_stmt *sql.Stmt -var update_setting_stmt *sql.Stmt -var add_plugin_stmt *sql.Stmt -var update_plugin_stmt *sql.Stmt -var update_user_stmt *sql.Stmt -var update_group_perms_stmt *sql.Stmt -var update_group_rank_stmt *sql.Stmt -var update_group_stmt *sql.Stmt -var create_group_stmt *sql.Stmt -var add_theme_stmt *sql.Stmt -var update_theme_stmt *sql.Stmt -var add_modlog_entry_stmt *sql.Stmt -var add_adminlog_entry_stmt *sql.Stmt var todays_post_count_stmt *sql.Stmt var todays_topic_count_stmt *sql.Stmt var todays_report_count_stmt *sql.Stmt @@ -112,12 +86,6 @@ func init_database() (err error) { return err } - log.Print("Preparing notify_one statement.") - notify_one_stmt, err = db.Prepare("INSERT INTO activity_stream_matches(watcher,asid) VALUES(?,?)") - if err != nil { - return err - } - log.Print("Preparing add_subscription statement.") add_subscription_stmt, err = db.Prepare("INSERT INTO activity_subscriptions(user,targetID,targetType,level) VALUES(?,?,?,2)") if err != nil { @@ -137,7 +105,13 @@ func init_database() (err error) { } log.Print("Preparing get_activity_feed_by_watcher statement.") - get_activity_feed_by_watcher_stmt, err = db.Prepare("SELECT activity_stream_matches.asid, activity_stream.actor, activity_stream.targetUser, activity_stream.event, activity_stream.elementType, activity_stream.elementID FROM `activity_stream_matches` INNER JOIN `activity_stream` ON activity_stream_matches.asid = activity_stream.asid AND activity_stream_matches.watcher != activity_stream.actor WHERE `watcher` = ?") + get_activity_feed_by_watcher_stmt, err = db.Prepare("SELECT activity_stream_matches.asid, activity_stream.actor, activity_stream.targetUser, activity_stream.event, activity_stream.elementType, activity_stream.elementID FROM `activity_stream_matches` INNER JOIN `activity_stream` ON activity_stream_matches.asid = activity_stream.asid AND activity_stream_matches.watcher != activity_stream.actor WHERE `watcher` = ? ORDER BY activity_stream.asid ASC LIMIT 8") + if err != nil { + return err + } + + log.Print("Preparing get_activity_count_by_watcher statement.") + get_activity_count_by_watcher_stmt, err = db.Prepare("SELECT count(*) FROM `activity_stream_matches` INNER JOIN `activity_stream` ON activity_stream_matches.asid = activity_stream.asid AND activity_stream_matches.watcher != activity_stream.actor WHERE `watcher` = ?") if err != nil { return err } @@ -160,79 +134,12 @@ func init_database() (err error) { return err } - log.Print("Preparing update_user_level statement.") - update_user_level_stmt, err = db.Prepare("UPDATE users SET level = ? WHERE uid = ?") - if err != nil { - return err - } - - log.Print("Preparing increment_user_score statement.") - increment_user_score_stmt, err = db.Prepare("UPDATE users SET score = score + ? WHERE uid = ?") - if err != nil { - return err - } - - log.Print("Preparing increment_user_posts statement.") - increment_user_posts_stmt, err = db.Prepare("UPDATE users SET posts = posts + ? WHERE uid = ?") - if err != nil { - return err - } - - log.Print("Preparing increment_user_bigposts statement.") - increment_user_bigposts_stmt, err = db.Prepare("UPDATE users SET posts = posts + ?, bigposts = bigposts + ? WHERE uid = ?") - if err != nil { - return err - } - - log.Print("Preparing increment_user_megaposts statement.") - increment_user_megaposts_stmt, err = db.Prepare("UPDATE users SET posts = posts + ?, bigposts = bigposts + ?, megaposts = megaposts + ? WHERE uid = ?") - if err != nil { - return err - } - - log.Print("Preparing increment_user_topics statement.") - increment_user_topics_stmt, err = db.Prepare("UPDATE users SET topics = topics + ? WHERE uid = ?") - if err != nil { - return err - } - - log.Print("Preparing create_profile_reply statement.") - create_profile_reply_stmt, err = db.Prepare("INSERT INTO users_replies(uid,content,parsed_content,createdAt,createdBy) VALUES(?,?,?,NOW(),?)") - if err != nil { - return err - } - - log.Print("Preparing edit_profile_reply statement.") - edit_profile_reply_stmt, err = db.Prepare("UPDATE users_replies SET content = ?, parsed_content = ? WHERE rid = ?") - if err != nil { - return err - } - log.Print("Preparing delete_profile_reply statement.") delete_profile_reply_stmt, err = db.Prepare("DELETE FROM users_replies WHERE rid = ?") if err != nil { return err } - log.Print("Preparing create_forum statement.") - create_forum_stmt, err = db.Prepare("INSERT INTO forums(`name`,`desc`,`active`,`preset`) VALUES(?,?,?,?)") - if err != nil { - return err - } - - log.Print("Preparing delete_forum statement.") - //delete_forum_stmt, err = db.Prepare("delete from forums where fid = ?") - delete_forum_stmt, err = db.Prepare("update forums set name= '', active = 0 where fid = ?") - if err != nil { - return err - } - - log.Print("Preparing update_forum statement.") - update_forum_stmt, err = db.Prepare("update forums set `name` = ?, `desc` = ?, `active` = ?, `preset` = ? where fid = ?") - if err != nil { - return err - } - log.Print("Preparing forum_entry_exists statement.") forum_entry_exists_stmt, err = db.Prepare("SELECT `fid` FROM `forums` WHERE `name` = '' order by fid asc limit 1") if err != nil { @@ -251,12 +158,6 @@ func init_database() (err error) { return err } - log.Print("Preparing add_forum_perms_to_forum statement.") - add_forum_perms_to_forum_stmt, err = db.Prepare("INSERT INTO forums_permissions(gid,fid,preset,permissions) VALUES(?,?,?,?)") - if err != nil { - return err - } - log.Print("Preparing add_forum_perms_to_forum_admins statement.") add_forum_perms_to_forum_admins_stmt, err = db.Prepare("INSERT INTO forums_permissions(gid,fid,preset,permissions) SELECT `gid`,? AS fid,? AS preset,? AS permissions FROM users_groups WHERE is_admin = 1") if err != nil { @@ -275,84 +176,6 @@ func init_database() (err error) { return err } - log.Print("Preparing add_forum_perms_to_group statement.") - add_forum_perms_to_group_stmt, err = db.Prepare("REPLACE INTO forums_permissions(gid,fid,preset,permissions) VALUES(?,?,?,?)") - if err != nil { - return err - } - - log.Print("Preparing update_setting statement.") - update_setting_stmt, err = db.Prepare("UPDATE settings SET content = ? WHERE name = ?") - if err != nil { - return err - } - - log.Print("Preparing add_plugin statement.") - add_plugin_stmt, err = db.Prepare("INSERT INTO plugins(uname,active) VALUES(?,?)") - if err != nil { - return err - } - - log.Print("Preparing update_plugin statement.") - update_plugin_stmt, err = db.Prepare("UPDATE plugins SET active = ? WHERE uname = ?") - if err != nil { - return err - } - - log.Print("Preparing add_theme statement.") - add_theme_stmt, err = db.Prepare("INSERT INTO `themes`(`uname`,`default`) VALUES(?,?)") - if err != nil { - return err - } - - log.Print("Preparing update_theme statement.") - update_theme_stmt, err = db.Prepare("update `themes` set `default` = ? where `uname` = ?") - if err != nil { - return err - } - - log.Print("Preparing update_user statement.") - update_user_stmt, err = db.Prepare("update `users` set `name` = ?,`email` = ?,`group` = ? where `uid` = ?") - if err != nil { - return err - } - - log.Print("Preparing update_group_rank statement.") - update_group_perms_stmt, err = db.Prepare("update `users_groups` set `permissions` = ? where `gid` = ?") - if err != nil { - return err - } - - log.Print("Preparing update_group_rank statement.") - update_group_rank_stmt, err = db.Prepare("update `users_groups` set `is_admin` = ?, `is_mod` = ?, `is_banned` = ? where `gid` = ?") - if err != nil { - return err - } - - log.Print("Preparing update_group statement.") - update_group_stmt, err = db.Prepare("update `users_groups` set `name` = ?, `tag` = ? where `gid` = ?") - if err != nil { - return err - } - - log.Print("Preparing create_group statement.") - create_group_stmt, err = db.Prepare("INSERT INTO users_groups(name,tag,is_admin,is_mod,is_banned,permissions) VALUES(?,?,?,?,?,?)") - if err != nil { - return err - } - - log.Print("Preparing add_modlog_entry statement.") - add_modlog_entry_stmt, err = db.Prepare("INSERT INTO moderation_logs(action,elementID,elementType,ipaddress,actorID,doneAt) VALUES(?,?,?,?,?,NOW())") - if err != nil { - return err - } - - log.Print("Preparing add_adminlog_entry statement.") - add_adminlog_entry_stmt, err = db.Prepare("INSERT INTO moderation_logs(action,elementID,elementType,ipaddress,actorID,doneAt) VALUES(?,?,?,?,?,NOW())") - if err != nil { - return err - } - log.Print("Preparing todays_post_count statement.") todays_post_count_stmt, err = db.Prepare("select count(*) from replies where createdAt BETWEEN (now() - interval 1 day) and now()") if err != nil { diff --git a/mysql.sql b/mysql.sql index a023ae4f..8db95612 100644 --- a/mysql.sql +++ b/mysql.sql @@ -193,8 +193,8 @@ CREATE TABLE `administration_logs`( INSERT INTO settings(`name`,`content`,`type`) VALUES ('url_tags','1','bool'); INSERT INTO settings(`name`,`content`,`type`,`constraints`) VALUES ('activation_type','1','list','1-3'); -INSERT INTO settings(`name`,`content`,`type`) VALUES ('bigpost_min_chars','250','int'); -INSERT INTO settings(`name`,`content`,`type`) VALUES ('megapost_min_chars','1000','int'); +INSERT INTO settings(`name`,`content`,`type`) VALUES ('bigpost_min_words','250','int'); +INSERT INTO settings(`name`,`content`,`type`) VALUES ('megapost_min_words','1000','int'); INSERT INTO themes(`uname`,`default`) VALUES ('tempra-simple',1); INSERT INTO users(`name`,`password`,`email`,`group`,`is_super_admin`,`createdAt`,`lastActiveAt`,`message`,`last_ip`) diff --git a/no_websockets.go b/no_websockets.go index ea76e359..12a90e7a 100644 --- a/no_websockets.go +++ b/no_websockets.go @@ -2,21 +2,35 @@ package main +import "errors" import "net/http" var ws_hub WS_Hub +var ws_nouser error = errors.New("This user isn't connected via WebSockets") type WS_Hub struct { } -func (_ *WS_Hub) GuestCount() int { +func (_ *WS_Hub) guest_count() int { return 0 } -func (_ *WS_Hub) UserCount() int { +func (_ *WS_Hub) user_count() int { return 0 } +func (hub *WS_Hub) broadcast_message(_ string) error { + return nil +} + +func (hub *WS_Hub) push_message(_ int, _ string) error { + return ws_nouser +} + +func(hub *WS_Hub) push_alert(_ int, _ string, _ string, _ int, _ int, _ int) error { + return ws_nouser +} + func route_websockets(_ http.ResponseWriter, _ *http.Request) { } diff --git a/panel_routes.go b/panel_routes.go index 4d2d2c3a..b589bc84 100644 --- a/panel_routes.go +++ b/panel_routes.go @@ -137,8 +137,8 @@ func route_panel(w http.ResponseWriter, r *http.Request){ } if enable_websockets { - uonline := ws_hub.UserCount() - gonline := ws_hub.GuestCount() + uonline := ws_hub.user_count() + gonline := ws_hub.guest_count() totonline := uonline + gonline var onlineColour string @@ -489,7 +489,6 @@ func route_panel_forums_edit_perms_submit(w http.ResponseWriter, r *http.Request return } - //_, err = update_forum_perms_for_group_stmt.Exec(perm_preset,perms,gid,fid) _, err = add_forum_perms_to_group_stmt.Exec(gid,fid,perm_preset,perms) if err != nil { InternalErrorJSQ(err,w,r,is_js) diff --git a/public/global.js b/public/global.js index 357dc1b6..221b26b1 100644 --- a/public/global.js +++ b/public/global.js @@ -1,4 +1,6 @@ var form_vars = {}; +var alertList = []; +var alertCount = 0; function post_link(event) { @@ -17,7 +19,6 @@ function load_alerts(menu_alerts) url:'/api/?action=get&module=alerts&format=json', success: function(data) { if("errmsg" in data) { - //console.log(data.errmsg); menu_alerts.find(".alertList").html("