Пример #1
0
function delete_account()
{
    $emember_auth = Emember_Auth::getInstance();
    $emember_config = Emember_Config::getInstance();
    if (!$emember_auth->isLoggedIn()) {
        return;
    }
    $f = $emember_config->getValue('eMember_allow_account_removal');
    if ($f) {
        $f = $emember_config->getValue('eMember_allow_wp_account_removal');
        if ($f) {
            $wp_user_id = username_exists($emember_auth->getUserInfo('user_name'));
            $ud = get_userdata($wp_user_id);
            if (isset($ud->wp_capabilities['administrator']) || $ud->wp_user_level == 10) {
                if ($_GET['confirm'] != 2) {
                    $u = get_bloginfo('wpurl');
                    $_GET['confirm'] = 2;
                    $u .= '?' . http_build_query($_GET);
                    $warning = "<html><body><div id='message' style=\"color:red;\" ><p>You are about to delete an account that has admin privilege.\n                  If you are using WordPress user integration then this will delete the corresponding user\n                  account from WordPress and you may not be able to log in as admin with this account.\n                  Continue? <a href='" . $u . "'>yes</a>/<a href='javascript:void(0);' onclick='top.document.location=\"" . get_bloginfo('wpurl') . "\";' >no</a></p></div></body></html>";
                    echo $warning;
                    exit;
                }
            }
            wp_clear_auth_cookie();
            if ($wp_user_id) {
                include_once ABSPATH . 'wp-admin/includes/user.php';
                wp_delete_user($wp_user_id, 1);
                //assigns all related to this user to admin.
            }
        }
        $ret = dbAccess::delete(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id=' . $emember_auth->getUserInfo('member_id'));
        $ret = dbAccess::delete(WP_EMEMBER_MEMBERS_META_TABLE, 'user_id=' . $emember_auth->getUserInfo('member_id'));
        $emember_auth->logout();
        wp_emember_redirect_to_url(get_bloginfo('wpurl'));
        exit;
    }
}
Пример #2
0
function manage_access_levels()
{
    global $wpdb;
    if (isset($_POST['add_new'])) {
        $alias = esc_sql(stripslashes($_POST['wpm_levels']['new_level']['name']));
        if (empty($alias)) {
            echo '<div id="message" style="color:red;" class="updated fade"><p>Level Name Is Required.</p></div>';
            return;
        }
        $exists = $wpdb->get_col("SELECT id from " . WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE . " WHERE alias = '" . $alias . "'");
        if (count($exists) > 0) {
            echo '<div id="message" style="color:red;" class="updated fade"><p>Membership level name already used. Please use a different name.</p></div>';
            return;
        }
        $role = $_POST['wpm_levels']['new_level']['role'];
        $login_redirect = esc_sql($_POST['wpm_levels']['new_level']['loginredirect']);
        $campaign_name = esc_sql(stripslashes($_POST['wpm_levels']['new_level']['campaign_name']));
        if (isset($_POST['wpm_levels']['new_level']['noexpire']) && $_POST['wpm_levels']['new_level']['noexpire'] == 'noexpire') {
            $subscription_period = 0;
            $subscription_unit = null;
        } else {
            if (isset($_POST['wpm_levels']['new_level']['noexpire']) && $_POST['wpm_levels']['new_level']['noexpire'] == 'fixed_date') {
                $subscription_period = 0;
                $subscription_unit = $_POST['wpm_levels']['new_level']['expire_date'];
            } else {
                $subscription_period = esc_sql($_POST['wpm_levels']['new_level']['expire']);
                $subscription_unit = esc_sql($_POST['wpm_levels']['new_level']['calendar']);
            }
        }
        $permissions = 0;
        $permissions += isset($_POST['wpm_levels']['new_level']['allcustomposts']) ? 32 : 0;
        $permissions += isset($_POST['wpm_levels']['new_level']['allattachments']) ? 16 : 0;
        $permissions += isset($_POST['wpm_levels']['new_level']['allpages']) ? 8 : 0;
        $permissions += isset($_POST['wpm_levels']['new_level']['allposts']) ? 4 : 0;
        $permissions += isset($_POST['wpm_levels']['new_level']['allcomments']) ? 2 : 0;
        $permissions += isset($_POST['wpm_levels']['new_level']['allcategories']) ? 1 : 0;
        $fields['role'] = $role;
        $fields['alias'] = $alias;
        $fields['permissions'] = $permissions;
        $fields['loginredirect_page'] = trim($login_redirect);
        $fields['subscription_period'] = $subscription_period;
        $fields['subscription_unit'] = $subscription_unit;
        $fields['campaign_name '] = $campaign_name;
        $ret = dbAccess::insert(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, $fields);
        if ($ret === false) {
            echo '<div id="message" style="color:red;" class="updated fade"><p>Membership Level &quot;' . $_POST['wpm_levels']['new_level']['name'] . '&quot; couldn\'t be created due to error.</p></div>';
        } else {
            echo '<div id="message" class="updated fade"><p>Membership Level &quot;' . $_POST['wpm_levels']['new_level']['name'] . '&quot; created.</p></div>';
            do_action('eMember_new_membership_level_added', $_POST);
        }
    } else {
        if (isset($_POST['update_info'])) {
            foreach ($_POST['wpm_levels'] as $id => $wp_level) {
                $alias = esc_sql(stripslashes($wp_level['name']));
                $role = $wp_level['role'];
                $login_redirect = esc_sql($wp_level['loginredirect']);
                $campaign_name = esc_sql(stripslashes($wp_level['campaign_name']));
                if (isset($wp_level['noexpire']) && $wp_level['noexpire'] == 'noexpire') {
                    $subscription_period = 0;
                    $subscription_unit = null;
                } else {
                    if (isset($wp_level['noexpire']) && $wp_level['noexpire'] == 'fixed_date') {
                        $subscription_period = 0;
                        $subscription_unit = $wp_level['expire_date'];
                    } else {
                        if (isset($wp_level['noexpire']) && $wp_level['noexpire'] == 'interval') {
                            $subscription_period = esc_sql($wp_level['expire']);
                            $subscription_unit = esc_sql($wp_level['calendar']);
                        }
                    }
                }
                $permissions = 0;
                $permissions += isset($wp_level['allcustomposts']) ? 32 : 0;
                $permissions += isset($wp_level['allattachments']) ? 16 : 0;
                $permissions += isset($wp_level['allpages']) ? 8 : 0;
                $permissions += isset($wp_level['allposts']) ? 4 : 0;
                $permissions += isset($wp_level['allcomments']) ? 2 : 0;
                $permissions += isset($wp_level['allcategories']) ? 1 : 0;
                $fields['role'] = $role;
                $fields['alias'] = $alias;
                $fields['permissions'] = $permissions;
                $fields['loginredirect_page'] = trim($login_redirect);
                $fields['subscription_period'] = $subscription_period;
                $fields['subscription_unit'] = $subscription_unit;
                $fields['campaign_name'] = $campaign_name;
                /**
                 * @todo update role based on flags.
                 * */
                $ret = dbAccess::update(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id = ' . $wp_level['id'], $fields);
                if ($ret === false) {
                    echo '<div id="message" style="color:red;" class="updated fade"><p>Membership Level Update Failed..</p></div>';
                } else {
                    echo '<div id="message" class="updated fade"><p>Membership Level Updated.</p></div>';
                    do_action('eMember_membership_level_updated', $_POST);
                }
            }
        } else {
            if (isset($_GET['delete'])) {
                $ret = dbAccess::delete(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id=' . $_GET['delete']);
                if ($ret === false) {
                    echo '<div id="message" style="color:red;" class="updated fade"><p>Membership Level Couldn\'t be deleted due to error.</p></div>';
                } else {
                    if ($ret === 0) {
                        echo '<div id="message" style="color:red;" class="updated fade"><p>Nothing to delete.</p></div>';
                    } else {
                        echo '<div id="message" class="updated fade"><p>Membership Level Deleted.</p></div>';
                        do_action('eMember_membership_level_deleted', $_POST);
                    }
                }
            }
        }
    }
    $all_levels = dbAccess::findAll(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id != 1 ', ' id DESC ');
    include_once 'views/manage_access_levels_view.php';
}