function emember_handle_level_cancelled_action($args) { $member_id = $args['member_id']; $level = $args['level']; //Find record for this user eMember_log_debug('emember_membership_cancelled action hook handler. Retrieving membership level record for member ID: ' . $member_id, true); $ml_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, " id='" . $level . "'"); $list_name = trim($ml_resultset->campaign_name); eMember_log_debug('List name for this membership level: ' . $list_name, true); if (!empty($list_name)) { //This level has a list name associated so need to do autoresponder cancellation. //TODO } }
function eMember_clickbank_ipnVerification($clickbank_secretKey = "") { eMember_log_debug("Validating IPN authenticity. Secret Key:" . $clickbank_secretKey, true); $secretKey = $clickbank_secretKey; $pop = ""; $ipnFields = array(); foreach ($_POST as $key => $value) { if ($key == "cverify") { continue; } $ipnFields[] = $key; } sort($ipnFields); foreach ($ipnFields as $field) { // if Magic Quotes are enabled $_POST[$field] will need to be // un-escaped before being appended to $pop $pop = $pop . $_POST[$field] . "|"; } $pop = $pop . $secretKey; $calcedVerify = sha1(mb_convert_encoding($pop, "UTF-8")); $calcedVerify = strtoupper(substr($calcedVerify, 0, 8)); return $calcedVerify == $_POST["cverify"]; }
eMember_log_debug('Start Processing of membership registration request via API...', true); $secret_key_received = $_REQUEST['secret_key']; $right_secret_key = $emember_config->getValue('wp_eMember_secret_word_for_post'); if ($secret_key_received != $right_secret_key) { echo "Error!\n"; echo "Secret key is invalid\n"; eMember_log_debug('secret key invalid...', false); exit; } $custom = strip_tags($_REQUEST['custom']); $delimiter = "&"; $customvariables = array(); $namevaluecombos = explode($delimiter, $custom); foreach ($namevaluecombos as $keyval_unparsed) { $equalsignposition = strpos($keyval_unparsed, '='); if ($equalsignposition === false) { $customvariables[$keyval_unparsed] = ''; continue; } $key = substr($keyval_unparsed, 0, $equalsignposition); $value = substr($keyval_unparsed, $equalsignposition + 1); $customvariables[$key] = $value; } $subscr_id = strip_tags($_REQUEST['subscr_id']); $subsc_ref = $customvariables['subsc_ref']; $eMember_id = $customvariables['eMember_id']; foreach ($_REQUEST as $field => $value) { $ipn_data["{$field}"] = $value; } eMember_log_debug('API - registering member account... see the "subscription_handle_debug.log" file for details', true); eMember_handle_subsc_signup_stand_alone($ipn_data, $subsc_ref, $subscr_id, $eMember_id);
if ($referee_custom_fields) { $referee_data = unserialize($referee_custom_fields->meta_value); $referee_data['Good_Karma_Referrer'] = $referrer_email; //reference to Good Karma Referrer $wpdb->query('UPDATE ' . WP_EMEMBER_MEMBERS_META_TABLE . ' SET meta_value =' . '\'' . serialize($referee_data) . '\' WHERE meta_key = \'custom_field\' AND user_id=' . $referee_id); eMember_log_debug('Referee Member data has been updated', true); } else { $referee_data['Good_Karma_Referrer'] = $referrer_email; //reference to Good Karma Referrer $referee_data['Good_Karma_Referrals'] = ''; $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $referee_id . ',"custom_field",' . '\'' . serialize($referee_data) . '\')'); eMember_log_debug('Referee Member data has been inserted', true); } // Update the Referrer Member $referrer_custom_fields = dbAccess::find(WP_EMEMBER_MEMBERS_META_TABLE, ' user_id=\'' . $referrer_id . '\' AND meta_key=\'custom_field\''); $referrer_data = array(); if ($referrer_custom_fields) { $referrer_data = unserialize($referrer_custom_fields->meta_value); $referrer_data['Good_Karma_Referrals'] .= ($referrer_data['Good_Karma_Referrals'] != '' ? ', ' : '') . $referee_email; //reference to Good Karma Referee $wpdb->query('UPDATE ' . WP_EMEMBER_MEMBERS_META_TABLE . ' SET meta_value =' . '\'' . serialize($referrer_data) . '\' WHERE meta_key = \'custom_field\' AND user_id=' . $referrer_id); eMember_log_debug('Referrer Member data has been updated', true); } else { $referrer_data['Good_Karma_Referrer'] = ''; $referrer_data['Good_Karma_Referrals'] = $referee_email; //reference to Good Karma Referee; $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $referrer_id . ',"custom_field",' . '\'' . serialize($referrer_data) . '\')'); eMember_log_debug('Referrer Member data has been inserted', true); } echo "Success!\n"; echo "Membership referrer update succeeded.\n";
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(); } } } }
private function validate() { global $wpdb; $emember_config = Emember_Config::getInstance(); $sign_in_with_wp = $emember_config->getValue('eMember_signin_emem_user'); $auth_cookie_name = is_ssl() ? WP_EMEMBER_SEC_AUTH : WP_EMEMBER_AUTH; $logout = filter_input(INPUT_GET, 'emember_logout'); $logout_alt = filter_input(INPUT_GET, 'member_logout'); $logout_alt2 = filter_input(INPUT_GET, 'event'); if (!empty($logout) || $logout_alt == 1 || $logout_alt2 == 'logout') { $this->isLoggedIn = true; // trick to forcefully logout. $this->logout(); return false; } else { if (!isset($_COOKIE[$auth_cookie_name]) || empty($_COOKIE[$auth_cookie_name])) { //$this->lastStatusMsg = EMEMBER_NOT_LOGGED_IN; $this->errorCode = 1; //set_transient( 'eMember_login_status_msg', "", 3600 ); $this->loggedIn = false; $this->userInfo = null; return false; } //@todo check if login is for rss $cookie_elements = explode('|', $_COOKIE[$auth_cookie_name]); if (count($cookie_elements) != 3) { return false; } list($username, $expiration, $hmac) = $cookie_elements; $expired = $expiration; // Allow a grace period for POST and AJAX requests if (defined('DOING_AJAX') || 'POST' == $_SERVER['REQUEST_METHOD']) { $expired += HOUR_IN_SECONDS; } // Quick check to see if an honest cookie has expired if ($expired < time()) { $this->lastStatusMsg = EMEMBER_SESSION_EXPIRED; //do_action('auth_cookie_expired', $cookie_elements); return false; } $query = " SELECT * FROM " . $wpdb->prefix . "wp_eMember_members_tbl"; $query .= " WHERE user_name = '" . $username . "'"; $user = $wpdb->get_row($query); if (!$user) { $this->errorCode = 1; return false; } $pass_frag = substr($user->password, 8, 4); $key = Emember_Auth::b_hash($username . $pass_frag . '|' . $expiration); $hash = hash_hmac('md5', $username . '|' . $expiration, $key); if ($hmac != $hash) { $this->lastStatusMsg = EMEMBER_LOGIN_AGAIN; $this->error_code = 20; self::setSavedMessage('eMember_login_status_msg', $this->lastStatusMsg); self::setSavedMessage('eMember_login_status_code', $this->errorCode); return false; } } if ($expiration < time()) { $GLOBALS['login_grace_period'] = 1; } $disable_multiple_logins = $emember_config->getValue('eMember_multiple_logins'); if ($disable_multiple_logins) { $query = "SELECT * FROM " . WP_EMEMBER_AUTH_SESSION_TABLE . " WHERE " . "user_name = '" . $username . "' ORDER BY login_impression DESC"; $session = $wpdb->get_row($query); if (!empty($session) && ($session->logged_in_from_ip != get_real_ip_addr() || $session->session_id != $hmac)) { $this->userInfo = null; $this->isLoggedIn = true; // trick to forcefully logout. $this->lastStatusMsg = EMEMBER_ALREADY_LOGGED_IN; $this->errorCode = 13; $this->logout(); self::setSavedMessage('eMember_login_status_code', $this->errorCode); self::setSavedMessage('eMember_login_status_msg', $this->lastStatusMsg); return false; } } $query = "select last_impression FROM " . WP_EMEMBER_AUTH_SESSION_TABLE . " WHERE session_id = '" . $hmac . "'"; $last_impression = $wpdb->get_col($query); $current_time = current_time('mysql', 1); $last_impression = isset($last_impression[0]) ? strtotime($last_impression[0]) : strtotime($current_time); $this->inactivity = empty($last_impression) ? 0 : strtotime($current_time) - $last_impression; $query = "UPDATE " . WP_EMEMBER_AUTH_SESSION_TABLE . " SET last_impression = '" . $current_time . "' WHERE session_id = '" . $hmac . "'"; $wpdb->query($query); $autologout = $emember_config->getValue('wp_eMember_auto_logout'); if ($autologout && $this->inactivity > $autologout * 60) { eMember_log_debug("Auto logout triggered. Logging out the member!", true); $this->isLoggedIn = true; // trick to forcefully logout. $this->logout(); return false; } /** * looks to be valid user. so save user info to member variable. */ $this->userInfo = $user; return $this->check_constraints(); }
function eMember_global_autoresponder_signup($firstname, $lastname, $emailaddress) { eMember_log_debug('Performing global autoresponder signup if specified.', true); $emember_config = Emember_Config::getInstance(); if ($emember_config->getValue('eMember_enable_aweber_int') == 1) { $list_name = trim($emember_config->getValue('eMember_aweber_list_name')); $from_address = $emember_config->getValue('senders_email_address'); $senders_email = eMember_get_string_between($from_address, "<", ">"); if (empty($senders_email)) { $senders_email = $from_address; } $cust_name = $firstname . ' ' . $lastname; if ($emember_config->getValue('eMember_use_new_aweber_integration') == '1') { eMember_aweber_new_signup_user($list_name, $firstname, $lastname, $emailaddress); } else { eMember_log_debug('AWeber list to signup to:' . $list_name, true); eMember_send_aweber_mail($list_name, $senders_email, $cust_name, $emailaddress); eMember_log_debug('AWeber signup from email address:' . $senders_email, true); } eMember_log_debug('AWeber signup operation performed for:' . $emailaddress, true); } if ($emember_config->getValue('eMember_use_mailchimp') == 1) { $api = eMember_get_chimp_api(); $target_list_name = trim($emember_config->getValue('eMember_chimp_list_name')); eMember_log_debug('Mailchimp email address to signup:' . $emailaddress, true); eMember_log_debug('Mailchimp list to signup to:' . $target_list_name, true); $retval = eMember_mailchimp_subscribe($api, $target_list_name, $firstname, $lastname, $emailaddress); eMember_log_debug('Mailchimp signup operation performed. returned value:' . $retval, true); } if ($emember_config->getValue('eMember_use_getresponse') == 1) { $campaign_name = trim($emember_config->getValue('eMember_getResponse_campaign_name')); eMember_log_debug('GetResponse email address to signup:' . $emailaddress, true); eMember_log_debug('GetResponse campaign to signup to:' . $campaign_name, true); $retval = eMember_getResponse_subscribe($campaign_name, $firstname, $lastname, $emailaddress); eMember_log_debug('GetResponse signup operation performed. returned value:' . $retval, true); } if ($emember_config->getValue('eMember_use_global_generic_autoresponder_integration') == '1') { eMember_log_debug('Generic autoresponder integration is being used.', true); $list_email_address = trim($emember_config->getValue('eMember_generic_autoresponder_target_list_email')); $result = eMember_generic_autoresponder_signup($firstname, $lastname, $emailaddress, $list_email_address); eMember_log_debug('Generic autoresponder signup result: ' . $result, true); } // API call for plugins extending the global specific autoresponder signup $signup_data = array('firstname' => $firstname, 'lastname' => $lastname, 'email' => $emailaddress); do_action('emember_global_autoresponder_signup', $signup_data); eMember_log_debug('End of global autoresponder signup.', true); }
<?php exit; //TODO - this feature is currently disabled as it is still being developed include_once '../../../../wp-load.php'; include_once '../eMember_debug_handler.php'; global $emember_config; $emember_config = Emember_Config::getInstance(); define('FACEBOOK_APP_ID', $emember_config->getValue('emember_fb_app_id')); define('FACEBOOK_SECRET', $emember_config->getValue('emember_fb_app_secret')); eMember_log_debug('Start Processing of membership creation request via Facebook Open ID...', true); function parse_signed_request($signed_request, $secret) { list($encoded_sig, $payload) = explode('.', $signed_request, 2); // decode the data $sig = base64_url_decode($encoded_sig); $data = json_decode(base64_url_decode($payload), true); if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { error_log('Unknown algorithm. Expected HMAC-SHA256'); return null; } // check sig $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); if ($sig !== $expected_sig) { error_log('Bad Signed JSON signature!'); return null; } return $data; } function base64_url_decode($input) {
exit; } //Mandatory data $email = esc_sql(strip_tags($_REQUEST['email'])); $member_id = strip_tags($_REQUEST['member_id']); eMember_log_debug("Profile deactivation API Called for member ID: " . $member_id . " or Email: " . $email, false); if (empty($member_id)) { //Retrieve member ID using email $resultset = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, " email = '{$email}'"); if (!$resultset) { echo "Error!\n"; echo "Could not find an eMember user with the provided email address!\n"; exit; } $member_id = $resultset->member_id; eMember_log_debug("Retrieving member ID from email address. Retrieved ID: " . $member_id, false); } //Optional data $fields = array(); $fields['account_state'] = 'inactive'; if (isset($_REQUEST['account_state'])) { $fields['account_state'] = strip_tags($_REQUEST['account_state']); } //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); } eMember_log_debug("Member profile deactivated.", true); echo "Success!\n"; echo "Member profile deactivated.\n"; exit;
function set_status() { if (!isset($_REQUEST['action2']) || empty($_REQUEST['action2'])) { return; } if (!isset($_REQUEST['members']) || empty($_REQUEST['members'])) { return; } $action = $_REQUEST['action2'] == -1 ? $_REQUEST['action'] : $_REQUEST['action2']; $status = ''; $notify = false; switch ($action) { case 'bulk_active_notify': $notify = true; case 'bulk_active': $status = 'active'; break; case 'bulk_inactive': $status = 'inactive'; break; case 'bulk_pending': $status = 'pending'; break; case 'bulk_expired': $status = 'expired'; break; } if (empty($status)) { return; } $ids = implode(',', array_map('absint', $_REQUEST['members'])); if (empty($ids)) { return; } global $wpdb; $query = "UPDATE " . $wpdb->prefix . "wp_eMember_members_tbl " . " SET account_state = '" . $status . "' WHERE member_id in (" . $ids . ")"; $wpdb->query($query); if ($notify) { $emember_config = Emember_Config::getInstance(); $login_url = $emember_config->getValue('login_page_url'); $emails = $wpdb->get_col("SELECT email FROM " . $wpdb->prefix . "wp_eMember_members_tbl " . " WHERE member_id IN ( {$ids} ) "); $subject = EMEMBER_BULK_ACTIVATION_EMAIL_SUBJECT; $body = EMEMBER_BULK_ACTIVATION_EMAIL_BODY; $headers = 'From: ' . get_option('admin_email') . "\r\n"; $headers .= 'bcc: ' . implode(',', $emails) . "\r\n"; wp_mail(array(), $subject, $body, $headers); eMember_log_debug("Bulk activation email notification sent.", true); } }
function emember_after_login($user, $pass, $rememberme) { $emember_auth = Emember_Auth::getInstance(); $emember_config = Emember_Config::getInstance(); if (!is_user_logged_in()) { $sign_in_wp = $emember_config->getValue('eMember_signin_wp_user'); $user_id = username_exists($user); if ($sign_in_wp) { eMember_log_debug("Logging into WordPress account. User ID: " . $user_id, true); if ($user_id) { $preserve_role = $emember_auth->getUserInfo('flags'); if (($preserve_role & 1) != 1) { $user_info = get_userdata($user_id); $user_cap = is_array($user_info->wp_capabilities) ? array_keys($user_info->wp_capabilities) : array(); $account_stat = $emember_auth->getUserInfo('account_state'); if ($account_stat === 'active' && !in_array('administrator', $user_cap)) { update_wp_user_Role($user_id, $emember_auth->permitted->primary_level->get('role')); } } update_account_status($user); $usr = wp_signon(array('user_login' => $user, 'user_password' => $pass, 'remember' => $rememberme), is_ssl() ? true : false); if (is_wp_error($usr)) { echo $user->get_error_message(); } } } } $folder_protection = $emember_config->getValue('emember_download_folder_protection'); if ($folder_protection) { emember_update_htpasswd($user, $pass); } do_action('eMember_user_logged_in', $user); //Log into the affiliate account if the option is set $eMember_auto_affiliate_account_login = $emember_config->getValue('eMember_auto_affiliate_account_login'); if ($eMember_auto_affiliate_account_login && function_exists('wp_aff_platform_install')) { eMember_log_debug("Logging into Affiliate Platform account", true); $_SESSION['user_id'] = $user; if (isset($_POST['rememberme'])) { setcookie("user_id", $user, time() + 60 * 60 * 24 * 7, "/", COOKIE_DOMAIN); } else { setcookie("user_id", $user, time() + 60 * 60 * 6, "/", COOKIE_DOMAIN); } } }
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; }
eMember_log_debug('Error! Remote POST is disabled in the settings. So this request will not be processed.', false); exit; } $secretKey = $emember_config->getValue('wp_eMember_secret_word_for_post'); //TODO - add a secret key check and make this script do the whole user creation tasks? //Massage the data $email = $_REQUEST['email']; $name = $_REQUEST['name']; list($first_name, $last_name) = explode(' ', $name); $listname = $_REQUEST['unit']; $username = $email; $referrer_mail = $_REQUEST['referrer']; if (empty($email) || empty($name) || empty($listname)) { echo "Error!\n"; echo "Missing mandatory field. Email, first name and last name must be present!\n"; eMember_log_debug('Error! Missing mandatory field. Email, first name and last name must be present...', false); exit; } //POST the data to the eMember API $postURL = WP_EMEMBER_URL . "/api/create.php"; $data = array(); $data['secret_key'] = $secretKey; //$data['requested_domain'] = $domainURL; $data['email'] = $email; $data['first_name'] = $first_name; $data['last_name'] = $last_name; $data['username'] = $username; $data['membership_level_name'] = $listname; // send data to post URL $ch = curl_init($postURL); curl_setopt($ch, CURLOPT_POST, true);
function emember_update_wp_role_for_member($eMember_username, $role_name) { $emember_config = Emember_Config::getInstance(); $user_wp_integration = $emember_config->getValue('eMember_create_wp_user'); if ($user_wp_integration) { $user_info = get_user_by('login', $eMember_username); eMember_log_debug("The username of the member :" . $eMember_username . " ,WP User ID is: " . $user_info->ID . " , Target role name: " . $role_name, true); update_wp_user_Role($user_info->ID, $role_name); } }
function emember_logout_init() { $emember_auth = Emember_Auth::getInstance(); $emember_config = Emember_Config::getInstance(); if (!$emember_auth->isLoggedIn()) { return; } $sign_in_wp = $emember_config->getValue('eMember_signin_wp_user'); if ($sign_in_wp && !is_user_logged_in()) { //If Not logged into WP while emember is logged in if (username_exists($emember_auth->getUserInfo('user_name'))) { eMember_log_debug("User Exists in WP but not logged in. ", true); $emember_auth->silent_logout(); eMember_log_debug("Logging out of emember because wp cookie for this user expired ", true); } else { eMember_log_debug("You have auto login to WP enabled but WP User doesn't exist for this user! WP User login won't execute.", true); } } }
function eMember_handle_affiliate_password_reset($aff_email, $encrypted_pass) { if (empty($encrypted_pass) || empty($aff_email)) { return; } $emember_config = Emember_Config::getInstance(); $eMember_auto_affiliate_account_login = $emember_config->getValue('eMember_auto_affiliate_account_login'); if (function_exists('wp_aff_platform_install') && $eMember_auto_affiliate_account_login) { global $wpdb; $affiliates_table_name = WP_AFF_AFFILIATES_TBL_NAME; //wp_aff_check_if_account_exists($aff_email) - Do an additional check if needed $updatedb = "UPDATE {$affiliates_table_name} SET pass = '******' WHERE email = '" . $aff_email . "'"; $results = $wpdb->query($updatedb); eMember_log_debug("Affiliate password updated for affiliate account with email: " . $aff_email, true); } }
$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(' ', $username)); $wp_user_info['display_name'] = $username; $wp_user_info['nickname'] = $username; $wp_user_info['first_name'] = $first_name; $wp_user_info['last_name'] = $last_name; $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($username, $password, $email); //Need to use the non hashed password $wp_user_id = eMember_wp_create_user($username, $password, $email); $wp_user_info['ID'] = $wp_user_id; wp_update_user($wp_user_info); eMember_log_debug('Updating WP user role to : ' . $membership_level_resultset->role, true); update_wp_user_Role($wp_user_id, $membership_level_resultset->role); //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'); $tags1 = array("{first_name}", "{last_name}", "{user_name}", "{password}", "{login_link}"); $vals1 = array($first_name, $last_name, $username, $password, $login_link); $email_body1 = str_replace($tags1, $vals1, $body_rego_complete); $headers = 'From: ' . $from_address . "\r\n"; wp_mail($email, $subject_rego_complete, $email_body1, $headers); if ($emember_config->getValue('eMember_admin_notification_after_registration')) { $admin_email = get_option('admin_email'); $admin_notification_subject = EMEMBER_NEW_ACCOUNT_MAIL_HEAD;