Exemplo n.º 1
0
function wp_eMember_admin_functions_general_menu()
{
    $emember_config = Emember_Config::getInstance();
    if (isset($_POST['generate_registration_link'])) {
        $errorMsg = "";
        $eMember_member_id = (string) $_POST["eMember_member_id"];
        $member_record = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=\'' . $eMember_member_id . '\'');
        if ($member_record) {
            $md5_code = md5($member_record->reg_code);
            $separator = '?';
            $url = get_option('eMember_registration_page');
            if (empty($url)) {
                $errorMsg .= "Error! You need to specify the registration URL in the pages/forms settings menu of this plugin.";
            } else {
                if (strpos($url, '?') !== false) {
                    $separator = '&';
                }
                $reg_url = $url . $separator . 'member_id=' . $eMember_member_id . '&code=' . $md5_code;
            }
        } else {
            $errorMsg .= "Error! Could not find the member ID in the database. Please double check the member ID value.";
        }
        $message = "";
        if (!empty($errorMsg)) {
            $message = $errorMsg;
        } else {
            $message = 'Registration Link Generated! Your customer can complete his/her membership registration by going to the generated link.';
        }
        echo '<div id="message" class="updated fade"><p><strong>';
        echo $message;
        echo '</strong></p></div>';
    }
    if (isset($_POST['generate_and_send_registration_link'])) {
        $errorMsg = "";
        $eMember_member_id = (string) $_POST["eMember_member_id"];
        $member_record = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=\'' . $eMember_member_id . '\'');
        if ($member_record) {
            $md5_code = md5($member_record->reg_code);
            $separator = '?';
            $url = get_option('eMember_registration_page');
            if (empty($url)) {
                $errorMsg .= "<br />You need to specify the registration URL in the pages settings menu of this plugin.";
            } else {
                if (strpos($url, '?') !== false) {
                    $separator = '&';
                }
                $reg_url = $url . $separator . 'member_id=' . $eMember_member_id . '&code=' . $md5_code;
            }
            $email = $member_record->email;
            $subject = get_option('eMember_email_subject');
            $body = get_option('eMember_email_body');
            $from_address = get_option('senders_email_address');
            $tags = array("{first_name}", "{last_name}", "{reg_link}");
            $vals = array($member_record->first_name, $member_record->last_name, $reg_url);
            $email_body = str_replace($tags, $vals, $body);
            $headers = 'From: ' . $from_address . "\r\n";
            wp_mail($email, $subject, $email_body, $headers);
        } else {
            $errorMsg .= "<br />Could not find the member ID in the database";
        }
        $message = "";
        if (!empty($errorMsg)) {
            $message = $errorMsg;
        } else {
            $message = "Member registration completion email successfully sent to:" . $email;
        }
        echo '<div id="message" class="updated fade"><p><strong>';
        echo $message;
        echo '</strong></p></div>';
    }
    if (isset($_POST['generate_and_send_registration_link_bulk'])) {
        $errorMsg = "";
        global $wpdb;
        $query = "SELECT member_id,reg_code,first_name,last_name FROM " . WP_EMEMBER_MEMBERS_TABLE_NAME . " WHERE user_name = ''";
        $member_records = $wpdb->get_results($query);
        if ($member_records) {
            foreach ($member_records as $member_record) {
                $md5_code = md5($member_record->reg_code);
                $separator = '?';
                $url = get_option('eMember_registration_page');
                if (empty($url)) {
                    $errorMsg .= "<br />You need to specify the registration URL in the pages settings menu of this plugin.";
                    break;
                } else {
                    if (strpos($url, '?') !== false) {
                        $separator = '&';
                    }
                    $reg_url = $url . $separator . 'member_id=' . $member_record->member_id . '&code=' . $md5_code;
                }
                $email = $member_record->email;
                $subject = get_option('eMember_email_subject');
                $body = get_option('eMember_email_body');
                $from_address = get_option('senders_email_address');
                $tags = array("{first_name}", "{last_name}", "{reg_link}");
                $vals = array($member_record->first_name, $member_record->last_name, $reg_url);
                $email_body = str_replace($tags, $vals, $body);
                $headers = 'From: ' . $from_address . "\r\n";
                wp_mail($email, $subject, $email_body, $headers);
            }
        }
        $message = "";
        if (!empty($errorMsg)) {
            $message = $errorMsg;
        } else {
            $message = "Member registration completion email successfully sent.";
        }
        echo '<div id="message" class="updated fade"><p><strong>';
        echo $message;
        echo '</strong></p></div>';
    }
    if (isset($_POST['emem_to_wp'])) {
        global $wpdb;
        $member_table = WP_EMEMBER_MEMBERS_TABLE_NAME;
        $ret_member_db = $wpdb->get_results("SELECT * FROM {$member_table} ", OBJECT);
        foreach ($ret_member_db as $emember) {
            $emember->user_name = trim($emember->user_name);
            if (empty($emember->user_name)) {
                continue;
            }
            if (strtolower($emember->user_name) === "admin") {
                continue;
            }
            if (!username_exists($emember->user_name)) {
                $role_names = array(1 => 'Administrator', 2 => 'Editor', 3 => 'Author', 4 => 'Contributor', 5 => 'Subscriber');
                $membership_level_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, " id='" . $emember->membership_level . "'");
                $wp_user_info = array();
                $wp_user_info['user_nicename'] = implode('-', explode(' ', $emember->user_name));
                $wp_user_info['display_name'] = $emember->user_name;
                $wp_user_info['nickname'] = $emember->user_name;
                $wp_user_info['first_name'] = $emember->first_name;
                $wp_user_info['last_name'] = $emember->last_name;
                $wp_user_info['role'] = $role_names[$membership_level_resultset->role];
                $wp_user_info['user_registered'] = date('Y-m-d H:i:s');
                //$wp_user_id = wp_create_user($emember->user_name, 'changeme', $emember->email);
                $wp_user_id = eMember_wp_create_user($emember->user_name, 'changeme', $emember->email);
                $wp_user_info['ID'] = $wp_user_id;
                wp_update_user($wp_user_info);
                //$wpdb->query("UPDATE  $wpdb->users set user_pass = \'" . $emember->password . '\' WHERE ID = ' . $wp_user_id);
                $user_info = get_userdata($wp_user_id);
                $user_cap = is_array($user_info->wp_capabilities) ? array_keys($user_info->wp_capabilities) : array();
                if (!in_array('administrator', $user_cap)) {
                    update_wp_user_Role($wp_user_id, $membership_level_resultset->role);
                }
            }
        }
        echo '<div id="message" class="updated fade"><p>WordPress user account creation complete!</p></div>';
    }
    if (isset($_POST['emem_when_wp'])) {
        $emember_config->setValue('eMember_enable_emem_when_wp', $_POST['eMember_enable_emem_when_wp']);
        $emember_config->setValue('eMember_emem_when_wp_default_level', $_POST['eMember_emem_when_wp_default_level']);
        $emember_config->setValue('eMember_emem_when_wp_default_acstatus', $_POST['eMember_emem_when_wp_default_acstatus']);
        $emember_config->saveConfig();
        echo '<div id="message" class="updated fade"><p>Auto Member Account Creation Settings Saved!</p></div>';
    }
    if (isset($_POST['emember_management_permission_update'])) {
        $emember_config->setValue('emember_management_permission', $_POST['emember_management_permission']);
        $emember_config->saveConfig();
        echo '<div id="message" class="updated fade"><p><strong>';
        echo 'Management permission setting updated!';
        echo '</strong></p></div>';
    }
    ?>

            <div class="postbox">
                <h3><label for="title">Generate a Registration Completion link</label></h3>
                <div class="inside">
                    You can manually generate a registration completion link here and give it to your customer if they have missed the email that was automatically sent out to them after the payment.<br />
                    <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="right">
                                    <strong>Member ID: </strong>
                                </td><td align="left">
                                    <input name="eMember_member_id" type="text" size="5" value="<?php 
    echo isset($eMember_member_id) ? $eMember_member_id : "";
    ?>
