Ejemplo n.º 1
0
 /**
  * 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_groups($db, $table_prefix)
 {
     global $ADDITIONAL_DATA;
     $avatar_max_width = !empty($ADDITIONAL_DATA['avatar_max_width']) ? $ADDITIONAL_DATA['avatar_max_width'] : 100;
     //added by Duck
     $avatar_max_height = !empty($ADDITIONAL_DATA['avatar_max_height']) ? $ADDITIONAL_DATA['avatar_max_height'] : 100;
     //added by Duck
     $max_attachments_upload = !empty($ADDITIONAL_DATA['maxattachments']) ? $ADDITIONAL_DATA['maxattachments'] : 10;
     //added by Duck
     $group_leaders = array();
     $grps = $db->query('SELECT * FROM ' . $table_prefix . 'group_moderators ORDER BY id_group');
     foreach ($grps as $grp) {
         $group_leaders[$grp['id_group']] = $grp['id_member'];
     }
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'membergroups ORDER BY id_group');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['id_group']))) {
             continue;
         }
         //Edited by Duck
         $leader = array_key_exists($row['id_group'], $group_leaders) ? $group_leaders[$row['id_group']] : NULL;
         if ($row['group_name'] == 'Administrator') {
             $group_name = 'Administrators';
         } elseif ($row['group_name'] == 'Global Moderator') {
             $group_name = 'Super-moderators';
         } else {
             $group_name = $row['group_name'];
         }
         $is_super_admin = 0;
         $is_super_moderator = 0;
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $group_name), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group($group_name, 0, $is_super_admin, $is_super_moderator, '', '', NULL, NULL, $leader, 5, 0, 5, $max_attachments_upload, $avatar_max_width, $avatar_max_height, 30000);
             //Edited by Duck
         }
         // privileges
         set_specific_permission($id_new, 'allow_html', true);
         if (!import_check_if_imported('group', strval($row['id_group']))) {
             import_id_remap_put('group', strval($row['id_group']), $id_new);
         }
     }
     $this->update_group_promotions($db, $table_prefix);
 }
Ejemplo n.º 2
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     $globals = array();
     require $file_base . '/universal.php';
     //avatar dementions are set in av_width and av_height values from aef_registry db table
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'registry WHERE ' . db_string_equal_to('name', 'av_width') . ' OR ' . db_string_equal_to('name', 'av_height') . ' OR ' . db_string_equal_to('name', 'usersiglen'));
     $INFO = array();
     foreach ($rows as $row) {
         $key = $row['name'];
         $val = $row['regval'];
         $INFO[$key] = $val;
     }
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'user_groups WHERE post_count=-1 ORDER BY member_group');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['member_group']))) {
             continue;
         }
         $is_super_admin = $row['mem_gr_name'] == 'Administrator' ? 1 : 0;
         $is_super_moderator = $row['mem_gr_name'] == 'Universal Moderator' ? 1 : 0;
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['mem_gr_name']), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group($row['mem_gr_name'], 0, $is_super_admin, $is_super_moderator, '', '', NULL, NULL, NULL, 5, 0, 5, 5, $INFO['av_width'], $INFO['av_height'], 30000, $INFO['usersiglen']);
         }
         // privileges
         set_specific_permission($id_new, 'comcode_dangerous', true);
         $check_id_exists = $GLOBALS['FORUM_DB']->query_value_null_ok('import_id_remap WHERE id_old=' . strval($row['member_group']) . ' AND id_type=\'group\' AND id_session=' . strval(get_session_id()), 'id_old');
         if (is_null($check_id_exists)) {
             import_id_remap_put('group', strval($row['member_group']), $id_new);
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     $rows = $db->query('SELECT name,id FROM ' . $table_prefix . 'core_acl_aro_groups');
     $avatar_max_width = 100;
     $avatar_max_height = 100;
     foreach ($rows as $row) {
         if (import_check_if_imported('id', strval($row['id']))) {
             continue;
         }
         $is_super_admin = $row['name'] == 'Administrator' ? 1 : 0;
         $is_super_moderator = $row['name'] == 'Universal Moderator' ? 1 : 0;
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g INNER JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['name']), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group($row['name'], 0, $is_super_admin, $is_super_moderator, '', '', NULL, NULL, NULL, 5, 0, 5, 5, $avatar_max_width, $avatar_max_height, 30000);
         }
         // privileges
         if ($is_super_moderator == 1) {
             set_specific_permission($id_new, 'allow_html', true);
         }
         if (!import_check_if_imported('group', strval($row['id']))) {
             import_id_remap_put('group', strval($row['id']), $id_new);
         }
     }
 }
Ejemplo n.º 4
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     if ($this->on_same_msn($file_base)) {
         return;
     }
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'f_groups');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['id']))) {
             continue;
         }
         $name = $this->get_lang_string($db, $row['g_name']);
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $name), 'g.id');
         if (is_null($id_new)) {
             $title = $this->get_lang_string($db, $row['g_title']);
             if (!array_key_exists('g_is_presented_at_install', $row)) {
                 $row['g_is_presented_at_install'] = 0;
             }
             $id_new = ocf_make_group($name, array_key_exists('g_is_default', $row) ? $row['g_is_default'] : 0, $row['g_is_super_admin'], $row['g_is_super_moderator'], $title, '', $row['g_promotion_target'], $row['g_promotion_threshold'], -$row['g_group_leader'], $row['g_flood_control_submit_secs'], $row['g_flood_control_access_secs'], $row['g_max_daily_upload_mb'], $row['g_max_attachments_per_post'], $row['g_max_avatar_width'], $row['g_max_avatar_height'], $row['g_max_post_length_comcode'], $row['g_max_sig_length_comcode'], $row['g_gift_points_base'], $row['g_gift_points_per_day'], $row['g_enquire_on_new_ips'], $row['g_is_presented_at_install'], array_key_exists('g_hidden', $row) ? $row['g_hidden'] : 0, array_key_exists('g_order', $row) ? $row['g_order'] : NULL, array_key_exists('g_rank_image_pri_only', $row) ? $row['g_rank_image_pri_only'] : 0, array_key_exists('g_open_membership', $row) ? $row['g_open_membership'] : 0, array_key_exists('g_is_private_club', $row) ? $row['g_is_private_club'] : 0);
         }
         import_id_remap_put('group', strval($row['id']), $id_new);
     }
     // Now we must fix promotion
     foreach ($rows as $row) {
         if (!is_null($row['g_promotion_target'])) {
             $row_promotion_target = import_id_remap_get('group', strval($row['g_promotion_target']), true);
             if (is_null($row_promotion_target)) {
                 continue;
             }
             $GLOBALS['FORUM_DB']->query_update('f_groups', array('g_promotion_target' => $row_promotion_target), array('id' => import_id_remap_get('group', strval($row['id']))), '', 1);
         }
     }
 }
Ejemplo n.º 5
0
 /**
  * The actualiser for LDAP synchronisation.
  *
  * @return tempcode		The UI
  */
 function actual()
 {
     $title = get_page_title('LDAP_SYNC');
     $all_ldap_groups = ocf_get_all_ldap_groups();
     foreach ($all_ldap_groups as $group) {
         if (post_param_integer('add_group_' . str_replace(' ', '_space_', $group), 0) == 1) {
             ocf_make_group($group, 0, 0, 0, '');
         }
     }
     $all_ocp_groups = $GLOBALS['FORUM_DRIVER']->get_usergroup_list();
     foreach ($all_ocp_groups as $id => $group) {
         if (post_param_integer('delete_group_' . strval($id), 0) == 1) {
             ocf_delete_group($id);
         }
     }
     $all_ldap_members = $GLOBALS['FORUM_DB']->query_select('f_members', array('id'), array('m_password_compat_scheme' => 'ldap'));
     require_code('ocf_groups_action');
     require_code('ocf_groups_action2');
     foreach ($all_ldap_members as $row) {
         $id = $row['id'];
         if (post_param_integer('delete_member_' . strval($id), 0) == 1) {
             ocf_delete_member($id);
         }
     }
     breadcrumb_set_parents(array(array('_SELF:_SELF:misc', do_lang_tempcode('LDAP_SYNC'))));
     breadcrumb_set_self(do_lang_tempcode('DONE'));
     $url = build_url(array('page' => '_SELF', 'type' => 'misc'), '_SELF');
     return redirect_screen($title, $url, do_lang_tempcode('SUCCESS'));
 }
