function setUp() { parent::setUp(); require_code('ocf_forums_action'); require_code('ocf_forums_action2'); require_lang('ocf'); $this->access_mapping = array(db_get_first_id() => 4); $this->forum_id = ocf_make_forum('TestAdd', 'Test', db_get_first_id(), $this->access_mapping, db_get_first_id(), 1, 1, 0, '', '', '', 'last_post'); // Test the forum was actually created $this->assertTrue('TestAdd' == $GLOBALS['FORUM_DB']->query_value('f_forums', 'f_name', array('id' => $this->forum_id))); }
/** * Standard modular install function. * * @param ?integer What version we're upgrading from (NULL: new install) * @param ?integer What hack version we're upgrading from (NULL: new-install/not-upgrading-from-a-hacked-version) */ function install($upgrade_from = NULL, $upgrade_from_hack = NULL) { add_config_option('_MESSAGING_FORUM_NAME', 'messaging_forum_name', 'forum', 'return do_lang(\'MESSAGING_FORUM_NAME\',\'\',\'\',\'\',get_site_default_lang());', 'FEATURE', 'CONTACT_US_MESSAGING'); if (get_forum_type() == 'ocf' && !running_script('upgrader')) { $moderator_groups = $GLOBALS['FORUM_DRIVER']->get_moderator_groups(); $staff_access = array(); foreach ($moderator_groups as $id) { $staff_access[$id] = 5; } ocf_require_all_forum_stuff(); require_code('ocf_forums_action'); require_code('ocf_forums_action2'); $GLOBALS['OCF_DRIVER'] = $GLOBALS['FORUM_DRIVER']; ocf_make_forum(do_lang('MESSAGING_FORUM_NAME'), '', db_get_first_id() + 1, $staff_access, db_get_first_id()); } }
/** * Get the forum ID for a given ticket type and member, taking the ticket_member_forums and ticket_type_forums options * into account. * * @param ?AUTO_LINK The member ID (NULL: no member) * @param ?integer The ticket type (NULL: all ticket types) * @param boolean Create the forum if it's missing * @param boolean Whether to skip showing errors, returning NULL instead * @return ?AUTO_LINK Forum ID (NULL: not found) */ function get_ticket_forum_id($member = NULL, $ticket_type = NULL, $create = false, $silent_error_handling = false) { static $fid_cache = array(); if (isset($fid_cache[$member][$ticket_type])) { return $fid_cache[$member][$ticket_type]; } $root_forum = get_option('ticket_forum_name'); // Check the root ticket forum is valid $fid = $GLOBALS['FORUM_DRIVER']->forum_id_from_name($root_forum); if (is_null($fid)) { if ($silent_error_handling) { return NULL; } warn_exit(do_lang_tempcode('NO_FORUM')); } // Only the root ticket forum is supported for non-OCF installations if (get_forum_type() != 'ocf') { return $fid; } require_code('ocf_forums_action'); require_code('ocf_forums_action2'); $category_id = $GLOBALS['FORUM_DB']->query_value('f_forums', 'f_category_id', array('id' => $fid)); if (!is_null($member) && get_option('ticket_member_forums') == '1') { $username = $GLOBALS['FORUM_DRIVER']->get_username($member); $rows = $GLOBALS['FORUM_DB']->query_select('f_forums', array('id'), array('f_parent_forum' => $fid, 'f_name' => $username), '', 1); if (count($rows) == 0) { $fid = ocf_make_forum($username, do_lang('SUPPORT_TICKETS_FOR_MEMBER', $username), $category_id, NULL, $fid); } else { $fid = $rows[0]['id']; } } if (!is_null($ticket_type) && get_option('ticket_type_forums') == '1') { $ticket_type_text = get_translated_text($ticket_type); $rows = $GLOBALS['FORUM_DB']->query_select('f_forums', array('id'), array('f_parent_forum' => $fid, 'f_name' => $ticket_type_text), '', 1); if (count($rows) == 0) { $fid = ocf_make_forum($ticket_type_text, do_lang('SUPPORT_TICKETS_FOR_TYPE', $ticket_type), $category_id, NULL, $fid); } else { $fid = $rows[0]['id']; } } $fid_cache[$member][$ticket_type] = $fid; return $fid; }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'forums'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['fid']), true); if (!is_null($remapped)) { continue; } $name = $row['fname']; ocf_over_msn(); //set the proper forum driver FORUM_DB $description = html_to_comcode($row['description']); ocf_over_local(); //return the OCF FORUM_DB $position = $row['forum_order']; $post_count_increment = 1; $category_id = import_id_remap_get('category', strval($row['cat_id']), true); $parent_forum = db_get_first_id(); $access_mapping = array(); if ($row['status'] == 0) { $permissions = $db->query('SELECT * FROM ' . $table_prefix . 'forumpermissions WHERE fpfid=' . strval((int) $row['fid'])); foreach ($permissions as $p) { $v = 0; if ($p['can_post_topic'] == 1) { $v = 2; } if ($p['can_reply'] == 1) { $v = 3; } if ($p['can_post_polls'] == 1) { $v = 4; } $group_id = import_id_remap_get('group', strval($p['fpugid']), true); if (is_null($group_id)) { continue; } $access_mapping[$group_id] = $v; } } $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment, 0, ''); import_id_remap_put('forum', strval($row['fid']), $id_new); } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $remap_id = array(); $rows = $db->query_select('boards'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['id_board']), true); if (!is_null($remapped)) { continue; } $name = html_entity_decode($row['name'], ENT_QUOTES, get_charset()); $description = str_replace(array('[html]', '[/html]'), array('', ''), html_to_comcode($row['description'])); $position = $row['board_order']; $post_count_increment = 1; $parent_forum = $row['id_parent'] > 0 ? $row['id_parent'] : db_get_first_id(); $cat_id = $row['id_cat']; $profile_id = (int) $row['id_profile']; $redirection = isset($row['redirect']) && !empty($row['redirect']) ? $row['redirect'] : ''; $category_id = import_id_remap_get('category', strval($cat_id), true); $access_mapping = NULL; $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment, 0, '', '', $redirection); $done_all_groups = false; /// Now lets do Permissions if (isset($row['member_groups']) && !empty($row['member_groups']) && !empty($profile_id)) { $permissions_on_groups = explode(',', $row['member_groups']); if (in_array('0', $permissions_on_groups)) { $this->fill_static_perms_all($profile_id, $id_new, $db, $table_prefix); $done_all_groups = true; } foreach ($permissions_on_groups as $gid) { // Let's deal with Guest group if ((int) $gid === -1) { //Yup its Guests so let's get value $v = $this->get_role_value(-1, $profile_id, $db, $table_prefix); //Now set Forum view access $this->set_forum_view_access(1, $id_new); // Now Set the static permissions array $this->static_perm_arr(1, $profile_id, $v); continue; } if ((int) $gid === 0) { continue; } //We already did all groups so skip if ((int) $gid === 1) { continue; } //Admin so skip // Check for SMF Global Moderators Group and map to ocp SuperModerators if ((int) $gid === 2) { //Yup its Moderators so let's get value $v = $this->get_role_value(2, $profile_id, $db, $table_prefix); //Now set Forum view access if (!$done_all_groups) { $this->set_forum_view_access(3, $id_new); } // Now Set the static permissions array $this->static_perm_arr(3, $profile_id, $v); continue; } // Ok now it's regular groups so lets deal with them // First let's get value $v = $this->get_role_value((int) $gid, $profile_id, $db, $table_prefix); //get the mapped group id $new_gid = import_id_remap_get('group', strval((int) $gid), true); //Now set Forum view access if (!$done_all_groups && $new_gid !== NULL) { $this->set_forum_view_access((int) $new_gid, $id_new); } // Now Set the static permissions array if ($new_gid !== NULL) { $this->static_perm_arr((int) $new_gid, $profile_id, $v); } } // Let's get theArray map of groups and profile ids $arr = $this->static_perm_arr(0, $profile_id, $v, true); // Now let's set permissions as we cycle through the static array map and apply permission based on best values $this->sort_set_forum_perms_array($arr, $id_new); } $remap_id[$row['id_board']] = $id_new; import_id_remap_put('forum', strval($row['id_board']), $id_new); } // Now we must fix parenting foreach ($rows as $row) { if (!is_null($row['id_parent']) && isset($remap_id[$row['id_board']])) { $parent_id = array_key_exists($row['id_parent'], $remap_id) ? $remap_id[$row['id_parent']] : db_get_first_id(); $GLOBALS['FORUM_DB']->query_update('f_forums', array('f_parent_forum' => $parent_id), array('id' => $remap_id[$row['id_board']]), '', 1); } } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $file_base) { if ($this->on_same_msn($file_base)) { return; } require_code('ocf_forums_action2'); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'f_forums'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['id']), true); if (!is_null($remapped)) { continue; } if ($row['id'] == db_get_first_id()) { import_id_remap_put('forum', strval(db_get_first_id()), db_get_first_id()); continue; } $category_id = import_id_remap_get('category', strval($row['f_category_id']), true); $id_new = ocf_make_forum($row['f_name'], $this->get_lang_string($db, $row['f_description']), $category_id, array(), db_get_first_id(), $row['f_position'], $row['f_post_count_increment'], $row['f_order_sub_alpha'], $this->get_lang_string($db, $row['f_intro_question']), $row['f_intro_answer'], $row['f_redirection'], array_key_exists('f_order', $row) ? $row['f_order'] : 'last_post'); import_id_remap_put('forum', strval($row['id']), $id_new); } // Now we must fix parenting foreach ($rows as $row) { if (is_null($row['f_parent_forum'])) { continue; } $parent_id = import_id_remap_get('forum', strval($row['f_parent_forum']), true); if (is_null($parent_id)) { $parent_id = db_get_first_id(); } $GLOBALS['FORUM_DB']->query_update('f_forums', array('f_parent_forum' => $parent_id), array('id' => import_id_remap_get('forum', strval($row['id']))), '', 1); } $this->_import_catalogue_entry_linkage($db, $table_prefix, 'forum', 'forum'); // Intros $rows = $db->query('SELECT * FROM ' . $table_prefix . 'f_forum_intro_ip'); foreach ($rows as $row) { $row['i_forum_id'] = import_id_remap_get('forum', strval($row['i_forum_id']), true); if (is_null($row['i_forum_id'])) { continue; } $GLOBALS['FORUM_DB']->query_delete('f_forum_intro_ip', $row, '', 1); $GLOBALS['FORUM_DB']->query_insert('f_forum_intro_ip', $row); } $rows = $db->query('SELECT * FROM ' . $table_prefix . 'f_forum_intro_member'); foreach ($rows as $row) { $row['i_forum_id'] = import_id_remap_get('forum', strval($row['i_forum_id']), true); if (is_null($row['i_forum_id'])) { continue; } $GLOBALS['FORUM_DB']->query_delete('f_forum_intro_member', $row, '', 1); $GLOBALS['FORUM_DB']->query_insert('f_forum_intro_member', $row); } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $remap_id = array(); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'forums'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['id']), true); if (!is_null($remapped)) { $remap_id[$row['id']] = $remapped; continue; } if ($row['id'] == -1) { continue; } $name = @html_entity_decode($row['name'], ENT_QUOTES, get_charset()); $description = strip_tags(@html_entity_decode($row['description'], ENT_QUOTES, get_charset())); $category_id = import_id_remap_get('category', strval($row['category'])); $parent_forum = db_get_first_id(); $position = $row['position']; $post_count_increment = $row['inc_postcount']; $_all_groups = array_unique(explode(',', $row['start_perms'] . ',' . $row['reply_perms'] . ',' . $row['read_perms'])); $level2_groups = explode(',', $row['read_perms']); $level3_groups = explode(',', $row['reply_perms']); $level4_groups = explode(',', $row['start_perms']); $access_mapping = array(); foreach ($_all_groups as $old_group) { $new_group = import_id_remap_get('group', strval($old_group), true); if (is_null($new_group)) { continue; } if (in_array($old_group, $level4_groups)) { $access_mapping[$new_group] = 4; } elseif (in_array($old_group, $level3_groups)) { $access_mapping[$new_group] = 3; } elseif (in_array($old_group, $level2_groups)) { $access_mapping[$new_group] = 2; } else { $access_mapping[$new_group] = 0; } } $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment); $remap_id[$row['id']] = $id_new; import_id_remap_put('forum', strval($row['id']), $id_new); } // Now we must fix parenting foreach ($rows as $row) { if (!(is_null($row['parent_id']) || $row['parent_id'] == -1)) { $parent_id = $remap_id[$row['parent_id']]; $GLOBALS['FORUM_DB']->query_update('f_forums', array('f_parent_forum' => $parent_id), array('id' => $remap_id[$row['id']]), '', 1); } } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'forums'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['forum_id']), true); if (!is_null($remapped)) { continue; } $name = $row['forum_name']; ocf_over_msn(); $description = html_to_comcode($row['forum_desc']); ocf_over_local(); $position = $row['forum_order']; $post_count_increment = 1; $category_id = import_id_remap_get('category', strval($row['cat_id']), true); $parent_forum = db_get_first_id(); $access_mapping = array(); if ($row['forum_status'] == 0) { $permissions = $db->query('SELECT * FROM ' . $table_prefix . 'auth_access WHERE forum_id=' . strval((int) $row['forum_id'])); // $row['group_id']=-1; // $permissions[]=$row; foreach ($permissions as $p) { $v = 0; if ($p['auth_read'] == 1) { $v = 1; } if ($p['auth_post'] == 1) { $v = 2; } if ($p['auth_reply'] == 1) { $v = 3; } if ($p['auth_pollcreate'] == 1) { $v = 4; } // This ones a bit hackerish, but closest we can get to concept if (array_key_exists('auth_mod', $p) && $p['auth_mod'] == 1) { $v = 5; } //NOTE that if the group is not imported, this means that this group is a single user group if (!import_check_if_imported('group', strval($p['group_id']))) { continue; } $group_id = import_id_remap_get('group', strval($p['group_id'])); $access_mapping[$group_id] = $v; } } $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment, 0, ''); import_id_remap_put('forum', strval($row['forum_id']), $id_new); } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'forums WHERE ' . db_string_equal_to('type', 'f')); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['fid']), true); if (!is_null($remapped)) { continue; } $name = $row['name']; ocf_over_msn(); $description = html_to_comcode($row['description']); ocf_over_local(); $position = $row['disporder']; $post_count_increment = 1; $parentlist = explode(',', $row['parentlist']); $cat_id = $parentlist[0]; $category_id = import_id_remap_get('category', $cat_id, true); end($parentlist); $prev = prev($parentlist); $parent_forum = $prev != $parentlist[0] ? intval($prev) : db_get_first_id(); $access_mapping = array(); if ($row['status'] == 1) { $permissions = $db->query('SELECT * FROM ' . $table_prefix . 'forumpermissions WHERE fid=' . strval((int) $row['fid'])); foreach ($permissions as $p) { $v = 0; if ($p['canpostthreads'] == 1) { $v = 2; } if ($p['canpostreplys'] == 1) { $v = 3; } if ($p['canpostpolls'] == 1) { $v = 4; } $group_id = import_id_remap_get('group', strval($p['gid'])); $access_mapping[$group_id] = $v; } } $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment, 0, ''); import_id_remap_put('forum', strval($row['fid']), $id_new); } }
/** * Install/upgrade OCF. * * @param ?float The version to upgrade from (NULL: fresh install). */ function install_ocf($upgrade_from = NULL) { require_code('ocf_members'); require_code('ocf_topics'); require_code('ocf_groups'); require_code('ocf_forums'); require_lang('ocf'); require_lang('ocf_config'); require_code('ocf_moderation_action'); require_code('ocf_posts_action'); require_code('ocf_members_action'); require_code('ocf_groups_action'); require_code('ocf_general_action'); require_code('ocf_forums_action'); require_code('ocf_topics_action'); require_code('database_action'); if (is_null($upgrade_from)) { uninstall_ocf_everytime(); uninstall_ocf(); } $test = $GLOBALS['FORUM_DB']->query('SELECT id FROM ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'f_forums', NULL, NULL, true); $not_installed = is_null($test); if ($not_installed) { $upgrade_from = NULL; } if (is_null($upgrade_from) || $upgrade_from < 4.2) { add_config_option('ENCRYPTION_KEY', 'encryption_key', 'line', 'require_code(\'encryption\');return is_encryption_available()?\'\':NULL;', 'PRIVACY', 'ADVANCED'); add_config_option('DECRYPTION_KEY', 'decryption_key', 'line', 'require_code(\'encryption\');return is_encryption_available()?\'\':NULL;', 'PRIVACY', 'ADVANCED'); add_config_option('IS_ON_POST_TITLES', 'is_on_post_titles', 'tick', 'return is_null($old=get_value(\'no_post_titles\'))?\'0\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('IS_ON_ANONYMOUS_POSTS', 'is_on_anonymous_posts', 'tick', 'return is_null($old=get_value(\'ocf_no_anonymous_post\'))?\'0\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('IS_ON_TIMEZONE_DETECTION', 'is_on_timezone_detection', 'tick', 'return is_null($old=get_value(\'no_js_timezone_detect\'))?\'0\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('IS_ON_TOPIC_DESCRIPTIONS', 'is_on_topic_descriptions', 'tick', 'return is_null($old=get_value(\'no_topic_descriptions\'))?\'1\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('IS_ON_TOPIC_EMOTICONS', 'is_on_topic_emoticons', 'tick', 'return is_null($old=get_value(\'ocf_no_topic_emoticons\'))?\'1\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('DEFAULT_PREVIEW_GUESTS', 'default_preview_guests', 'tick', 'return is_null($old=get_value(\'no_default_preview_guests\'))?\'0\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('FORCED_PREVIEW_OPTION', 'forced_preview_option', 'tick', 'return is_null($old=get_value(\'no_forced_preview_option\'))?\'0\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('OVERT_WHISPER_SUGGESTION', 'overt_whisper_suggestion', 'tick', 'return is_null($old=get_value(\'disable_overt_whispering\'))?\'1\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('IS_ON_INVISIBILITY', 'is_on_invisibility', 'tick', 'return is_null($old=get_value(\'no_invisible_option\'))?\'0\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('ALLOW_ALPHA_SEARCH', 'allow_alpha_search', 'tick', 'return is_null($old=get_value(\'allow_alpha_search\'))?\'0\':$old;', 'SECTION_FORUMS', 'GENERAL'); add_config_option('ALLOW_EMAIL_DISABLE', 'allow_email_disable', 'tick', 'return is_null($old=get_value(\'disable_allow_emails_field\'))?\'1\':invert_value($old);', 'SECTION_FORUMS', 'GENERAL'); add_config_option('MAX_MEMBER_TITLE_LENGTH', 'max_member_title_length', 'integer', 'return addon_installed(\'ocf_member_titles\')?\'20\':NULL;', 'SECTION_FORUMS', 'GENERAL'); $GLOBALS['FORUM_DB']->drop_if_exists('f_member_cpf_perms'); $GLOBALS['FORUM_DB']->create_table('f_member_cpf_perms', array('member_id' => '*USER', 'field_id' => '*AUTO_LINK', 'guest_view' => 'BINARY', 'member_view' => 'BINARY', 'friend_view' => 'BINARY', 'group_view' => 'SHORT_TEXT')); } if (is_null($upgrade_from) || $upgrade_from < 2.5) { add_config_option('HTTPAUTH_IS_ENABLED', 'httpauth_is_enabled', 'tick', 'return \'0\';', 'SECTION_FORUMS', 'ADVANCED', 1); add_config_option('POST_HISTORY_DAYS', 'post_history_days', 'integer', 'return \'21\';', 'SECTION_FORUMS', 'GENERAL', 1); } if (is_null($upgrade_from)) { // Add config options add_config_option('FORUM_POSTS_PER_PAGE', 'forum_posts_per_page', 'integer', 'return has_no_forum()?NULL:\'20\';', 'SECTION_FORUMS', 'GENERAL'); add_config_option('FORUM_TOPICS_PER_PAGE', 'forum_topics_per_page', 'integer', 'return has_no_forum()?NULL:\'30\';', 'SECTION_FORUMS', 'GENERAL'); add_config_option('PREVENT_SHOUTING', 'prevent_shouting', 'tick', 'return has_no_forum()?NULL:\'1\';', 'SECTION_FORUMS', 'GENERAL'); add_config_option('RESTRICTED_USERNAMES', 'restricted_usernames', 'line', 'return do_lang(\'GUEST\').\', \'.do_lang(\'STAFF\').\', \'.do_lang(\'ADMIN\').\', \'.do_lang(\'MODERATOR\').\', googlebot\';', 'SECTION_FORUMS', 'GENERAL'); add_config_option('REQUIRE_NEW_MEMBER_VALIDATION', 'require_new_member_validation', 'tick', 'return \'0\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('REPORTED_POSTS_FORUM', 'reported_posts_forum', 'forum', 'return (has_no_forum()||(!addon_installed(\'ocf_reported_posts\')))?NULL:do_lang(\'ocf:REPORTED_POSTS_FORUM\');', 'SECTION_FORUMS', 'GENERAL'); add_config_option('ONE_PER_EMAIL_ADDRESS', 'one_per_email_address', 'tick', 'return \'1\';', 'SECTION_FORUMS', 'GENERAL'); add_config_option('HOT_TOPIC_DEFINITION', 'hot_topic_definition', 'integer', 'return has_no_forum()?NULL:\'20\';', 'SECTION_FORUMS', 'GENERAL'); } if (!is_null($upgrade_from) && $upgrade_from < 7.2) { $rows = $GLOBALS['FORUM_DB']->query('SELECT m_name FROM ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'db_meta WHERE (' . db_string_equal_to('m_type', '?INTEGER') . ' OR ' . db_string_equal_to('m_type', 'BINARY') . ') AND ' . db_string_equal_to('m_table', 'f_member_custom_fields')); foreach ($rows as $row) { $GLOBALS['FORUM_DB']->alter_table_field('f_member_custom_fields', $row['m_name'], 'SHORT_TEXT'); } $i = 0; do { $rows = $GLOBALS['FORUM_DB']->query_select('f_member_custom_fields', array('*'), NULL, '', 100, $i); foreach ($rows as $j => $row) { foreach ($row as $key => $val) { if (substr($key, 0, 6) == 'field_') { $val = str_replace('|', chr(10), $val); $row[$key] = $val; } } if ($rows[$j] != $row) { $GLOBALS['FORUM_DB']->query_update('f_member_custom_fields', array('mf_member_id' => $row['mf_member_id']), $row, '', 1); } } $i += 100; } while (count($rows) != 0); $GLOBALS['FORUM_DB']->alter_table_field('f_members', 'm_track_contributed_topics', 'BINARY', 'm_auto_monitor_contrib_content'); } if (!is_null($upgrade_from) && $upgrade_from < 4.0) { $GLOBALS['FORUM_DB']->alter_table_field('f_members', 'm_password_compatibility_scheme', 'ID_TEXT', 'm_password_compat_scheme'); $GLOBALS['FORUM_DB']->delete_table_field('f_members', 'm_track_all_forums'); } if (!is_null($upgrade_from) && $upgrade_from < 3.1) { $GLOBALS['FORUM_DB']->add_table_field('f_emoticons', 'e_is_special', 'BINARY', 0); $GLOBALS['FORUM_DB']->add_table_field('f_members', 'm_highlighted_name', 'BINARY', 0); } if (!is_null($upgrade_from) && $upgrade_from < 3.0) { $rows = $GLOBALS['FORUM_DB']->query_select('f_forum_group_access', array('*')); foreach ($rows as $row) { if ($row['a_level'] > 1) { $GLOBALS['SITE_DB']->query_insert('group_category_access', array('module_the_name' => 'forums', 'category_name' => strval($row['a_forum_id']), 'group_id' => $row['a_group_id'])); } } $GLOBALS['FORUM_DB']->drop_if_exists('f_forum_group_access'); delete_specific_permission('allow_deletive_moderation'); $GLOBALS['FORUM_DB']->delete_table_field('f_post_templates', 't_minimum_access_level'); $GLOBALS['FORUM_DB']->add_table_field('f_groups', 'g_is_presented_at_install', 'BINARY', 0); $GLOBALS['FORUM_DB']->alter_table_field('f_custom_fields', 'cf_name', 'SHORT_TRANS'); $GLOBALS['FORUM_DB']->alter_table_field('f_groups', 'g_rank_image', 'ID_TEXT'); } if (!is_null($upgrade_from) && $upgrade_from < 2.6) { $GLOBALS['FORUM_DB']->add_table_field('f_groups', 'g_is_default', 'BINARY'); } if (is_null($upgrade_from) || $upgrade_from < 4.0) { add_config_option('MINIMUM_PASSWORD_LENGTH', 'minimum_password_length', 'integer', 'return \'4\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('MAXIMUM_PASSWORD_LENGTH', 'maximum_password_length', 'integer', 'return \'20\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('MINIMUM_USERNAME_LENGTH', 'minimum_username_length', 'integer', 'return \'1\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('MAXIMUM_USERNAME_LENGTH', 'maximum_username_length', 'integer', 'return \'20\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('PROHIBIT_PASSWORD_WHITESPACE', 'prohibit_password_whitespace', 'tick', 'return \'1\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); //add_config_option('PROHIBIT_PASSWORD_DICTIONARY','prohibit_password_dictionary','tick','return \'0\';','SECTION_FORUMS','USERNAMES_AND_PASSWORDS'); add_config_option('PROHIBIT_USERNAME_WHITESPACE', 'prohibit_username_whitespace', 'tick', 'return \'0\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('ASSIGN_RANDOM_AVATARS', 'random_avatars', 'tick', 'return addon_installed(\'ocf_member_avatars\')?\'1\':NULL;', 'SECTION_FORUMS', 'GENERAL'); add_config_option('CLUB_FORUM_PARENT_FORUM', 'club_forum_parent_forum', 'forum', 'return has_no_forum()?NULL:strval(db_get_first_id());', 'SECTION_FORUMS', 'GENERAL'); add_config_option('CLUB_FORUM_PARENT_CATEGORY', 'club_forum_parent_category', 'category', 'return has_no_forum()?NULL:strval(db_get_first_id());', 'SECTION_FORUMS', 'GENERAL'); add_config_option('DELETE_TRASHED_PTS', 'delete_trashed_pts', 'tick', 'return has_no_forum()?NULL:\'0\';', 'SECTION_FORUMS', 'GENERAL'); //add_config_option('ALLOW_MEMBER_INTEGRATION','allow_member_integration','list','return \'off\';','SECTION_FORUMS','USERNAMES_AND_PASSWORDS',0,'strict|on|hidden|off'); add_config_option('PROBATION_USERGROUP', 'probation_usergroup', 'usergroup', 'return do_lang(\'PROBATION\');', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('SHOW_FIRST_JOIN_PAGE', 'show_first_join_page', 'tick', 'return \'1\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('SKIP_EMAIL_CONFIRM_JOIN', 'skip_email_confirm_join', 'tick', 'return \'1\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('NO_DOB_ASK', 'no_dob_ask', 'list', 'return \'0\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS', 0, '0|1|2'); add_config_option('ALLOW_INTERNATIONAL', 'allow_international', 'tick', 'return \'1\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); } if (is_null($upgrade_from) || $upgrade_from < 8.0) { add_config_option('ALLOW_EMAIL_FROM_STAFF_DISABLE', 'allow_email_from_staff_disable', 'tick', 'return \'0\';', 'SECTION_FORUMS', 'GENERAL'); add_config_option('INTRO_FORUM_ID', 'intro_forum_id', '?forum', 'return \'\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); add_config_option('SIGNUP_FULLNAME', 'signup_fullname', 'tick', 'return \'0\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS'); } if (!is_null($upgrade_from) && $upgrade_from < 8.1) { delete_config_option('no_dob_ask'); add_config_option('NO_DOB_ASK', 'no_dob_ask', 'list', 'return \'0\';', 'SECTION_FORUMS', 'USERNAMES_AND_PASSWORDS', 0, '0|1|2'); // Recreate option } if (!is_null($upgrade_from) && $upgrade_from < 8.0) { $GLOBALS['FORUM_DB']->add_table_field('f_members', 'm_allow_emails_from_staff', 'BINARY'); $GLOBALS['FORUM_DB']->add_table_field('f_custom_fields', 'cf_show_on_join_form', 'BINARY'); $GLOBALS['FORUM_DB']->add_table_field('f_forums', 'f_is_threaded', 'BINARY', 0); $GLOBALS['FORUM_DB']->add_table_field('f_posts', 'p_parent_id', '?AUTO_LINK', NULL); $GLOBALS['FORUM_DB']->query('UPDATE ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'f_custom_fields SET cf_show_on_join_form=cf_required'); delete_config_option('send_staff_message_post_validation'); require_code('notifications'); $start = 0; do { $rows = $GLOBALS['FORUM_DB']->query_select('f_forum_tracking', array('r_forum_id', 'r_member_id'), NULL, '', 100, $start); foreach ($rows as $row) { enable_notifications('ocf_topic', 'forum:' . strval($row['r_forum_id']), $row['r_member_id']); } $start += 100; } while (count($rows) == 100); $start = 0; do { $rows = $GLOBALS['FORUM_DB']->query_select('f_topic_tracking', array('r_topic_id', 'r_member_id'), NULL, '', 100, $start); foreach ($rows as $row) { enable_notifications('ocf_topic', strval($row['r_topic_id']), $row['r_member_id']); } $start += 100; } while (count($rows) == 100); $GLOBALS['FORUM_DB']->drop_if_exists('f_forum_tracking'); $GLOBALS['FORUM_DB']->drop_if_exists('f_topic_tracking'); } if (!is_null($upgrade_from) && $upgrade_from < 4.2) { $GLOBALS['FORUM_DB']->add_table_field('f_topics', 't_description_link', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->add_table_field('f_custom_fields', 'cf_encrypted', 'BINARY', 0); } if (!is_null($upgrade_from) && $upgrade_from < 4.0) { $GLOBALS['FORUM_DB']->add_table_field('f_members', 'm_on_probation_until', '?TIME', time()); $GLOBALS['FORUM_DB']->add_table_field('f_members', 'm_pt_rules_text', 'LONG_TRANS', ''); $GLOBALS['FORUM_DB']->add_table_field('f_members', 'm_pt_allow', 'SHORT_TEXT', '*'); $GLOBALS['FORUM_DB']->add_table_field('f_forums', 'f_order', 'ID_TEXT', 'last_post'); // last_post,first_post,title $GLOBALS['FORUM_DB']->add_table_field('f_groups', 'g_hidden', 'BINARY', 0); $GLOBALS['FORUM_DB']->add_table_field('f_groups', 'g_order', 'INTEGER'); $GLOBALS['FORUM_DB']->add_table_field('f_groups', 'g_rank_image_pri_only', 'BINARY', 1); $GLOBALS['FORUM_DB']->add_table_field('f_groups', 'g_open_membership', 'BINARY', 0); $GLOBALS['FORUM_DB']->add_table_field('f_groups', 'g_is_private_club', 'BINARY', 0); $GLOBALS['FORUM_DB']->add_table_field('f_posts', 'p_skip_sig', 'BINARY', 0); $GLOBALS['FORUM_DB']->add_table_field('f_topics', 't_sunk', 'BINARY', 0); $GLOBALS['FORUM_DB']->add_table_field('f_multi_moderations', 'mm_sink_state', '?BINARY', NULL); $GLOBALS['FORUM_DB']->add_table_field('f_multi_moderations', 'mm_title_suffix', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->add_table_field('f_warnings', 'w_is_warning', 'BINARY', 1); $GLOBALS['FORUM_DB']->add_table_field('f_warnings', 'p_silence_from_topic', '?AUTO_LINK'); $GLOBALS['FORUM_DB']->add_table_field('f_warnings', 'p_silence_from_forum', '?AUTO_LINK'); $GLOBALS['FORUM_DB']->add_table_field('f_warnings', 'p_probation', 'INTEGER', 0); $GLOBALS['FORUM_DB']->add_table_field('f_warnings', 'p_banned_ip', 'IP'); $GLOBALS['FORUM_DB']->add_table_field('f_warnings', 'p_charged_points', 'INTEGER', 0); $GLOBALS['FORUM_DB']->add_table_field('f_warnings', 'p_banned_member', 'BINARY', 0); $GLOBALS['FORUM_DB']->add_table_field('f_warnings', 'p_changed_usergroup_from', '?GROUP'); } if (is_null($upgrade_from) || $upgrade_from < 3.0) { add_config_option('COPPA_ENABLED', 'is_on_coppa', 'tick', 'return \'0\';', 'PRIVACY', 'GENERAL'); add_config_option('FAX_NUMBER', 'privacy_fax', 'line', 'return \'\';', 'PRIVACY', 'GENERAL'); add_config_option('ADDRESS', 'privacy_postal_address', 'text', 'return \'\';', 'PRIVACY', 'GENERAL'); } if (is_null($upgrade_from) || $upgrade_from < 2.6) { add_config_option('INVITES_ENABLED', 'is_on_invites', 'tick', 'return \'0\';', 'SECTION_FORUMS', 'GENERAL'); add_config_option('INVITES_PER_DAY', 'invites_per_day', 'float', 'return \'1\';', 'SECTION_FORUMS', 'GENERAL'); } if (!is_null($upgrade_from) && $upgrade_from < 2.5) { $GLOBALS['FORUM_DB']->add_table_field('f_forums', 'f_redirection', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->add_table_field('f_forums', 'f_order_sub_alpha', 'BINARY'); $GLOBALS['FORUM_DB']->add_table_field('f_forums', 'f_intro_question', 'LONG_TRANS'); $GLOBALS['FORUM_DB']->add_table_field('f_forums', 'f_intro_answer', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->add_table_field('f_members', 'm_max_email_attach_size_mb', 'INTEGER', 3); $GLOBALS['FORUM_DB']->add_table_field('f_members', 'm_zone_wide', 'BINARY', 1); $GLOBALS['FORUM_DB']->add_table_field('f_members', 'm_notes', 'LONG_TEXT'); // TODO: remove $GLOBALS['FORUM_DB']->add_table_field('f_emoticons', 'e_use_topics', 'BINARY', 1); $GLOBALS['FORUM_DB']->add_table_field('f_topics', 't_pt_from_category', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->add_table_field('f_topics', 't_pt_to_category', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->add_table_field('f_custom_fields', 'cf_show_in_post_previews', 'BINARY', 1); $GLOBALS['FORUM_DB']->add_table_field('f_custom_fields', 'cf_order', 'INTEGER'); $GLOBALS['FORUM_DB']->add_table_field('f_custom_fields', 'cf_only_group', '?GROUP'); $GLOBALS['FORUM_DB']->add_table_field('f_multi_moderations', 'mm_forum_multi_code', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->alter_table_field('f_topics', 't_emoticon', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->alter_table_field('f_emoticons', 'e_theme_img_code', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->promote_text_field_to_comcode('f_forums', 'f_description'); $GLOBALS['FORUM_DB']->alter_table_field('f_members', 'm_pass_hash_salted', 'SHORT_TEXT'); $GLOBALS['FORUM_DB']->drop_if_exists('f_groups'); $GLOBALS['FORUM_DB']->query_delete('f_emoticons'); } if (!is_null($upgrade_from) && $upgrade_from < 3.1) { $GLOBALS['FORUM_DB']->alter_table_field('f_custom_fields', 'cf_only_group', 'LONG_TEXT'); } // If we have the forum installed to this db already, leave if (is_null($upgrade_from) && $not_installed) { uninstall_ocf(); $GLOBALS['FORUM_DB']->create_table('f_emoticons', array('e_code' => '*ID_TEXT', 'e_theme_img_code' => 'SHORT_TEXT', 'e_relevance_level' => 'INTEGER', 'e_use_topics' => 'BINARY', 'e_is_special' => 'BINARY')); $GLOBALS['FORUM_DB']->create_index('f_emoticons', 'relevantemoticons', array('e_relevance_level')); $GLOBALS['FORUM_DB']->create_index('f_emoticons', 'topicemos', array('e_use_topics')); $GLOBALS['FORUM_DB']->create_table('f_custom_fields', array('id' => '*AUTO', 'cf_locked' => 'BINARY', 'cf_name' => 'SHORT_TRANS', 'cf_description' => 'SHORT_TRANS', 'cf_default' => 'LONG_TEXT', 'cf_public_view' => 'BINARY', 'cf_owner_view' => 'BINARY', 'cf_owner_set' => 'BINARY', 'cf_type' => 'ID_TEXT', 'cf_required' => 'BINARY', 'cf_show_in_posts' => 'BINARY', 'cf_show_in_post_previews' => 'BINARY', 'cf_order' => 'INTEGER', 'cf_only_group' => 'LONG_TEXT', 'cf_encrypted' => 'BINARY', 'cf_show_on_join_form' => 'BINARY')); // These don't need to be filled in. We just use default from custom field if they aren't $GLOBALS['FORUM_DB']->create_table('f_member_custom_fields', array('mf_member_id' => '*USER')); //$GLOBALS['FORUM_DB']->create_index('f_member_custom_fields','fields_for_member',array('mf_member_id')); ocf_make_boiler_custom_field('SELF_DESCRIPTION'); //ocf_make_boiler_custom_field('im_aim'); //ocf_make_boiler_custom_field('im_msn'); //ocf_make_boiler_custom_field('im_yahoo'); //ocf_make_boiler_custom_field('im_icq'); //ocf_make_boiler_custom_field('im_jabber'); ocf_make_boiler_custom_field('im_skype'); ocf_make_boiler_custom_field('sn_facebook'); ocf_make_boiler_custom_field('sn_google'); ocf_make_boiler_custom_field('sn_twitter'); ocf_make_boiler_custom_field('interests'); ocf_make_boiler_custom_field('location'); ocf_make_boiler_custom_field('occupation'); ocf_make_boiler_custom_field('staff_notes'); } if (is_null($upgrade_from) || $upgrade_from < 2.6) { $GLOBALS['FORUM_DB']->create_table('f_invites', array('id' => '*AUTO', 'i_inviter' => 'USER', 'i_email_address' => 'SHORT_TEXT', 'i_time' => 'TIME', 'i_taken' => 'BINARY')); } if (is_null($upgrade_from) && $not_installed) { $GLOBALS['FORUM_DB']->create_table('f_group_members', array('gm_group_id' => '*GROUP', 'gm_member_id' => '*USER', 'gm_validated' => 'BINARY')); $GLOBALS['FORUM_DB']->create_index('f_group_members', 'gm_validated', array('gm_validated')); $GLOBALS['FORUM_DB']->create_index('f_group_members', 'gm_member_id', array('gm_member_id')); $GLOBALS['FORUM_DB']->create_index('f_group_members', 'gm_group_id', array('gm_group_id')); $GLOBALS['FORUM_DB']->create_table('f_members', array('id' => '*AUTO', 'm_username' => 'ID_TEXT', 'm_pass_hash_salted' => 'SHORT_TEXT', 'm_pass_salt' => 'SHORT_TEXT', 'm_theme' => 'ID_TEXT', 'm_avatar_url' => 'URLPATH', 'm_validated' => 'BINARY', 'm_validated_email_confirm_code' => 'SHORT_TEXT', 'm_cache_num_posts' => 'INTEGER', 'm_cache_warnings' => 'INTEGER', 'm_join_time' => 'TIME', 'm_timezone_offset' => 'SHORT_TEXT', 'm_primary_group' => 'GROUP', 'm_last_visit_time' => 'TIME', 'm_last_submit_time' => 'TIME', 'm_signature' => 'LONG_TRANS', 'm_is_perm_banned' => 'BINARY', 'm_preview_posts' => 'BINARY', 'm_dob_day' => '?INTEGER', 'm_dob_month' => '?INTEGER', 'm_dob_year' => '?INTEGER', 'm_reveal_age' => 'BINARY', 'm_email_address' => 'SHORT_TEXT', 'm_title' => 'SHORT_TEXT', 'm_photo_url' => 'URLPATH', 'm_photo_thumb_url' => 'URLPATH', 'm_views_signatures' => 'BINARY', 'm_auto_monitor_contrib_content' => 'BINARY', 'm_language' => 'ID_TEXT', 'm_ip_address' => 'IP', 'm_allow_emails' => 'BINARY', 'm_allow_emails_from_staff' => 'BINARY', 'm_notes' => 'LONG_TEXT', 'm_zone_wide' => 'BINARY', 'm_highlighted_name' => 'BINARY', 'm_pt_allow' => 'SHORT_TEXT', 'm_pt_rules_text' => 'LONG_TRANS', 'm_max_email_attach_size_mb' => 'INTEGER', 'm_password_change_code' => 'SHORT_TEXT', 'm_password_compat_scheme' => 'ID_TEXT', 'm_on_probation_until' => '?TIME')); $GLOBALS['FORUM_DB']->create_index('f_members', '#search_user', array('m_username')); $GLOBALS['FORUM_DB']->create_index('f_members', 'user_list', array('m_username')); $GLOBALS['FORUM_DB']->create_index('f_members', 'menail', array('m_email_address')); $GLOBALS['FORUM_DB']->create_index('f_members', 'external_auth_lookup', array('m_pass_hash_salted')); $GLOBALS['FORUM_DB']->create_index('f_members', 'sort_post_count', array('m_cache_num_posts')); $GLOBALS['FORUM_DB']->create_index('f_members', 'm_join_time', array('m_join_time')); $GLOBALS['FORUM_DB']->create_index('f_members', 'whos_validated', array('m_validated')); $GLOBALS['FORUM_DB']->create_index('f_members', 'birthdays', array('m_dob_day', 'm_dob_month')); $GLOBALS['FORUM_DB']->create_index('f_members', 'ftjoin_msig', array('m_signature')); $GLOBALS['FORUM_DB']->create_index('f_members', 'primary_group', array('m_primary_group')); $GLOBALS['FORUM_DB']->create_index('f_members', 'avatar_url', array('m_avatar_url')); // Used for uniform avatar randomisation } if (is_null($upgrade_from) || $upgrade_from < 2.5) { $no_use_topics = array('party' => 1, 'christmas' => 1, 'offtopic' => 1, 'rockon' => 1, 'guitar' => 1, 'sinner' => 1, 'wink' => 1, 'kiss' => 1, 'nod' => 1, 'smile' => 1, 'mellow' => 1, 'whistle' => 1, 'shutup' => 1, 'cyborg' => 1); $core_emoticons = array(':P' => 'cheeky', ":'(" => 'cry', ':dry:' => 'dry', ':$' => 'blush', ';)' => 'wink', 'O_o' => 'blink', ':wub:' => 'wub', ':cool:' => 'cool', ':lol:' => 'lol', ':(' => 'sad', ':)' => 'smile', ':thumbs:' => 'thumbs', ':offtopic:' => 'offtopic', ':|' => 'mellow', ':ninja:' => 'ph34r', ':o' => 'shocked'); $supported_emoticons = array(':rolleyes:' => 'rolleyes', ':D' => 'grin', '^_^' => 'glee', '(K)' => 'kiss', ':S' => 'confused', ':@' => 'angry', ':shake:' => 'shake', ':hand:' => 'hand', ':drool:' => 'drool', ':devil:' => 'devil', ':party:' => 'party', ':constipated:' => 'constipated', ':depressed:' => 'depressed', ':zzz:' => 'zzz', ':whistle:' => 'whistle', ':upsidedown:' => 'upsidedown', ':sick:' => 'sick', ':shutup:' => 'shutup', ':sarcy:' => 'sarcy', ':puppyeyes:' => 'puppyeyes', ':nod:' => 'nod', ':nerd:' => 'nerd', ':king:' => 'king', ':birthday:' => 'birthday', ':cyborg:' => 'cyborg', ':hippie:' => 'hippie', ':ninja2:' => 'ninja2', ':rockon:' => 'rockon', ':sinner:' => 'sinner', ':guitar:' => 'guitar'); $unused_emoticons = array(':christmas:' => 'christmas'); foreach ($core_emoticons as $a => $b) { ocf_make_emoticon($a, 'ocf_emoticons/' . $b, 0, array_key_exists($b, $no_use_topics) ? 0 : 1); } foreach ($supported_emoticons as $a => $b) { ocf_make_emoticon($a, 'ocf_emoticons/' . $b, 1, array_key_exists($b, $no_use_topics) ? 0 : 1); } foreach ($unused_emoticons as $a => $b) { ocf_make_emoticon($a, 'ocf_emoticons/' . $b, 1, array_key_exists($b, $no_use_topics) ? 0 : 1); } $GLOBALS['FORUM_DB']->create_table('f_groups', array('id' => '*AUTO', 'g_name' => 'SHORT_TRANS', 'g_is_default' => 'BINARY', 'g_is_presented_at_install' => 'BINARY', 'g_is_super_admin' => 'BINARY', 'g_is_super_moderator' => 'BINARY', 'g_group_leader' => '?USER', 'g_title' => 'SHORT_TRANS', 'g_promotion_target' => '?GROUP', 'g_promotion_threshold' => '?INTEGER', 'g_flood_control_submit_secs' => 'INTEGER', 'g_flood_control_access_secs' => 'INTEGER', 'g_gift_points_base' => 'INTEGER', 'g_gift_points_per_day' => 'INTEGER', 'g_max_daily_upload_mb' => 'INTEGER', 'g_max_attachments_per_post' => 'INTEGER', 'g_max_avatar_width' => 'INTEGER', 'g_max_avatar_height' => 'INTEGER', 'g_max_post_length_comcode' => 'INTEGER', 'g_max_sig_length_comcode' => 'INTEGER', 'g_enquire_on_new_ips' => 'BINARY', 'g_rank_image' => 'ID_TEXT', 'g_hidden' => 'BINARY', 'g_order' => 'INTEGER', 'g_rank_image_pri_only' => 'BINARY', 'g_open_membership' => 'BINARY', 'g_is_private_club' => 'BINARY')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'ftjoin_gname', array('g_name')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'ftjoin_gtitle', array('g_title')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'is_private_club', array('g_is_private_club')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'is_super_admin', array('g_is_super_admin')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'is_super_moderator', array('g_is_super_moderator')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'is_default', array('g_is_default')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'hidden', array('g_hidden')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'is_presented_at_install', array('g_is_presented_at_install')); $GLOBALS['FORUM_DB']->create_index('f_groups', 'gorder', array('g_order', 'id')); // For the_zone_access table require_code('zones2'); reinstall_module('adminzone', 'admin_permissions'); // Make guest $guest_group = ocf_make_group(do_lang('GUESTS'), 0, 0, 0, do_lang('DESCRIPTION_GUESTS')); // Make admin $administrator_group = ocf_make_group(do_lang('ADMINISTRATORS'), 0, 1, 0, do_lang('DESCRIPTION_ADMINISTRATORS'), 'ocf_rank_images/admin', NULL, NULL, NULL, 0); // Make mod $super_moderator_group = ocf_make_group(do_lang('SUPER_MODERATORS'), 0, 0, 1, do_lang('DESCRIPTION_SUPER_MODERATORS'), 'ocf_rank_images/mod', NULL, NULL, NULL, 0); // Make supermember $super_member_group = ocf_make_group(do_lang('SUPER_MEMBERS'), 0, 0, 0, do_lang('DESCRIPTION_SUPER_MEMBERS'), '', NULL, NULL, NULL, 0); // Make member $member_group_4 = ocf_make_group(do_lang('DEFAULT_RANK_4'), 0, 0, 0, do_lang('DESCRIPTION_MEMBERS'), 'ocf_rank_images/4'); $member_group_3 = ocf_make_group(do_lang('DEFAULT_RANK_3'), 0, 0, 0, do_lang('DESCRIPTION_MEMBERS'), 'ocf_rank_images/3', $member_group_4, 10000); $member_group_2 = ocf_make_group(do_lang('DEFAULT_RANK_2'), 0, 0, 0, do_lang('DESCRIPTION_MEMBERS'), 'ocf_rank_images/2', $member_group_3, 2500); $member_group_1 = ocf_make_group(do_lang('DEFAULT_RANK_1'), 0, 0, 0, do_lang('DESCRIPTION_MEMBERS'), 'ocf_rank_images/1', $member_group_2, 400); $member_group_0 = ocf_make_group(do_lang('DEFAULT_RANK_0'), 0, 0, 0, do_lang('DESCRIPTION_MEMBERS'), 'ocf_rank_images/0', $member_group_1, 100); // Not default because primary is always defaulted to this one // Make probation $probation_group = ocf_make_group(do_lang('PROBATION'), 0, 0, 0, do_lang('DESCRIPTION_PROBATION'), '', NULL, NULL, NULL, 0); } if (is_null($upgrade_from) && $not_installed) { $GLOBALS['FORUM_DB']->create_table('f_categories', array('id' => '*AUTO', 'c_title' => 'SHORT_TEXT', 'c_description' => 'LONG_TEXT', 'c_expanded_by_default' => 'BINARY')); $category_id = ocf_make_category(do_lang('DEFAULT_CATEGORY_TITLE'), ''); $category_id_staff = ocf_make_category(do_lang('STAFF'), ''); $GLOBALS['FORUM_DB']->create_table('f_forums', array('id' => '*AUTO', 'f_name' => 'SHORT_TEXT', 'f_description' => 'LONG_TRANS', 'f_category_id' => '?AUTO_LINK', 'f_parent_forum' => '?AUTO_LINK', 'f_position' => 'INTEGER', 'f_order_sub_alpha' => 'BINARY', 'f_post_count_increment' => 'BINARY', 'f_intro_question' => 'LONG_TRANS', 'f_intro_answer' => 'SHORT_TEXT', 'f_cache_num_topics' => 'INTEGER', 'f_cache_num_posts' => 'INTEGER', 'f_cache_last_topic_id' => '?AUTO_LINK', 'f_cache_last_title' => 'SHORT_TEXT', 'f_cache_last_time' => '?TIME', 'f_cache_last_username' => 'SHORT_TEXT', 'f_cache_last_member_id' => '?USER', 'f_cache_last_forum_id' => '?AUTO_LINK', 'f_redirection' => 'SHORT_TEXT', 'f_order' => 'ID_TEXT', 'f_is_threaded' => 'BINARY')); $GLOBALS['FORUM_DB']->create_index('f_forums', 'cache_num_posts', array('f_cache_num_posts')); // Used to find active forums $GLOBALS['FORUM_DB']->create_index('f_forums', 'subforum_parenting', array('f_parent_forum')); $GLOBALS['FORUM_DB']->create_index('f_forums', 'findnamedforum', array('f_name')); $GLOBALS['FORUM_DB']->create_index('f_forums', 'f_position', array('f_position')); $typical_access = array($guest_group => 4, $administrator_group => 5, $super_moderator_group => 5, $probation_group => 2, $super_member_group => 4, $member_group_0 => 4, $member_group_1 => 4, $member_group_2 => 4, $member_group_3 => 4, $member_group_4 => 4); $staff_post_access = array($guest_group => 1, $administrator_group => 5, $super_moderator_group => 5, $probation_group => 1, $super_member_group => 2, $member_group_0 => 1, $member_group_1 => 1, $member_group_2 => 1, $member_group_3 => 1, $member_group_4 => 1); $staff_access = array($administrator_group => 5, $super_moderator_group => 5); $root_forum = ocf_make_forum(do_lang('ROOT_FORUM'), '', NULL, $staff_post_access, NULL); //ocf_make_forum(do_lang('NEWS'),'',$category_id,$staff_post_access,$root_forum); ocf_make_forum(do_lang('DEFAULT_FORUM_TITLE'), '', $category_id, $typical_access, $root_forum); //ocf_make_forum(do_lang('_FEEDBACK'),'',$category_id,$typical_access,$root_forum); We already have a feedback page ocf_make_forum(do_lang('REPORTED_POSTS_FORUM'), '', $category_id_staff, $staff_access, $root_forum); $trash_forum_id = ocf_make_forum(do_lang('TRASH'), '', $category_id_staff, $staff_access, $root_forum); ocf_make_forum(do_lang('COMMENT_FORUM_NAME'), '', $category_id, $typical_access, $root_forum, 1, 1, 0, '', '', '', 'last_post', 1); if (addon_installed('tickets')) { require_lang('tickets'); ocf_make_forum(do_lang('TICKET_FORUM_NAME'), '', $category_id_staff, $staff_access, $root_forum); } $staff_forum_id = ocf_make_forum(do_lang('STAFF'), '', $category_id_staff, $staff_access, $root_forum); $GLOBALS['FORUM_DB']->create_table('f_topics', array('id' => '*AUTO', 't_pinned' => 'BINARY', 't_sunk' => 'BINARY', 't_cascading' => 'BINARY', 't_forum_id' => '?AUTO_LINK', 't_pt_from' => '?USER', 't_pt_to' => '?USER', 't_pt_from_category' => 'SHORT_TEXT', 't_pt_to_category' => 'SHORT_TEXT', 't_description' => 'SHORT_TEXT', 't_description_link' => 'SHORT_TEXT', 't_emoticon' => 'SHORT_TEXT', 't_num_views' => 'INTEGER', 't_validated' => 'BINARY', 't_is_open' => 'BINARY', 't_poll_id' => '?AUTO_LINK', 't_cache_first_post_id' => '?AUTO_LINK', 't_cache_first_time' => '?TIME', 't_cache_first_title' => 'SHORT_TEXT', 't_cache_first_post' => '?LONG_TRANS', 't_cache_first_username' => 'ID_TEXT', 't_cache_first_member_id' => '?USER', 't_cache_last_post_id' => '?AUTO_LINK', 't_cache_last_time' => '?TIME', 't_cache_last_title' => 'SHORT_TEXT', 't_cache_last_username' => 'ID_TEXT', 't_cache_last_member_id' => '?USER', 't_cache_num_posts' => 'INTEGER')); $GLOBALS['FORUM_DB']->create_index('f_topics', 't_num_views', array('t_num_views')); $GLOBALS['FORUM_DB']->create_index('f_topics', 't_pt_to', array('t_pt_to')); $GLOBALS['FORUM_DB']->create_index('f_topics', 't_pt_from', array('t_pt_from')); $GLOBALS['FORUM_DB']->create_index('f_topics', 't_validated', array('t_validated')); $GLOBALS['FORUM_DB']->create_index('f_topics', 'in_forum', array('t_forum_id')); $GLOBALS['FORUM_DB']->create_index('f_topics', 'topic_order_time', array('t_cache_last_time')); $GLOBALS['FORUM_DB']->create_index('f_topics', 'topic_order_time_2', array('t_cache_first_time')); $GLOBALS['FORUM_DB']->create_index('f_topics', '#t_description', array('t_description')); $GLOBALS['FORUM_DB']->create_index('f_topics', 'descriptionsearch', array('t_description')); $GLOBALS['FORUM_DB']->create_index('f_topics', 'forumlayer', array('t_cache_first_title')); $GLOBALS['FORUM_DB']->create_index('f_topics', 't_cascading', array('t_cascading')); $GLOBALS['FORUM_DB']->create_index('f_topics', 't_cascading_or_forum', array('t_cascading', 't_forum_id')); $GLOBALS['FORUM_DB']->create_index('f_topics', 'topic_order', array('t_cascading', 't_pinned', 't_cache_last_time')); // Ordering for forumview, is picked up over topic_order_3 for just the ordering bit (it seems) $GLOBALS['FORUM_DB']->create_index('f_topics', 'topic_order_2', array('t_forum_id', 't_cascading', 't_pinned', 't_sunk', 't_cache_last_time')); // Total index for forumview, including ordering. Doesn't work on current MySQL. $GLOBALS['FORUM_DB']->create_index('f_topics', 'topic_order_3', array('t_forum_id', 't_cascading', 't_pinned', 't_cache_last_time')); // Total index for forumview, including ordering. Works if disable_sunk is turned on. $GLOBALS['FORUM_DB']->create_index('f_topics', 'ownedtopics', array('t_cache_first_member_id')); // Welcome topic $topic_id = ocf_make_topic($staff_forum_id, '', '', 1, 1, 0, 0, 0, NULL, NULL, false); $GLOBALS['FORUM_DB']->create_table('f_posts', array('id' => '*AUTO', 'p_title' => 'SHORT_TEXT', 'p_post' => 'LONG_TRANS', 'p_ip_address' => 'IP', 'p_time' => 'TIME', 'p_poster' => 'USER', 'p_intended_solely_for' => '?USER', 'p_poster_name_if_guest' => 'ID_TEXT', 'p_validated' => 'BINARY', 'p_topic_id' => 'AUTO_LINK', 'p_cache_forum_id' => '?AUTO_LINK', 'p_last_edit_time' => '?TIME', 'p_last_edit_by' => '?USER', 'p_is_emphasised' => 'BINARY', 'p_skip_sig' => 'BINARY', 'p_parent_id' => '?AUTO_LINK')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'p_validated', array('p_validated')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'in_topic', array('p_topic_id', 'p_time', 'id')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'post_order_time', array('p_time', 'id')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'p_last_edit_time', array('p_last_edit_time')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'posts_by', array('p_poster')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'find_pp', array('p_intended_solely_for')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'search_join', array('p_post')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'postsinforum', array('p_cache_forum_id')); $GLOBALS['FORUM_DB']->create_index('f_posts', 'deletebyip', array('p_ip_address')); } if (is_null($upgrade_from) && $not_installed || !is_null($upgrade_from) && $upgrade_from < 4.0) { $GLOBALS['FORUM_DB']->create_table('f_special_pt_access', array('s_member_id' => '*USER', 's_topic_id' => '*AUTO_LINK')); $GLOBALS['FORUM_DB']->create_table('f_saved_warnings', array('s_title' => '*SHORT_TEXT', 's_explanation' => 'LONG_TEXT', 's_message' => 'LONG_TEXT')); } if (is_null($upgrade_from) && $not_installed || $upgrade_from < 2.5) { $GLOBALS['FORUM_DB']->create_table('f_post_history', array('id' => '*AUTO', 'h_create_date_and_time' => 'TIME', 'h_action_date_and_time' => 'TIME', 'h_owner_member_id' => 'USER', 'h_alterer_member_id' => 'USER', 'h_post_id' => 'AUTO_LINK', 'h_topic_id' => 'AUTO_LINK', 'h_before' => 'LONG_TEXT', 'h_action' => 'ID_TEXT')); $GLOBALS['FORUM_DB']->create_index('f_post_history', 'phistorylookup', array('h_post_id')); $GLOBALS['FORUM_DB']->create_table('f_forum_intro_ip', array('i_forum_id' => '*AUTO_LINK', 'i_ip' => '*IP')); $GLOBALS['FORUM_DB']->create_table('f_forum_intro_member', array('i_forum_id' => '*AUTO_LINK', 'i_member_id' => '*USER')); $GLOBALS['FORUM_DB']->create_table('f_post_templates', array('id' => '*AUTO', 't_title' => 'SHORT_TEXT', 't_text' => 'LONG_TEXT', 't_forum_multi_code' => 'SHORT_TEXT', 't_use_default_forums' => 'BINARY')); ocf_make_post_template(do_lang('DEFAULT_POST_TEMPLATE_bug_title'), do_lang('DEFAULT_POST_TEMPLATE_bug_text'), '', 0); ocf_make_post_template(do_lang('DEFAULT_POST_TEMPLATE_task_title'), do_lang('DEFAULT_POST_TEMPLATE_task_text'), '', 0); ocf_make_post_template(do_lang('DEFAULT_POST_TEMPLATE_fault_title'), do_lang('DEFAULT_POST_TEMPLATE_fault_text'), '', 0); $GLOBALS['FORUM_DB']->create_index('f_posts', '#p_title', array('p_title')); } if (is_null($upgrade_from) && $not_installed) { $GLOBALS['FORUM_DB']->create_table('f_polls', array('id' => '*AUTO', 'po_question' => 'SHORT_TEXT', 'po_cache_total_votes' => 'INTEGER', 'po_is_private' => 'BINARY', 'po_is_open' => 'BINARY', 'po_minimum_selections' => 'INTEGER', 'po_maximum_selections' => 'INTEGER', 'po_requires_reply' => 'BINARY')); $GLOBALS['FORUM_DB']->create_table('f_poll_answers', array('id' => '*AUTO', 'pa_poll_id' => 'AUTO_LINK', 'pa_answer' => 'SHORT_TEXT', 'pa_cache_num_votes' => 'INTEGER')); $GLOBALS['FORUM_DB']->create_table('f_poll_votes', array('pv_poll_id' => '*AUTO_LINK', 'pv_member_id' => '*USER', 'pv_answer_id' => '*AUTO_LINK')); $GLOBALS['FORUM_DB']->create_table('f_multi_moderations', array('id' => '*AUTO', 'mm_name' => 'SHORT_TRANS', 'mm_post_text' => 'LONG_TEXT', 'mm_move_to' => '?INTEGER', 'mm_pin_state' => '?BINARY', 'mm_sink_state' => '?BINARY', 'mm_open_state' => '?BINARY', 'mm_forum_multi_code' => 'SHORT_TEXT', 'mm_title_suffix' => 'SHORT_TEXT')); ocf_make_multi_moderation(do_lang('TRASH'), '', $trash_forum_id, 0, 0, 0); $GLOBALS['FORUM_DB']->create_table('f_warnings', array('id' => '*AUTO', 'w_member_id' => 'USER', 'w_time' => 'TIME', 'w_explanation' => 'LONG_TEXT', 'w_by' => 'USER', 'w_is_warning' => 'BINARY', 'p_silence_from_topic' => '?AUTO_LINK', 'p_silence_from_forum' => '?AUTO_LINK', 'p_probation' => 'INTEGER', 'p_banned_ip' => 'IP', 'p_charged_points' => 'INTEGER', 'p_banned_member' => 'BINARY', 'p_changed_usergroup_from' => '?GROUP')); $GLOBALS['FORUM_DB']->create_index('f_warnings', 'warningsmemberid', array('w_member_id')); $GLOBALS['FORUM_DB']->create_table('f_moderator_logs', array('id' => '*AUTO', 'l_the_type' => 'ID_TEXT', 'l_param_a' => 'SHORT_TEXT', 'l_param_b' => 'SHORT_TEXT', 'l_date_and_time' => 'TIME', 'l_reason' => 'LONG_TEXT', 'l_by' => 'USER')); $GLOBALS['FORUM_DB']->create_table('f_member_known_login_ips', array('i_member_id' => '*USER', 'i_ip' => '*IP', 'i_val_code' => 'SHORT_TEXT')); if (strtoupper(ocp_srv('REQUEST_METHOD')) != 'POST') { exit; } // Needed as YSlow can load as GET's in background and cause horrible results // NB: post_param's will return default's if OCF is being installed but not used yet (e.g. IPB forum driver chosen at installation) // Make guest ocf_make_member(do_lang('GUEST'), '', '', NULL, NULL, NULL, NULL, array(), NULL, $guest_group, 1, time(), time(), '', NULL, '', 0, 1, 1, '', '', '', 1, 0, '', 1, 1, '', NULL, '', false); // Make admin user ocf_make_member(post_param('admin_username', 'admin'), post_param('ocf_admin_password', 'admin'), '', NULL, NULL, NULL, NULL, array(), NULL, $administrator_group, 1, time(), time(), '', 'themes/default/images/ocf_default_avatars/default_set/cool_flare.png', '', 0, 0, 1, '', '', '', 1, 1, '', 1, 1, '', NULL, '', false); // Make test user ocf_make_member('test', post_param('ocf_admin_password', 'admin'), '', NULL, NULL, NULL, NULL, array(), NULL, $member_group_0, 1, time(), time(), '', NULL, '', 0, 0, 1, '', '', '', 1, 0, '', 1, 1, '', NULL, '', false); $GLOBALS['FORUM_DB']->create_table('f_read_logs', array('l_member_id' => '*USER', 'l_topic_id' => '*AUTO_LINK', 'l_time' => 'TIME')); $GLOBALS['FORUM_DB']->create_index('f_read_logs', 'erase_old_read_logs', array('l_time')); ocf_make_post($topic_id, do_lang('DEFAULT_POST_TITLE'), do_lang('DEFAULT_POST_CONTENT'), 0, true, 1, 0, do_lang('SYSTEM'), '127.0.0.1', time(), $GLOBALS['OCF_DRIVER']->get_guest_id(), NULL, NULL, NULL, false, true); } // Permissions have to be done after usergroups if (is_null($upgrade_from)) { // Add privileges global $OCF_TRUE_PERMISSIONS, $OCF_FALSE_PERMISSIONS; foreach ($OCF_TRUE_PERMISSIONS as $permission) { add_specific_permission('SECTION_FORUMS', $permission, true); } foreach ($OCF_FALSE_PERMISSIONS as $permission) { add_specific_permission('SECTION_FORUMS', $permission, false, $permission == 'view_other_pt'); } } if (!is_null($upgrade_from) && $upgrade_from < 3.1) { add_specific_permission('SECTION_FORUMS', 'use_special_emoticons', false); } if (!is_null($upgrade_from) && $upgrade_from < 4.0) { add_specific_permission('SECTION_FORUMS', 'member_maintenance', false); add_specific_permission('SECTION_FORUMS', 'probate_members', false); add_specific_permission('SECTION_FORUMS', 'own_avatars', true); //add_specific_permission('SECTION_FORUMS','decide_comment_type',true); if we add threads add_specific_permission('SECTION_FORUMS', 'control_usergroups', false, true); add_specific_permission('SECTION_FORUMS', 'edit_personal_topic_posts', true); add_specific_permission('SECTION_FORUMS', 'multi_delete_topics', false); add_specific_permission('SECTION_FORUMS', 'show_user_browsing', false); add_specific_permission('SECTION_FORUMS', 'see_hidden_groups', false); add_specific_permission('SECTION_FORUMS', 'pt_anyone', false); } if (!is_null($upgrade_from) && $upgrade_from < 3.0) { add_specific_permission('SECTION_FORUMS', 'view_profiles', true); } if (!is_null($upgrade_from) && $upgrade_from < 2.5) { add_specific_permission('SECTION_FORUMS', 'moderate_personal_topic', false); add_specific_permission('SECTION_FORUMS', 'disable_lost_passwords', false); add_specific_permission('SECTION_FORUMS', 'view_any_profile_field', false); add_specific_permission('SECTION_FORUMS', 'rename_self', true); add_specific_permission('SECTION_FORUMS', 'double_post', false); add_specific_permission('SECTION_FORUMS', 'close_own_topics', false); add_specific_permission('SECTION_FORUMS', 'edit_own_polls', true); add_specific_permission('SECTION_FORUMS', 'warn_members', false); add_specific_permission('SECTION_FORUMS', 'see_warnings', false); add_specific_permission('SECTION_FORUMS', 'see_ip', false); add_specific_permission('SECTION_FORUMS', 'may_choose_custom_title', false); add_specific_permission('SECTION_FORUMS', 'delete_account', false); add_specific_permission('SECTION_FORUMS', 'view_other_pt', false); add_specific_permission('SECTION_FORUMS', 'view_poll_results_before_voting', false); add_specific_permission('SECTION_FORUMS', 'may_unblind_own_poll', true); delete_specific_permission('enquire_on_new_ips'); } }
/** * Standard aed_module add actualiser. * * @return ID_TEXT The entry added */ function add_actualisation() { require_code('ocf_forums_action2'); $_group_leader = post_param('group_leader'); if ($_group_leader != '') { $group_leader = $GLOBALS['FORUM_DRIVER']->get_member_from_username($_group_leader); if (is_null($group_leader)) { warn_exit(do_lang_tempcode('_USER_NO_EXIST', $_group_leader)); } } else { $group_leader = NULL; } $name = post_param('name'); $id = ocf_make_group($name, 0, 0, 0, '', '', NULL, NULL, $group_leader, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, post_param_integer('open_membership', 0), 1); // Create forum $mods = $GLOBALS['FORUM_DRIVER']->get_moderator_groups(); $access_mapping = array(); foreach ($mods as $m_id) { $access_mapping[$m_id] = 5; } $_cat = get_option('club_forum_parent_category'); if (is_numeric($_cat)) { $cat = intval($_cat); } else { $cat = $GLOBALS['FORUM_DB']->query_value_null_ok('f_categories', 'id', array('c_title' => $_cat)); if (is_null($cat)) { $cat = $GLOBALS['FORUM_DB']->query_value('f_categories', 'MIN(id)'); } } $_forum = get_option('club_forum_parent_forum'); if (is_numeric($_forum)) { $forum = intval($_forum); } else { $forum = $GLOBALS['FORUM_DB']->query_value_null_ok('f_forums', 'id', array('f_name' => $_forum)); if (is_null($forum)) { $forum = $GLOBALS['FORUM_DB']->query_value('f_forums', 'MIN(id)'); } } $is_threaded = $GLOBALS['FORUM_DB']->query_value_null_ok('f_forums', 'f_is_threaded', array('id' => $forum)); $forum_id = ocf_make_forum($name, do_lang('FORUM_FOR_CLUB', $name), $cat, $access_mapping, $forum, 1, 1, 0, '', '', '', 'last_post', $is_threaded); $this->_set_permissions($id, $forum_id); require_code('ocf_groups_action2'); ocf_add_member_to_group(get_member(), $id); if (has_actual_page_access($GLOBALS['FORUM_DRIVER']->get_guest_id(), 'groups')) { syndicate_described_activity('ocf:ACTIVITY_ADD_CLUB', $name, '', '', '_SEARCH:groups:view:' . strval($id), '', '', 'ocf_clubs'); } return strval($id); }
function do_work() { $num_wanted = 100000; require_code('config2'); set_option('post_history_days', '0'); // Needed for a little sanity in recent post retrieval set_value('disable_sunk', '1'); // members (remember to test the username autocompleter, and birthdays) // authors (remember to check author autocompleter and popup author list) // lots of people getting notifications on a forum // lots of people getting notifications on a topic require_code('authors'); require_code('ocf_members_action'); require_code('notifications'); for ($i = $GLOBALS['FORUM_DB']->query_value('f_members', 'COUNT(*)'); $i < $num_wanted; $i++) { $member_id = ocf_make_member(uniqid('', true), uniqid('', true), uniqid('', true) . '@example.com', array(), intval(date('d')), intval(date('m')), intval(date('Y')), array(), NULL, NULL, 1, NULL, NULL, '', NULL, '', 0, 0, 1, '', '', '', 1, 1, NULL, 1, 1, '', NULL, '', false); add_author(random_line(), '', $member_id, random_text(), random_text()); enable_notifications('ocf_topic', 'forum:' . strval(db_get_first_id()), $member_id); enable_notifications('ocf_topic', strval(db_get_first_id()), $member_id); // number of friends to a single member $GLOBALS['SITE_DB']->query_insert('chat_buddies', array('member_likes' => $member_id, 'member_liked' => db_get_first_id() + 1, 'date_and_time' => time()), false, true); } $member_id = db_get_first_id() + 2; // point earn list / gift points to a single member require_code('points2'); for ($j = $GLOBALS['SITE_DB']->query_value('gifts', 'COUNT(*)'); $j < $num_wanted; $j++) { give_points(10, $member_id, mt_rand(db_get_first_id(), min(100, $num_wanted - 1)), random_line(), false, false); } // number of friends of a single member for ($j = intval(floatval($GLOBALS['SITE_DB']->query_value('chat_buddies', 'COUNT(*)')) / 2.0); $j < $num_wanted; $j++) { $GLOBALS['SITE_DB']->query_insert('chat_buddies', array('member_likes' => $member_id, 'member_liked' => $j + db_get_first_id(), 'date_and_time' => time()), false, true); } echo 'done member/authors/points/notifications/friends stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // banners require_code('banners2'); for ($i = $GLOBALS['SITE_DB']->query_value('banners', 'COUNT(*)'); $i < $num_wanted; $i++) { add_banner(uniqid('', true), get_logo_url(), random_line(), random_text(), 100, get_base_url(), 3, '', db_get_first_id(), NULL, db_get_first_id() + 1, 1); } echo 'done banner stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // comcode pages require_code('files'); require_code('files2'); for ($i = $GLOBALS['SITE_DB']->query_value('comcode_pages', 'COUNT(*)'); $i < $num_wanted; $i++) { $file = uniqid('', true); /*$path=get_custom_file_base().'/site/pages/comcode_custom/'.fallback_lang().'/'.$file.'.txt'; $myfile=fopen($path,'wt'); fwrite($myfile,random_text()); fclose($myfile); sync_file($path); fix_permissions($path);*/ $GLOBALS['SITE_DB']->query_insert('comcode_pages', array('the_zone' => 'site', 'the_page' => $file, 'p_parent_page' => '', 'p_validated' => 1, 'p_edit_date' => NULL, 'p_add_date' => time(), 'p_submitter' => db_get_first_id(), 'p_show_as_edit' => 0)); } echo 'done comcode stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // zones require_code('zones2'); require_code('abstract_file_manager'); for ($i = $GLOBALS['SITE_DB']->query_value('zones', 'COUNT(*)'); $i < min($num_wanted, 1000); $i++) { actual_add_zone(uniqid('', true), random_line(), 'start', random_line(), 'default', 0, 0, 0); } echo 'done zone stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // calendar events require_code('calendar2'); for ($i = $GLOBALS['SITE_DB']->query_value('calendar_events', 'COUNT(*)'); $i < $num_wanted; $i++) { add_calendar_event(db_get_first_id(), '', NULL, 0, random_line(), random_text(), 1, 1, intval(date('Y')), intval(date('m')), intval(date('d')), 0, 0); } echo 'done event stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // chat rooms require_code('chat2'); require_code('chat'); for ($i = $GLOBALS['SITE_DB']->query_value('chat_rooms', 'COUNT(*)'); $i < $num_wanted; $i++) { $room_id = add_chatroom(random_text(), random_line(), mt_rand(db_get_first_id() + 1, $num_wanted - 1), strval(db_get_first_id() + 1), '', '', '', fallback_lang()); } $room_id = db_get_first_id() + 1; // messages in chat room for ($j = $GLOBALS['SITE_DB']->query_value('chat_messages', 'COUNT(*)'); $j < $num_wanted; $j++) { $_message_parsed = insert_lang_comcode(random_text(), 4); $GLOBALS['SITE_DB']->query_insert('chat_messages', array('system_message' => 0, 'ip_address' => '', 'room_id' => $room_id, 'user_id' => db_get_first_id(), 'date_and_time' => time(), 'the_message' => $_message_parsed, 'text_colour' => get_option('chat_default_post_colour'), 'font_name' => get_option('chat_default_post_font'))); } echo 'done chat stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // download categories under a subcategory require_code('downloads2'); $subcat_id = add_download_category(random_line(), db_get_first_id(), random_text(), ''); for ($i = $GLOBALS['SITE_DB']->query_value('download_categories', 'COUNT(*)'); $i < $num_wanted; $i++) { add_download_category(random_line(), $subcat_id, random_text(), ''); } // downloads (remember to test content by the single author) require_code('downloads2'); require_code('awards'); $time = time(); for ($i = $GLOBALS['SITE_DB']->query_value('download_downloads', 'COUNT(*)'); $i < $num_wanted; $i++) { $content_id = add_download(db_get_first_id(), random_line(), get_logo_url(), random_text(), 'admin', random_text(), NULL, 1, 1, 1, 1, '', uniqid('', true) . '.jpg', 100, 110, 1); give_award(db_get_first_id(), strval($content_id), $time - $i); } $content_id = db_get_first_id(); $content_url = build_url(array('page' => 'downloads', 'type' => 'entry', 'id' => $content_id), 'site'); for ($j = $GLOBALS['SITE_DB']->query_value('trackbacks', 'COUNT(*)'); $j < $num_wanted; $j++) { // trackbacks $GLOBALS['SITE_DB']->query_insert('trackbacks', array('trackback_for_type' => 'downloads', 'trackback_for_id' => $content_id, 'trackback_ip' => '', 'trackback_time' => time(), 'trackback_url' => '', 'trackback_title' => random_line(), 'trackback_excerpt' => random_text(), 'trackback_name' => random_line())); // ratings $GLOBALS['SITE_DB']->query_insert('rating', array('rating_for_type' => 'downloads', 'rating_for_id' => $content_id, 'rating_member' => $j + 1, 'rating_ip' => '', 'rating_time' => time(), 'rating' => 3)); // posts in a comment topic $GLOBALS['FORUM_DRIVER']->make_post_forum_topic(get_option('comments_forum_name'), 'downloads_' . strval($content_id), get_member(), random_text(), random_line(), '', do_lang('COMMENT'), $content_url->evaluate(), NULL, NULL, 1, 1); } echo 'done download stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // forums under a forum (don't test it can display, just make sure the main index still works) require_code('ocf_forums_action'); for ($i = $GLOBALS['FORUM_DB']->query_value('f_forums', 'COUNT(*)'); $i < $num_wanted; $i++) { ocf_make_forum(random_line(), random_text(), db_get_first_id(), array(), db_get_first_id() + 3); } // forum topics require_code('ocf_topics_action'); require_code('ocf_posts_action'); require_code('ocf_forums'); require_code('ocf_topics'); for ($i = intval(floatval($GLOBALS['FORUM_DB']->query_value('f_topics', 'COUNT(*)')) / 2.0); $i < $num_wanted; $i++) { $topic_id = ocf_make_topic(db_get_first_id(), '', '', NULL, 1, 0, 0, 0, NULL, NULL, false); ocf_make_post($topic_id, random_line(), random_text(), 0, true, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, false); } // forum posts in a topic require_code('ocf_topics_action'); require_code('ocf_posts_action'); $topic_id = ocf_make_topic(db_get_first_id() + 1, '', '', NULL, 1, 0, 0, 0, NULL, NULL, false); for ($i = intval(floatval($GLOBALS['FORUM_DB']->query_value('f_posts', 'COUNT(*)')) / 3.0); $i < $num_wanted; $i++) { ocf_make_post($topic_id, random_line(), random_text(), 0, true, 0, 0, NULL, NULL, NULL, mt_rand(db_get_first_id(), $num_wanted - 1), NULL, NULL, NULL, false, false); } echo 'done forum stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // clubs require_code('ocf_groups_action'); require_code('ocf_groups'); for ($i = $GLOBALS['FORUM_DB']->query_value('f_groups', 'COUNT(*)'); $i < $num_wanted; $i++) { ocf_make_group(random_line(), 0, 0, 0, random_line(), '', NULL, NULL, NULL, 5, 0, 70, 50, 100, 100, 30000, 700, 25, 1, 0, 0, 0, $i, 1, 0, 1); } echo 'done club stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // galleries under a subcategory require_code('galleries2'); $xsubcat_id = uniqid('', true); add_gallery($xsubcat_id, random_line(), random_text(), '', '', 'root'); for ($i = $GLOBALS['SITE_DB']->query_value('galleries', 'COUNT(*)'); $i < $num_wanted; $i++) { add_gallery(uniqid('', true), random_line(), random_text(), '', '', $xsubcat_id); } // images require_code('galleries2'); for ($i = $GLOBALS['SITE_DB']->query_value('images', 'COUNT(*)'); $i < $num_wanted; $i++) { add_image('', 'root', random_text(), get_logo_url(), get_logo_url(), 1, 1, 1, 1, ''); } // videos / validation queue require_code('galleries2'); for ($i = $GLOBALS['SITE_DB']->query_value('videos', 'COUNT(*)'); $i < $num_wanted; $i++) { add_video('', 'root', random_text(), get_logo_url(), get_logo_url(), 0, 1, 1, 1, '', 0, 0, 0); } echo 'done galleries stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // newsletter subscribers require_code('newsletter'); for ($i = $GLOBALS['SITE_DB']->query_value('newsletter', 'COUNT(*)'); $i < $num_wanted; $i++) { basic_newsletter_join(uniqid('', true) . '@example.com'); } echo 'done newsletter stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // polls (remember to test poll archive) require_code('polls'); for ($i = $GLOBALS['SITE_DB']->query_value('poll', 'COUNT(*)'); $i < $num_wanted; $i++) { $poll_id = add_poll(random_line(), random_line(), random_line(), random_line(), random_line(), random_line(), random_line(), random_line(), random_line(), random_line(), random_line(), 10, 0, 0, 0, 0, ''); } // votes on a poll $poll_id = db_get_first_id(); for ($j = $GLOBALS['SITE_DB']->query_value('poll_votes', 'COUNT(*)'); $j < $num_wanted; $j++) { $cast = mt_rand(1, 6); $ip = uniqid('', true); $GLOBALS['SITE_DB']->query_insert('poll_votes', array('v_poll_id' => $poll_id, 'v_voter_id' => 2, 'v_voter_ip' => $ip, 'v_vote_for' => $cast)); } echo 'done polls stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // quizzes require_code('quiz'); for ($i = $GLOBALS['SITE_DB']->query_value('quizzes', 'COUNT(*)'); $i < $num_wanted; $i++) { add_quiz(random_line(), 0, random_text(), random_text(), random_text(), '', 0, time(), NULL, 3, 300, 'SURVEY', 1, '1) Some question'); } echo 'done quizzes stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // successful searches (to test the search recommender) // ACTUALLY: I have manually verified the code, it is an isolated portion // cedi pages (do a long descendant tree for some, and orphans for others) // cedi posts (remember to test cedi changes screen) require_code('cedi'); for ($i = $GLOBALS['SITE_DB']->query_value('seedy_pages', 'COUNT(*)'); $i < $num_wanted; $i++) { $page_id = cedi_add_page(random_line(), random_text(), '', 1); cedi_add_post($page_id, random_text(), 1, NULL, false); } echo 'done cedi stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // iotds require_code('iotds'); for ($i = $GLOBALS['SITE_DB']->query_value('iotd', 'COUNT(*)'); $i < $num_wanted; $i++) { add_iotd(get_logo_url(), random_line(), random_text(), get_logo_url(), 1, 0, 0, 0, ''); } echo 'done iotd stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // logged hack attempts for ($i = $GLOBALS['SITE_DB']->query_value('hackattack', 'COUNT(*)'); $i < $num_wanted; $i++) { $GLOBALS['SITE_DB']->query_insert('hackattack', array('url' => get_base_url(), 'data_post' => '', 'user_agent' => '', 'referer' => '', 'user_os' => '', 'the_user' => db_get_first_id(), 'date_and_time' => time(), 'ip' => uniqid('', true), 'reason' => 'ASCII_ENTITY_URL_HACK', 'reason_param_a' => '', 'reason_param_b' => '')); } // logged hits in one day require_code('site'); for ($i = $GLOBALS['SITE_DB']->query_value('stats', 'COUNT(*)'); $i < $num_wanted; $i++) { log_stats('/testing' . uniqid('', true), mt_rand(100, 2000)); } echo 'done logs stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // blogs and news entries (remember to test both blogs [categories] list, and a list of all news entries) require_code('news'); for ($i = $GLOBALS['SITE_DB']->query_value('news', 'COUNT(*)'); $i < $num_wanted; $i++) { add_news(random_line(), random_text(), 'admin', 1, 1, 1, 1, '', random_text(), NULL, NULL, NULL, db_get_first_id() + $i); } echo 'done news stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // support tickets require_code('tickets'); require_code('tickets2'); for ($i = intval(floatval($GLOBALS['FORUM_DB']->query_value('f_topics', 'COUNT(*)')) / 2.0); $i < $num_wanted; $i++) { ticket_add_post(mt_rand(db_get_first_id(), $num_wanted - 1), uniqid('', true), db_get_first_id(), random_line(), random_text(), '', ''); } echo 'done tickets stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // catalogues require_code('catalogues2'); $root_id = db_get_first_id(); for ($i = $GLOBALS['SITE_DB']->query_value('catalogues', 'COUNT(*)'); $i < $num_wanted; $i++) { $catalogue_name = uniqid('', true); $root_id = actual_add_catalogue($catalogue_name, random_line(), random_text(), mt_rand(0, 3), 1, '', 30); } // catalogue categories under a subcategory (remember to test all catalogue views: atoz, index, and root cat) $catalogue_name = 'products'; $subcat_id = actual_add_catalogue_category($catalogue_name, random_line(), random_text(), '', $root_id); for ($j = $GLOBALS['SITE_DB']->query_value('catalogue_categories', 'COUNT(*)'); $j < $num_wanted; $j++) { actual_add_catalogue_category($catalogue_name, random_line(), random_text(), '', $subcat_id); } echo 'done catalogue stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } // items in ecommerce store require_code('catalogues2'); $cat_id = $GLOBALS['SITE_DB']->query_value('catalogue_categories', 'MIN(id)', array('c_name' => 'products')); $fields = collapse_1d_complexity('id', $GLOBALS['SITE_DB']->query_select('catalogue_fields', array('id'), array('c_name' => 'products'))); for ($i = $GLOBALS['SITE_DB']->query_value('catalogue_entries', 'COUNT(*)'); $i < $num_wanted; $i++) { $map = array($fields[0] => random_line(), $fields[1] => uniqid('', true), $fields[2] => '1.0', $fields[3] => '1', $fields[4] => '0', $fields[5] => '1', $fields[6] => '0%', $fields[7] => get_logo_url(), $fields[8] => '2.0', $fields[9] => random_text()); $pid = actual_add_catalogue_entry($cat_id, 1, '', 1, 1, 1, $map); unset($map); } // outstanding ecommerce orders $pid = $GLOBALS['SITE_DB']->query_value('catalogue_entries', 'MIN(id)', array('c_name' => 'products')); require_code('shopping'); for ($j = $GLOBALS['SITE_DB']->query_value('shopping_cart', 'COUNT(*)'); $j < $num_wanted; $j++) { $product_det = array('product_id' => $pid, 'product_name' => $fields[0], 'product_code' => $fields[1], 'price' => $fields[2], 'tax' => preg_replace('#[^\\d\\.]#', '', $fields[6]), 'description' => $fields[9], 'quantity' => mt_rand(1, 20), 'product_type' => 'catalogue_items', 'product_weight' => $fields[8]); $GLOBALS['SITE_DB']->query_insert('shopping_cart', array('session_id' => mt_rand(0, 1000000), 'ordered_by' => mt_rand(db_get_first_id() + 1, $num_wanted - 1), 'product_id' => $product_det['product_id'], 'product_name' => $product_det['product_name'], 'product_code' => $product_det['product_code'], 'quantity' => $product_det['quantity'], 'price' => round(floatval($product_det['price']), 2), 'price_pre_tax' => $product_det['tax'], 'product_description' => $product_det['description'], 'product_type' => $product_det['product_type'], 'product_weight' => $product_det['product_weight'], 'is_deleted' => 0)); } for ($j = $GLOBALS['SITE_DB']->query_value('shopping_order', 'COUNT(*)'); $j < $num_wanted; $j++) { $order_id = $GLOBALS['SITE_DB']->query_insert('shopping_order', array('c_member' => mt_rand(db_get_first_id() + 1, $num_wanted - 1), 'session_id' => mt_rand(0, 1000000), 'add_date' => time(), 'tot_price' => '123.00', 'order_status' => 'ORDER_STATUS_awaiting_payment', 'notes' => '', 'purchase_through' => 'purchase_module', 'transaction_id' => '', 'tax_opted_out' => 0), true); $GLOBALS['SITE_DB']->query_insert('shopping_order_details', array('p_id' => 123, 'p_name' => random_line(), 'p_code' => 123, 'p_type' => 'catalogue_items', 'p_quantity' => 1, 'p_price' => '12.00', 'order_id' => $order_id, 'dispatch_status' => '', 'included_tax' => '1.00')); } echo 'done store stuff' . chr(10); if (function_exists('gc_collect_cycles')) { gc_enable(); } echo '{{DONE}}' . chr(10); }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $remap_id = array(); $rows = $db->query_select('boards'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['ID_BOARD']), true); if (!is_null($remapped)) { continue; } $name = $row['name']; ocf_over_msn(); $description = html_to_comcode($row['description']); ocf_over_local(); $position = $row['boardOrder']; $post_count_increment = 1; $parent_forum = $row['ID_PARENT'] > 0 ? $row['ID_PARENT'] : db_get_first_id(); $cat_id = $row['ID_CAT']; $permission_mode = $row['permission_mode']; $category_id = import_id_remap_get('category', strval($cat_id), true); $access_mapping = array(); $permissions_on_groups = $db->query('SELECT DISTINCT ID_GROUP FROM ' . $table_prefix . 'board_permissions'); foreach ($permissions_on_groups as $gid) { $permissions = $db->query('SELECT * FROM ' . $table_prefix . 'board_permissions WHERE ID_GROUP=' . strval((int) $gid) . ' AND ID_BOARD=' . strval((int) $row['ID_BOARD'])); $v = 0; foreach ($permissions as $p) { if ($p['permission'] == 'send_topic' && $p['addDeny'] != 1 && $v < 2) { $v = 2; } if ($p['permission'] == 'post_reply_any' && $p['addDeny'] != 1 && $v < 3) { $v = 3; } if ($p['permission'] == 'poll_post' && $p['addDeny'] != 1 && $v < 4) { $v = 4; } $group_id = import_id_remap_get('group', strval($p['ID_GROUP'])); $access_mapping[$group_id] = $v; } } $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment, 0, ''); $remap_id[$row['ID_BOARD']] = $id_new; import_id_remap_put('forum', strval($row['ID_BOARD']), $id_new); } // Now we must fix parenting foreach ($rows as $row) { if (!is_null($row['ID_PARENT']) && isset($remap_id[$row['ID_BOARD']])) { $parent_id = array_key_exists($row['ID_PARENT'], $remap_id) ? $remap_id[$row['ID_PARENT']] : db_get_first_id(); $GLOBALS['FORUM_DB']->query_update('f_forums', array('f_parent_forum' => $parent_id), array('id' => $remap_id[$row['ID_BOARD']]), '', 1); } } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'forums'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['forum_id']), true); if (!is_null($remapped)) { continue; } if ($row['forum_type'] == 0) { $id_new = ocf_make_category($row['forum_name'], '', 1); import_id_remap_put('forum', strval($row['forum_id']), $id_new); continue; } $name = $row['forum_name']; $description = html_to_comcode($row['forum_desc']); $position = 1; $post_count_increment = 1; $category_id = db_get_first_id(); $parent_forum = db_get_first_id(); $rules = $this->fix_links($row['forum_rules'], $row['forum_rules_uid'], $db, $table_prefix); if ($row['forum_rules_link'] != '') { if ($rules != '') { $rules .= chr(10) . chr(10); } $rules .= '[url]' . $row['forum_rules_link'] . '[/url]'; } $answer = $row['forum_password']; if ($rules == '' && $answer != '') { $rules = do_lang('FORUM_PASSWORD_TO_INTRO_QUESTION'); } $id_new = ocf_make_forum($name, $description, $category_id, NULL, $parent_forum, $position, $post_count_increment, 0, $rules, $answer, $row['forum_link']); $permissions = $db->query('SELECT * FROM ' . $table_prefix . 'acl_groups WHERE forum_id=' . strval((int) $row['forum_id'])); foreach ($permissions as $p) { $group_id = import_id_remap_get('group', strval($p['group_id']), true); if (is_null($group_id)) { continue; } // maybe bots group (6) if ($p['auth_role_id'] != 0) { $rp = $db->query('SELECT * FROM ' . $table_prefix . 'acl_roles_data WHERE role_id=' . strval($p['auth_role_id'])); foreach ($rp as $_p) { $this->_import_perm($db, $table_prefix, $_p['auth_option_id'], $group_id, $id_new, $_p['auth_setting']); } } else { $this->_import_perm($db, $table_prefix, $p['auth_option_id'], $group_id, $id_new, $p['auth_setting']); } } import_id_remap_put('forum', strval($row['forum_id']), $id_new); } foreach ($rows as $row) { if ($row['forum_type'] == 1) { $remapped = import_id_remap_get('forum', strval($row['forum_id'])); list($cat_id, $parent_id) = $this->_find_parent_forum_and_category($rows, $row['parent_id']); $parent_forum = is_null($parent_id) ? db_get_first_id() : import_id_remap_get('forum', strval($parent_id)); $cat = is_null($cat_id) ? db_get_first_id() : import_id_remap_get('forum', strval($cat_id)); $GLOBALS['FORUM_DB']->query_update('f_forums', array('f_category_id' => $cat, 'f_parent_forum' => $parent_forum), array('id' => $remapped), '', 1); } } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $remap_id = array(); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'forums WHERE parent_id<>-1 ORDER BY id'); foreach ($rows as $row_number => $row) { $remapped = import_id_remap_get('forum', strval($row['id']), true); if (!is_null($remapped)) { $remap_id[$row['id']] = $remapped; $rows[$row_number]['parent_id'] = NULL; continue; } if ($row['id'] == -1) { continue; } $name = @html_entity_decode($row['name'], ENT_QUOTES, get_charset()); $description = strip_tags(@html_entity_decode($row['description'], ENT_QUOTES, get_charset())); // To determine whether parent_id specifies category or parent, we must check status of what it is pointing at $parent_test = $db->query('SELECT use_ibc,parent_id FROM ' . $table_prefix . 'forums WHERE id=' . strval((int) $row['parent_id'])); if ($parent_test[0]['parent_id'] != -1) { $parent_forum = import_id_remap_get('forum', strval($row['parent_id']), true); if (!is_null($parent_forum)) { $rows[$row_number]['parent_id'] = NULL; } // Mark it as good (we do not need to fix this parenting) $category_id = db_get_first_id(); } else { $category_id = import_id_remap_get('category', strval($row['parent_id'])); $parent_forum = db_get_first_id(); $rows[$row_number]['parent_id'] = NULL; // Mark it as good (we do not need to fix this parenting) } $position = $row['position']; $post_count_increment = $row['inc_postcount']; $permissions = unserialize(stripslashes($row['permission_array'])); $_all_groups = array_unique(explode(',', $permissions['start_perms'] . ',' . $permissions['reply_perms'] . ',' . $permissions['read_perms'])); $level2_groups = explode(',', $permissions['read_perms']); $level3_groups = explode(',', $permissions['reply_perms']); $level4_groups = explode(',', $permissions['start_perms']); $access_mapping = array(); foreach ($_all_groups as $old_group) { $new_group = import_id_remap_get('group', $old_group, true); if (is_null($new_group)) { continue; } if (in_array($old_group, $level4_groups)) { $access_mapping[$new_group] = 4; } elseif (in_array($old_group, $level3_groups)) { $access_mapping[$new_group] = 3; } elseif (in_array($old_group, $level2_groups)) { $access_mapping[$new_group] = 2; } else { $access_mapping[$new_group] = 0; } } $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment); $remap_id[$row['id']] = $id_new; import_id_remap_put('forum', strval($row['id']), $id_new); } // Now we must fix parenting foreach ($rows as $row) { if (!is_null($row['parent_id'])) { $parent_id = $remap_id[$row['parent_id']]; $GLOBALS['FORUM_DB']->query_update('f_forums', array('f_parent_forum' => $parent_id), array('id' => $remap_id[$row['id']]), '', 1); } } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $remap_id = array(); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'forum WHERE parentid<>-1'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['forumid']), true); if (!is_null($remapped)) { $remap_id[$row['forumid']] = $remapped; continue; } $name = $row['title']; $description = html_to_comcode($row['description']); $position = $row['displayorder']; $post_count_increment = 1; //$row['options']&4096; This didn't work, not important though $category_id = import_id_remap_get('category', strval($row['parentid']), true); if (is_null($category_id)) { $category_id = db_get_first_id(); } $parent_forum = db_get_first_id(); $permissions = $db->query('SELECT usergroupid,forumpermissions FROM ' . $table_prefix . 'forumpermission WHERE forumid=' . strval((int) $row['forumid'])); $access_mapping = array(); foreach ($permissions as $p) { $x = $p['forumpermissions']; $v = 0; if (($x & 2) != 0) { $v = 1; } if (($x & 16) != 0) { $v = 2; } if (($x & 16) != 0 && !(($x & 131072) != 0)) { $v = 3; } if (($x & 16) != 0 && !(($x & 131072) != 0) && ($x & 64) != 0) { $v = 4; } if (($x & 16) != 0 && ($x & 512) != 0) { $v = 5; } $group_id = import_id_remap_get('group', strval($p['usergroupid'])); $access_mapping[$group_id] = $v; } $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment, 0, '', $row['password'], $row['link']); $remap_id[$row['forumid']] = $id_new; import_id_remap_put('forum', strval($row['forumid']), $id_new); } // Now we must fix parenting foreach ($rows as $row) { $parents = explode(',', $row['parentlist']); if (array_key_exists(2, $parents)) { $category_id = import_id_remap_get('category', strval($parents[1]), true); $r = $parents[is_null($category_id) ? 1 : 2]; if ($r != -1) { $parent_id = $remap_id[$r]; $GLOBALS['FORUM_DB']->query_update('f_forums', array('f_parent_forum' => $parent_id), array('id' => $remap_id[$row['forumid']]), '', 1); } } } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_ocf_forums($db, $table_prefix, $old_base_dir) { require_code('ocf_forums_action2'); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'forums'); foreach ($rows as $row) { $remapped = import_id_remap_get('forum', strval($row['forum_id']), true); if (!is_null($remapped)) { continue; } $name = $row['forum_name']; $description = html_to_comcode($row['forum_description']); $position = $row['forum_order']; $post_count_increment = 1; $category_id = import_id_remap_get('category', strval($row['category_id']), true); $parent_forum = db_get_first_id(); $access_mapping = array(); $permissions = $db->query('SELECT * FROM ' . $table_prefix . 'forum_permissions WHERE forum_id=' . strval((int) $row['forum_id'])); foreach ($permissions as $p) { $v = 0; if ($p['view_others_topics'] == 1) { $v = 1; } if ($p['reply_to_others_topics'] == 1) { $v = 2; } if ($p['post_new_topics'] == 1) { $v = 3; } if ($p['post_polls'] == 1) { $v = 4; } // This ones a bit hackerish, but closest we can get to concept $group_id = import_id_remap_get('group', strval($p['user_group_id']), true); if (!is_null($group_id)) { $access_mapping[$group_id] = $v; } } $id_new = ocf_make_forum($name, $description, $category_id, $access_mapping, $parent_forum, $position, $post_count_increment, 0, ''); import_id_remap_put('forum', strval($row['forum_id']), $id_new); } }
/** * Standard aed_module add actualiser. * * @return ID_TEXT The entry added */ function add_actualisation() { require_code('ocf_forums_action2'); $parent_forum = post_param_integer('parent_forum', -1); $name = post_param('name'); $id = strval(ocf_make_forum($name, post_param('description'), post_param_integer('category_id'), NULL, $parent_forum, post_param_integer('position'), post_param_integer('post_count_increment', 0), post_param_integer('order_sub_alpha', 0), post_param('intro_question'), post_param('intro_answer'), post_param('redirection'), post_param('order'), post_param_integer('is_threaded', 0))); // Warning if there is full access to this forum, but not to the parent $admin_groups = $GLOBALS['FORUM_DRIVER']->get_super_admin_groups(); $groups = $GLOBALS['FORUM_DRIVER']->get_usergroup_list(true, true); $full_access = true; foreach (array_keys($groups) as $gid) { if (!in_array($gid, $admin_groups)) { if (post_param_integer('access_' . strval($gid), 0) == 0) { $full_access = false; break; } } } if ($full_access) { $parent_has_full_access = true; $access_rows = $GLOBALS['FORUM_DB']->query_select('group_category_access', array('group_id'), array('module_the_name' => 'forums', 'category_name' => strval($parent_forum))); $access = array(); foreach ($access_rows as $row) { $access[$row['group_id']] = 1; } foreach (array_keys($groups) as $gid) { if (!in_array($gid, $admin_groups)) { if (!array_key_exists($gid, $access)) { $parent_has_full_access = false; break; } } } if (!$parent_has_full_access) { attach_message(do_lang_tempcode('ANOMALOUS_FORUM_ACCESS'), 'notice'); } } $this->set_permissions($id); if (has_actual_page_access($GLOBALS['FORUM_DRIVER']->get_guest_id(), 'forumview') && has_category_access($GLOBALS['FORUM_DRIVER']->get_guest_id(), 'forums', $id)) { syndicate_described_activity('ocf:ACTIVITY_ADD_FORUM', $name, '', '', '_SEARCH:forumview:misc:' . $id, '', '', 'ocf_forum'); } return $id; }