" />
                                    <br /><i>(i) Enter the member ID (you can get the member ID from the members menu).</i><br /><br />
                                </td></tr>

                            <tr valign="top"><td width="25%" align="right">
                                </td><td align="left">
                                    <input type="submit" name="generate_registration_link" value="<?php 
    _e('Generate Link');
    ?>
 &raquo;" />
                                    <br /><i>(ii) Hit the "Generate Link" button.</i><br /><br />
                                </td></tr>
                            <tr valign="top"><td width="25%" align="right">
                                    <strong>Registration Link: </strong>
                                </td><td align="left">
                                    <textarea name="wp_eStore_rego_link" rows="3" cols="80"><?php 
    echo isset($reg_url) ? $reg_url : "";
    ?>
</textarea>
                                    <br /><i>This is the registration completion link.</i><br />
                                </td></tr>
                        </table>
                    </form>
                </div></div>

            <div class="postbox">
                <h3><label for="title">Generate and Email the Registration Completion link</label></h3>
                <div class="inside">
                    You can generate a registration completion link and email it to your customer in one go. This can be useful if they have missed the email that was automatically sent out to them after the payment.<br />
                    <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="right">
                                    <strong>Member ID: </strong>
                                </td><td align="left">
                                    <input name="eMember_member_id" type="text" size="5" value="<?php 
    echo isset($eMember_member_id) ? $eMember_member_id : "";
    ?>
" />
                                    <br /><i>(i) Enter the member ID (you can get the member ID from the members menu).</i><br /><br />
                                </td></tr>

                            <tr valign="top"><td width="25%" align="right">
                                </td><td align="left">
                                    <input type="submit" name="generate_and_send_registration_link" value="<?php 
    _e('Generate & Email Link');
    ?>
 &raquo;" />
                                    <br /><i>(ii) Hit the "Generate & Email Link" button.</i><br /><br />
                                </td></tr>

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

            <div class="postbox">
                <h3><label for="title">Generate and Email the Registration Completion link (Bulk Mode)</label></h3>
                <div class="inside">

                    You can generate registration completion link and email it to all your members that are still waiting to complete the registration. This can be useful if they have missed the email that was automatically sent out to them after the payment.<br />
                    <form method="post" action="<?php 
    echo $_SERVER["REQUEST_URI"];
    ?>