Ejemplo n.º 6
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'config');
     $INFO = array();
     foreach ($rows as $row) {
         $key = $row['config_name'];
         $val = $row['config_value'];
         $INFO[$key] = $val;
     }
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'groups WHERE group_single_user=0 ORDER BY group_id');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['group_id']))) {
             continue;
         }
         $row_group_leader = NULL;
         if ($row['group_moderator'] != 0) {
             $row_group_leader = -$row['group_moderator'];
         }
         // This will be fixed when we import members
         $is_super_admin = 0;
         $is_super_moderator = 0;
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['group_name']), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group($row['group_name'], 0, $is_super_admin, $is_super_moderator, '', '', NULL, NULL, $row_group_leader, 5, 0, 5, 5, $INFO['avatar_max_width'], $INFO['avatar_max_height'], 30000, $INFO['max_sig_chars']);
         }
         // privileges
         set_specific_permission($id_new, 'comcode_dangerous', $INFO['allow_html']);
         import_id_remap_put('group', strval($row['group_id']), $id_new);
     }
 }
Ejemplo n.º 7
0
/**
 * 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');
    }
}
Ejemplo n.º 8
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     require $file_base . '/inc/config.php';
     $rows = $db->query_select('settings');
     $INFO = array();
     foreach ($rows as $row) {
         $key = $row['name'];
         $val = $row['value'];
         $INFO[$key] = $val;
     }
     $avatar_dimensions = explode('x', $INFO['postmaxavatarsize']);
     if (isset($avatar_dimensions[0]) && isset($avatar_dimensions[1]) && !is_null($avatar_dimensions[0]) && !is_null($avatar_dimensions[1])) {
         $avatar_max_width = intval($avatar_dimensions[0]);
         $avatar_max_height = intval($avatar_dimensions[1]);
     } else {
         $avatar_max_width = 100;
         $avatar_max_height = 100;
     }
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'usergroups ORDER BY gid');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['gid']))) {
             continue;
         }
         $is_super_admin = $row['title'] == 'Administrator' ? 1 : 0;
         $is_super_moderator = $row['title'] == 'Universal Moderator' ? 1 : 0;
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['title']), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group($row['title'], 0, $is_super_admin, $is_super_moderator, '', '', NULL, NULL, NULL, 5, 0, 5, 5, $avatar_max_width, $avatar_max_height, 30000);
         }
         // privileges
         set_specific_permission($id_new, 'allow_html', true);
         if (!import_check_if_imported('group', strval($row['gid']))) {
             import_id_remap_put('group', strval($row['gid']), $id_new);
         }
     }
 }
Ejemplo n.º 9
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     if (either_param('importer') == 'ipb1') {
         global $INFO;
         require_once $file_base . '/conf_global.php';
     } else {
         $rows = $db->query('SELECT * FROM ' . $table_prefix . 'conf_settings');
         $INFO = array();
         foreach ($rows as $row) {
             $key = $row['conf_key'];
             $val = $row['conf_value'];
             if ($val == '') {
                 $val = $row['conf_default'];
             }
             $INFO[$key] = $val;
         }
     }
     $max_post_length_comcode = $INFO['max_post_length'];
     $max_sig_length_comcode = $INFO['max_sig_length'];
     list($max_avatar_width, $max_avatar_height) = explode('x', $INFO['avatar_dims']);
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'groups');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['g_id']))) {
             continue;
         }
         list($_promotion_target, $_promotion_threshold) = explode('&', $row['g_promotion']);
         $promotion_target = intval($_promotion_target);
         $promotion_threshold = intval($_promotion_threshold);
         if ($promotion_target == -1 || $promotion_threshold == -1) {
             $promotion_target = NULL;
             $promotion_threshold = NULL;
         }
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['g_title']), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group(@html_entity_decode($row['g_title'], ENT_QUOTES, get_charset()), 0, $row['g_access_cp'], $row['g_is_supmod'], '', '', $promotion_target, $promotion_threshold, NULL, $row['g_avoid_flood'] ? 0 : $row['g_search_flood'], 0, 5, 5, $max_avatar_width, $max_avatar_height, $max_post_length_comcode, $max_sig_length_comcode);
         }
         // Zone permissions
         if ($row['g_view_board'] == 0) {
             $GLOBALS['SITE_DB']->query_delete('group_zone_access', array('group_id' => $id_new));
         }
         // Page permissions
         $denies = array();
         if ($row['g_use_search'] == 0) {
             $denies[] = array('search', get_module_zone('search'));
         }
         list($_contact_member, ) = explode(':', $row['g_email_limit']);
         $contact_member = intval($_contact_member);
         if ($contact_member == 0) {
             $denies[] = array('contactmember', get_module_zone('contactmember'));
         }
         foreach ($denies as $deny) {
             list($page, $zone) = $deny;
             if (is_null($zone)) {
                 continue;
             }
             $test = $GLOBALS['SITE_DB']->query_value_null_ok('group_page_access', 'group_id', array('group_id' => $id_new, 'zone_name' => $zone, 'page_name' => $page));
             if (is_null($test)) {
                 $GLOBALS['SITE_DB']->query_insert('group_page_access', array('group_id' => $id_new, 'zone_name' => $zone, 'page_name' => $page));
             }
         }
         // privileges
         set_specific_permission($id_new, 'comcode_dangerous', $row['g_dohtml']);
         set_specific_permission($id_new, 'view_member_photos', $row['g_mem_info']);
         set_specific_permission($id_new, 'edit_own_midrange_content', $row['g_edit_topic']);
         set_specific_permission($id_new, 'edit_own_lowrange_content', $row['g_edit_posts']);
         set_specific_permission($id_new, 'delete_own_midrange_content', $row['g_delete_own_topics']);
         set_specific_permission($id_new, 'bypass_validation_lowrange_content', $row['g_avoid_q']);
         set_specific_permission($id_new, 'submit_midrange_content', $row['g_post_new_topics']);
         set_specific_permission($id_new, 'submit_lowrange_content', $row['g_reply_other_topics']);
         set_specific_permission($id_new, 'delete_own_lowrange_content', $row['g_delete_own_posts']);
         set_specific_permission($id_new, 'close_own_topics', $row['g_open_close_posts']);
         set_specific_permission($id_new, 'vote_in_polls', $row['g_vote_polls']);
         set_specific_permission($id_new, 'use_pt', $row['g_use_pm']);
         set_specific_permission($id_new, 'delete_account', $row['g_can_remove']);
         set_specific_permission($id_new, 'access_closed_site', $row['g_access_offline']);
         import_id_remap_put('group', strval($row['g_id']), $id_new);
     }
 }
Ejemplo n.º 10
0
 /**
  * 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);
 }
Ejemplo n.º 11
0
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);
}
Ejemplo n.º 12
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     require $file_base . '/Settings.php';
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'settings WHERE ' . db_string_equal_to('variable', 'avatar_max_width_upload') . ' OR ' . db_string_equal_to('variable', 'avatar_max_height_upload'));
     $INFO = array();
     foreach ($rows as $row) {
         $key = $row['variable'];
         $val = $row['value'];
         $INFO[$key] = $val;
     }
     $avatar_max_width = $INFO['avatar_max_width_upload'];
     $avatar_max_height = $INFO['avatar_max_height_upload'];
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'membergroups ORDER BY ID_GROUP');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['ID_GROUP']))) {
             continue;
         }
         $is_super_admin = $row['groupName'] == 'Administrator' ? 1 : 0;
         $is_super_moderator = $row['groupName'] == 'Global Moderator' ? 1 : 0;
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['groupName']), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group($row['groupName'], 0, $is_super_admin, $is_super_moderator, '', '', NULL, NULL, NULL, 5, 0, 5, 5, $avatar_max_width, $avatar_max_height, 30000);
         }
         // privileges
         set_specific_permission($id_new, 'allow_html', true);
         if (!import_check_if_imported('group', strval($row['ID_GROUP']))) {
             import_id_remap_put('group', strval($row['ID_GROUP']), $id_new);
         }
     }
 }
Ejemplo n.º 13
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'config');
     $INFO = array();
     foreach ($rows as $row) {
         $key = $row['config_name'];
         $val = $row['config_value'];
         $INFO[$key] = $val;
     }
     $rows = $db->query('SELECT g.*,u.user_id FROM ' . $table_prefix . 'groups g LEFT JOIN ' . $table_prefix . 'user_group u ON u.group_id=g.group_id AND u.group_leader=1 WHERE u.group_leader=1 OR u.group_leader IS NULL ORDER BY group_id');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['group_id']))) {
             continue;
         }
         if ($row['group_name'] == 'BOTS') {
             continue;
         }
         $row_group_leader = NULL;
         if (!is_null($row['user_id'])) {
             $row_group_leader = -$row['user_id'];
         }
         // This will be fixed when we import members
         $is_super_admin = 0;
         $is_super_moderator = 0;
         if ($row['group_name'] == 'REGISTERED') {
             $id_new = 9;
         } elseif ($row['group_name'] == 'REGISTERED_COPPA') {
             $id_new = 9;
         } elseif ($row['group_name'] == 'GLOBAL_MODERATORS') {
             $id_new = 3;
         } else {
             $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['group_name']), 'g.id');
         }
         if (is_null($id_new)) {
             $id_new = ocf_make_group($row['group_name'], 0, $is_super_admin, $is_super_moderator, '', '', NULL, NULL, $row_group_leader, 5, 0, 5, 5, $row['group_avatar_width'], $row['group_avatar_height'], 30000, $row['group_sig_chars']);
         }
         $permissions = $db->query('SELECT * FROM ' . $table_prefix . 'acl_groups WHERE group_id=' . strval((int) $row['group_id']));
         foreach ($permissions as $p) {
             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_permg($db, $table_prefix, $_p['auth_option_id'], $id_new, $_p['auth_setting']);
                 }
             } else {
                 $this->_import_permg($db, $table_prefix, $p['auth_option_id'], $id_new, $p['auth_setting']);
             }
         }
         import_id_remap_put('group', strval($row['group_id']), $id_new);
     }
 }
Ejemplo n.º 14
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'setting');
     $INFO = array();
     foreach ($rows as $row) {
         $key = $row['varname'];
         $val = $row['value'];
         if ($val == '') {
             $val = $row['defaultvalue'];
         }
         $INFO[$key] = $val;
     }
     $rows = $db->query('SELECT *,g.usergroupid AS usergroupid FROM ' . $table_prefix . 'usergroup g LEFT JOIN ' . $table_prefix . 'usergroupleader l ON g.usergroupid=l.usergroupid LEFT JOIN ' . $table_prefix . 'userpromotion p ON g.usergroupid=p.usergroupid');
     $remap_id = array();
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['usergroupid']))) {
             continue;
         }
         $row_group_leader = NULL;
         if (!is_null($row['userid'])) {
             $row_group_leader = -$row['userid'];
         }
         // This will be fixed when we import members
         $row_promotion_target = NULL;
         $row_promotion_target = $row['joinusergroupid'];
         // This will be fixed when all the usergroups are added
         $is_super_admin = ($row['adminpermissions'] & 2) != 0 ? 1 : 0;
         $is_super_moderator = ($row['adminpermissions'] & 1) != 0 ? 1 : 0;
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['title']), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group($row['title'], 0, $is_super_admin, $is_super_moderator, $row['usertitle'], '', $row_promotion_target, $row['reputation'], $row_group_leader, 5, 0, 5, $row['attachlimit'], $row['avatarmaxwidth'], $row['avatarmaxheight'], $INFO['postmaxchars'], array_key_exists('sigmax', $INFO) ? $INFO['sigmax'] : 700);
         }
         // Zone permissions
         if (!(($row['forumpermissions'] & 1) != 0) || ($row['genericoptions'] & 32) != 0) {
             $GLOBALS['SITE_DB']->query_delete('group_zone_access', array('group_id' => $id_new));
         }
         // Page permissions
         $denies = array();
         if (($row['forumpermissions'] & 4) == 0) {
             $denies[] = array('search', get_module_zone('search'));
         }
         if (($row['forumpermissions'] & 8) == 0) {
             $denies[] = array('contactmember', get_module_zone('contactmember'));
         }
         if (($row['genericpermissions'] & 1) == 0) {
             $denies[] = array('members', get_module_zone('members'));
         }
         foreach ($denies as $deny) {
             list($page, $zone) = $deny;
             $test = $GLOBALS['SITE_DB']->query_value_null_ok('group_page_access', 'group_id', array('group_id' => $id_new, 'zone_name' => $zone, 'page_name' => $page));
             if (is_null($test)) {
                 $GLOBALS['SITE_DB']->query_insert('group_page_access', array('group_id' => $id_new, 'zone_name' => $zone, 'page_name' => $page));
             }
         }
         // privileges
         set_specific_permission($id_new, 'comcode_dangerous', $INFO['allowhtml'] == 1);
         set_specific_permission($id_new, 'bypass_word_filter', $INFO['censorwords'] == 0);
         set_specific_permission($id_new, 'use_quick_reply', $INFO['quickreply'] == 1);
         set_specific_permission($id_new, 'vote_in_polls', ($row['forumpermissions'] & 32768) != 0);
         set_specific_permission($id_new, 'view_member_photos', ($row['genericpermissions'] & 4096) != 0);
         set_specific_permission($id_new, 'view_any_profile_field', ($row['genericpermissions'] & 262144) != 0);
         set_specific_permission($id_new, 'see_warnings', ($row['genericpermissions'] & 8) != 0);
         set_specific_permission($id_new, 'warn_members', ($row['genericpermissions'] & 16384) != 0);
         set_specific_permission($id_new, 'may_choose_custom_title', ($row['genericpermissions'] & 2048) != 0);
         $remap_id[$row['usergroupid']] = $id_new;
         import_id_remap_put('group', strval($row['usergroupid']), $id_new);
     }
     // Now we must fix promotion
     foreach ($rows as $row) {
         if (!is_null($row['joinusergroupid'])) {
             $row_promotion_target = $remap_id[$row['joinusergroupid']];
             $GLOBALS['FORUM_DB']->query_update('f_groups', array('g_promotion_target' => $row_promotion_target), array('id' => $remap_id[$row['usergroupid']]), '', 1);
         }
     }
 }
Ejemplo n.º 15
0
 /**
  * The actualiser for importing a CSV file.
  *
  * @return tempcode		The UI
  */
 function _import_csv()
 {
     $title = get_page_title('IMPORT_MEMBER_CSV');
     disable_php_memory_limit();
     // Even though we split into chunks, PHP does leak memory :(
     $GLOBALS['HELPER_PANEL_PIC'] = 'pagepics/import_csv';
     if (function_exists('set_time_limit')) {
         @set_time_limit(0);
     }
     require_lang('ocf');
     require_code('ocf_members_action');
     $default_password = post_param('default_password');
     $num_added = 0;
     $num_edited = 0;
     $done = 0;
     $headings = $this->_get_csv_headings();
     $all_cpfs = $GLOBALS['FORUM_DB']->query_select('f_custom_fields', array('id', 'cf_default', 'cf_type', 'cf_name'), NULL, 'ORDER BY cf_order');
     foreach ($all_cpfs as $i => $c) {
         $c['text_original'] = get_translated_text($c['cf_name'], $GLOBALS['FORUM_DB']);
         $all_cpfs[$i] = $c;
         $headings[$c['text_original']] = NULL;
     }
     $_all_groups = $GLOBALS['FORUM_DRIVER']->get_usergroup_list(false, false, true);
     $all_groups = array_flip($_all_groups);
     $all_members = collapse_2d_complexity('id', 'm_username', $GLOBALS['FORUM_DB']->query_select('f_members', array('id', 'm_username')));
     $all_members_flipped = array_flip($all_members);
     // Import
     require_code('uploads');
     if (is_swf_upload(true) || array_key_exists('file', $_FILES) && is_uploaded_file($_FILES['file']['tmp_name'])) {
         $_csv_data = array();
         $fixed_contents = unixify_line_format(file_get_contents($_FILES['file']['tmp_name']));
         $myfile = @fopen($_FILES['file']['tmp_name'], 'wb');
         if ($myfile !== false) {
             fwrite($myfile, $fixed_contents);
             fclose($myfile);
         }
         $myfile = fopen($_FILES['file']['tmp_name'], 'rb');
         $del = ',';
         $csv_header = fgetcsv($myfile, 102400, $del);
         if ($csv_header === false) {
             warn_exit(do_lang_tempcode('NO_DATA_IMPORTED'));
         }
         if (count($csv_header) == 1 && strpos($csv_header[0], ';') !== false) {
             $del = ';';
             rewind($myfile);
             $csv_header = fgetcsv($myfile, 102400, $del);
         }
         while (($csv_line = fgetcsv($myfile, 102400, $del)) !== false) {
             $line = array();
             foreach ($csv_header as $i => $h) {
                 $extracted_value = trim(unixify_line_format(array_key_exists($i, $csv_line) ? $csv_line[$i] : ''));
                 if (strpos($h, ':') !== false) {
                     $parts = explode(':', $h, 2);
                     $h = trim($parts[0]);
                     if ($extracted_value != '') {
                         $extracted_value = $parts[1] . ': ' . $extracted_value;
                     }
                 }
                 if (array_key_exists($h, $line)) {
                     if ($extracted_value != '') {
                         $line[$h] .= ($line[$h] != '' ? chr(10) : '') . $extracted_value;
                     }
                 } else {
                     $line[$h] = $extracted_value;
                 }
             }
             if (!array_key_exists('Username', $line) || $line['Username'] == '') {
                 // Can we auto-generate it
                 $forename = NULL;
                 if (array_key_exists('Forenames', $line)) {
                     $forename = $line['Forenames'];
                 }
                 if (array_key_exists('Forename', $line)) {
                     $forename = $line['Forename'];
                 }
                 if (array_key_exists('First name', $line)) {
                     $forename = $line['First name'];
                 }
                 if (array_key_exists('First Name', $line)) {
                     $forename = $line['First Name'];
                 }
                 $surname = NULL;
                 if (array_key_exists('Surname', $line)) {
                     $surname = $line['Surname'];
                 }
                 if (array_key_exists('Last name', $line)) {
                     $surname = $line['Last name'];
                 }
                 if (array_key_exists('Last Name', $line)) {
                     $surname = $line['Last Name'];
                 }
                 if (!is_null($forename) || !is_null($surname)) {
                     // Can we get a year too?
                     $year = '';
                     foreach ($line as $tl_key => $tl_val) {
                         if (substr($tl_key, 0, 4) == 'Year') {
                             $year = $tl_val;
                             break;
                         }
                     }
                     if (strlen($year) == 4 && (substr($year, 0, 2) == '19' || substr($year, 0, 2) == '20')) {
                         $year = substr($year, 2);
                     }
                     // Tidy up forename
                     $_forename = preg_replace('#[^\\w]#', '', preg_replace('#[\\s\\.].*#', '', $forename));
                     // Tidy up surname (last bit strips like 'OBE')
                     $_surname = preg_replace('#[^\\w]#', '', trim(preg_replace('#\\s*[A-Z\\d][A-Z\\d]+#', '', $surname)));
                     // Put it together
                     $line['Username'] = ucfirst($_forename) . ucfirst($_surname) . $year;
                 } else {
                     continue;
                     // This field is needed
                 }
             }
             $username = $line['Username'];
             $linked_id = NULL;
             if (array_key_exists('ID', $line)) {
                 $linked_id = $line['ID'] != '' && array_key_exists(intval($line['ID']), $all_members) ? intval($line['ID']) : NULL;
             }
             if (is_null($linked_id)) {
                 $linked_id = array_key_exists($username, $all_members_flipped) ? $all_members_flipped[$username] : NULL;
             }
             $new_member = is_null($linked_id);
             $email_address_key = 'E-mail address';
             if (array_key_exists('Email address', $line)) {
                 $email_address_key = 'Email address';
             }
             if (array_key_exists('E-mail Address', $line)) {
                 $email_address_key = 'E-mail Address';
             }
             if (array_key_exists('Email Address', $line)) {
                 $email_address_key = 'Email Address';
             }
             if (array_key_exists('E-mail', $line)) {
                 $email_address_key = 'E-mail';
             }
             if (array_key_exists('Email', $line)) {
                 $email_address_key = 'Email';
             }
             $dob_key = 'Date of birth';
             if (array_key_exists('Date Of Birth', $line)) {
                 $dob_key = 'Date Of Birth';
             }
             if (array_key_exists('DOB', $line)) {
                 $dob_key = 'DOB';
             }
             // If it's an edited member, add in their existing CSV details, so that if it's a partial merge it'll still work without deleting anything!
             if (!$new_member) {
                 $member_groups = $GLOBALS['FORUM_DB']->query_select('f_group_members', array('gm_member_id', 'gm_group_id'), array('gm_validated' => 1, 'gm_member_id' => $linked_id));
                 $member_cpfs = list_to_map('mf_member_id', $GLOBALS['FORUM_DB']->query_select('f_member_custom_fields', array('*'), array('mf_member_id' => $linked_id), '', 1));
                 $this_record = $this->_get_csv_member_record($member_cpfs, $GLOBALS['FORUM_DRIVER']->get_member_row($linked_id), $_all_groups, $headings, $all_cpfs, $member_groups);
                 // Remember "+" in PHP won't overwrite existing keys
                 if (!array_key_exists($email_address_key, $line)) {
                     unset($this_record['E-mail address']);
                 }
                 if (!array_key_exists($dob_key, $line)) {
                     unset($this_record['Date of birth']);
                 }
                 $line += $this_record;
             }
             // Set up member row
             if (array_key_exists('Password', $line) && $line['Password'] != '') {
                 $parts = explode('/', $line['Password']);
                 $password = $parts[0];
                 $salt = array_key_exists(1, $parts) ? $parts[1] : NULL;
                 $password_compatibility_scheme = array_key_exists(2, $parts) ? $parts[2] : NULL;
             } else {
                 $password = NULL;
                 $salt = NULL;
                 $password_compatibility_scheme = NULL;
             }
             $matches = array();
             if (array_key_exists($email_address_key, $line)) {
                 $email_address = $line[$email_address_key];
             } else {
                 $email_address = NULL;
             }
             if (preg_match('#^([^\\s]*)\\s+\\(.*\\)$#', $email_address, $matches) != 0) {
                 $email_address = $matches[1];
             }
             if (preg_match('#^.*\\s+<(.*)>$#', $email_address, $matches) != 0) {
                 $email_address = $matches[1];
             }
             if (array_key_exists($dob_key, $line)) {
                 $parts = explode('/', $line[$dob_key]);
                 $dob_day = array_key_exists(2, $parts) ? intval($parts[2]) : NULL;
                 $dob_month = array_key_exists(1, $parts) ? intval($parts[1]) : NULL;
                 $dob_year = array_key_exists(0, $parts) ? intval($parts[0]) : NULL;
             } else {
                 $dob_day = NULL;
                 $dob_month = NULL;
                 $dob_year = NULL;
             }
             $validated = array_key_exists('Validated', $line) ? strtoupper($line['Validated']) == 'YES' || $line['Validated'] == '1' || strtoupper($line['Validated']) == 'Y' || strtoupper($line['Validated']) == 'ON' ? 1 : 0 : 1;
             if (array_key_exists('Join time', $line)) {
                 if (strpos($line['Join time'], '-') !== false) {
                     $parts = explode('-', $line['Join time']);
                 } else {
                     $parts = explode('/', $line['Join time']);
                 }
                 if (!array_key_exists(1, $parts)) {
                     $parts[1] = '1';
                 }
                 if (!array_key_exists(2, $parts)) {
                     $parts[2] = '1';
                 }
                 if (strlen($parts[2]) != 4) {
                     $join_time = mktime(0, 0, 0, intval($parts[1]), intval($parts[2]), intval($parts[0]));
                     // yy(yy)-mm-dd
                 } else {
                     $join_time = mktime(0, 0, 0, intval($parts[1]), intval($parts[0]), intval($parts[2]));
                     // dd-mm-yyyy
                 }
                 if ($join_time > time()) {
                     $join_time = time();
                 }
                 // Fixes MySQL out of range error that could happen
             } else {
                 $join_time = NULL;
             }
             $avatar_url = array_key_exists('Avatar', $line) ? $line['Avatar'] : '';
             if (!is_null($avatar_url)) {
                 if (substr($avatar_url, 0, strlen(get_base_url() . '/')) == get_base_url() . '/') {
                     $avatar_url = substr($avatar_url, strlen(get_base_url() . '/'));
                 }
             }
             $signature = array_key_exists('Signature', $line) ? $line['Signature'] : '';
             $is_perm_banned = array_key_exists('Banned', $line) ? strtoupper($line['Banned']) == 'YES' || $line['Banned'] == '1' || strtoupper($line['Banned']) == 'Y' || strtoupper($line['Banned']) == 'ON' ? 1 : 0 : 0;
             $reveal_age = array_key_exists('Reveal age', $line) ? strtoupper($line['Reveal age']) == 'YES' || $line['Reveal age'] == '1' || strtoupper($line['Reveal age']) == 'Y' || strtoupper($line['Reveal age']) == 'ON' ? 1 : 0 : 0;
             $language = array_key_exists('Language', $line) ? $line['Language'] : '';
             $allow_emails = array_key_exists('Accept member e-mails', $line) ? strtoupper($line['Accept member e-mails']) == 'YES' || $line['Accept member e-mails'] == '1' || strtoupper($line['Accept member e-mails']) == 'Y' || strtoupper($line['Accept member e-mails']) == 'ON' ? 1 : 0 : 0;
             $allow_emails_from_staff = array_key_exists('Opt-in', $line) ? strtoupper($line['Opt-in']) == 'YES' || $line['Opt-in'] == '1' || strtoupper($line['Opt-in']) == 'Y' || strtoupper($line['Opt-in']) == 'ON' ? 1 : 0 : 0;
             $primary_group = NULL;
             $groups = NULL;
             if (array_key_exists('Usergroup', $line)) {
                 $parts = explode('/', $line['Usergroup']);
                 foreach ($parts as $p) {
                     if (!array_key_exists($p, $all_groups)) {
                         require_code('ocf_groups_action');
                         $g_id = ocf_make_group($p, 0, 0, 0, '');
                         $all_groups[$p] = $g_id;
                         $_group_edit_url = build_url(array('page' => 'admin_ocf_groups', 'type' => '_ed', 'id' => $g_id), get_module_zone('admin_ocf_groups'));
                         $group_edit_url = $_group_edit_url->evaluate();
                         attach_message(do_lang_tempcode('MEMBER_IMPORT_GROUP_ADDED', escape_html($p), escape_html($group_edit_url)), 'inform');
                     }
                 }
                 $primary_group = $all_groups[$parts[0]];
                 unset($parts[0]);
                 $groups = array();
                 foreach ($parts as $p) {
                     $groups[] = $all_groups[$p];
                 }
             }
             $photo_url = array_key_exists('Photo', $line) ? $line['Photo'] : '';
             if ($photo_url != '') {
                 require_code('images');
                 $photo_thumb_url = 'uploads/ocf_photos_thumbs/' . uniqid('', true) . '.png';
                 convert_image($photo_url, $photo_thumb_url, -1, -1, intval(get_option('thumb_width')), false);
             } else {
                 $photo_thumb_url = '';
             }
             $custom_fields = array();
             foreach ($all_cpfs as $cpf) {
                 $custom_fields[$cpf['id']] = array_key_exists($cpf['text_original'], $line) ? $line[$cpf['text_original']] : $cpf['cf_default'];
                 if (!array_key_exists($cpf['text_original'], $line) && $cpf['cf_type'] == 'list') {
                     $parts = explode($custom_fields[$cpf['id']], '|');
                     $custom_fields[$cpf['id']] = $parts[0];
                 }
                 if ($cpf['cf_type'] == 'integer') {
                     $custom_fields[$cpf['id']] = intval($custom_fields[$cpf['id']]);
                 } elseif ($cpf['cf_type'] == 'tick') {
                     $custom_fields[$cpf['id']] = strtoupper($custom_fields[$cpf['id']]) == 'YES' || strtoupper($custom_fields[$cpf['id']]) == 'Y' || strtoupper($custom_fields[$cpf['id']]) == 'ON' || $custom_fields[$cpf['id']] == '1' ? 1 : 0;
                 } elseif ($cpf['cf_type'] == 'short_text' || $cpf['cf_type'] == 'short_trans') {
                     $custom_fields[$cpf['id']] = substr(str_replace(chr(10), ', ', str_replace(',' . chr(10), chr(10), $custom_fields[$cpf['id']])), 0, 255);
                 } elseif ($cpf['cf_type'] == 'long_text' || $cpf['cf_type'] == 'long_trans') {
                     //$custom_fields[$cpf['id']]=$custom_fields[$cpf['id']];
                 } elseif ($cpf['cf_type'] == 'float') {
                     if (preg_match('#^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\n(\\d\\d\\d\\d)$#', $custom_fields[$cpf['id']]) != 0) {
                         $parts = explode(chr(10), $custom_fields[$cpf['id']], 2);
                         $month_lookup = array('Jan' => 0.1, 'Feb' => 0.2, 'Mar' => 0.3, 'Apr' => 0.4, 'May' => 0.5, 'Jun' => 0.6, 'Jul' => 0.7, 'Aug' => 0.8, 'Sep' => 0.9, 'Oct' => 0.1, 'Nov' => 0.11, 'Dec' => 0.12);
                         $custom_fields[$cpf['id']] = floatval($parts[1]) + $month_lookup[$parts[0]];
                     } else {
                         $custom_fields[$cpf['id']] = floatval($custom_fields[$cpf['id']]);
                     }
                 }
                 unset($line[$cpf['text_original']]);
             }
             foreach (array_keys($headings) as $h) {
                 unset($line[$h]);
             }
             unset($line[$email_address_key]);
             unset($line[$dob_key]);
             foreach ($line as $h => $f) {
                 $cf_id = ocf_make_custom_field($h, 0, '', '', 0, 0, 0, 0, 'long_text');
                 $_cpf_edit_url = build_url(array('page' => 'admin_ocf_customprofilefields', 'type' => '_ed', 'id' => $cf_id), get_module_zone('admin_ocf_customprofilefields'));
                 $cpf_edit_url = $_cpf_edit_url->evaluate();
                 attach_message(do_lang_tempcode('MEMBER_IMPORT_CPF_ADDED', escape_html($h), escape_html($cpf_edit_url)), 'inform');
                 $custom_fields[$cf_id] = $f;
                 $all_cpfs[] = array('id' => $cf_id, 'cf_default' => '', 'text_original' => $h, 'cf_type' => 'short_line');
             }
             if ($new_member) {
                 if (is_null($password)) {
                     $password = $default_password;
                 }
                 if (is_null($salt)) {
                     $salt = '';
                 }
                 if (is_null($password_compatibility_scheme)) {
                     $password_compatibility_scheme = '';
                 }
                 $linked_id = ocf_make_member($username, $password, is_null($email_address) ? '' : $email_address, $groups, $dob_day, $dob_month, $dob_year, $custom_fields, NULL, $primary_group, $validated, $join_time, NULL, '', $avatar_url, $signature, $is_perm_banned, get_option('default_preview_guests') == '1' ? 1 : 0, $reveal_age, '', $photo_url, $photo_thumb_url, 1, 1, $language, $allow_emails, $allow_emails_from_staff, '', NULL, '', false, $password_compatibility_scheme, $salt, 1, NULL, NULL, 0, '*', '');
                 $all_members[$linked_id] = $username;
                 $all_members_flipped[$username] = $linked_id;
                 $num_added++;
             } else {
                 $old_username = $GLOBALS['OCF_DRIVER']->get_member_row_field($linked_id, 'm_username');
                 if ($old_username == $username) {
                     $username = NULL;
                 }
                 ocf_edit_member($linked_id, $email_address, NULL, $dob_day, $dob_month, $dob_year, NULL, $primary_group, $custom_fields, NULL, $reveal_age, NULL, NULL, $language, $allow_emails, $allow_emails_from_staff, $validated, $username, $password, NULL, NULL, NULL, NULL, NULL, $join_time, $avatar_url, $signature, $is_perm_banned, $photo_url, $photo_thumb_url, $salt, $password_compatibility_scheme, true);
                 $num_edited++;
             }
             $done++;
         }
         fclose($myfile);
     } else {
         warn_exit(do_lang_tempcode('IMPROPERLY_FILLED_IN_UPLOAD'));
     }
     if ($done == 0) {
         warn_exit(do_lang_tempcode('NO_DATA_IMPORTED'));
     }
     breadcrumb_set_parents(array(array('_SEARCH:admin_ocf_join:menu', do_lang_tempcode('MEMBERS')), array('_SEARCH:admin_ocf_join:import_csv', do_lang_tempcode('IMPORT_MEMBER_CSV'))));
     breadcrumb_set_self(do_lang_tempcode('DONE'));
     return inform_screen($title, do_lang_tempcode('NUM_MEMBERS_IMPORTED', escape_html(integer_format($num_added)), escape_html(integer_format($num_edited))));
 }
