コード例 #1
0
/**
 * Generate random strings. Primarily for usernames but can be used for any instance where a random string is needed.
 *
 * @since 1.0.0
 *
 * @param This takes no parameters.
 *
 * @return str Returns a random username.
 */
function bbconnect_random($args = null)
{
    // SET THE DEFAULTS TO BE OVERRIDDEN AS DESIRED
    $defaults = array('name' => false, 'length' => 7, 'underscores' => 0, 'compact' => false, 'bytime' => false);
    // PARSE THE INCOMING ARGS
    $args = wp_parse_args($args, $defaults);
    // EXTRACT THE VARIABLES
    extract($args, EXTR_SKIP);
    $p = '';
    // CONCATENATE THE FIRST NAME
    if (false != $name) {
        $p .= sanitize_title_with_underscores($name);
        if (false == $compact) {
            $p .= '_';
        }
    }
    // LOOP TO BUILD THE RANDOM STRING
    for ($i = 0; $i < $length; $i++) {
        $c = mt_rand(1, 7);
        switch ($c) {
            case $c <= 2:
                $p .= mt_rand(0, 9);
                // NUMBER
                break;
            case $c <= 4:
                $p .= chr(mt_rand(65, 90));
                // UPPERCASE LETTER
                break;
            case $c <= 6:
                $p .= chr(mt_rand(97, 122));
                // LOWERCASE LETTER
                break;
            case 7:
                $len = strlen($p);
                if ($underscores > 0 && $len > 0 && $len < $length - 1 && $p[$len - 1] != "_") {
                    $p .= "_";
                    $underscores--;
                } else {
                    $i--;
                    continue;
                }
                break;
        }
    }
    if (false == $bytime) {
        if (false == $compact) {
            $p .= '_';
        }
        $p .= time();
    }
    return $p;
}
コード例 #2
0
function bbconnect_meta_options_form_save($post_arr)
{
    // LOOP THROUGH THE POST VARS AND ACCESS THE OPTIONS
    foreach ($post_arr as $key => $value) {
        if (!is_array($value)) {
            continue;
        }
        if (!isset($value['meta_key']) || empty($value['meta_key'])) {
            continue;
        }
        // MAKE SURE ANY NEW ELEMENTS ARE PROPERLY STRUCTURED
        if (isset($value['status']) && 'new_ele' == $value['status']) {
            $value['meta_key'] = sanitize_title_with_underscores($value['meta_key']);
            $key = sanitize_title_with_underscores($value['meta_key']);
            unset($value['status']);
        }
        // MAKE SURE ALL ELEMENTS ARE PROPERLY SCOPED, OTHERWISE, DELETE THEM
        if (false == $key || strlen($key) <= 2 || false !== strpos($key, '_bbcdel_') || !isset($value['source'])) {
            if (isset($value['source']) && 'wpr' == $value['source']) {
            } else {
                if (isset($value['source']) && 'taxonomy' == $value['options']['field_type']) {
                    if ('bbconnect' == $value['source'] || 'user' == $value['source']) {
                        bbconnect_delete_wp_taxonomy($value['meta_key']);
                    }
                }
                unset($post_arr[$key]);
                $exclude = true;
            }
        }
        // IF THIS IS A BBCONNECT-INITIATED TAXONOMY, UPDATE THE INTERNAL ARRAY
        // IN ORDER TO INSTANTIATE THIS AS A TAXONOMY ON INIT
        if (isset($value['source']) && 'taxonomy' == $value['options']['field_type'] && !isset($exclude)) {
            if ('bbconnect' == $value['source'] || 'user' == $value['source']) {
                if (isset($value['options']['post_types'])) {
                    $pargs = $value['options']['post_types'];
                } else {
                    $pargs = array();
                }
                $tax_args = array('tax' => $value['meta_key'], 'single' => $value['name'], 'location' => $pargs);
                if (false === bbconnect_create_wp_taxonomy($tax_args)) {
                    unset($post_arr[$key]);
                    $exclude = true;
                }
            }
        }
        // STEP THROUGH THE CHOICES AND SAVE THEM
        if ('group' == $value['options']['field_type'] || 'password' == $value['options']['field_type'] || 'wpr' == $value['source'] || 'wp' == $value['source'] || isset($value['group']) || 'bb_work_queue' == $value['meta_key'] || 'category_id' == $value['meta_key'] || 'segment_id' == $value['meta_key']) {
            if (isset($value['options']['choices'])) {
                $value['options']['choices'] = maybe_unserialize(stripslashes_deep($value['options']['choices']));
            }
        } else {
            if ('select' == $value['options']['field_type'] || 'radio' == $value['options']['field_type'] || 'multitext' == $value['options']['field_type']) {
                // RESET THE ARRAY
                $pro_choices = array();
                foreach ($value['options']['choices'] as $ckey => $cvalue) {
                    if ('' == $cvalue['key']) {
                        $cvalue['key'] = $cvalue['value'];
                    }
                    $pro_choices[$cvalue['key']] = $cvalue['value'];
                }
                $value['options']['choices'] = $pro_choices;
            } else {
                if ('section' == $value['options']['field_type']) {
                    if (isset($value['options']['choices'])) {
                        $value['options']['choices'] == $value['options']['choices'];
                    }
                } else {
                    if (isset($value['options']['choices'])) {
                        $value['options']['choices'] = maybe_unserialize(urldecode($value['options']['choices']));
                    }
                }
            }
        }
        // IF THESE FIELDS ARE NOT PART OF AN ADDRESS OR OTHER GROUP...
        if (isset($value['group']) || 'bb_work_queue' == $value['meta_key'] || 'category_id' == $value['meta_key'] || 'segment_id' == $value['meta_key']) {
            $exclude = true;
        }
        // IF THE FIELD IS PART OF A SECTION, WE WANT TO EXCLUDE IT
        // OTHERWISE, WE WANT TO REMOVE THE REFERENCE
        if (isset($value['section']) && !empty($value['section']) && !isset($post_arr['_bbcdel_' . $value['section']])) {
            $exclude = true;
        } else {
            unset($value['section']);
        }
        if (!isset($exclude)) {
            // FIND THE COLUMN IF APPLICABLE
            $columns = array('column_1', 'column_2', 'column_3');
            if (!empty($value['column']) && in_array($value['column'], $columns)) {
                $col = $value['column'];
            } else {
                $col = 'column_1';
                $value['column'] = 'column_1';
            }
            $new_bbconnect_user_meta[$col][] = bbconnect_get_option($key, true);
        } else {
            unset($exclude);
        }
        // UPDATE THE OPTION AND THE INDEX KEY
        if (update_option(bbconnect_get_option($key, true), $value)) {
            $bbc_update = true;
        }
        // ADD ACTION FOR PLUGINS TO OPERATE ON
        do_action('bbconnect_addon_process_user_meta', $value);
    }
    // UPDATE THE INDEX
    if (update_option('_bbconnect_user_meta', $new_bbconnect_user_meta) || isset($bbc_update)) {
        _e('Fields updated!', 'bbconnect');
    } else {
        _e('There were no fields to update.', 'bbconnect');
    }
}
コード例 #3
0
function bbconnect_export_process()
{
    // EXTEND EXECUTION TIME
    set_time_limit(3600);
    // SET LOCAL GLOBALS
    global $wpdb;
    $blog_prefix = $wpdb->get_blog_prefix(get_current_blog_id());
    // SET A WPR TEMPORARY ARRAY
    $wpr_trans = array('email', 'url');
    $ret_array = array();
    $exp_array = array();
    // BYPASS PAGINATION AND GET ALL USERS FROM THIS QUERY
    if (isset($_POST['_grexport']['all_users'])) {
        $users = explode('|', $_POST['_grexport']['all_search']);
        unset($_POST['_grexport']['all_search']);
    } else {
        if (isset($_POST['gredit_users'])) {
            $users = array_unique($_POST['gredit_users']);
        } else {
            $users = false;
        }
    }
    // SET UP THE DATA ARRAY
    foreach ($_POST['_grexport'] as $key => $val) {
        $exp_array[$key] = maybe_unserialize(urldecode($val));
    }
    $exp_array['return'] = true;
    if (false != $users) {
        // IF WE WANT ALL FIELDS, DO THAT NOW, ELSE, TAKE WHAT WE'VE SEARCHED FOR
        if (isset($_POST['_grexport']['all_fields'])) {
            $headers_prep = bbconnect_get_user_metadata();
            foreach ($headers_prep as $header) {
                $user_meta = get_option($header);
                if ('taxonomy' == $user_meta['options']['field_type']) {
                    $headers[$user_meta['meta_key']] = array();
                } else {
                    if ('wpr' == $user_meta['source']) {
                        if (in_array($user_meta['meta_key'], $wpr_trans)) {
                            $wpr_key = 'user_' . $user_meta['meta_key'];
                        } else {
                            if ('role' == $user_meta['meta_key']) {
                                $wpr_key = $blog_prefix . 'capabilities';
                            } else {
                                $wpr_key = $user_meta['meta_key'];
                            }
                        }
                        $headers[$wpr_key] = $user_meta['meta_key'];
                    } else {
                        if ('wp' == $user_meta['source'] || 'user' == $user_meta['source']) {
                            $headers[$user_meta['meta_key']] = $user_meta['meta_key'];
                        } else {
                            $headers['bbconnect_' . $user_meta['meta_key']] = $user_meta['meta_key'];
                        }
                    }
                }
            }
            // REPLACE THE FIELD SELECTIONS WITH ALL FIELDS
            $exp_array['table_body'] = $headers;
            $exp_array['post_vars'] = false;
            unset($headers);
        }
        // IF WE HAVE ACTIONS, PROCESS THEM
        if (isset($_POST['gredit_actions'])) {
            $exp_array['action_array'] = apply_filters('bbconnect_export_action_array', $_POST['gredit_actions']);
        }
        foreach ($users as $user_id) {
            // ADD THE CURRENT USER IN
            $exp_array['user_id'] = $user_id;
            $cur_user = bbconnect_rows($exp_array);
            if (isset($cur_user['action'])) {
                if (isset($_POST['_grexport']['all_actions']) || isset($_POST['gredit_actions'])) {
                    $curact_array = apply_filters('bbconnect_export_action_return', $cur_user['action']);
                    unset($cur_user['action']);
                    foreach ($curact_array as $akey => $aval) {
                        $ret_array[] = $cur_user + $aval;
                    }
                } else {
                    unset($cur_user['action']);
                    $ret_array[] = $cur_user;
                }
            } else {
                $ret_array[] = $cur_user;
            }
        }
        // APPLY A HEADER
        array_unshift($ret_array, array_keys($ret_array[0]));
        // FIX THAT DAMN MICROSOFT BUG!
        if ('ID' == $ret_array[0][0]) {
            $ret_array[0][0] = 'user_id';
        }
        if (isset($_POST['export_title'])) {
            $exp_title = $_POST['export_title'];
        } else {
            $exp_title = 'export';
        }
        $inc_file = bbconnect_export_filename(sanitize_title_with_underscores($exp_title));
        $ret_file = bbconnect_export_file($inc_file, $ret_array);
        if (false != $ret_file) {
            $export_results = '<div id="progress"><a href="' . $ret_file . '">' . __('Your file', 'bbconnect') . '</a></div>';
        } else {
            $export_results = __('I was not able to complete the export.', 'bbconnect');
        }
    } else {
        $export_results = __('Please make a selection', 'bbconnect');
    }
    $ret_arr = array('all_search' => false, 'member_search' => false, 'action_search' => false, 'user_display' => false, 'export_array' => $ret_array, 'max_num_pages' => false, 'post_vars' => false, 'users_per_page' => false, 'users_count' => false, 'export_results' => $export_results);
    return $ret_arr;
}
コード例 #4
0
function bbconnect_new_form()
{
    if (!wp_verify_nonce($_POST['bbconnect_admin_nonce'], 'bbconnect-admin-nonce')) {
        die(__('terribly sorry.', 'bbconnect'));
    }
    if (!isset($_POST['data'])) {
        return false;
    }
    $cid = bbconnect_sanitize($_POST['data']);
    $forms = get_option('_bbconnect_user_forms');
    if (false == $forms) {
        $forms = array();
    }
    // MAKE A KEY OUT OF THE USER-SUBMITTED TITLE
    $scid = sanitize_title_with_underscores($cid);
    // IF THE KEY IS UNIQUE, PROCEED
    if (!isset($forms[$scid])) {
        $forms[$scid] = $cid;
        $update = update_option('_bbconnect_user_forms', $forms);
        if (false == $update) {
            $uerror = __('New form failed', 'bbconnect');
        }
    } else {
        $update = false;
        $uerror = __('Duplicate form. Please try another name.', 'bbconnect');
    }
    bbconnect_list_forms(get_option('_bbconnect_user_forms'));
    if (false != $update) {
        echo '<div id="response" class="bbconnect_notice">' . __('New form successfully created', 'bbconnect') . '</div>';
    } else {
        echo '<div id="response" class="bbconnect_error">' . $uerror . '</div>';
    }
    die;
}