">
                        <input type="submit" name="generate_and_send_registration_link_bulk" value="<?php 
    _e('Generate & Email Link in Bulk');
    ?>
 &raquo;" />
                        <br /><i>Hit the "Generate & Email Link in Bulk" button.</i><br /><br />
                    </form>
                </div></div>



            <div class="postbox">
                <h3><label for="title">Create WordPress User Account for the members that do not have one</label></h3>
                <div class="inside">
                    <strong>If you have a lot of eMember members that do not have a corresponding WordPress user account and for some reason you wanted to create WordPress user account for them then use this option.</strong>
                    <br /><br />
                    &raquo; When you use this option the plugin will create wordpress user accounts for every eMember user that does not have a corresponding WordPress account already.
                    <br />
                    &raquo; The WordPress user accounts will be created with the same details from eMember but the password will be set to "changeme" (The user will have to change the password to their liking).
                    <br />
                    &raquo; Why? The password is kept in the database using an one way encryption so nobody except the member knows what the real password is.
                    <br /><br />
                    <form method="post" action="<?php 
    echo $_SERVER["REQUEST_URI"];
    ?>
">
                        <input type="submit" name="emem_to_wp" value="<?php 
    _e('Create WP account for eMember users');
    ?>
 &raquo;" />
                    </form>
                </div></div>
            <div class="postbox">
                <h3><label for="title">Automatically Create eMember Account When a WordPress User Account is Created.</label></h3>
                <div class="inside">

                    <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="right">
                                    <strong>Enable this Feature: </strong>
                                </td><td align="left">
                                    <input name="eMember_enable_emem_when_wp" type="checkbox" <?php 
    echo $emember_config->getValue('eMember_enable_emem_when_wp');
    ?>
 value="checked='checked'" />
                                    <br /><i>When this feature is enabled, an eMember account will be created for every WP User account that gets created on this site.</i><br />
                                </td></tr>

                            <tr valign="top"><td width="25%" align="right"><strong>Default Membership Level: </strong></td>
                                <td align="left">
                                    <select name="eMember_emem_when_wp_default_level">
                                        <?php 
    $all_levels = dbAccess::findAll(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id != 1 ', ' id DESC ');
    $selected_level = $emember_config->getValue('eMember_emem_when_wp_default_level');
    $selected_acstatus = $emember_config->getValue('eMember_emem_when_wp_default_acstatus');
    foreach ($all_levels as $level) {
        ?>
                                            <option <?php 
        echo $selected_level == $level->id ? "selected='selected'" : "";
        ?>
 value="<?php 
        echo $level->id;
        ?>
"><?php 
        echo $level->alias;
        ?>
</option>
                                        <?php 
    }
    ?>
                                    </select>
                                    <br /><i>When automatically creating a member account in the background, the membership level will be set to the one you specify above.</i>
                                </td></tr>

                            <tr valign="top"><td width="25%" align="right"><strong>Default Account Status: </strong></td>
                                <td align="left">
                                    <select name="eMember_emem_when_wp_default_acstatus">
                                        <option <?php 
    echo $selected_acstatus == 'active' ? "selected='selected'" : "";
    ?>
 value="active">Active</option>
                                        <option <?php 
    echo $selected_acstatus == 'inactive' ? "selected='selected'" : "";
    ?>
 value="inactive">Inactive</option>
                                        <option <?php 
    echo $selected_acstatus == 'pending' ? "selected='selected'" : "";
    ?>
 value="pending">Pending</option>
                                        <option <?php 
    echo $selected_acstatus == 'expired' ? "selected='selected'" : "";
    ?>
 value="expired">Expired</option>
                                    </select>
                                    <br /><i>The account status will be set to the one specified above.</i>
                                </td></tr>
                        </table>
                        <input type="submit" name="emem_when_wp" value="Save Settings &raquo;" />
                    </form>
                </div></div>

            <div class="postbox">
                <h3><label for="title">eMember Admin Dashboard Access Permission</label></h3>
                <div class="inside">
                    <p>
                        eMember's admin dashboard is accessible to admin users only (just like any other plugin).
                        You can allow users with other WP role to access the eMember admin dashboard by selecting a value below.
                        <br /><br />
                        <strong>If don't know what this is for then don't change the following value.</strong>
                    </p>
                    <?php 
    $selected_permission = $emember_config->getValue('emember_management_permission');
    ?>
                    <form method="post" action="<?php 
    echo $_SERVER["REQUEST_URI"];
    ?>
">
                        <select name="emember_management_permission">
                            <option <?php 
    echo $selected_permission == 'edit_themes' ? "selected='selected'" : "";
    ?>
 value="edit_themes">Admin</option>
                            <option <?php 
    echo $selected_permission == 'edit_pages' ? "selected='selected'" : "";
    ?>
 value="edit_pages">Editor</option>
                            <option <?php 
    echo $selected_permission == 'edit_published_posts' ? "selected='selected'" : "";
    ?>
 value="edit_published_posts">Author</option>
                            <option <?php 
    echo $selected_permission == 'edit_posts' ? "selected='selected'" : "";
    ?>
 value="edit_posts">Contributor</option>
                        </select>
                        <input type="submit" name="emember_management_permission_update" value="Save Permission &raquo" />
                    </form>
                </div></div>
            <?php 
}
Exemplo n.º 2
0
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);
    }
}
Exemplo n.º 3
0
function wp_eMember_add_memebers()
{
    $emember_config = Emember_Config::getInstance();
    global $wpdb;
    $d = WP_EMEMBER_URL . '/images/default_image.gif';
    //If being edited, grab current info
    if (isset($_GET['editrecord']) && $_GET['editrecord'] != '') {
        $theid = $_GET['editrecord'];
        $editingrecord = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . $theid);
        $edit_custom_fields = dbAccess::find(WP_EMEMBER_MEMBERS_META_TABLE, ' user_id=' . $theid . ' AND meta_key="custom_field"');
        $edit_custom_fields = isset($edit_custom_fields->meta_value) ? unserialize($edit_custom_fields->meta_value) : array();
        $editingrecord->more_membership_levels = explode(',', $editingrecord->more_membership_levels);
        $editingrecord = (array) $editingrecord;
        $image_url = null;
        $image_path = null;
        $upload_dir = wp_upload_dir();
        $upload_url = $upload_dir['baseurl'] . '/emember/';
        $upload_path = $upload_dir['basedir'] . '/emember/';
        $use_gravatar = $emember_config->getValue('eMember_use_gravatar');
        if ($use_gravatar) {
            $image_url = WP_EMEMBER_GRAVATAR_URL . "/" . md5(strtolower($editingrecord['email'])) . "?d=" . urlencode($d) . "&s=" . 96;
        } else {
            if (!empty($editingrecord['profile_image'])) {
                $image_url = $upload_url . $editingrecord['profile_image'];
                $image_path = $theid;
            } else {
                $image_path = "";
                $image_url = WP_EMEMBER_URL . '/images/default_image.gif';
            }
        }
    }
    if (isset($_POST['Submit'])) {
        global $wpdb;
        include_once ABSPATH . WPINC . '/class-phpass.php';
        $wp_hasher = new PasswordHash(8, TRUE);
        $post_editedrecord = esc_sql(isset($_POST['editedrecord']) ? $_POST['editedrecord'] : "");
        $fields = array();
        $fields['flags'] = 0;
        if ($emember_config->getValue('eMember_enable_secondary_membership')) {
            $fields['more_membership_levels'] = implode(',', empty($_POST['more_membership_levels']) ? array() : $_POST['more_membership_levels']);
        }
        $fields["user_name"] = $_POST["user_name"];
        $fields["first_name"] = $_POST["first_name"];
        $fields["last_name"] = $_POST["last_name"];
        $fields["company_name"] = $_POST["company_name"];
        $fields["member_since"] = $_POST["member_since"];
        $fields["membership_level"] = $_POST["membership_level"];
        $fields["account_state"] = $_POST["account_state"];
        $fields["email"] = $_POST["email"];
        $fields["phone"] = $_POST["phone"];
        $fields["address_street"] = $_POST["address_street"];
        $fields["address_city"] = $_POST["address_city"];
        $fields["address_state"] = $_POST["address_state"];
        $fields["address_zipcode"] = $_POST["address_zipcode"];
        $fields["home_page"] = $_POST["home_page"];
        $fields["country"] = $_POST["country"];
        $fields["gender"] = $_POST["gender"];
        $fields["referrer"] = $_POST["referrer"];
        $fields["subscription_starts"] = $_POST["subscription_starts"];
        $fields['last_accessed_from_ip'] = get_real_ip_addr();
        $fields["notes"] = $_POST['notes'];
        $wp_user_info = array();
        $wp_user_info['user_nicename'] = implode('-', explode(' ', $_POST['user_name']));
        $wp_user_info['display_name'] = $_POST['user_name'];
        $wp_user_info['user_email'] = $_POST['email'];
        $wp_user_info['nickname'] = $_POST['user_name'];
        $wp_user_info['first_name'] = $_POST['first_name'];
        $wp_user_info['last_name'] = $_POST['last_name'];
        if ($post_editedrecord == '') {
            $fields['user_name'] = esc_sql($_POST['user_name']);
            $wp_user_info['user_login'] = $_POST['user_name'];
            // Add the record to the DB
            include_once 'emember_validator.php';
            $validator = new Emember_Validator();
            $validator->add(array('value' => $fields['user_name'], 'label' => 'User Name', 'rules' => array('user_required', 'user_name', 'user_unavail', 'user_minlength')));
            $validator->add(array('value' => $_POST['password'], 'repeat' => $_POST['retype_password'], 'label' => 'Password', 'rules' => array('pass_required', 'pass_mismatch')));
            $validator->add(array('value' => $fields['email'], 'label' => 'Email', 'rules' => array('email_required', 'email_unavail')));
            $messages = $validator->validate();
            if (count($messages) > 0) {
                echo '<span class="emember_error">' . implode('<br/>', $messages) . '</span>';
                $editingrecord = $_POST;
            } else {
                $password = $wp_hasher->HashPassword($_POST['password']);
                $fields['password'] = esc_sql($password);
                $ret = dbAccess::insert(WP_EMEMBER_MEMBERS_TABLE_NAME, $fields);
                $lastid = $wpdb->insert_id;
                $should_create_wp_user = $emember_config->getValue('eMember_create_wp_user');
                if ($should_create_wp_user) {
                    $role_names = array(1 => 'Administrator', 2 => 'Editor', 3 => 'Author', 4 => 'Contributor', 5 => 'Subscriber');
                    $membership_level_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, " id='" . $fields['membership_level'] . "'");
                    $wp_user_info['role'] = $membership_level_resultset->role;
                    $wp_user_info['user_registered'] = date('Y-m-d H:i:s');
                    //$wp_user_id = wp_create_user($_POST['user_name'], $_POST['password'], $_POST['email']);
                    $wp_user_id = eMember_wp_create_user($_POST['user_name'], $_POST['password'], $_POST['email'], $wp_user_info);
                    //do_action( 'set_user_role', $wp_user_id, $membership_level_resultset->role );
                }
                ///custom field insert
                if (isset($_POST['emember_custom'])) {
                    $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $lastid . ',"custom_field",' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')');
                }
                if ($ret === false) {
                    $_SESSION['flash_message'] = '<div id="message" style = "color:red;" class="updated fade"><p>Couldn\'t create new member.</p></div>';
                } else {
                    if (isset($_POST['uploaded_profile_img'])) {
                        $upload_dir = wp_upload_dir();
                        $upload_path = $upload_dir['basedir'];
                        $upload_path .= '/emember/';
                        $ext = explode('.', $_POST['uploaded_profile_img']);
                        rename($upload_path . $_POST['uploaded_profile_img'], $upload_path . $lastid . '.' . $ext[1]);
                    }
                    $_SESSION['flash_message'] = '<div id="message" class="updated fade"><p>Member &quot;' . $fields['user_name'] . '&quot; created.</p></div>';
                    //Notify the newly created member if specified in the settings
                    if ($emember_config->getValue('eMember_email_notification_for_manual_member_add')) {
                        $login_link = $emember_config->getValue('login_page_url');
                        $member_email_address = $_POST['email'];
                        $subject_rego_complete = $emember_config->getValue('eMember_email_subject_rego_complete');
                        $body_rego_complete = $emember_config->getValue('eMember_email_body_rego_complete');
                        $from_address = $emember_config->getValue('senders_email_address');
                        $headers = 'From: ' . $from_address . "\r\n";
                        $curr_member_id = $lastid;
                        $additional_params = array('password' => $_POST['password'], 'login_link' => $login_link);
                        $email_body1 = emember_dynamically_replace_member_details_in_message($curr_member_id, $body_rego_complete, $additional_params);
                        wp_mail($member_email_address, $subject_rego_complete, $email_body1, $headers);
                    }
                    //Create the corresponding affliate account if specified in the settings
                    if ($emember_config->getValue('eMember_auto_affiliate_account')) {
                        eMember_handle_affiliate_signup($_POST['user_name'], $_POST['password'], $_POST['first_name'], $_POST['last_name'], $_POST['email'], '');
                    }
                    /*                         * * Signup the member to Autoresponder List (Autoresponder integration) ** */
                    eMember_log_debug("===> Performing autoresponder signup if needed (member was added via admin dashboard) <===", true);
                    $membership_level_id = $_POST["membership_level"];
                    $firstname = $_POST['first_name'];
                    $lastname = $_POST['last_name'];
                    $emailaddress = $_POST['email'];
                    eMember_level_specific_autoresponder_signup($membership_level_id, $firstname, $lastname, $emailaddress);
                    eMember_global_autoresponder_signup($firstname, $lastname, $emailaddress);
                    /*                         * * end of autoresponder integration ** */
                    echo '<script type="text/javascript">window.location = "admin.php?page=wp_eMember_manage";</script>';
                }
            }
        } else {
            if (isset($_POST['emember_custom'])) {
                $custom_fields = dbAccess::find(WP_EMEMBER_MEMBERS_META_TABLE, ' user_id=' . $post_editedrecord . ' AND meta_key=\'custom_field\'');
                if ($custom_fields) {
                    $wpdb->query('UPDATE ' . WP_EMEMBER_MEMBERS_META_TABLE . ' SET meta_value =' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\' WHERE meta_key = \'custom_field\' AND  user_id=' . $post_editedrecord);
                } else {
                    $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $post_editedrecord . ',"custom_field",' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')');
                }
            } else {
                $wpdb->query('DELETE FROM ' . WP_EMEMBER_MEMBERS_META_TABLE . '  WHERE meta_key = \'custom_field\' AND  user_id=' . $post_editedrecord);
            }
            $editingrecord = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . $post_editedrecord);
            // Update the member info
            $member_id = esc_sql($_POST['editedrecord']);
            $wp_user_id = username_exists($fields['user_name']);
            $wp_email_owner = email_exists($fields['email']);
            $emember_email_owner = emember_email_exists($fields['email']);
            if (empty($fields['user_name']) || $fields['user_name'] != $editingrecord->user_name) {
                echo '<div id="message" class="updated fade"><p>User Name Cannot Be Changed!</p></div>';
            } else {
                if (empty($fields['email'])) {
                    echo '<div id="message" class="updated fade"><p>Email Field is Empty!</p></div>';
                } else {
                    if ($wp_email_owner && $wp_user_id != $wp_email_owner || $emember_email_owner && $member_id != $emember_email_owner) {
                        echo '<div id="message" class="updated fade"><p>Email ID &quot;' . $fields['email'] . '&quot; is already registered to a user!</p></div>';
                    } else {
                        $update_possible = true;
                        if (!empty($_POST['password'])) {
                            if ($_POST['password'] === $_POST['retype_password']) {
                                $password = $wp_hasher->HashPassword($_POST['password']);
                                $fields['password'] = esc_sql($password);
                                $wp_user_info['user_pass'] = $_POST['password'];
                            } else {
                                $update_possible = false;
                                echo '<div id="message" class="updated fade"><p>Password does\'t match!</p></div>';
                            }
                        }
                        if ($update_possible) {
                            $ret = dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id = ' . $member_id, $fields);
                            if ($fields["membership_level"] != $editingrecord->membership_level) {
                                do_action('emember_membership_changed', array('member_id' => $editingrecord->member_id, 'from_level' => $editingrecord->membership_level, 'to_level' => $fields["membership_level"]));
                            }
                            if ($wp_user_id && !is_wp_error($wp_user_id)) {
                                $wp_user_info['ID'] = $wp_user_id;
                                wp_update_user($wp_user_info);
                                if (($editingrecord->flags & 1) != 1) {
                                    $cond = " id='" . $fields['membership_level'] . "'";
                                    $membership_level_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, $cond);
                                    update_wp_user_Role($wp_user_id, $membership_level_resultset->role);
                                    //do_action( 'set_user_role', $wp_user_id, $membership_level_resultset->role );
                                }
                            }
                            if ($ret === false) {
                                $_SESSION['flash_message'] = '<div id="message" class="updated fade"><p>' . __('Member', 'wp_eMember') . ' &quot;' . $fields['user_name'] . '&quot; ' . __('Update Failed.', 'wp_eMember') . '</p></div>';
                            } else {
                                $_SESSION['flash_message'] = '<div id="message" class="updated fade"><p>' . __('Member', 'wp_eMember') . ' &quot;' . $fields['user_name'] . '&quot; ' . __('updated.', 'wp_eMember') . '</p></div>';
                                if (isset($_POST['account_status_change'])) {
                                    $from_address = $emember_config->getValue('senders_email_address');
                                    $headers = 'From: ' . $from_address . "\r\n";
                                    $subject = $_POST['notificationmailhead'];
                                    $member_email_address = $_POST['email'];
                                    $login_link = $emember_config->getValue('login_page_url');
                                    $additional_params = array('password' => $_POST['password'], 'login_link' => $login_link);
                                    $curr_member_id = $post_editedrecord;
                                    $email_body = emember_dynamically_replace_member_details_in_message($curr_member_id, $_POST['notificationmailbody'], $additional_params);
                                    wp_mail($member_email_address, $subject, $email_body, $headers);
                                    $emember_config->setValue('eMember_status_change_email_body', $_POST['notificationmailbody']);
                                    $emember_config->setValue('eMember_status_change_email_subject', $_POST['notificationmailhead']);
                                    $emember_config->saveConfig();
                                }
                                echo '<script type="text/javascript">window.location = "admin.php?page=wp_eMember_manage";</script>';
                            }
                        }
                    }
                }
            }
            $editingrecord = (array) $editingrecord;
        }
    }
    $all_levels = dbAccess::findAll(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, ' id != 1 ', ' id DESC ');
    include_once 'views/add_member_view.php';
}
Exemplo n.º 4
0
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;
    $admin_email_body = EMEMBER_NEW_ACCOUNT_MAIL_BODY . "\n\n-------Member Email----------\n" . $email_body1 . "\n\n------End------\n";