Ejemplo n.º 16
0
 /**
  * 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_groups($db, $table_prefix, $file_base)
 {
     require $file_base . '/config.php';
     $rows = $db->query('SELECT * FROM ' . $table_prefix . 'user_groups ORDER BY user_group_id');
     foreach ($rows as $row) {
         if (import_check_if_imported('group', strval($row['user_group_id']))) {
             continue;
         }
         $is_super_admin = $row['admin_rights'];
         $is_super_moderator = $row['super_moderator_rights'];
         $group_name_remap = array('Unregistered' => 'Guests', 'Moderators' => 'Super-members', 'Super Moderators' => 'Super-moderators');
         if (array_key_exists($row['user_group_name'], $group_name_remap)) {
             $row['user_group_name'] = $group_name_remap[$row['user_group_name']];
         }
         $id_new = $GLOBALS['FORUM_DB']->query_value_null_ok('f_groups g LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON g.g_name=t.id WHERE ' . db_string_equal_to('text_original', $row['user_group_name']), 'g.id');
         if (is_null($id_new)) {
             $id_new = ocf_make_group($row['user_group_name'], 0, $is_super_admin, $is_super_moderator, $row['user_group_title'], '', NULL, NULL, NULL, constant('FLOOD_INTERVAL'), 0, $row['post_attachments'] == 0 ? 0 : 5, 5, constant('AVATAR_DIMENSIONS_MAX'), constant('AVATAR_DIMENSIONS_MAX'), 30000, 700, 25, $row['add_mana']);
         }
         // privileges
         set_specific_permission($id_new, 'vote_in_polls', $row['vote_on_polls']);
         set_specific_permission($id_new, 'use_pt', $row['pm']);
         set_specific_permission($id_new, 'submit_lowrange_content', $row['post_new_topics']);
         set_specific_permission($id_new, 'view_member_photos', $row['view_member_info']);
         set_specific_permission($id_new, 'edit_lowrange_content', $row['edit_own_posts']);
         set_specific_permission($id_new, 'add_public_events', $row['post_public_events']);
         set_specific_permission($id_new, 'view_calendar', $row['view_public_events']);
         $denies = array();
         if ($row['view_board'] == 0) {
             $denies[] = array('forumview', get_module_zone('forumview'));
         }
         if ($row['search'] == 0) {
             $denies[] = array('search', get_module_zone('search'));
         }
         foreach ($denies as $deny) {
             list($page, $zone) = $deny;
             $test = $GLOBALS['SITE_DB']->query_value_null_ok('group_page_access', 'group_id', array('group_id' => $id_new, 'zone_name' => $zone, 'page_name' => $page));
             if (is_null($test)) {
                 $GLOBALS['SITE_DB']->query_insert('group_page_access', array('group_id' => $id_new, 'zone_name' => $zone, 'page_name' => $page));
             }
         }
         import_id_remap_put('group', strval($row['user_group_id']), $id_new);
     }
 }
Ejemplo n.º 17
0
 /**
  * Standard aed_module add actualiser.
  *
  * @return ID_TEXT		The entry added
  */
 function add_actualisation()
 {
     require_code('themes2');
     list($group_leader, $promotion_target, $promotion_threshold) = $this->read_in_data();
     $rank_img = get_theme_img_code('ocf_rank_images', true, 'file', 'theme_img_code', $GLOBALS['FORUM_DB']);
     $id = ocf_make_group(post_param('name'), post_param_integer('is_default', 0), post_param_integer('is_super_admin', 0), post_param_integer('is_super_moderator', 0), post_param('title', ''), $rank_img, $promotion_target, $promotion_threshold, $group_leader, post_param_integer('flood_control_submit_secs'), post_param_integer('flood_control_access_secs'), post_param_integer('max_daily_upload_mb'), post_param_integer('max_attachments_per_post'), post_param_integer('max_avatar_width', 100), post_param_integer('max_avatar_height', 100), post_param_integer('max_post_length_comcode'), post_param_integer('max_sig_length_comcode', 10000), post_param_integer('gift_points_base', 0), post_param_integer('gift_points_per_day', 0), post_param_integer('enquire_on_new_ips', 0), post_param_integer('is_presented_at_install', 0), post_param_integer('hidden', 0), post_param_integer('order'), post_param_integer('rank_image_pri_only', 0), post_param_integer('open_membership', 0), post_param_integer('is_private_club', 0));
     $this->copy_members_into($id);
     $absorb = post_param_integer('absorb', -1);
     if ($absorb != -1) {
         ocf_group_absorb_privileges_of($id, $absorb);
     }
     if (post_param_integer('is_private_club', 0) == 1) {
         $GLOBALS['SITE_DB']->query_delete('gsp', array('group_id' => $id));
         $GLOBALS['SITE_DB']->query_delete('group_zone_access', array('group_id' => $id));
         $GLOBALS['SITE_DB']->query_delete('group_category_access', array('group_id' => $id));
         $GLOBALS['SITE_DB']->query_delete('group_page_access', array('group_id' => $id));
     }
     if (!is_null($group_leader)) {
         ocf_add_member_to_group($group_leader, $id);
     }
     if (addon_installed('ecommerce')) {
         require_lang('ecommerce');
         $this->extra_donext_whatever = array(array('ecommerce', array('admin_ecommerce', array('type' => 'ad', 'group_id' => $id), '_SELF'), do_lang_tempcode('ADD_USERGROUP_SUBSCRIPTION')));
         $this->extra_donext_whatever_title = do_lang_tempcode('MODULE_TRANS_NAME_subscriptions');
     }
     return strval($id);
 }