166d96e3b2
Refactored the API system. Fixed a bug in the default topic where the forum didn't have a time set. The JS is now run in strict mode. Fixed a bug in the titles where they broke onto multiple lines. Fixed a bug in create topic where the datetime wasn't getting set for the forum. Fixed a bug in create reply where the local cache wasn't getting updated. Fixed a bug in create reply where the wrong forum was getting updated. Phased out jQuery in a few bits of JS to make it easier to understand.
253 lines
9.8 KiB
SQL
253 lines
9.8 KiB
SQL
CREATE TABLE `users_groups`(
|
|
`gid` int not null AUTO_INCREMENT,
|
|
`name` varchar(100) not null,
|
|
`permissions` text not null,
|
|
`plugin_perms` text not null,
|
|
`is_mod` tinyint DEFAULT 0 not null,
|
|
`is_admin` tinyint DEFAULT 0 not null,
|
|
`is_banned` tinyint DEFAULT 0 not null,
|
|
`tag` varchar(50) DEFAULT '' not null,
|
|
primary key(`gid`)
|
|
) CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
|
|
|
|
CREATE TABLE `emails`(
|
|
`email` varchar(200) not null,
|
|
`uid` int not null,
|
|
`validated` tinyint DEFAULT 0 not null,
|
|
`token` varchar(200) DEFAULT '' not null
|
|
);
|
|
|
|
CREATE TABLE `forums`(
|
|
`fid` int not null AUTO_INCREMENT,
|
|
`name` varchar(100) not null,
|
|
`desc` varchar(200) not null,
|
|
`active` tinyint DEFAULT 1 not null,
|
|
`topicCount` int DEFAULT 0 not null,
|
|
`preset` varchar(100) DEFAULT '' not null,
|
|
`parentID` int DEFAULT 0 not null, /* TO-DO: Add support for subforums */
|
|
`parentType` varchar(50) DEFAULT '' not null,
|
|
`lastTopic` varchar(100) DEFAULT '' not null,
|
|
`lastTopicID` int DEFAULT 0 not null,
|
|
`lastReplyer` varchar(100) DEFAULT '' not null,
|
|
`lastReplyerID` int DEFAULT 0 not null,
|
|
`lastTopicTime` datetime not null,
|
|
primary key(`fid`)
|
|
) CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
|
|
|
|
CREATE TABLE `forums_permissions`(
|
|
`fid` int not null,
|
|
`gid` int not null,
|
|
`preset` varchar(100) DEFAULT '' not null,
|
|
`permissions` text not null,
|
|
primary key(fid, gid)
|
|
);
|
|
|
|
CREATE TABLE `topics`(
|
|
`tid` int not null AUTO_INCREMENT,
|
|
`title` varchar(100) not null,
|
|
`content` text not null,
|
|
`parsed_content` text not null,
|
|
`createdAt` datetime not null,
|
|
`lastReplyAt` datetime not null,
|
|
`lastReplyBy` int not null,
|
|
`createdBy` int not null,
|
|
`is_closed` tinyint DEFAULT 0 not null,
|
|
`sticky` tinyint DEFAULT 0 not null,
|
|
`parentID` int DEFAULT 2 not null,
|
|
`ipaddress` varchar(200) DEFAULT '0.0.0.0.0' not null,
|
|
`postCount` int DEFAULT 1 not null,
|
|
`likeCount` int DEFAULT 0 not null,
|
|
`words` int DEFAULT 0 not null,
|
|
`css_class` varchar(100) DEFAULT '' not null,
|
|
`data` varchar(200) DEFAULT '' not null,
|
|
primary key(`tid`)
|
|
) CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
|
|
|
|
CREATE TABLE `replies`(
|
|
`rid` int not null AUTO_INCREMENT,
|
|
`tid` int not null,
|
|
`content` text not null,
|
|
`parsed_content` text not null,
|
|
`createdAt` datetime not null,
|
|
`createdBy` int not null,
|
|
`lastEdit` int not null,
|
|
`lastEditBy` int not null, /* Do we need this? */
|
|
/*`editIndex` int not null,*/ /* For append edits, e.g. auto-merges? Is this enough for this feature? */
|
|
`lastUpdated` datetime not null,
|
|
`ipaddress` varchar(200) DEFAULT '0.0.0.0.0' not null,
|
|
`likeCount` int DEFAULT 0 not null,
|
|
`words` int DEFAULT 1 not null,
|
|
`actionType` varchar(20) DEFAULT '' not null,
|
|
primary key(`rid`)
|
|
) CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
|
|
|
|
CREATE TABLE `revisions`(
|
|
`index` int not null,
|
|
`content` text not null,
|
|
`contentID` int not null,
|
|
`contentType` varchar(100) DEFAULT 'replies' not null
|
|
) CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
|
|
|
|
CREATE TABLE `users_replies`(
|
|
`rid` int not null AUTO_INCREMENT,
|
|
`uid` int not null,
|
|
`content` text not null,
|
|
`parsed_content` text not null,
|
|
`createdAt` datetime not null,
|
|
`createdBy` int not null,
|
|
`lastEdit` int not null,
|
|
`lastEditBy` int not null,
|
|
`ipaddress` varchar(200) DEFAULT '0.0.0.0.0' not null,
|
|
primary key(`rid`)
|
|
) CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
|
|
|
|
CREATE TABLE `likes`(
|
|
`weight` tinyint DEFAULT 1 not null,
|
|
/*`type` tinyint not null, /* Regular Post: 1, Big Post: 2, Mega Post: 3, etc.*/
|
|
`targetItem` int not null,
|
|
`targetType` varchar(50) DEFAULT 'replies' not null,
|
|
`sentBy` int not null,
|
|
`recalc` tinyint DEFAULT 0 not null
|
|
);
|
|
|
|
CREATE TABLE `activity_stream_matches`(
|
|
`watcher` int not null,
|
|
`asid` int not null
|
|
);
|
|
|
|
CREATE TABLE `activity_stream`(
|
|
`asid` int not null AUTO_INCREMENT,
|
|
`actor` int not null, /* the one doing the act */
|
|
`targetUser` int not null, /* the user who created the item the actor is acting on, some items like forums may lack a targetUser field */
|
|
`event` varchar(50) not null, /* mention, like, reply (as in the act of replying to an item, not the reply item type, you can "reply" to a forum by making a topic in it), friend_invite */
|
|
`elementType` varchar(50) not null, /* topic, post (calling it post here to differentiate it from the 'reply' event), forum, user */
|
|
`elementID` int not null, /* the ID of the element being acted upon */
|
|
primary key(`asid`)
|
|
);
|
|
|
|
CREATE TABLE `activity_subscriptions`(
|
|
`user` int not null,
|
|
`targetID` int not null, /* the ID of the element being acted upon */
|
|
`targetType` varchar(50) not null, /* topic, post (calling it post here to differentiate it from the 'reply' event), forum, user */
|
|
`level` tinyint DEFAULT 0 not null /* 0: Mentions (aka the global default for any post), 1: Replies To You, 2: All Replies*/
|
|
);
|
|
|
|
/* Due to MySQL's design, we have to drop the unique keys for table settings, plugins, and themes down from 200 to 180 or it will error */
|
|
CREATE TABLE `settings`(
|
|
`name` varchar(180) not null,
|
|
`content` varchar(250) not null,
|
|
`type` varchar(50) not null,
|
|
`constraints` varchar(200) DEFAULT '' not null,
|
|
unique(`name`)
|
|
);
|
|
|
|
CREATE TABLE `plugins`(
|
|
`uname` varchar(180) not null,
|
|
`active` tinyint DEFAULT 0 not null,
|
|
`installed` tinyint DEFAULT 0 not null,
|
|
unique(`uname`)
|
|
);
|
|
|
|
CREATE TABLE `themes`(
|
|
`uname` varchar(180) not null,
|
|
`default` tinyint DEFAULT 0 not null,
|
|
unique(`uname`)
|
|
);
|
|
|
|
CREATE TABLE `widgets`(
|
|
`position` int not null,
|
|
`side` varchar(100) not null,
|
|
`type` varchar(100) not null,
|
|
`active` tinyint(1) DEFAULT 0 not null,
|
|
`location` varchar(100) not null,
|
|
`data` text DEFAULT '' not null
|
|
);
|
|
|
|
CREATE TABLE `moderation_logs`(
|
|
`action` varchar(100) not null,
|
|
`elementID` int not null,
|
|
`elementType` varchar(100) not null,
|
|
`ipaddress` varchar(200) not null,
|
|
`actorID` int not null,
|
|
`doneAt` datetime not null
|
|
);
|
|
|
|
CREATE TABLE `administration_logs`(
|
|
`action` varchar(100) not null,
|
|
`elementID` int not null,
|
|
`elementType` varchar(100) not null,
|
|
`ipaddress` varchar(200) not null,
|
|
`actorID` int not null,
|
|
`doneAt` datetime not null
|
|
);
|
|
|
|
CREATE TABLE `sync`(
|
|
`last_update` int not null,
|
|
`node_id` int not null
|
|
);
|
|
|
|
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_words','250','int');
|
|
INSERT INTO settings(`name`,`content`,`type`) VALUES ('megapost_min_words','1000','int');
|
|
/* TO-DO: Implement the html-attribute setting type before deploying this */
|
|
/*INSERT INTO settings(`name`,`content`,`type`) VALUES ('meta_desc','','html-attribute');*/
|
|
INSERT INTO themes(`uname`,`default`) VALUES ('tempra-simple',1);
|
|
INSERT INTO emails(`email`,`uid`,`validated`) VALUES ('admin@localhost',1,1);
|
|
|
|
/*
|
|
The Permissions:
|
|
|
|
BanUsers
|
|
ActivateUsers
|
|
EditUser
|
|
EditUserEmail
|
|
EditUserPassword
|
|
EditUserGroup
|
|
EditUserGroupSuperMod
|
|
EditUserGroupAdmin
|
|
EditGroup
|
|
EditGroupLocalPerms
|
|
EditGroupGlobalPerms
|
|
EditGroupSuperMod
|
|
EditGroupAdmin
|
|
ManageForums
|
|
EditSettings
|
|
ManageThemes
|
|
ManagePlugins
|
|
ViewAdminLogs
|
|
ViewIPs
|
|
|
|
ViewTopic
|
|
LikeItem
|
|
CreateTopic
|
|
EditTopic
|
|
DeleteTopic
|
|
CreateReply
|
|
EditReply
|
|
DeleteReply
|
|
PinTopic
|
|
CloseTopic
|
|
*/
|
|
|
|
INSERT INTO users_groups(`name`,`permissions`,`plugin_perms`,`is_mod`,`is_admin`,`tag`) VALUES ('Administrator','{"BanUsers":true,"ActivateUsers":true,"EditUser":true,"EditUserEmail":true,"EditUserPassword":true,"EditUserGroup":true,"EditUserGroupSuperMod":true,"EditUserGroupAdmin":false,"EditGroup":true,"EditGroupLocalPerms":true,"EditGroupGlobalPerms":true,"EditGroupSuperMod":true,"EditGroupAdmin":false,"ManageForums":true,"EditSettings":true,"ManageThemes":true,"ManagePlugins":true,"ViewAdminLogs":true,"ViewIPs":true,"ViewTopic":true,"LikeItem":true,"CreateTopic":true,"EditTopic":true,"DeleteTopic":true,"CreateReply":true,"EditReply":true,"DeleteReply":true,"PinTopic":true,"CloseTopic":true}','{}',1,1,"Admin");
|
|
INSERT INTO users_groups(`name`,`permissions`,`plugin_perms`,`is_mod`,`tag`) VALUES ('Moderator','{"BanUsers":true,"ActivateUsers":false,"EditUser":true,"EditUserEmail":false,"EditUserGroup":true,"ViewIPs":true,"ViewTopic":true,"LikeItem":true,"CreateTopic":true,"EditTopic":true,"DeleteTopic":true,"CreateReply":true,"EditReply":true,"DeleteReply":true,"PinTopic":true,"CloseTopic":true}','{}',1,"Mod");
|
|
INSERT INTO users_groups(`name`,`permissions`,`plugin_perms`) VALUES ('Member','{"ViewTopic":true,"LikeItem":true,"CreateTopic":true,"CreateReply":true}','{}');
|
|
INSERT INTO users_groups(`name`,`permissions`,`plugin_perms`,`is_banned`) VALUES ('Banned','{"ViewTopic":true}','{}',1);
|
|
INSERT INTO users_groups(`name`,`permissions`,`plugin_perms`) VALUES ('Awaiting Activation','{"ViewTopic":true}','{}');
|
|
INSERT INTO users_groups(`name`,`permissions`,`plugin_perms`,`tag`) VALUES ('Not Loggedin','{"ViewTopic":true}','{}','Guest');
|
|
|
|
INSERT INTO forums(`name`,`active`) VALUES ('Reports',0);
|
|
INSERT INTO forums(`name`,`lastTopicTime`,`lastTopicID`,`lastReplyer`,`lastReplyerID`,`lastTopic`) VALUES ('General',UTC_TIMESTAMP(),1,"Admin",1,'Test Topic');
|
|
INSERT INTO forums_permissions(`gid`,`fid`,`permissions`) VALUES (1,1,'{"ViewTopic":true,"CreateReply":true,"CreateTopic":true,"PinTopic":true,"CloseTopic":true}');
|
|
INSERT INTO forums_permissions(`gid`,`fid`,`permissions`) VALUES (2,1,'{"ViewTopic":true,"CreateReply":true,"CloseTopic":true}');
|
|
INSERT INTO forums_permissions(`gid`,`fid`,`permissions`) VALUES (3,1,'{}');
|
|
INSERT INTO forums_permissions(`gid`,`fid`,`permissions`) VALUES (4,1,'{}');
|
|
INSERT INTO forums_permissions(`gid`,`fid`,`permissions`) VALUES (5,1,'{}');
|
|
INSERT INTO forums_permissions(`gid`,`fid`,`permissions`) VALUES (6,1,'{}');
|
|
INSERT INTO topics(`title`,`content`,`createdAt`,`lastReplyAt`,`lastReplyBy`,`createdBy`,`parentID`)
|
|
VALUES ('Test Topic','A topic automatically generated by the software.',UTC_TIMESTAMP(),UTC_TIMESTAMP(),1,1,2);
|
|
|
|
INSERT INTO replies(`tid`,`content`,`createdAt`,`createdBy`,`lastEdit`,`lastEditBy`)
|
|
VALUES (1,'Reply 1',UTC_TIMESTAMP(),1,0,0);
|