Exemplo n.º 5
0
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_handle_subsc_signup($ipn_data, $subsc_ref, $unique_ref, $eMember_id = '')
{
    global $wpdb, $emember_config;
    $emember_config = Emember_Config::getInstance();
    $members_table_name = $wpdb->prefix . "wp_eMember_members_tbl";
    $membership_level_table = $wpdb->prefix . "wp_eMember_membership_tbl";
    $email = $ipn_data['payer_email'];
    if (empty($eMember_id)) {
        //TODO - query db using subscr_id if the txn_type is recurring payment
        debug_log_subsc("eMember ID is empty. Checking the database for existing record of this email address..", true);
        $query_db = $wpdb->get_row("SELECT * FROM {$members_table_name} WHERE email = '{$email}'", OBJECT);
        if ($query_db) {
            $eMember_id = $query_db->member_id;
            debug_log_subsc("Found record in the members table. The account will be upgraded. Member ID: " . $eMember_id, true);
        } else {
            debug_log_subsc("Did not find record in the members table. A new member account will be created for: " . $email, true);
        }
    }
    debug_log_subsc("eMember user payment debug data: Unique ID: " . $unique_ref . "| Email: " . $email . "| Level: " . $subsc_ref, true);
    if (!empty($eMember_id)) {
        // upgrade the member account or assign new membership levels to his/her profile
        debug_log_subsc("Upgrading member account", true);
        $account_state = 'active';
        $membership_level = $subsc_ref;
        $subscription_starts = date("Y-m-d");
        $subscr_id = $unique_ref;
        $resultset = "";
        $resultset = $wpdb->get_row("SELECT * FROM {$members_table_name} where member_id='{$eMember_id}'", OBJECT);
        if (!$resultset) {
            debug_log_subsc("Error! Could not find a member account for the given eMember ID: " . $eMember_id, false);
            return;
        }
        $old_membership_level = $resultset->membership_level;
        if ($emember_config->getValue('eMember_enable_secondary_membership')) {
            debug_log_subsc("Using secondary membership level feature... adding additional levels to the existing profile of member ID:" . $eMember_id, true);
            debug_log_subsc("Quering the table :" . $members_table_name . ", to retrieve member profile of eMember ID: " . $eMember_id, true);
            debug_log_subsc("Retrieved member profile. Need to add membership level ID: " . $membership_level . ", to this profile", true);
            $additional_levels = $resultset->more_membership_levels;
            debug_log_subsc("Current additional levels for this profile: " . $additional_levels, true);
            if (is_null($additional_levels)) {
                $additional_levels = $resultset->membership_level;
                //assign the current primary level to the additional level
                debug_log_subsc("Current additional levels for this profile is null. Adding level: " . $additional_levels, true);
            } else {
                if (empty($additional_levels)) {
                    $additional_levels = $resultset->membership_level;
                    //assign the current primary level to the additional level
                    debug_log_subsc("Current additional levels for this profile is empty. Adding level: " . $additional_levels, true);
                } else {
                    $additional_levels = $additional_levels . "," . $resultset->membership_level;
                    //add the current primary level to the list of additional levels
                    $sec_levels = explode(',', $additional_levels);
                    $additional_levels = implode(',', array_unique($sec_levels));
                    //make sure there is no duplicate entry
                    debug_log_subsc("New additional level set: " . $additional_levels, true);
                }
            }
            $membership_level = apply_filters('emember_secondary_before_updating_primary_level', $membership_level, $subsc_ref, $eMember_id);
            $additional_levels = apply_filters('emember_secondary_before_updating_additional_level', $additional_levels, $subsc_ref, $eMember_id);
            debug_log_subsc("Updating additional levels column for username: "******" with value: " . $additional_levels, true);
            $updatedb = "UPDATE {$members_table_name} SET more_membership_levels='{$additional_levels}' WHERE member_id='{$eMember_id}'";
            $results = $wpdb->query($updatedb);
            debug_log_subsc("Upgrading the primary membership level to the recently paid level. New primary membership level ID for this member is: " . $membership_level, true);
            $updatedb = "UPDATE {$members_table_name} SET account_state='{$account_state}',membership_level='{$membership_level}',subscription_starts='{$subscription_starts}',subscr_id='{$subscr_id}' WHERE member_id='{$eMember_id}'";
            $results = $wpdb->query($updatedb);
            do_action('emember_membership_changed', array('member_id' => $eMember_id, 'from_level' => $old_membership_level, 'to_level' => $membership_level));
        } else {
            debug_log_subsc("Not using secondary membership level feature... upgrading the current membership level of member ID: " . $eMember_id, true);
            if (function_exists('emember_get_expiry_by_member_id')) {
                $current_expiry_date = emember_get_expiry_by_member_id($eMember_id);
                if ($current_expiry_date != "noexpire") {
                    if (strtotime($current_expiry_date) > strtotime($subscription_starts)) {
                        //Expiry time is in the future
                        $subscription_starts = $current_expiry_date;
                        //Start at the end of the previous expiry date to make sure he doesn't loose the remaning days from the current level
                        debug_log_subsc("Updating the subscription start date to the current expiry date value: " . $subscription_starts, true);
                    }
                }
            }
            debug_log_subsc("Executing DB update. Debug data: " . $account_state . "|" . $membership_level . "|" . $subscription_starts, true);
            $updatedb = "UPDATE {$members_table_name} SET account_state='{$account_state}',membership_level='{$membership_level}',subscription_starts='{$subscription_starts}',subscr_id='{$subscr_id}' WHERE member_id='{$eMember_id}'";
            $results = $wpdb->query($updatedb);
            do_action('emember_membership_changed', array('member_id' => $eMember_id, 'from_level' => $old_membership_level, 'to_level' => $membership_level));
        }
        //If using the WP user integration then update the role on WordPress too
        if ($emember_config->getValue('eMember_create_wp_user')) {
            debug_log_subsc("Updating WordPress user role...", true);
            $resultset = $wpdb->get_row("SELECT * FROM {$members_table_name} where member_id='{$eMember_id}'", OBJECT);
            $membership_level = $resultset->membership_level;
            $username = $resultset->user_name;
            $membership_level_resultset = $wpdb->get_row("SELECT * FROM {$membership_level_table} where id='{$membership_level}'", OBJECT);
            $user_info = get_user_by('login', $username);
            $role_name = $membership_level_resultset->role;
            debug_log_subsc("The member username :"******" ,WP User ID is: " . $user_info->ID . " , Target role name: " . $role_name, true);
            if (!empty($role_name)) {
                update_wp_user_Role($user_info->ID, $role_name);
                debug_log_subsc("Current WP users role updated to: " . $membership_level_resultset->role, true);
            } else {
                debug_log_subsc("You have a configuration error. Could not retrieve role name from the membership level. Level ID: " . $membership_level, false);
            }
        }
        // Set "notify email address" to the member's email address
        $resultset = $wpdb->get_row("SELECT * FROM {$members_table_name} where member_id='{$eMember_id}'", OBJECT);
        $email = $resultset->email;
        //$email = $ipn_data['payer_email'];
        debug_log_subsc("Setting the TO EMAIL address for membership upgrade notification to: " . $email, true);
        $subject = $emember_config->getValue('eMember_account_upgrade_email_subject');
        if (empty($subject)) {
            $subject = WP_ESTORE_EMEMBER_ACCOUNT_UPGRADE_SUBJECT;
        }
        $body = $emember_config->getValue('eMember_account_upgrade_email_body');
        if (empty($body)) {
            $body = WP_ESTORE_EMEMBER_ACCOUNT_UPGRADE_BODY;
        }
        $from_address = get_option('senders_email_address');
        //$email_body = $body;
        $login_link = $emember_config->getValue('login_page_url');
        $tags1 = array("{first_name}", "{last_name}", "{user_name}", "{login_link}");
        $vals1 = array($resultset->first_name, $resultset->last_name, $resultset->user_name, $login_link);
        $email_body = str_replace($tags1, $vals1, $body);
        $headers = 'From: ' . $from_address . "\r\n";
    } else {
        // create fresh new member account
        debug_log_subsc("Creating new member account", true);
        $user_name = '';
        $password = '';
        $first_name = $ipn_data['first_name'];
        $last_name = $ipn_data['last_name'];
        $email = $ipn_data['payer_email'];
        $membership_level = $subsc_ref;
        $subscr_id = $unique_ref;
        $address_street = $ipn_data['address_street'];
        $address_city = $ipn_data['address_city'];
        $address_state = $ipn_data['address_state'];
        $address_zipcode = $ipn_data['address_zip'];
        $country = $ipn_data['address_country'];
        $gender = 'not specified';
        $date = date("Y-m-d");
        $account_state = 'active';
        $reg_code = uniqid();
        //rand(10, 1000);
        $md5_code = md5($reg_code);
        $updatedb = "INSERT INTO {$members_table_name} (user_name,first_name,last_name,password,member_since,membership_level,account_state,last_accessed,last_accessed_from_ip,email,address_street,address_city,address_state,address_zipcode,country,gender,referrer,extra_info,reg_code,subscription_starts,txn_id,subscr_id) VALUES ('{$user_name}','{$first_name}','{$last_name}','{$password}', '{$date}','{$membership_level}','{$account_state}','{$date}','IP','{$email}','{$address_street}','{$address_city}','{$address_state}','{$address_zipcode}','{$country}','{$gender}','','','{$reg_code}','{$date}','','{$subscr_id}')";
        $results = $wpdb->query($updatedb);
        $results = $wpdb->get_row("SELECT * FROM {$members_table_name} where subscr_id='{$subscr_id}' and reg_code='{$reg_code}'", OBJECT);
        $id = $results->member_id;
        $separator = '?';
        $url = $emember_config->getValue('eMember_registration_page');
        if (empty($url)) {
            $url = get_option('eMember_registration_page');
        }
        if (strpos($url, '?') !== false) {
            $separator = '&';
        }
        $reg_url = $url . $separator . 'member_id=' . $id . '&code=' . $md5_code;
        debug_log_subsc("Member signup URL :" . $reg_url, true);
        //Save the registration signup URL value
        eStore_save_membership_signup_rego_url($email, $reg_url, $ipn_data);
        $subject = get_option('eMember_email_subject');
        $body = get_option('eMember_email_body');
        $from_address = get_option('senders_email_address');
        $tags = array("{first_name}", "{last_name}", "{reg_link}");
        $vals = array($first_name, $last_name, $reg_url);
        $email_body = str_replace($tags, $vals, $body);
        $headers = 'From: ' . $from_address . "\r\n";
    }
    if (get_option('eStore_use_wp_mail')) {
        wp_mail($email, $subject, $email_body, $headers);
        debug_log_subsc("Member signup/upgrade completion email successfully sent to:" . $email . " From email address value used:" . $from_address, true);
    } else {
        $attachment = '';
        if (@eStore_send_mail($email, $email_body, $subject, $from_address, $attachment)) {
            debug_log_subsc("Member signup/upgrade completion email successfully sent (using PHP mail) to:" . $email . " From email address value used:" . $from_address, true);
        } else {
            debug_log_subsc("Member signup/upgrade completion email sending failed (using PHP mail) ", false);
        }
    }
}