function wp_eMember_scheduled_membership_upgrade()
{
    global $wpdb;
    $emember_config = Emember_Config::getInstance();
    $wpememmeta = new WPEmemberMeta();
    $membership_tbl = $wpememmeta->get_table('membership_level');
    $members_tbl = $wpememmeta->get_table('member');
    $email_list = array();
    $emails_for_followup_notification = array();
    $query_start = 0;
    $query_limit = 500;
    $iterations = 0;
    $membership_levels = Emember_Level_Collection::get_instance();
    while (1) {
        $query = 'SELECT member_id,membership_level,email,subscription_starts,account_state, ' . 'more_membership_levels, expiry_1st, expiry_2nd FROM ' . $members_tbl . ' WHERE account_state="active"  LIMIT ' . $query_start . ', ' . $query_limit;
        $members = $wpdb->get_results($query, OBJECT);
        if (count($members) < 1) {
            break;
        }
        foreach ($members as $member) {
            if (empty($member->subscription_starts)) {
                continue;
            }
            $should_update_db = false;
            $level_info = array();
            $my_level = $membership_levels->get_levels($member->membership_level);
            $options = unserialize($my_level->get('options'));
            $current_level = $member->membership_level;
            $more_levels = $member->more_membership_levels;
            $more_levels = is_array($more_levels) ? array_filter($more_levels) : $more_levels;
            $sec_levels = explode(',', $more_levels);
            $level_info['membership_level'] = $current_level;
            $level_info['account_state'] = $member->account_state;
            //Initialize the account state with the current data
            $level_data_modified = false;
            if (isset($options['promoted_level_id']) && !empty($options['promoted_level_id']) && $options['promoted_level_id'] != -1) {
                $current_subscription_starts = strtotime($member->subscription_starts);
                $current_time = time();
                while (1) {
                    if ($current_level === $options['promoted_level_id']) {
                        break;
                    }
                    $promoted_after = trim($options['days_after']);
                    if (empty($promoted_after)) {
                        break;
                    }
                    $d = $promoted_after == 1 ? ' day' : ' days';
                    $expires = strtotime(" + " . abs($promoted_after) . $d, $current_subscription_starts);
                    if ($expires > $current_time) {
                        break;
                    }
                    if (!isset($options['promoted_level_id']) || empty($options['promoted_level_id']) || $options['promoted_level_id'] == -1) {
                        break;
                    }
                    $sec_levels[] = $current_level;
                    $current_level = $options['promoted_level_id'];
                    $my_level = $membership_levels->get_levels($current_level);
                    //
                    $options = unserialize($my_level->get('options'));
                }
                if ($current_level != -1 && !empty($current_level) && $member->membership_level != $current_level) {
                    $level_info['membership_level'] = $current_level;
                    $level_data_modified = true;
                    if ($emember_config->getValue('eMember_enable_secondary_membership')) {
                        $level_info['more_membership_levels'] = array_unique($sec_levels);
                    }
                }
            }
            if (wp_emember_is_subscription_expired($member, $my_level)) {
                $level_info['account_state'] = 'expired';
                $level_data_modified = true;
                $sec = $emember_config->getValue('eMember_enable_secondary_membership');
                $migrate = $emember_config->getValue('eMember_secondary_membership_migrate');
                if ($sec && $migrate) {
                    foreach ($sec_levels as $key => $level) {
                        if (empty($level)) {
                            continue;
                        }
                        if (wp_emember_is_subscription_expired($member, $membership_levels->get_levels($level))) {
                            continue;
                        }
                        $sec_levels[$key] = $level_info['membership_level'];
                        $level_info['membership_level'] = $level;
                        $level_info['account_state'] = 'active';
                        $level_info['more_membership_levels'] = array_unique($sec_levels);
                        break;
                    }
                }
            }
            /*** notification after x day of account expiry ***/
            if (isset($level_info['account_state']) && $level_info['account_state'] == 'expired') {
                $is_auto_email = $emember_config->getValue('eMember_email_notification');
                $notification_interval = $emember_config->getValue('eMember_after_expiry_num_days');
                //$is_recurring = $emember_config->getValue('eMember_after_expiry_num_days_recurring');
                if (!empty($is_auto_email) && !empty($notification_interval)) {
                    $current_mem_level = $membership_levels->get_levels($level_info['membership_level']);
                    $days_elapsed = wp_emember_num_days_since_expired($current_mem_level->get('subscription_period'), $current_mem_level->get('subscription_unit'), $member->get('subscription_starts'));
                    if ($days_elapsed == $notification_interval) {
                        $emails_for_followup_notification[] = $member->email;
                    }
                }
            }
            /*** Auto upgrade ***/
            if ($level_data_modified) {
                eMember_log_cronjob_debug('Auto upgrading the member account with member ID: ' . $member->member_id . ' Level: ' . $level_info['membership_level'], true);
                eMember_log_cronjob_debug('Users account state: ' . $level_info['account_state'], true);
                $email_list[] = $member->email;
                if (isset($level_info['more_membership_levels'])) {
                    $level_info['more_membership_levels'] = implode(',', $level_info['more_membership_levels']);
                }
                if (!empty($level_info)) {
                    dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id=' . $member->member_id, $level_info);
                }
                do_action('emember_membership_changed', array('member_id' => $member->member_id, 'from_level' => $member->membership_level, 'to_level' => $level_info['membership_level']));
            }
        }
        $query_start = $query_limit * ++$iterations + 1;
    }
    //Handle auto upgrade notification if needed
    if ($emember_config->getValue('eMember_enable_autoupgrade_notification')) {
        eMember_log_cronjob_debug('Using auto upgrade notification email option.. need to check the email list.', true);
        if (!empty($email_list)) {
            $subject = $emember_config->getValue('eMember_autoupgrade_email_subject');
            eMember_log_cronjob_debug('Sending auto upgrade notification email with subject: ' . $subject, true);
            $body = $emember_config->getValue('eMember_autoupgrade_email_body');
            $headers = 'From: ' . $emember_config->getValue('eMember_autoupgrade_senders_email_address') . "\r\n";
            $headers .= 'bcc: ' . implode(',', $email_list) . "\r\n";
            eMember_log_cronjob_debug($headers, true);
            wp_mail(array(), $subject, $body, $headers);
            eMember_log_cronjob_debug('Auto upgrade notification email sent.', true);
        }
    }
    // Handle notification email after X days if needed
    if (!empty($emails_for_followup_notification)) {
        $subject = $emember_config->getValue('eMember_after_expiry_email_subject_followup');
        eMember_log_cronjob_debug('Sending expiry notification email after X days with subject: ' . $subject, true);
        $body = $emember_config->getValue('eMember_after_expiry_email_body_followup');
        $headers = 'From: ' . $emember_config->getValue('eMember_after_expiry_senders_email_address_followup') . "\r\n";
        $headers .= 'bcc: ' . implode(',', $emails_for_followup_notification) . "\r\n";
        eMember_log_cronjob_debug($headers, true);
        wp_mail(array(), $subject, $body, $headers);
        eMember_log_cronjob_debug('Expiry notification email sent.', true);
    }
    //mail
}
Ejemplo n.º 2
0
function wp_eMember_renew_membership_for_free_handler($atts)
{
    extract(shortcode_atts(array('level' => ''), $atts));
    //TODO - If level parameter is not empty then also offer to upgrade to this level?
    $auth = Emember_Auth::getInstance();
    $user_id = $auth->getUserInfo('member_id');
    if (!empty($user_id)) {
        $output = "";
        $output .= '<div class="free_eMember_renewal_form">';
        if (isset($_POST['eMember_free_renewal'])) {
            $member_id = $_POST['eMember_free_renewal'];
            $curr_date = date("Y-m-d");
            dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id=' . $member_id, array('subscription_starts' => $curr_date, 'account_state' => 'active'));
            $output .= "Membership Renewed!";
        } else {
            $output .= '<form name="free_eMember_renewal" method="post" action="">';
            $output .= '<input type="hidden" name="eMember_free_renewal" value="' . $user_id . '" />';
            $output .= '<input type="submit" name="eMember_free_renew_submit" value="Renew" />';
            $output .= '</form>';
        }
        $output .= '</div>';
        return $output;
    } else {
        return "You must be logged in to renew a membership!";
    }
}
function emember_admin_functions_users_menu()
{
    global $wpdb;
    //$emember_config = Emember_Config::getInstance();
    if (isset($_POST['emember_bulk_user_subs_start_date_change_process'])) {
        $errorMsg = "";
        $level_id = $_POST["emember_bulk_user_subs_start_date_change_level"];
        $new_date = $_POST['emember_bulk_user_subs_start_date_change_date'];
        if ($level_id == 'please_select') {
            $errorMsg = 'Error! Please select a membership level first.';
        }
        if (empty($errorMsg)) {
            //No validation errors so go ahead
            $query = "SELECT * FROM " . WP_EMEMBER_MEMBERS_TABLE_NAME . " WHERE membership_level='{$level_id}'";
            $member_records = $wpdb->get_results($query);
            if ($member_records) {
                foreach ($member_records as $row) {
                    $member_id = $row->member_id;
                    $fields = array();
                    $fields['subscription_starts'] = $new_date;
                    $ret = dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id = ' . $member_id, $fields);
                    if ($ret === false) {
                        $errorMsg = 'Subscription start date change failed.';
                    }
                }
            }
        }
        $message = "";
        if (!empty($errorMsg)) {
            $message = $errorMsg;
        } else {
            $message = 'Subscription start date change operation successfully completed.';
        }
        echo '<div id="message" class="updated fade"><p><strong>';
        echo $message;
        echo '</strong></p></div>';
    }
    if (isset($_POST['emember_bulk_user_change_level_process'])) {
        $errorMsg = "";
        $from_level_id = $_POST["emember_bulk_user_change_level_from"];
        $to_level_id = $_POST['emember_bulk_user_change_level_to'];
        if ($from_level_id == 'please_select' || $to_level_id == 'please_select') {
            $errorMsg = 'Error! Please select a membership level first.';
        }
        if (empty($errorMsg)) {
            //No validation errors so go ahead
            $query = "SELECT * FROM " . WP_EMEMBER_MEMBERS_TABLE_NAME . " WHERE membership_level='{$from_level_id}'";
            $member_records = $wpdb->get_results($query);
            if ($member_records) {
                foreach ($member_records as $row) {
                    $member_id = $row->member_id;
                    emember_update_membership_level($member_id, $to_level_id);
                }
            }
        }
        $message = "";
        if (!empty($errorMsg)) {
            $message = $errorMsg;
        } else {
            $message = 'Membership level change operation successfully completed.';
        }
        echo '<div id="message" class="updated fade"><p><strong>';
        echo $message;
        echo '</strong></p></div>';
    }
    ?>

    <div class="postbox">
        <h3><label for="title">Bulk Update Subscription Start Date of Members</label></h3>
        <div class="inside">

            <p>The subscription start date of a member is set to the day he/she registers. You can manually set a specific subscription start date of all members who belong to a particular level using the following option.</p>
            <form method="post" action="<?php 
    echo $_SERVER["REQUEST_URI"];
    ?>
">

                <table width="100%" border="0" cellspacing="0" cellpadding="6">
                    <tr valign="top">
                        <td width="25%" align="left">
                            <strong>Membership Level: </strong>
                        </td><td align="left">
                            <select name="emember_bulk_user_subs_start_date_change_level">
                                <option value="please_select">Select Level</option>
                                <?php 
    $all_levels = dbAccess::findAll(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id != 1 ', ' id DESC ');
    foreach ($all_levels as $level) {
        ?>
                                    <option value="<?php 
        echo $level->id;
        ?>
"><?php 
        echo $level->alias;
        ?>
</option>
                                <?php 
    }
    ?>
                            </select>
                            <br /><i>Select the Membership level (the subscription start date of all members who are in this level will be updated).</i><br /><br />
                        </td></tr>

                    <tr valign="top"><td width="25%" align="left">
                            <strong>Subscription Start Date: </strong>
                        </td><td align="left">
                            <input name="emember_bulk_user_subs_start_date_change_date" id="emember_bulk_user_subs_start_date_change_date" type="text" size="20" value="<?php 
    echo date("Y-m-d");
    ?>
" />
                            <br /><i>Specify the subscription start date.</i><br /><br />
                        </td></tr>

                    <tr valign="top"><td width="25%" align="left">
                            <input type="submit" class="button" name="emember_bulk_user_subs_start_date_change_process" value="Bulk Change Subscription Start Date &raquo;" />
                        </td><td align="left"></td>
                    </tr>

                </table>
            </form>
        </div></div>

    <div class="postbox">
        <h3><label for="title">Bulk Update Membership Level of Members</label></h3>
        <div class="inside">

            <p>You can manually change the membership level of any member by editing the record from the members menu. You can use the following option to bulk update the membership level of users who belong to the level you select below.</p>
            <form method="post" action="<?php 
    echo $_SERVER["REQUEST_URI"];
    ?>
">

                <table width="100%" border="0" cellspacing="0" cellpadding="6">
                    <tr valign="top">
                        <td width="25%" align="left">
                            <strong>Membership Level: </strong>
                        </td><td align="left">
                            <select name="emember_bulk_user_change_level_from">
                                <option value="please_select">Select Current Level</option>
                                <?php 
    $all_levels = dbAccess::findAll(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id != 1 ', ' id DESC ');
    foreach ($all_levels as $level) {
        ?>
                                    <option value="<?php 
        echo $level->id;
        ?>
"><?php 
        echo $level->alias;
        ?>
</option>
                                <?php 
    }
    ?>
                            </select>
                            <br /><i>Select the current membership level (the membership level of all members who are in this level will be updated).</i><br /><br />
                        </td></tr>

                    <tr valign="top"><td width="25%" align="left">
                            <strong>Level to Change to: </strong>
                        </td><td align="left">
                            <select name="emember_bulk_user_change_level_to">
                                <option value="please_select">Select Target Level</option>
                                <?php 
    $all_levels = dbAccess::findAll(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id != 1 ', ' id DESC ');
    foreach ($all_levels as $level) {
        ?>
                                    <option value="<?php 
        echo $level->id;
        ?>
"><?php 
        echo $level->alias;
        ?>
</option>
                                <?php 
    }
    ?>
                            </select>

                            <br /><i>Select the new membership level</i><br /><br />
                        </td></tr>

                    <tr valign="top"><td width="25%" align="left">
                            <input type="submit" class="button" name="emember_bulk_user_change_level_process" value="Bulk Change Membership Level &raquo;" />
                        </td><td align="left"></td>
                    </tr>

                </table>
            </form>
        </div></div>

    <script type="text/javascript">
        jQuery(document).ready(function($) {
            $("#emember_bulk_user_subs_start_date_change_date").dateinput({'format': 'yyyy-mm-dd', selectors: true, yearRange: [-100, 100]});
        });
    </script>

    <?php 
}
Ejemplo n.º 4
0
function emember_update_membership_level($member_id, $target_membership_level)
{
    $emember_auth = Emember_Auth::getInstance();
    $emember_config = Emember_Config::getInstance();
    global $wpdb;
    $resultset = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . esc_sql($member_id));
    $target_level_info = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id=' . esc_sql($target_membership_level));
    if ($resultset->membership_level != $target_membership_level) {
        if ($emember_config->getValue('eMember_enable_secondary_membership')) {
            $additional_levels = $resultset->more_membership_levels;
            $active_membership_level = $resultset->membership_level;
            $additional_levels = array_filter(explode(',', $additional_levels));
            $additional_levels[] = $active_membership_level;
            $additional_levels = array_unique($additional_levels);
            $additional_levels = implode(',', $additional_levels);
            $level_info['membership_level'] = trim($target_membership_level);
            $level_info['more_membership_levels'] = $additional_levels;
        } else {
            $level_info['membership_level'] = trim($target_membership_level);
        }
        dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id=' . $member_id, $level_info);
    }
    emember_update_wp_role_for_member($resultset->user_name, $target_level_info->role);
}
Ejemplo n.º 5
0
 public function __construct($userInfo)
 {
     $level_info = array();
     $current_level = $userInfo->membership_level;
     $more_levels = $userInfo->more_membership_levels;
     $more_levels = is_array($more_levels) ? array_filter($more_levels) : $more_levels;
     $userInfo->more_membership_levels = explode(',', $more_levels);
     $this->primary_level = Emember_Permission::get_instance($userInfo->membership_level);
     $this->secondary_levels = array();
     $config = Emember_Config::getInstance();
     $options = $this->primary_level->get_options();
     if (isset($options['promoted_level_id']) && $options['promoted_level_id'] != -1) {
         $current_subscription_starts = strtotime($userInfo->subscription_starts);
         $sec_levels = $userInfo->more_membership_levels;
         $level_before = $userInfo->membership_level;
         $current_time = time();
         while (1) {
             if ($current_level === $options['promoted_level_id']) {
                 break;
             }
             $promoted_after = trim($options['days_after']);
             if (empty($promoted_after)) {
                 break;
             }
             $d = $promoted_after == 1 ? ' day' : ' days';
             $expires = strtotime(" + " . abs($promoted_after) . $d, $current_subscription_starts);
             if ($expires > $current_time) {
                 break;
             }
             if (!isset($options['promoted_level_id']) || $options['promoted_level_id'] == -1) {
                 break;
             }
             //$current_subscription_starts = $expires;
             $sec_levels[] = $current_level;
             $current_level = $options['promoted_level_id'];
             $this->primary_level = Emember_Permission::get_instance($current_level);
             $options = $this->primary_level->get_options();
         }
         if ($current_level != -1) {
             $level_info['membership_level'] = $current_level;
             //$level_info ['current_subscription_starts'] = date('y-m-d', $current_subscription_starts);
             if ($config->getValue('eMember_enable_secondary_membership')) {
                 $sec_levels = array_unique($sec_levels);
                 $level_info['more_membership_levels'] = implode(',', $sec_levels);
                 $userInfo->more_membership_levels = $sec_levels;
             }
             $userInfo->membership_level = $current_level;
             dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id=' . $userInfo->member_id, $level_info);
             if ($level_info['membership_level'] != $level_before) {
                 do_action('emember_membership_changed', array('member_id' => $userInfo->member_id, 'from_level' => $level_before, 'to_level' => $level_info['membership_level']));
             }
         }
     }
     if ($config->getValue('eMember_enable_secondary_membership')) {
         if (!empty($userInfo->more_membership_levels)) {
             foreach ($userInfo->more_membership_levels as $l) {
                 if (empty($l)) {
                     continue;
                 }
                 $this->secondary_levels[] = Emember_Permission::get_instance($l);
             }
         }
     }
     $my_subcript_period = $this->primary_level->get('subscription_period');
     $my_subscript_unit = $this->primary_level->get('subscription_unit');
     if ($my_subcript_period == 0 && empty($my_subscript_unit)) {
         $type = 'noexpire';
     } else {
         if ($my_subcript_period == 0 && !empty($my_subscript_unit)) {
             $type = 'fixeddate';
             $my_subcript_period = $my_subscript_unit;
         } else {
             $type = 'interval';
             switch ($my_subscript_unit) {
                 case 'Days':
                     break;
                 case 'Weeks':
                     $my_subcript_period = $my_subcript_period * 7;
                     break;
                 case 'Months':
                     $my_subcript_period = $my_subcript_period * 30;
                     break;
                 case 'Years':
                     $my_subcript_period = $my_subcript_period * 365;
                     break;
             }
         }
     }
     $this->subscription_duration = array('duration' => $my_subcript_period, 'type' => $type);
 }
Ejemplo n.º 6
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';
}
Ejemplo n.º 7
0
function wp_eMember_add_memebers()
{
    $emember_config = Emember_Config::getInstance();
    global $wpdb;
    $d = WP_EMEMBER_URL . '/images/default_image.gif';
    //If being edited, grab current info
    if (isset($_GET['editrecord']) && $_GET['editrecord'] != '') {
        $theid = $_GET['editrecord'];
        $editingrecord = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . $theid);
        $edit_custom_fields = dbAccess::find(WP_EMEMBER_MEMBERS_META_TABLE, ' user_id=' . $theid . ' AND meta_key="custom_field"');
        $edit_custom_fields = isset($edit_custom_fields->meta_value) ? unserialize($edit_custom_fields->meta_value) : array();
        $editingrecord->more_membership_levels = explode(',', $editingrecord->more_membership_levels);
        $editingrecord = (array) $editingrecord;
        $image_url = null;
        $image_path = null;
        $upload_dir = wp_upload_dir();
        $upload_url = $upload_dir['baseurl'] . '/emember/';
        $upload_path = $upload_dir['basedir'] . '/emember/';
        $use_gravatar = $emember_config->getValue('eMember_use_gravatar');
        if ($use_gravatar) {
            $image_url = WP_EMEMBER_GRAVATAR_URL . "/" . md5(strtolower($editingrecord['email'])) . "?d=" . urlencode($d) . "&s=" . 96;
        } else {
            if (!empty($editingrecord['profile_image'])) {
                $image_url = $upload_url . $editingrecord['profile_image'];
                $image_path = $theid;
            } else {
                $image_path = "";
                $image_url = WP_EMEMBER_URL . '/images/default_image.gif';
            }
        }
    }
    if (isset($_POST['Submit'])) {
        global $wpdb;
        include_once ABSPATH . WPINC . '/class-phpass.php';
        $wp_hasher = new PasswordHash(8, TRUE);
        $post_editedrecord = esc_sql(isset($_POST['editedrecord']) ? $_POST['editedrecord'] : "");
        $fields = array();
        $fields['flags'] = 0;
        if ($emember_config->getValue('eMember_enable_secondary_membership')) {
            $fields['more_membership_levels'] = implode(',', empty($_POST['more_membership_levels']) ? array() : $_POST['more_membership_levels']);
        }
        $fields["user_name"] = $_POST["user_name"];
        $fields["first_name"] = $_POST["first_name"];
        $fields["last_name"] = $_POST["last_name"];
        $fields["company_name"] = $_POST["company_name"];
        $fields["member_since"] = $_POST["member_since"];
        $fields["membership_level"] = $_POST["membership_level"];
        $fields["account_state"] = $_POST["account_state"];
        $fields["email"] = $_POST["email"];
        $fields["phone"] = $_POST["phone"];
        $fields["address_street"] = $_POST["address_street"];
        $fields["address_city"] = $_POST["address_city"];
        $fields["address_state"] = $_POST["address_state"];
        $fields["address_zipcode"] = $_POST["address_zipcode"];
        $fields["home_page"] = $_POST["home_page"];
        $fields["country"] = $_POST["country"];
        $fields["gender"] = $_POST["gender"];
        $fields["referrer"] = $_POST["referrer"];
        $fields["subscription_starts"] = $_POST["subscription_starts"];
        $fields['last_accessed_from_ip'] = get_real_ip_addr();
        $fields["notes"] = $_POST['notes'];
        $wp_user_info = array();
        $wp_user_info['user_nicename'] = implode('-', explode(' ', $_POST['user_name']));
        $wp_user_info['display_name'] = $_POST['user_name'];
        $wp_user_info['user_email'] = $_POST['email'];
        $wp_user_info['nickname'] = $_POST['user_name'];
        $wp_user_info['first_name'] = $_POST['first_name'];
        $wp_user_info['last_name'] = $_POST['last_name'];
        if ($post_editedrecord == '') {
            $fields['user_name'] = esc_sql($_POST['user_name']);
            $wp_user_info['user_login'] = $_POST['user_name'];
            // Add the record to the DB
            include_once 'emember_validator.php';
            $validator = new Emember_Validator();
            $validator->add(array('value' => $fields['user_name'], 'label' => 'User Name', 'rules' => array('user_required', 'user_name', 'user_unavail', 'user_minlength')));
            $validator->add(array('value' => $_POST['password'], 'repeat' => $_POST['retype_password'], 'label' => 'Password', 'rules' => array('pass_required', 'pass_mismatch')));
            $validator->add(array('value' => $fields['email'], 'label' => 'Email', 'rules' => array('email_required', 'email_unavail')));
            $messages = $validator->validate();
            if (count($messages) > 0) {
                echo '<span class="emember_error">' . implode('<br/>', $messages) . '</span>';
                $editingrecord = $_POST;
            } else {
                $password = $wp_hasher->HashPassword($_POST['password']);
                $fields['password'] = esc_sql($password);
                $ret = dbAccess::insert(WP_EMEMBER_MEMBERS_TABLE_NAME, $fields);
                $lastid = $wpdb->insert_id;
                $should_create_wp_user = $emember_config->getValue('eMember_create_wp_user');
                if ($should_create_wp_user) {
                    $role_names = array(1 => 'Administrator', 2 => 'Editor', 3 => 'Author', 4 => 'Contributor', 5 => 'Subscriber');
                    $membership_level_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, " id='" . $fields['membership_level'] . "'");
                    $wp_user_info['role'] = $membership_level_resultset->role;
                    $wp_user_info['user_registered'] = date('Y-m-d H:i:s');
                    //$wp_user_id = wp_create_user($_POST['user_name'], $_POST['password'], $_POST['email']);
                    $wp_user_id = eMember_wp_create_user($_POST['user_name'], $_POST['password'], $_POST['email'], $wp_user_info);
                    //do_action( 'set_user_role', $wp_user_id, $membership_level_resultset->role );
                }
                ///custom field insert
                if (isset($_POST['emember_custom'])) {
                    $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $lastid . ',"custom_field",' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')');
                }
                if ($ret === false) {
                    $_SESSION['flash_message'] = '<div id="message" style = "color:red;" class="updated fade"><p>Couldn\'t create new member.</p></div>';
                } else {
                    if (isset($_POST['uploaded_profile_img'])) {
                        $upload_dir = wp_upload_dir();
                        $upload_path = $upload_dir['basedir'];
                        $upload_path .= '/emember/';
                        $ext = explode('.', $_POST['uploaded_profile_img']);
                        rename($upload_path . $_POST['uploaded_profile_img'], $upload_path . $lastid . '.' . $ext[1]);
                    }
                    $_SESSION['flash_message'] = '<div id="message" class="updated fade"><p>Member &quot;' . $fields['user_name'] . '&quot; created.</p></div>';
                    //Notify the newly created member if specified in the settings
                    if ($emember_config->getValue('eMember_email_notification_for_manual_member_add')) {
                        $login_link = $emember_config->getValue('login_page_url');
                        $member_email_address = $_POST['email'];
                        $subject_rego_complete = $emember_config->getValue('eMember_email_subject_rego_complete');
                        $body_rego_complete = $emember_config->getValue('eMember_email_body_rego_complete');
                        $from_address = $emember_config->getValue('senders_email_address');
                        $headers = 'From: ' . $from_address . "\r\n";
                        $curr_member_id = $lastid;
                        $additional_params = array('password' => $_POST['password'], 'login_link' => $login_link);
                        $email_body1 = emember_dynamically_replace_member_details_in_message($curr_member_id, $body_rego_complete, $additional_params);
                        wp_mail($member_email_address, $subject_rego_complete, $email_body1, $headers);
                    }
                    //Create the corresponding affliate account if specified in the settings
                    if ($emember_config->getValue('eMember_auto_affiliate_account')) {
                        eMember_handle_affiliate_signup($_POST['user_name'], $_POST['password'], $_POST['first_name'], $_POST['last_name'], $_POST['email'], '');
                    }
                    /*                         * * Signup the member to Autoresponder List (Autoresponder integration) ** */
                    eMember_log_debug("===> Performing autoresponder signup if needed (member was added via admin dashboard) <===", true);
                    $membership_level_id = $_POST["membership_level"];
                    $firstname = $_POST['first_name'];
                    $lastname = $_POST['last_name'];
                    $emailaddress = $_POST['email'];
                    eMember_level_specific_autoresponder_signup($membership_level_id, $firstname, $lastname, $emailaddress);
                    eMember_global_autoresponder_signup($firstname, $lastname, $emailaddress);
                    /*                         * * end of autoresponder integration ** */
                    echo '<script type="text/javascript">window.location = "admin.php?page=wp_eMember_manage";</script>';
                }
            }
        } else {
            if (isset($_POST['emember_custom'])) {
                $custom_fields = dbAccess::find(WP_EMEMBER_MEMBERS_META_TABLE, ' user_id=' . $post_editedrecord . ' AND meta_key=\'custom_field\'');
                if ($custom_fields) {
                    $wpdb->query('UPDATE ' . WP_EMEMBER_MEMBERS_META_TABLE . ' SET meta_value =' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\' WHERE meta_key = \'custom_field\' AND  user_id=' . $post_editedrecord);
                } else {
                    $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $post_editedrecord . ',"custom_field",' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')');
                }
            } else {
                $wpdb->query('DELETE FROM ' . WP_EMEMBER_MEMBERS_META_TABLE . '  WHERE meta_key = \'custom_field\' AND  user_id=' . $post_editedrecord);
            }
            $editingrecord = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . $post_editedrecord);
            // Update the member info
            $member_id = esc_sql($_POST['editedrecord']);
            $wp_user_id = username_exists($fields['user_name']);
            $wp_email_owner = email_exists($fields['email']);
            $emember_email_owner = emember_email_exists($fields['email']);
            if (empty($fields['user_name']) || $fields['user_name'] != $editingrecord->user_name) {
                echo '<div id="message" class="updated fade"><p>User Name Cannot Be Changed!</p></div>';
            } else {
                if (empty($fields['email'])) {
                    echo '<div id="message" class="updated fade"><p>Email Field is Empty!</p></div>';
                } else {
                    if ($wp_email_owner && $wp_user_id != $wp_email_owner || $emember_email_owner && $member_id != $emember_email_owner) {
                        echo '<div id="message" class="updated fade"><p>Email ID &quot;' . $fields['email'] . '&quot; is already registered to a user!</p></div>';
                    } else {
                        $update_possible = true;
                        if (!empty($_POST['password'])) {
                            if ($_POST['password'] === $_POST['retype_password']) {
                                $password = $wp_hasher->HashPassword($_POST['password']);
                                $fields['password'] = esc_sql($password);
                                $wp_user_info['user_pass'] = $_POST['password'];
                            } else {
                                $update_possible = false;
                                echo '<div id="message" class="updated fade"><p>Password does\'t match!</p></div>';
                            }
                        }
                        if ($update_possible) {
                            $ret = dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id = ' . $member_id, $fields);
                            if ($fields["membership_level"] != $editingrecord->membership_level) {
                                do_action('emember_membership_changed', array('member_id' => $editingrecord->member_id, 'from_level' => $editingrecord->membership_level, 'to_level' => $fields["membership_level"]));
                            }
                            if ($wp_user_id && !is_wp_error($wp_user_id)) {
                                $wp_user_info['ID'] = $wp_user_id;
                                wp_update_user($wp_user_info);
                                if (($editingrecord->flags & 1) != 1) {
                                    $cond = " id='" . $fields['membership_level'] . "'";
                                    $membership_level_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, $cond);
                                    update_wp_user_Role($wp_user_id, $membership_level_resultset->role);
                                    //do_action( 'set_user_role', $wp_user_id, $membership_level_resultset->role );
                                }
                            }
                            if ($ret === false) {
                                $_SESSION['flash_message'] = '<div id="message" class="updated fade"><p>' . __('Member', 'wp_eMember') . ' &quot;' . $fields['user_name'] . '&quot; ' . __('Update Failed.', 'wp_eMember') . '</p></div>';
                            } else {
                                $_SESSION['flash_message'] = '<div id="message" class="updated fade"><p>' . __('Member', 'wp_eMember') . ' &quot;' . $fields['user_name'] . '&quot; ' . __('updated.', 'wp_eMember') . '</p></div>';
                                if (isset($_POST['account_status_change'])) {
                                    $from_address = $emember_config->getValue('senders_email_address');
                                    $headers = 'From: ' . $from_address . "\r\n";
                                    $subject = $_POST['notificationmailhead'];
                                    $member_email_address = $_POST['email'];
                                    $login_link = $emember_config->getValue('login_page_url');
                                    $additional_params = array('password' => $_POST['password'], 'login_link' => $login_link);
                                    $curr_member_id = $post_editedrecord;
                                    $email_body = emember_dynamically_replace_member_details_in_message($curr_member_id, $_POST['notificationmailbody'], $additional_params);
                                    wp_mail($member_email_address, $subject, $email_body, $headers);
                                    $emember_config->setValue('eMember_status_change_email_body', $_POST['notificationmailbody']);
                                    $emember_config->setValue('eMember_status_change_email_subject', $_POST['notificationmailhead']);
                                    $emember_config->saveConfig();
                                }
                                echo '<script type="text/javascript">window.location = "admin.php?page=wp_eMember_manage";</script>';
                            }
                        }
                    }
                }
            }
            $editingrecord = (array) $editingrecord;
        }
    }
    $all_levels = dbAccess::findAll(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id != 1 ', ' id DESC ');
    include_once 'views/add_member_view.php';
}
Ejemplo n.º 8
0
        echo "Error!\n";
        echo "Email address entered is blocked.";
        eMember_log_debug("Blocked email address used. This request will fail.", false);
        exit;
    }
}
//Update the corresponding WP User object if needed
$resultset = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . $member_id);
$wp_user_id = username_exists($resultset->user_name);
if ($wp_user_id) {
    $wp_user_info = array();
    $wp_user_info['first_name'] = strip_tags(isset($_REQUEST['first_name']) ? $_REQUEST['first_name'] : "");
    $wp_user_info['last_name'] = strip_tags(isset($_REQUEST['last_name']) ? $_REQUEST['last_name'] : "");
    $wp_user_info['user_email'] = strip_tags(isset($_REQUEST['email']) ? $_REQUEST['email'] : "");
    $wp_user_info['ID'] = $wp_user_id;
    if (!empty($_REQUEST['password'])) {
        $wp_user_info['user_pass'] = $_REQUEST['password'];
    }
    wp_update_user($wp_user_info);
}
//Update the emember user profile with the provided data
if (count($fields) > 0) {
    $ret = dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id =' . $member_id, $fields);
}
//Update the membership level ID
if (!empty($membership_level_id)) {
    emember_update_membership_level($member_id, $membership_level_id);
}
eMember_log_debug("Member profile updated.", true);
echo "Success!\n";
echo "Member profile updated.\n";
Ejemplo n.º 9
0
function emember_update_profile_init()
{
    if (isset($_POST['eMember_update_profile'])) {
        $nonce = $_REQUEST['_wpnonce'];
        if (!wp_verify_nonce($nonce, 'emember-update-profile-nonce')) {
            eMember_log_debug("Profile update nonce check failed ", true);
            die("Security check failed on profile update");
        }
        global $wpdb;
        $emember_config = Emember_Config::getInstance();
        include_once ABSPATH . WPINC . '/class-phpass.php';
        $resultset = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . esc_sql($_POST['member_id']));
        $wp_user_id = username_exists($resultset->user_name);
        $updatable = true;
        if (isset($_POST['wp_emember_email'])) {
            $emmber_email_owner = emember_email_exists($_POST['wp_emember_email']);
            $wp_email_owner = email_exists($_POST['wp_emember_email']);
            if (!is_email($_POST['wp_emember_email'])) {
                $_POST['eMember_profile_update_result'] = EMEMBER_EMAIL_INVALID;
                $updatable = false;
            } else {
                if ($wp_email_owner && $wp_email_owner != $wp_user_id || $emmber_email_owner && $emmber_email_owner != $_POST['member_id']) {
                    $_POST['eMember_profile_update_result'] = '<span class="emember_error">' . EMEMBER_EMAIL_UNAVAIL . ' </span>';
                    $updatable = false;
                }
            }
        }
        if ($_POST['wp_emember_pwd'] != $_POST['wp_emember_pwd_r']) {
            $_POST['eMember_profile_update_result'] = '<span class="emember_error">' . EMEMBER_PASSWORD_MISMATCH . '</span>';
            $updatable = false;
        }
        if ($updatable) {
            $wp_hasher = new PasswordHash(8, TRUE);
            $fields = array();
            if (isset($_POST['wp_emember_title'])) {
                $fields['title'] = strip_tags($_POST['wp_emember_title']);
            }
            if (isset($_POST['wp_emember_firstname'])) {
                $fields['first_name'] = strip_tags($_POST['wp_emember_firstname']);
            }
            if (isset($_POST['wp_emember_lastname'])) {
                $fields['last_name'] = strip_tags($_POST['wp_emember_lastname']);
            }
            if (isset($_POST['wp_emember_email'])) {
                $fields['email'] = strip_tags($_POST['wp_emember_email']);
            }
            if (isset($_POST['wp_emember_phone'])) {
                $fields['phone'] = strip_tags($_POST['wp_emember_phone']);
            }
            if (isset($_POST['wp_emember_street'])) {
                $fields['address_street'] = strip_tags($_POST['wp_emember_street']);
            }
            if (isset($_POST['wp_emember_city'])) {
                $fields['address_city'] = strip_tags($_POST['wp_emember_city']);
            }
            if (isset($_POST['wp_emember_state'])) {
                $fields['address_state'] = strip_tags($_POST['wp_emember_state']);
            }
            if (isset($_POST['wp_emember_zipcode'])) {
                $fields['address_zipcode'] = strip_tags($_POST['wp_emember_zipcode']);
            }
            if (isset($_POST['wp_emember_country'])) {
                $fields['country'] = strip_tags($_POST['wp_emember_country']);
            }
            if (isset($_POST['wp_emember_gender'])) {
                $fields['gender'] = strip_tags($_POST['wp_emember_gender']);
            }
            if (isset($_POST['wp_emember_company_name'])) {
                $fields['company_name'] = strip_tags($_POST['wp_emember_company_name']);
            }
            if (!empty($_POST['wp_emember_pwd'])) {
                $password = $wp_hasher->HashPassword(strip_tags($_POST['wp_emember_pwd']));
                $fields['password'] = $password;
            }
            if ($wp_user_id) {
                $wp_user_info = array();
                $wp_user_info['first_name'] = strip_tags(isset($_POST['wp_emember_firstname']) ? $_POST['wp_emember_firstname'] : "");
                $wp_user_info['last_name'] = strip_tags(isset($_POST['wp_emember_lastname']) ? $_POST['wp_emember_lastname'] : "");
                $wp_user_info['user_email'] = strip_tags(isset($_POST['wp_emember_email']) ? $_POST['wp_emember_email'] : "");
                $wp_user_info['ID'] = $wp_user_id;
                if (!empty($_POST['wp_emember_pwd'])) {
                    $wp_user_info['user_pass'] = $_POST['wp_emember_pwd'];
                }
                wp_update_user($wp_user_info);
            }
            $_POST['member_id'] = strip_tags($_POST['member_id']);
            if (count($fields) > 0) {
                $ret = dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id =' . esc_sql($_POST['member_id']), $fields);
            }
            if (isset($_POST['emember_custom'])) {
                $custom_fields = dbAccess::find(WP_EMEMBER_MEMBERS_META_TABLE, ' user_id=' . esc_sql($_POST['member_id']) . ' AND meta_key=\'custom_field\'');
                if ($custom_fields) {
                    $ret = $wpdb->query('UPDATE ' . WP_EMEMBER_MEMBERS_META_TABLE . ' SET meta_value =' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\' WHERE meta_key = \'custom_field\' AND  user_id=' . $_POST['member_id']);
                } else {
                    $ret = $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $_POST['member_id'] . ',"custom_field",' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')');
                }
            } else {
                $ret = $wpdb->query('DELETE FROM ' . WP_EMEMBER_MEMBERS_META_TABLE . '  WHERE meta_key = \'custom_field\' AND  user_id=' . esc_sql($_POST['member_id']));
            }
            if ($ret === false) {
                $_POST['eMember_profile_update_result'] = 'Failed';
            } else {
                $edit_profile_page = $emember_config->getValue('eMember_profile_edit_page');
                $profile_updated_msg = '<div class="emember_profile_updated_msg">';
                $profile_updated_msg .= EMEMBER_PROFILE_UPDATED;
                if (!empty($edit_profile_page)) {
                    $profile_updated_msg .= ' <a href="' . $edit_profile_page . '">' . EMEMBER_EDIT_YOUR_PROFILE_AGAIN . '</a>';
                }
                $profile_updated_msg .= '</div>';
                $_POST['eMember_profile_update_result'] = $profile_updated_msg;
                do_action('eMember_profile_updated', $fields, $custom_fields);
                //Update the affiliate end if using the auto affiliate feature
                eMember_handle_affiliate_profile_update();
            }
        }
    }
}
Ejemplo n.º 10
0
function emember_process_reg_form()
{
    $emember_config = Emember_Config::getInstance();
    if (is_blocked_ip(get_real_ip_addr())) {
        $message = '<span class="emember_error">' . EMEMBER_IP_BLACKLISTED . ' </span>';
        $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $message));
        return;
    }
    if (!function_exists('recaptcha_check_answer')) {
        require_once WP_PLUGIN_DIR . '/' . WP_EMEMBER_FOLDER . '/recaptchalib.php';
    }
    $output = '';
    $eMember_id = strip_tags(isset($_GET["member_id"]) ? $_GET["member_id"] : "");
    $code = strip_tags(isset($_GET["code"]) ? $_GET["code"] : "");
    $recaptcha_error = null;
    $resp = null;
    global $wpdb;
    $is_reg_successfull = false;
    if (isset($_POST['eMember_Register'])) {
        $nonce = $_REQUEST['_wpnonce'];
        if (!wp_verify_nonce($nonce, 'emember-plain-registration-nonce')) {
            eMember_log_debug("Registration nonce check failed ", true);
            die("Security check failed on registration");
        }
        $_POST['wp_emember_email'] = strip_tags($_POST['wp_emember_email']);
        $_POST['wp_emember_user_name'] = strip_tags($_POST['wp_emember_user_name']);
        $_POST['wp_emember_pwd'] = strip_tags($_POST['wp_emember_pwd']);
        if ($emember_config->getValue('eMember_show_terms_conditions')) {
            if (!isset($_POST['emember_terms_conditions'])) {
                $output .= '<span class="emember_error">' . EMEMBER_TERMS_WARNING . '</span>';
                $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output));
                return;
            }
        }
        eMember_log_debug("Processing signup request of membership for: " . $_POST['wp_emember_email'], true);
        if (is_blocked_email($_POST['wp_emember_email'])) {
            $output .= '<span class="emember_error"> ' . EMEMBER_EMAIL_BLACKLISTED . ' </span>';
            $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output));
            return;
        }
        $enable_recaptcha = $emember_config->getValue('emember_enable_recaptcha');
        if ($enable_recaptcha) {
            $_POST["recaptcha_challenge_field"] = strip_tags($_POST["recaptcha_challenge_field"]);
            $_POST["recaptcha_response_field"] = strip_tags($_POST["recaptcha_response_field"]);
            if (isset($_POST["recaptcha_response_field"])) {
                $recaptcha_private_key = $emember_config->getValue('emember_recaptcha_private');
                $resp = recaptcha_check_answer($recaptcha_private_key, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
                if (!$resp->is_valid) {
                    $emember_config->set_stacked_message('emember_full_registration_captcha', $resp->error);
                    $output .= '<div class="emember_error">' . EMEMBER_CAPTCHA_VERIFICATION_FAILED . '</div>';
                    $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output));
                }
            } else {
                $output .= '<span class="emember_error">reCAPTCHA&trade; service encountered error. please Contact Admin. </span>';
                $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output));
            }
        }
        if (!$enable_recaptcha || $resp && $resp->is_valid) {
            eMember_log_debug("reCAPTCHA is valid... creating membership account: " . $_POST['wp_emember_email'], true);
            include_once ABSPATH . WPINC . '/class-phpass.php';
            $wp_hasher = new PasswordHash(8, TRUE);
            $password = $wp_hasher->HashPassword($_POST['wp_emember_pwd']);
            include_once 'emember_validator.php';
            $validator = new Emember_Validator();
            $validator->add(array('value' => $_POST['wp_emember_user_name'], 'label' => EMEMBER_USERNAME, 'rules' => array('user_required', 'user_minlength', 'user_name', 'user_unavail')));
            $validator->add(array('value' => $_POST['wp_emember_email'], 'label' => EMEMBER_EMAIL, 'rules' => array('email_required', 'email', 'email_unavail')));
            $validator->add(array('value' => $_POST['wp_emember_pwd'], 'label' => EMEMBER_PASSWORD, 'rules' => array('pass_required')));
            $messages = $validator->validate();
            $show_confirm_pass = $emember_config->getValue('eMember_show_confirm_pass_field');
            if ($show_confirm_pass) {
                if ($_POST['wp_emember_pwd'] != $_POST['wp_emember_pwd_re']) {
                    $messages[] = EMEMBER_PASSWORD . ':' . EMEMBER_PASSWORD_MISMATCH;
                }
            }
            $valid_captcha = apply_filters('emember_captcha_varify', true);
            // create new member account and send the registration completion email
            if (!$valid_captcha) {
                $output .= "<p class='emember_error'><strong>" . EMEMBER_CAPTCHA_FAILED . "</strong></p>";
                $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output));
            } else {
                if (count($messages) > 0) {
                    $output .= '<span class="emember_error">' . implode('<br/>', $messages) . '</span>';
                    $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output));
                } else {
                    $fields = array();
                    $custom_fields = array();
                    /* === Common registration fields value === */
                    if (isset($_COOKIE['ap_id'])) {
                        $fields['referrer'] = $_COOKIE['ap_id'];
                    } else {
                        $fields['referrer'] = '';
                    }
                    if (isset($_POST['emember_custom']) && is_array($_POST['emember_custom'])) {
                        $referrer_field_key = "Referrer";
                        if (array_key_exists($referrer_field_key, $_POST['emember_custom'])) {
                            $fields['referrer'] = strip_tags(trim($_POST['emember_custom'][$referrer_field_key]));
                        }
                    }
                    //if (!empty($_SESSION['eMember_id']) && !empty($_SESSION['reg_code']))
                    if (isset($_POST['eMember_id']) && isset($_POST['eMember_reg_code'])) {
                        //Update the membership data with the registration complete details (this path is exercised when the unique link is clicked from the email to do the registration complete action)
                        eMember_log_debug("Completing the registration for premium membership account. Member Email: " . $_POST['wp_emember_email'] . " eMember ID: " . $eMember_id, true);
                        $mresultset = $wpdb->get_row("SELECT reg_code,membership_level FROM " . WP_EMEMBER_MEMBERS_TABLE_NAME . " where member_id='{$eMember_id}'", ARRAY_A);
                        /*                     * ********************** */
                        $fields['user_name'] = $_POST['wp_emember_user_name'];
                        $fields['password'] = $password;
                        $fields['membership_level'] = $mresultset['membership_level'];
                        $fields['reg_code'] = '';
                        if (isset($_POST['wp_emember_title'])) {
                            $fields['title'] = strip_tags($_POST['wp_emember_title']);
                        }
                        if (isset($_POST['wp_emember_firstname'])) {
                            $fields['first_name'] = strip_tags($_POST['wp_emember_firstname']);
                        }
                        if (isset($_POST['wp_emember_lastname'])) {
                            $fields['last_name'] = strip_tags($_POST['wp_emember_lastname']);
                        }
                        if (isset($_POST['wp_emember_phone'])) {
                            $fields['phone'] = strip_tags($_POST['wp_emember_phone']);
                        }
                        if (isset($_POST['wp_emember_street'])) {
                            $fields['address_street'] = strip_tags($_POST['wp_emember_street']);
                        }
                        if (isset($_POST['wp_emember_city'])) {
                            $fields['address_city'] = strip_tags($_POST['wp_emember_city']);
                        }
                        if (isset($_POST['wp_emember_state'])) {
                            $fields['address_state'] = strip_tags($_POST['wp_emember_state']);
                        }
                        if (isset($_POST['wp_emember_zipcode'])) {
                            $fields['address_zipcode'] = strip_tags($_POST['wp_emember_zipcode']);
                        }
                        if (isset($_POST['wp_emember_country'])) {
                            $fields['country'] = strip_tags($_POST['wp_emember_country']);
                        }
                        if (isset($_POST['wp_emember_gender'])) {
                            $fields['gender'] = strip_tags($_POST['wp_emember_gender']);
                        }
                        if (isset($_POST['wp_emember_company_name'])) {
                            $fields['company_name'] = strip_tags($_POST['wp_emember_company_name']);
                        }
                        $fields['member_since'] = date("Y-m-d");
                        $fields['subscription_starts'] = date("Y-m-d");
                        //No need to update the membership level as it has already been set for this member when the unique rego complete link was sent out
                        $eMember_manually_approve_member_registration = $emember_config->getValue('eMember_manually_approve_member_registration');
                        if ($eMember_manually_approve_member_registration) {
                            $fields['account_state'] = 'pending';
                        } else {
                            $fields['account_state'] = 'active';
                        }
                        $fields['email'] = $_POST['wp_emember_email'];
                        $fields['last_accessed_from_ip'] = get_real_ip_addr();
                        $reg_code = strip_tags($_POST['eMember_reg_code']);
                        if (md5($mresultset['reg_code']) == $reg_code) {
                            $ret = dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . esc_sql($eMember_id), $fields);
                            eMember_log_debug("Updating premium member account data. eMember ID: " . $eMember_id, true);
                            /*                         * ********************** */
                            $lastid = $eMember_id;
                            if (isset($_POST['emember_custom'])) {
                                foreach ($_POST['emember_custom'] as $key => $value) {
                                    $custom_fields[$key] = $value;
                                }
                                $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $lastid . ',\'custom_field\',' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')');
                            }
                            if ($ret === false) {
                                $output .= '<br />' . ' DB Error.';
                                $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output));
                                $is_reg_successfull = false;
                            } else {
                                $is_reg_successfull = true;
                                unset($_SESSION['eMember_id']);
                                unset($_SESSION['reg_code']);
                            }
                        } else {
                            $output .= '<span class="emember_error">Error! Unique registration code do not match!</span>';
                            $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output));
                        }
                    } else {
                        //Create a new account for a free member or the level specified in the shortcode. This path is exercised when someone directly goes to the registration page and submits the details.
                        eMember_log_debug("Creating a new account for free membership or for the level specified in the shortcode. Member Email: " . $_POST['wp_emember_email'], true);
                        $fields['user_name'] = $_POST['wp_emember_user_name'];
                        $fields['password'] = $password;
                        if (isset($_POST['wp_emember_title'])) {
                            $fields['title'] = strip_tags($_POST['wp_emember_title']);
                        }
                        if (isset($_POST['wp_emember_firstname'])) {
                            $fields['first_name'] = strip_tags($_POST['wp_emember_firstname']);
                        }
                        if (isset($_POST['wp_emember_lastname'])) {
                            $fields['last_name'] = strip_tags($_POST['wp_emember_lastname']);
                        }
                        if (isset($_POST['wp_emember_phone'])) {
                            $fields['phone'] = strip_tags($_POST['wp_emember_phone']);
                        }
                        if (isset($_POST['wp_emember_street'])) {
                            $fields['address_street'] = strip_tags($_POST['wp_emember_street']);
                        }
                        if (isset($_POST['wp_emember_city'])) {
                            $fields['address_city'] = strip_tags($_POST['wp_emember_city']);
                        }
                        if (isset($_POST['wp_emember_state'])) {
                            $fields['address_state'] = strip_tags($_POST['wp_emember_state']);
                        }
                        if (isset($_POST['wp_emember_zipcode'])) {
                            $fields['address_zipcode'] = strip_tags($_POST['wp_emember_zipcode']);
                        }
                        if (isset($_POST['wp_emember_country'])) {
                            $fields['country'] = strip_tags($_POST['wp_emember_country']);
                        }
                        if (isset($_POST['wp_emember_gender'])) {
                            $fields['gender'] = strip_tags($_POST['wp_emember_gender']);
                        }
                        if (isset($_POST['wp_emember_company_name'])) {
                            $fields['company_name'] = strip_tags($_POST['wp_emember_company_name']);
                        }
                        $fields['member_since'] = date("Y-m-d");
                        $fields['subscription_starts'] = date("Y-m-d");
                        if (isset($_POST['custom_member_level_shortcode'])) {
                            $fields['membership_level'] = $_POST['custom_member_level_shortcode'];
                            //$fields['initial_membership_level']    = $_POST['custom_member_level_shortcode'];
                        } else {
                            $fields['membership_level'] = $emember_config->getValue('eMember_free_membership_level_id');
                            //$fields['initial_membership_level']    = $emember_config->getValue('eMember_free_membership_level_id');
                        }
                        $eMember_manually_approve_member_registration = $emember_config->getValue('eMember_manually_approve_member_registration');
                        if ($eMember_manually_approve_member_registration) {
                            $fields['account_state'] = 'pending';
                        } else {
                            $fields['account_state'] = 'active';
                        }
                        $fields['email'] = $_POST['wp_emember_email'];
                        $fields['last_accessed_from_ip'] = get_real_ip_addr();
                        $ret = dbAccess::insert(WP_EMEMBER_MEMBERS_TABLE_NAME, $fields);
                        $lastid = $wpdb->insert_id;
                        $fields['member_id'] = $lastid;
                        if (isset($_POST['emember_custom'])) {
                            foreach ($_POST['emember_custom'] as $key => $value) {
                                $custom_fields[$key] = $value;
                            }
                            $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $lastid . ',\'custom_field\',' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')');
                        }
                        if ($ret === false) {
                            $output .= '<br />' . ' DB Error.';
                            $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output));
                            $is_reg_successfull = false;
                        } else {
                            $is_reg_successfull = true;
                        }
                    }
                    if ($is_reg_successfull) {
                        eMember_log_debug("Processing registration submission...", true);
                        //Send notification to any other plugin listening for the eMember registration complete event.
                        do_action('eMember_registration_complete', $fields, $custom_fields);
                        //Query the membership level table to get a handle for the level
                        $membership_level_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, " id='" . $fields['membership_level'] . "'");
                        // Create the corresponding wordpress user
                        $should_create_wp_user = $emember_config->getValue('eMember_create_wp_user');
                        if ($should_create_wp_user) {
                            $role_names = array(1 => 'Administrator', 2 => 'Editor', 3 => 'Author', 4 => 'Contributor', 5 => 'Subscriber');
                            $wp_user_info = array();
                            $wp_user_info['user_nicename'] = implode('-', explode(' ', $_POST['wp_emember_user_name']));
                            $wp_user_info['display_name'] = $_POST['wp_emember_user_name'];
                            $wp_user_info['nickname'] = $_POST['wp_emember_user_name'];
                            $wp_user_info['first_name'] = strip_tags($_POST['wp_emember_firstname']);
                            $wp_user_info['last_name'] = strip_tags($_POST['wp_emember_lastname']);
                            $wp_user_info['role'] = $membership_level_resultset->role;
                            $wp_user_info['user_registered'] = date('Y-m-d H:i:s');
                            //$wp_user_id = wp_create_user($_POST['wp_emember_user_name'], $_POST['wp_emember_pwd'], $_POST['wp_emember_email']);
                            $wp_user_id = eMember_wp_create_user($_POST['wp_emember_user_name'], $_POST['wp_emember_pwd'], $_POST['wp_emember_email'], $wp_user_info);
                            //do_action( 'set_user_role', $wp_user_id, $membership_level_resultset->role );
                        }
                        //-----------------
                        $subject_rego_complete = $emember_config->getValue('eMember_email_subject_rego_complete');
                        $body_rego_complete = $emember_config->getValue('eMember_email_body_rego_complete');
                        $from_address = $emember_config->getValue('senders_email_address');
                        $login_link = $emember_config->getValue('login_page_url');
                        //Do the full dynamic member details replacement
                        $curr_member_id = $lastid;
                        $additional_params = array('password' => $_POST['wp_emember_pwd'], 'login_link' => $login_link);
                        $email_body1 = emember_dynamically_replace_member_details_in_message($curr_member_id, $body_rego_complete, $additional_params);
                        //The filter for email notification body
                        $email_body1 = apply_filters('eMember_notification_email_body_filter', $email_body1, $curr_member_id);
                        $headers = 'From: ' . $from_address . "\r\n";
                        $member_email = $_POST['wp_emember_email'];
                        wp_mail($member_email, $subject_rego_complete, $email_body1, $headers);
                        eMember_log_debug("Member registration complete email successfully sent to: " . $member_email, true);
                        if ($emember_config->getValue('eMember_admin_notification_after_registration')) {
                            $admin_email = $emember_config->getValue('eMember_admin_notification_email_address');
                            $notify_emails_array = explode(",", $admin_email);
                            foreach ($notify_emails_array as $notify_email_address) {
                                if (!empty($notify_email_address)) {
                                    $admin_notification_subject = EMEMBER_NEW_ACCOUNT_MAIL_HEAD;
                                    $admin_email_body = EMEMBER_NEW_ACCOUNT_MAIL_BODY . "\n\n-------Member Email----------\n" . $email_body1 . "\n\n------End------\n";
                                    wp_mail($notify_email_address, $admin_notification_subject, $admin_email_body, $headers);
                                    eMember_log_debug("Admin notification email successfully sent to: " . $admin_email, true);
                                }
                            }
                        }
                        //Create the corresponding affliate account
                        if ($emember_config->getValue('eMember_auto_affiliate_account')) {
                            eMember_log_debug("Creating affiliate account for this member.", true);
                            eMember_handle_affiliate_signup($_POST['wp_emember_user_name'], $_POST['wp_emember_pwd'], $_POST['wp_emember_firstname'], $_POST['wp_emember_lastname'], $_POST['wp_emember_email'], eMember_get_aff_referrer());
                        }
                        /*                     * * Signup the member to Autoresponder List (Autoresponder integration) ** */
                        eMember_log_debug("===> Performing autoresponder signup if needed <===", true);
                        $membership_level_id = $fields['membership_level'];
                        $firstname = isset($_POST['wp_emember_firstname']) ? $_POST['wp_emember_firstname'] : "";
                        $lastname = isset($_POST['wp_emember_lastname']) ? $_POST['wp_emember_lastname'] : "";
                        $emailaddress = $_POST['wp_emember_email'];
                        eMember_level_specific_autoresponder_signup($membership_level_id, $firstname, $lastname, $emailaddress);
                        eMember_global_autoresponder_signup($firstname, $lastname, $emailaddress);
                        /*                     * * end of autoresponder integration ** */
                        /*                     * * check redirection options and redirect accordingly ** */
                        $after_rego_page = $emember_config->getValue('eMember_after_registration_page');
                        $redirect_page = $emember_config->getValue('login_page_url');
                        $auto_login_after_rego = $emember_config->getValue('eMember_enable_auto_login_after_rego');
                        if ($auto_login_after_rego) {
                            if (!empty($redirect_page)) {
                                $separator = wp_emember_get_query_separator_for_url($redirect_page);
                                $encoded_pass = base64_encode($_POST['wp_emember_pwd']);
                                $redirect_page = $redirect_page . $separator . "doLogin=1&pwd_encoded=1&emember_u_name=" . urlencode($_POST['wp_emember_user_name']) . "&emember_pwd=" . urlencode($encoded_pass);
                                //$redirect_page = wp_nonce_url($redirect_page,'emember-login-nonce');
                                $login_nonce = wp_create_nonce('emember-login-nonce');
                                $redirect_page = $redirect_page . "&_wpnonce=" . $login_nonce;
                                wp_emember_redirect_to_url($redirect_page);
                            } else {
                                $output .= '<div class="emember_error">Error! The "Login Page URL" field value is missing! Go to the Pages/Forms settings menu and correct the mistake.</div>';
                                $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output));
                            }
                        } else {
                            if (!empty($after_rego_page)) {
                                wp_emember_redirect_to_url($after_rego_page);
                            } else {
                                if ($eMember_manually_approve_member_registration) {
                                    $output .= '<p>' . EMEMBER_REG_COMPLETE_PENDING_APPROVAL . '</p>';
                                } else {
                                    $output .= '<p>' . EMEMBER_REG_COMPLETE . EMEMBER_PLEASE . ' <a href="' . $redirect_page . '">' . EMEMBER_LOGIN . '</a></p>';
                                }
                                $emember_config->set_stacked_message('emember_full_registration', array('type' => 'success', 'message' => $output));
                            }
                        }
                        /*                     * * End of redirection stuff ** */
                    } else {
                        $output .= "<b><br/>Something went wrong. Please Contact <a href='mailto:" . get_bloginfo('admin_email') . "'>Admin.</a></b>";
                        $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output));
                    }
                }
            }
            //End no error on submission
        }
        //End recaptcha valid block
    }
    //End POST register submission
    return;
}
Ejemplo n.º 11
0
 public function remove_bookmark($b)
 {
     if (!$this->isLoggedIn) {
         return;
     }
     $bookmarks = unserialize($this->userInfo->extra_info);
     if (!empty($bookmarks['bookmarks'])) {
         $bookmarks['bookmarks'] = array_diff($bookmarks['bookmarks'], $b);
         $bookmarks = serialize($bookmarks);
         $this->userInfo->extra_info = $bookmarks;
         $extr = array('extra_info' => $bookmarks);
         dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id = ' . $this->userInfo->member_id, $extr);
     }
 }