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 }
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 »" /> </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 »" /> </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 }
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); }
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); }
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 "' . $_POST['wpm_levels']['new_level']['name'] . '" couldn\'t be created due to error.</p></div>'; } else { echo '<div id="message" class="updated fade"><p>Membership Level "' . $_POST['wpm_levels']['new_level']['name'] . '" 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'; }
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 "' . $fields['user_name'] . '" 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 "' . $fields['email'] . '" 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') . ' "' . $fields['user_name'] . '" ' . __('Update Failed.', 'wp_eMember') . '</p></div>'; } else { $_SESSION['flash_message'] = '<div id="message" class="updated fade"><p>' . __('Member', 'wp_eMember') . ' "' . $fields['user_name'] . '" ' . __('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'; }
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";
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(); } } } }
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™ 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; }
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); } }