/**
 * register widget : multiple instance
 * frontend instance
 *
 * @param array $args
 * @param array $widget_args
 * @return void
 * @since 1.0
 */
function mgm_sidebar_widget_registration($args, $widget_args = 1)
{
    global $wpdb, $user_ID, $current_user, $mgm_sidebar_widget;
    extract($args, EXTR_SKIP);
    if (is_numeric($widget_args)) {
        $widget_args = array('number' => $widget_args);
    }
    $widget_args = wp_parse_args($widget_args, array('number' => -1));
    extract($widget_args, EXTR_SKIP);
    // options init
    $options = $mgm_sidebar_widget->register_widget;
    // mgm_pr($options);
    // check
    if (!isset($options[$number])) {
        return;
    }
    //skip widget if BUDDYPRESS is loaded
    if (defined('BP_VERSION')) {
        return;
    }
    //skip registation page:
    if (in_array(trailingslashit(mgm_current_url()), array(trailingslashit(mgm_get_custom_url('register'))), trailingslashit(mgm_get_custom_url('register', true)))) {
        return;
    }
    // skip if on transactions page:
    foreach (mgm_get_payment_page_query_vars() as $query_var) {
        // set if
        if ($isset_query_var = mgm_get_query_var($query_var)) {
            return;
        }
    }
    // check
    if (isset($_GET['method']) && preg_match('/payment_/', $_GET['method'])) {
        return;
    }
    // set
    $title = isset($options[$number]['title']) ? $options[$number]['title'] : __('Magic Members - Register', 'mgm');
    $intro = isset($options[$number]['intro']) ? $options[$number]['intro'] : '';
    $use_custom_fields = isset($options[$number]['use_custom_fields']) ? $options[$number]['use_custom_fields'] : true;
    //Issue #777
    $default_subscription_pack = isset($options[$number]['default_subscription_pack']) ? $options[$number]['default_subscription_pack'] : false;
    // user looged in
    if (!$user_ID) {
        // if hide on custom register page
        $post_id = get_the_ID();
        // post custom register
        if ($post_id > 0) {
            // if match
            if (get_permalink($post_id) == mgm_get_custom_url('register')) {
                return "";
            }
        }
        // start actual widget
        echo $before_widget;
        if ($title) {
            echo $before_title . $title . $after_title;
        }
        // echo $intro;
        echo mgm_sidebar_user_register_form($use_custom_fields, $default_subscription_pack);
        echo $after_widget;
    }
}
/**
 * status widget : register with wordpress
 *
 * @param void
 * @return void
 * @since 1.0
 */
function mgm_sidebar_widget_status_register()
{
    global $wp_registered_widgets, $mgm_sidebar_widget;
    //skip if on transactions page:
    foreach (mgm_get_payment_page_query_vars() as $query_var) {
        // set if
        if ($isset_quey_var = mgm_get_query_var($query_var)) {
            return;
        }
    }
    // payment
    if (isset($_GET['method']) && preg_match('/payment_/', $_GET['method'])) {
        return;
    }
    // $options[$number]['title']
    if (!($options = $mgm_sidebar_widget->status_widget)) {
        $options = array();
    }
    // defaults
    $widget_ops = array();
    $control_ops = array('width' => 400, 'id_base' => 'mgm_sidebar_widget_status');
    // widget name
    $name = __('Magic Members Status', 'mgm');
    $registered = false;
    foreach (array_keys($options) as $o) {
        // Old widgets can have null values for some reason
        if (isset($options[$o]['title'])) {
            $registered = true;
            $id = "mgm_sidebar_widget_status-{$o}";
            // register
            wp_register_sidebar_widget($id, $name, 'mgm_sidebar_widget_status', $widget_ops, array('number' => $o));
            wp_register_widget_control($id, $name, 'mgm_sidebar_widget_status_admin', $control_ops, array('number' => $o));
        }
    }
    // If there are none, we register the widget's existence with a generic template
    if (!$registered) {
        wp_register_sidebar_widget('mgm_sidebar_widget_status-1', $name, 'mgm_sidebar_widget_status', $widget_ops, array('number' => -1));
        wp_register_widget_control('mgm_sidebar_widget_status-1', $name, 'mgm_sidebar_widget_status_admin', $control_ops, array('number' => -1));
    }
}
function mgm_parse_query()
{
    global $wpdb;
    // pre process hook for parse query
    do_action('mgm_parse_query_pre_process');
    //check file uploads:
    if ($file_upload = mgm_request_var('file_upload', '', true)) {
        // option
        switch ($file_upload) {
            case 'image':
                mgm_photo_file_upload();
                break;
        }
        // no process further
        exit;
    }
    // payment process --------------------
    // default
    $process_payments = false;
    // check
    foreach (mgm_get_payment_page_query_vars() as $query_var) {
        // set if
        if ($isset_query_var = mgm_get_query_var($query_var)) {
            // process
            $process_payments = true;
            break;
        }
    }
    // If buddy press registration page is used. issue #1085
    if (!$process_payments) {
        $process_payments = mgm_is_bp_registration();
    }
    // check
    if ($process_payments) {
        // payment html
        mgm_get_transaction_page_html(false);
        // exit
        exit;
    }
    // download flag // wp-ecommerce also uses download as slug, check
    if (!($download_slug = mgm_get_class('system')->get_setting('download_slug'))) {
        $download_slug = 'download';
    }
    // download call
    if ($isset_download_slug = mgm_get_query_var($download_slug)) {
        // get method
        $code = mgm_request_var('code', '', true);
        // check
        mgm_download_file($code);
        // exit
        exit;
    }
}