function forum_create($webtag, $forum_name, $owner_uid, $database_name, $access, &$error_str) { // Load the language $lang = load_language_file(); // Ensure the variables we've been given are valid if (!preg_match("/^[A-Z]{1}[A-Z0-9_]+\$/", $webtag)) { return false; } if (!preg_match("/^[A-Z]{1}[A-Z0-9_]+\$/i", $database_name)) { return false; } if (!is_numeric($owner_uid)) { $owner_uid = 0; } if (!is_numeric($access)) { $access = 0; } // Only users with acces to the forum tools can create / delete forums. if (bh_session_check_perm(USER_PERM_FORUM_TOOLS, 0)) { if (($uid = bh_session_get_value('UID')) === false) { return false; } if (!($db_forum_create = db_connect())) { return false; } // Check that the WEBTAG is unique. $sql = "SELECT FID FROM FORUMS WHERE WEBTAG = '{$webtag}'"; if (!($result = @db_query($sql, $db_forum_create))) { return false; } if (db_num_rows($result) > 0) { $error_str = $lang['selectedwebtagisalreadyinuse']; return false; } // Check for any conflicting tables. if ($conflicting_tables_array = install_get_table_conflicts($webtag, true, false)) { $error_str = $lang['selecteddatabasecontainsconflictingtables']; $error_str .= sprintf("<p>%s</p>\n", implode(", ", $conflicting_tables_array)); return false; } // Create the tables $sql = "CREATE TABLE {$database_name}.{$webtag}_ADMIN_LOG ("; $sql .= " ID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " CREATED DATETIME DEFAULT NULL,"; $sql .= " ACTION MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " ENTRY TEXT,"; $sql .= " PRIMARY KEY (ID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_BANNED ("; $sql .= " ID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " BANTYPE TINYINT(4) NOT NULL DEFAULT '0',"; $sql .= " BANDATA VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " COMMENT VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " PRIMARY KEY (ID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_FOLDER ("; $sql .= " FID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " TITLE VARCHAR(32) DEFAULT NULL,"; $sql .= " DESCRIPTION VARCHAR(255) DEFAULT NULL,"; $sql .= " PREFIX VARCHAR(16) DEFAULT NULL,"; $sql .= " ALLOWED_TYPES TINYINT(3) DEFAULT NULL,"; $sql .= " POSITION MEDIUMINT(8) UNSIGNED DEFAULT '0',"; $sql .= " PRIMARY KEY (FID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_FORUM_LINKS ("; $sql .= " LID SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " POS MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " URI VARCHAR(255) DEFAULT NULL,"; $sql .= " TITLE VARCHAR(64) DEFAULT NULL,"; $sql .= " PRIMARY KEY (LID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_LINKS ("; $sql .= " LID SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " FID SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " URI VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " TITLE VARCHAR(64) NOT NULL DEFAULT '',"; $sql .= " DESCRIPTION TEXT NOT NULL,"; $sql .= " CREATED DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; $sql .= " VISIBLE CHAR(1) NOT NULL DEFAULT 'N',"; $sql .= " CLICKS MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PRIMARY KEY (LID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_LINKS_COMMENT ("; $sql .= " CID SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " LID SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " CREATED DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; $sql .= " COMMENT TEXT NOT NULL,"; $sql .= " PRIMARY KEY (CID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_LINKS_FOLDERS ("; $sql .= " FID SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " PARENT_FID SMALLINT(5) UNSIGNED DEFAULT NULL,"; $sql .= " NAME VARCHAR(32) NOT NULL DEFAULT '',"; $sql .= " VISIBLE CHAR(1) NOT NULL DEFAULT '',"; $sql .= " PRIMARY KEY (FID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_LINKS_VOTE ("; $sql .= " LID SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " RATING SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " TSTAMP DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; $sql .= " PRIMARY KEY (LID,UID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_POLL ("; $sql .= " TID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " QUESTION VARCHAR(64) DEFAULT NULL,"; $sql .= " CLOSES DATETIME DEFAULT NULL,"; $sql .= " CHANGEVOTE TINYINT(1) NOT NULL DEFAULT '1',"; $sql .= " POLLTYPE TINYINT(1) NOT NULL DEFAULT '0',"; $sql .= " SHOWRESULTS TINYINT(1) NOT NULL DEFAULT '1',"; $sql .= " VOTETYPE TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " OPTIONTYPE TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " ALLOWGUESTS TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PRIMARY KEY (TID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_POLL_VOTES ("; $sql .= " TID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " OPTION_ID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " OPTION_NAME CHAR(255) NOT NULL DEFAULT '',"; $sql .= " GROUP_ID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PRIMARY KEY (TID,OPTION_ID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_POST ("; $sql .= " TID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " REPLY_TO_PID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " FROM_UID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " TO_UID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " VIEWED DATETIME DEFAULT NULL,"; $sql .= " CREATED DATETIME DEFAULT NULL,"; $sql .= " STATUS TINYINT(4) DEFAULT '0',"; $sql .= " APPROVED DATETIME DEFAULT NULL,"; $sql .= " APPROVED_BY MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " EDITED DATETIME DEFAULT NULL,"; $sql .= " EDITED_BY MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " IPADDRESS VARCHAR(15) NOT NULL DEFAULT '',"; $sql .= " MOVED_TID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " MOVED_PID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " PRIMARY KEY (TID,PID),"; $sql .= " KEY TO_UID (TO_UID),"; $sql .= " KEY FROM_UID (FROM_UID),"; $sql .= " KEY IPADDRESS (IPADDRESS, FROM_UID),"; $sql .= " KEY CREATED (CREATED),"; $sql .= " KEY APPROVED (APPROVED)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_POST_CONTENT ("; $sql .= " TID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " CONTENT TEXT,"; $sql .= " PRIMARY KEY (TID,PID),"; $sql .= " FULLTEXT KEY CONTENT (CONTENT)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_PROFILE_ITEM ("; $sql .= " PIID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " PSID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " NAME VARCHAR(64) DEFAULT NULL,"; $sql .= " TYPE TINYINT(3) UNSIGNED DEFAULT '0',"; $sql .= " OPTIONS TEXT NOT NULL, "; $sql .= " POSITION MEDIUMINT(3) UNSIGNED DEFAULT '0',"; $sql .= " PRIMARY KEY (PIID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "INSERT INTO {$database_name}.{$webtag}_PROFILE_ITEM "; $sql .= "(PSID, NAME, TYPE, OPTIONS, POSITION) "; $sql .= "VALUES (1, 'Location', 0, '', 1)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "INSERT INTO {$database_name}.{$webtag}_PROFILE_ITEM "; $sql .= "(PSID, NAME, TYPE, OPTIONS, POSITION) "; $sql .= "VALUES (1, 'Age', 0, '', 2)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "INSERT INTO {$database_name}.{$webtag}_PROFILE_ITEM "; $sql .= "(PSID, NAME, TYPE, OPTIONS, POSITION) VALUES "; $sql .= "(1, 'Gender', 5, 'Male\nFemale\nUnspecified', 3)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "INSERT INTO {$database_name}.{$webtag}_PROFILE_ITEM "; $sql .= "(PSID, NAME, TYPE, OPTIONS, POSITION) "; $sql .= "VALUES (1, 'Quote', 0, '', 4)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "INSERT INTO {$database_name}.{$webtag}_PROFILE_ITEM "; $sql .= "(PSID, NAME, TYPE, OPTIONS, POSITION) "; $sql .= "VALUES (1, 'Occupation', 0, '', 5)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_PROFILE_SECTION ("; $sql .= " PSID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " NAME VARCHAR(64) DEFAULT NULL,"; $sql .= " POSITION MEDIUMINT(3) UNSIGNED DEFAULT '0',"; $sql .= " PRIMARY KEY (PSID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "INSERT INTO {$database_name}.{$webtag}_PROFILE_SECTION "; $sql .= "(NAME, POSITION) VALUES ('Personal', 1)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_RSS_FEEDS ("; $sql .= " RSSID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " NAME VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " UID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " FID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " URL VARCHAR(255) DEFAULT NULL,"; $sql .= " PREFIX VARCHAR(16) DEFAULT NULL,"; $sql .= " FREQUENCY MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " LAST_RUN DATETIME DEFAULT NULL,"; $sql .= " PRIMARY KEY (RSSID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_RSS_HISTORY ("; $sql .= " RSSID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " LINK VARCHAR(255) DEFAULT NULL,"; $sql .= " KEY RSSID (RSSID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_STATS ("; $sql .= " ID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " MOST_USERS_DATE DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; $sql .= " MOST_USERS_COUNT MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " MOST_POSTS_DATE DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; $sql .= " MOST_POSTS_COUNT MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PRIMARY KEY (ID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_THREAD ("; $sql .= " TID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " FID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " BY_UID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " TITLE VARCHAR(64) DEFAULT NULL,"; $sql .= " LENGTH MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " POLL_FLAG CHAR(1) DEFAULT NULL,"; $sql .= " CREATED DATETIME DEFAULT NULL,"; $sql .= " MODIFIED DATETIME DEFAULT NULL,"; $sql .= " CLOSED DATETIME DEFAULT NULL,"; $sql .= " STICKY CHAR(1) DEFAULT NULL,"; $sql .= " STICKY_UNTIL DATETIME DEFAULT NULL,"; $sql .= " ADMIN_LOCK DATETIME DEFAULT NULL,"; $sql .= " PRIMARY KEY (TID),"; $sql .= " KEY BY_UID (BY_UID),"; $sql .= " KEY STICKY (STICKY, MODIFIED), "; $sql .= " KEY LENGTH (LENGTH), "; $sql .= " KEY TITLE (TITLE)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_THREAD_STATS ("; $sql .= " TID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " VIEWCOUNT MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " UNREAD_PID MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " UNREAD_CREATED DATETIME DEFAULT NULL,"; $sql .= " PRIMARY KEY (TID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_THREAD_TRACK ("; $sql .= " TID MEDIUMINT(8) NOT NULL DEFAULT '0',"; $sql .= " NEW_TID MEDIUMINT(8) NOT NULL DEFAULT '0',"; $sql .= " CREATED DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; $sql .= " TRACK_TYPE TINYINT(4) NOT NULL DEFAULT '0',"; $sql .= " PRIMARY KEY (TID, NEW_TID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_USER_FOLDER ("; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " FID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " INTEREST TINYINT(4) DEFAULT '0',"; $sql .= " PRIMARY KEY (UID, FID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_USER_PEER ("; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PEER_UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " RELATIONSHIP TINYINT(4) DEFAULT NULL,"; $sql .= " PEER_NICKNAME VARCHAR(32) DEFAULT NULL,"; $sql .= " PRIMARY KEY (UID,PEER_UID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_USER_POLL_VOTES ("; $sql .= " TID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " VOTE_ID MEDIUMINT(8) NOT NULL AUTO_INCREMENT,"; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " OPTION_ID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " TSTAMP DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; $sql .= " PRIMARY KEY (TID, VOTE_ID),"; $sql .= " KEY UID (UID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_USER_PREFS ("; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " HOMEPAGE_URL VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " PIC_URL VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " PIC_AID CHAR(32) NOT NULL DEFAULT '',"; $sql .= " AVATAR_URL VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " AVATAR_AID CHAR(32) NOT NULL DEFAULT '',"; $sql .= " EMAIL_NOTIFY CHAR(1) NOT NULL DEFAULT 'Y',"; $sql .= " MARK_AS_OF_INT CHAR(1) NOT NULL DEFAULT 'Y',"; $sql .= " POSTS_PER_PAGE VARCHAR(3) NOT NULL DEFAULT '20',"; $sql .= " FONT_SIZE VARCHAR(2) NOT NULL DEFAULT '10',"; $sql .= " STYLE VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " EMOTICONS VARCHAR(255) NOT NULL DEFAULT '',"; $sql .= " VIEW_SIGS CHAR(1) NOT NULL DEFAULT 'Y',"; $sql .= " START_PAGE VARCHAR(3) NOT NULL DEFAULT '0',"; $sql .= " LANGUAGE VARCHAR(32) NOT NULL DEFAULT '',"; $sql .= " DOB_DISPLAY CHAR(1) NOT NULL DEFAULT '2',"; $sql .= " ANON_LOGON CHAR(1) NOT NULL DEFAULT '0',"; $sql .= " SHOW_STATS CHAR(1) NOT NULL DEFAULT 'Y',"; $sql .= " IMAGES_TO_LINKS CHAR(1) NOT NULL DEFAULT 'N',"; $sql .= " USE_WORD_FILTER CHAR(1) NOT NULL DEFAULT 'N',"; $sql .= " USE_ADMIN_FILTER CHAR(1) NOT NULL DEFAULT 'N',"; $sql .= " ALLOW_EMAIL CHAR(1) NOT NULL DEFAULT 'Y',"; $sql .= " ALLOW_PM CHAR(1) NOT NULL DEFAULT 'Y',"; $sql .= " SHOW_THUMBS VARCHAR(2) NOT NULL DEFAULT '2',"; $sql .= " ENABLE_WIKI_WORDS CHAR(1) NOT NULL DEFAULT 'Y',"; $sql .= " USE_MOVER_SPOILER CHAR(1) DEFAULT 'N', "; $sql .= " USE_LIGHT_MODE_SPOILER CHAR(1) DEFAULT 'N', "; $sql .= " USE_OVERFLOW_RESIZE CHAR(1) DEFAULT 'Y', "; $sql .= " PRIMARY KEY (UID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_USER_PROFILE ("; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PIID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " ENTRY VARCHAR(255) DEFAULT NULL,"; $sql .= " PRIVACY TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PRIMARY KEY (UID,PIID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_USER_SIG ("; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " CONTENT TEXT,"; $sql .= " HTML CHAR(1) DEFAULT NULL,"; $sql .= " PRIMARY KEY (UID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_USER_THREAD ("; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " TID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " LAST_READ MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " LAST_READ_AT DATETIME DEFAULT NULL,"; $sql .= " INTEREST TINYINT(4) DEFAULT NULL,"; $sql .= " PRIMARY KEY (UID,TID),"; $sql .= " KEY TID (TID),"; $sql .= " KEY LAST_READ (LAST_READ)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_USER_TRACK ("; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " DDKEY DATETIME DEFAULT NULL,"; $sql .= " LAST_POST DATETIME DEFAULT NULL,"; $sql .= " LAST_SEARCH DATETIME DEFAULT NULL,"; $sql .= " LAST_SEARCH_KEYWORDS TEXT DEFAULT NULL,"; $sql .= " POST_COUNT MEDIUMINT(8) UNSIGNED DEFAULT NULL,"; $sql .= " USER_TIME_BEST DATETIME DEFAULT NULL,"; $sql .= " USER_TIME_TOTAL DATETIME DEFAULT NULL,"; $sql .= " USER_TIME_UPDATED DATETIME DEFAULT NULL,"; $sql .= " PRIMARY KEY (UID)"; $sql .= ") TYPE=MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } $sql = "CREATE TABLE {$database_name}.{$webtag}_WORD_FILTER ("; $sql .= " UID MEDIUMINT(8) UNSIGNED NOT NULL,"; $sql .= " FID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,"; $sql .= " FILTER_NAME VARCHAR(255) NOT NULL,"; $sql .= " MATCH_TEXT TEXT NOT NULL,"; $sql .= " REPLACE_TEXT TEXT NOT NULL,"; $sql .= " FILTER_TYPE TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " FILTER_ENABLED TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',"; $sql .= " PRIMARY KEY (UID, FID)"; $sql .= ") TYPE = MYISAM"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return; } // Save Webtag, Database name and Access Level. $sql = "INSERT INTO FORUMS (WEBTAG, OWNER_UID, DATABASE_NAME, ACCESS_LEVEL) "; $sql .= "VALUES ('{$webtag}', '{$owner_uid}', '{$database_name}', {$access})"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete_tables($webtag, $database_name); if (defined("BEEHIVE_INSTALL_NOWARN")) { db_trigger_error($sql, $db_forum_create); } return false; } // Get the new FID so we can save the settings $forum_fid = db_insert_id($db_forum_create); // Create General Folder $sql = "INSERT INTO {$database_name}.{$webtag}_FOLDER (TITLE, DESCRIPTION, ALLOWED_TYPES, POSITION) "; $sql .= "VALUES ('General', NULL, NULL, 0)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } $folder_fid = db_insert_id($db_forum_create); // Create folder permissions $sql = "INSERT INTO GROUP_PERMS (GID, FORUM, FID, PERM) "; $sql .= "VALUES (0, '{$forum_fid}', '{$folder_fid}', 14588);"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } // Add some default forum links $sql = "INSERT INTO {$database_name}.{$webtag}_FORUM_LINKS (POS, TITLE, URI) "; $sql .= "VALUES (2, 'Project Beehive Home', 'http://www.beehiveforum.net/')"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } $sql = "INSERT INTO {$database_name}.{$webtag}_FORUM_LINKS (POS, TITLE, URI) "; $sql .= "VALUES (2, 'Teh Forum', 'http://www.tehforum.co.uk/forum/')"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } // Create user permissions for forum leader if (!forum_apply_user_permissions($forum_fid, $owner_uid)) { forum_delete($forum_fid); return false; } // Create Welcome thread and post. $sql = "INSERT INTO {$database_name}.{$webtag}_THREAD "; $sql .= "(FID, BY_UID, TITLE, LENGTH, POLL_FLAG, CREATED, MODIFIED, CLOSED, STICKY, STICKY_UNTIL, ADMIN_LOCK) "; $sql .= "VALUES (1, 1, 'Welcome', 1, 'N', NOW(), NOW(), NULL, 'N', NULL, NULL)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } $sql = "INSERT INTO {$database_name}.{$webtag}_POST "; $sql .= "(TID, REPLY_TO_PID, FROM_UID, TO_UID, VIEWED, CREATED, STATUS, APPROVED, "; $sql .= "APPROVED_BY, EDITED, EDITED_BY, IPADDRESS) VALUES (1, 0, 1, 0, NULL, NOW(), "; $sql .= "0, NOW(), 1, NULL, 0, '')"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } $sql = "INSERT INTO {$database_name}.{$webtag}_POST_CONTENT (TID, PID, CONTENT) "; $sql .= "VALUES (1, 1, 'Welcome to your new Beehive Forum')"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } // Create Top Level Links Folder $sql = "INSERT INTO {$database_name}.{$webtag}_LINKS_FOLDERS "; $sql .= "(PARENT_FID, NAME, VISIBLE) VALUES (NULL, 'Top Level', 'Y')"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } // Store Forum settings $forum_settings = array('wiki_integration_uri' => 'http://en.wikipedia.org/wiki/[WikiWord]', 'enable_wiki_quick_links' => 'Y', 'enable_wiki_integration' => 'N', 'minimum_post_frequency' => '0', 'maximum_post_length' => '6226', 'post_edit_time' => '0', 'allow_post_editing' => 'Y', 'require_post_approval' => 'N', 'forum_dl_saving' => 'Y', 'forum_timezone' => '27', 'default_language' => 'en', 'default_emoticons' => 'default', 'default_style' => 'Default', 'forum_keywords' => 'A Beehive Forum, Beehive Forum, Project Beehive Forum', 'forum_desc' => 'A Beehive Forum', 'forum_email' => '*****@*****.**', 'forum_name' => $forum_name, 'show_links' => 'Y', 'allow_polls' => 'Y', 'show_stats' => 'Y', 'allow_search_spidering' => 'Y', 'guest_account_enabled' => 'Y', 'forum_links_top_link' => 'Forum Links:'); foreach ($forum_settings as $sname => $svalue) { $sname = db_escape_string($sname); $svalue = db_escape_string($svalue); $sql = "INSERT INTO FORUM_SETTINGS (FID, SNAME, SVALUE) "; $sql .= "VALUES ({$forum_fid}, '{$sname}', '{$svalue}')"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } } // Make sure at least the current user can access the forum // even if it's not protected. $sql = "INSERT INTO USER_FORUM (UID, FID, ALLOWED) VALUES('{$uid}', {$forum_fid}, 1)"; if (!($result = @db_query($sql, $db_forum_create))) { forum_delete($forum_fid); return false; } return $forum_fid; } return false; }
if (empty($forum)) { $arr['fid'] = $fid; $r = forum_create($arr); $r !== FALSE ? message(0, '创建成功') : message(11, '创建失败'); } $r = forum_update($fid, $arr); $r !== FALSE ? message(0, '更新成功') : message(12, '更新失败'); } } elseif ($action == 'delete') { if ($method != 'POST') { message(-1, 'Method Error.'); } $fid = param(2, 0); $forum = forum_read($fid); empty($forum) and message(1, '板块不存在'); $r = forum_delete($fid); $r !== FALSE ? message(0, '删除成功') : message(1, '删除失败'); } elseif ($action == 'uploadicon') { $method != 'POST' and message(-1, 'Method Error.'); $fid = param(2, 0); $forum = forum_read($fid); empty($forum) and message(1, '板块不存在'); $upfile = param('upfile', '', FALSE); empty($upfile) and message(-1, 'upfile 数据为空'); $json = xn_json_decode($upfile); empty($json) and message(-1, '数据有问题: json 为空'); $name = $json['name']; $width = $json['width']; $height = $json['height']; $data = base64_decode($json['data']); $size = strlen($data);
echo " <tr>\n"; echo " <td align=\"center\">", form_submit("t_confirm_delete", gettext("Delete")), " ", form_submit("cancel", gettext("Cancel")), "</td>\n"; echo " </tr>\n"; echo " </table>\n"; echo "</form>\n"; echo "</div>\n"; html_draw_bottom(); exit; } } else { if (isset($_POST['t_confirm_delete'])) { $valid = true; if (isset($_POST['t_delete']) && is_array($_POST['t_delete'])) { foreach ($_POST['t_delete'] as $forum_fid => $delete_forum) { if ($valid && $delete_forum == "Y" && ($forum_name = forum_get_name($forum_fid))) { if (!forum_delete($forum_fid)) { $error_msg_array[] = sprintf(gettext("Failed to deleted forum: '%s'"), $forum_name); } } } if ($valid) { header_redirect("admin_forums.php?webtag={$webtag}&page={$page}&deleted=true"); exit; } } } else { if (isset($_GET['default']) && is_numeric($_GET['default'])) { $fid = $_GET['default']; forum_update_default($fid); } else { if (isset($_POST['addforumsubmit'])) {